Timur Kernel on 2013 Nexus 7 WiFi (flo)

Timur Kernel on 2013 Nexus 7 WiFi (flo)

Background on Timur’s Kernel

I got fed up with having a pretty crummy head unit in my 2012 Audi TT RS (named Ignantt), and decided that it was time to take matters into my own hands. Part of doing a Nexus 7 head unit install in a vehicle involves powering the tablet up with a USB on-the-go (OTG) cable and being able to not only power the device but also plug in USB devices into the tablet to use. In order to get this working, everyone seems to be relying on this kernel from Timur. As per Timur’s site:

This feature allows you to connect one or more USB slave devices to your tablet and charge it at the same time. This allows you, say, to operate an external USB DAC without the tablet ever running out of power. To use this feature you will need an “OTG charging” – or a std. OTG adapter combined with a USB-Y cable.

Right-o. So yesterday evening after work I spent almost the entire night trying to get this going (aside from eating dinner and hitting the gym). I really feel that this should have been significantly easier for me, and when I reflect on how the whole thing went down, the actual process IS actually easy… It’s just that there are a few points where if you deviate slightly based on your device, EVERYTHING stops working. With that said:

This guide is for ASUS Google Nexus 7 Tablet (7-Inch, 16 GB, Black) 2013 Model only (Android 5.1.1 build LMY48G). It can be adapted to work with other models, I’m sure, but I plan to explicitly call out where my missteps where so that anyone with the exact same hardware as me can have a smoother ride. I also take ABSOLUTELY NO RESPONSIBILITY if you brick your device.


  1. Make a folder somewhere on your computer (like your desktop) that you are going to put all of your downloads into.
  2. Make sure you have ADB and FastBoot on your path, OR you put all of the necessary files to run ADB and FastBoot from a command prompt into the folder you made in step 1.
  3. You’re going to need to unlock your bootloader if you haven’t already. Unlocking your bootloader WILL erase your device. Follow the steps outlined here. In short, these steps are:
    1. Enable USB debugging on the device
    2. Open a command prompt in your folder from step 1
    3. Type: adb reboot bootloader
    4. Press enter to execute the command
    5. Wait for the device to boot into the bootloader…
    6. Type: fastboot oem unlock
    7. Press enter to execute the command
    8. Use the volume buttons on the device to change selection to Yes
    9. Use the power button on the device to select Yes
    10. Unlocked!
  4. You’re going to need to flash a new stock ROM to your device. Timur doesn’t call out LMY48G as supported in his instructions, but LMY48T is!) so go to Factory Images for Nexus Devices and download the image for 5.1.1 (LMY48T).
  5. Extract the contents of the LMY48T tar.gz file into your folder from step 1.
  6. Run the flash-all.bat file that was extracted from the LMY48T download. When this completes successfully, you will have a phone in a brand new state…
    1. Follow all the instructions on the device to get set up again with your new factory ROM
    2. Go to “About tablet” in settings and check that build number is now LMY48T… If it’s not, then DO NOT CONTINUE. You’ll need to get LMY48T before continuing with these steps.
    3. Follow all the steps again to get USB debugging available again
  7. You’re going to need to flash a recovery onto your device next. I used TWRP for this. HOWEVER, not just any TWRP worked for me. I needed to use the “multirom” version of TWRP (specifically, I used TWRP_multirom_flo_20150328).
    1. Download the TWRP multirom image to your folder created in step 1
    2. Put your phone into bootloader mode by typing: adb reboot bootloader
    3. Press enter to execute the command
    4. Wait for your phone to enter bootloader mode
    5. Type: fastboot flash recovery TWRP_multirom_flo_20150328.img
    6. NOTE: if you did not download the EXACT same TWRP as me, then change it to the correct file name…
    7. Press enter to execute the command. The device should inform you that flashing worked.
    8. Use the volume buttons on the device to change selection to booting to recovery
    9. Use the power button to select boot to recovery
    10. … You should see the TWRP splash as you boot to recovery
    11. Wait for this to load
  8. You’re almost there!
  9. We need to grab the timur files now. I was a little thrown off when navigating the FTP, but you only need TWO files: the host and the services files.
    1. Download timur-services-N7-2-511e-v3-2015-10-06.zip (or whatever the latest version of services is with 511-e is) into your folder created in step 1
    2. Download timur-usbhost-flo511-v3.0-2015-10-20.zip (or whatever the latest version of usbhost is with flo511 is) into your folder created in step 1
    3. We need to push these two files to the device’s internal SDCARD, so…
    4. NOTE: please use the correct file names in the following commands if yours are different…
    5. Type: adb push timur-services-N7-2-511e-v3-2015-10-06.zip /sdcard/
    6. Press enter to push the file… ADB should tell you if it worked.
    7. Type: adb push timur-usbhost-flo511-v3.0-2015-10-20.zip /sdcard/
    8. Press enter to push the file… ADB should tell you if it worked.
  10. On the device, press the big “install” button on the main part of the TWRP recovery
  11. Add both zips that you pushed to the device (remember, they are in the /SDCARD/ folder and you’ll need to make sure TWRP is filtering by zips)
  12. Flash ’em…
  13. Use TWRP to reboot… mine prompted me to install supersu. I opted for YES.
  14. As the phone is booting up, it may say some stuff about optimizing apps… If it does this for forever and then reboots and keeps doing this again for forever, it’s very likely that you mismatched the timur files… I encountered this problem twice and had to reflash the correct stock ROM again… so head back to step 1 :)
  15. Once the phone boots up, go to about tablet under settings and check your kernel… It should say timur in there!
  16. If you saw timur in step 15… You’ve done it!

NOTE: If anyone goes through this guide and wants to suggest clarifications, please comment and I’ll try to update it.


  • I had to use the correct version of TWRP (the multiboot one) to get anywhere with this. I tried latest releases of CWM and TWRP but neither could seem to mount my system partition when doing the zip installs. This was incredibly frustrating and probably chewed up around two to three hours of my time debugging. I tried rooting etc… Nothing would fix it. The ONLY thing that seemed to work was TWRP multiboot.
  • My first pass through getting timur kernel installed resulted in a bootloop, which was super frustrating. Timur called out specific builds of Android that his kernel works for, and even though LMY48G wasn’t listed, I guess at which files to use and it failed miserably. Lesson learned. This is why i suggested flashing one of the supported stock Android images RIGHT at the beginning. If you don’t get everything lined up (and he’s explicit about this… I was just being dumb) then you will very likely encounter problems and need to redo everything.

Yeah, We’re an “Agile” Shop

Everybody Has Gone “Agile”

If you’re a software developer that’s done interviews in the past few years, then you already know that every software development shop has gone agile. Gone are the days of waterfall software development! Developers have learned that waterfall software development is the root of all evil, and the only way to be successful is to be agile. You need to be able to adapt quickly and do standups. You need to put story point estimates on your user stories. You need retrospectives… And agility! And… more buzz words! Yes! Synergy! In the cloud! You need it!

Okay, so why the sarcasm? Every single software development team is touting that they’re following the principles of agile software development, but almost no team truly is. Is it a problem if they aren’t actually following agile principles? Absolutely not, if they’re working effectively to deliver quality software. That’s not for me to say at all. I think the problem is that people are getting confused about “being agile”, but there’s nothing necessarily wrong with how they’re operating if it works for them.

Maybe We’re Not So “Agile”

I work at Magnet Forensics, and for a long time now, I’ve been saying “yeah, we’re an agile shop”. But you know what? I don’t think we are. I also don’t think that’s a problem. I think our software development process is best defined by “continuous improvement”. That’s right. I think we’re a “Continuous Improvement” shop. Our team has identified the things we think work well for us in how we develop software, and we experiment to improve on things that we think aren’t working well. I’m actually happy that we operate that way instead of operating by a set of guidelines that may or may not work for us.

So, why aren’t we agile? When I look at the Agile Manifesto, I feel like there’s a few things we actually don’t do, and we don’t even worry about them. We don’t necessarily have business people working with developers daily through things, for example. Our delivery cycles are much longer than a couple of weeks most of the time. Sometimes people on our teams don’t communicate best face-to-face. I mean, just because we’re not focusing on those things isn’t necessarily proof that we aren’t agile, but I truly don’t think we’re trying to embody all of the components that make up agile.

As I stated previously, I do think that we try to focus on continuous improvement above all else, and I’m absolutely content with that. I think that if over time we continued our retrospectives and our team ended up operating closer to a traditional waterfall process then it would be the better thing for our team. Why? Because we make incremental changes for our team in an attempt to keep improving. Switching to waterfall is a bit of a contrived example, but I definitely stand by it. Another example might be that maybe working with business people daily isn’t actually effective for our team. I don’t know, to be honest, because we’re currently tweaking other parts of our development process to improve them. Maybe we’ll get around to worrying about that at some other point.

I do know that the way we operate, we’re always trying to improve. Whether or not we get better sprint to sprint is for the retrospective to surface for us, but if we took a step back, at least we can try a different path when we try to take our next step forward.

So, We Don’t Need To Be Agile?

I think my only point of writing this post was to get this across: If you’re not actually an agile software development shop, then don’t call yourself that. There’s absolutely nothing wrong with not living and breathing agile. Maybe you’re a software shop that’s transitioning into Agile. Maybe you’re moving away from Agile. Maybe you have no parts of your software development process that are agile. Who’s to say that because you’re not 100% agile your setup is bad?

I can’t advocate that agile software development is the absolute best thing for all software development teams. I personally like to think that it’s a great way to develop software, but… I don’t know your team. I don’t know your codebase. I don’t know your products, services, or clients. How the heck could I tell you the best way to go make your software?

Again, there’s nothing wrong with not being 100% agile, but we should try to be honest with ourselves. Find what works for your team. Find out how you can effectively deliver quality software.

Article Roundup: Burn Out

Article Roundup : Burn Out

Burn Out

I had a lot of really positive feedback from my friends and family after writing about my experiences of going through burn out. If you haven’t read the post, check it out here. I’ve done some article summaries on the topic of burn out before, but I feel like it’s probably a good topic to bring up again in light of my recent post.

For a bit of background, burn out is a process that can occur to an individual that’s dedicating too much time to a particular activity. It leads to an imbalance in terms of what his or her time is put towards and can result in a person feeling depressed without any energy. Wikipedia does a pretty good job of summarizing it in one quick sentence:

Burnout is a psychological term that refers to long-term exhaustion and diminished interest in work.

With that said. please enjoy a couple of articles that I’ve surveyed from the web.


  • Job burnout: How to spot it and take action: This article is from a clinic’s staff, so it has an interesting unbiased perspective. It talks about the lack of drive or interest that people might experience from burn out, which is interesting, because I personally never felt that I started to lack drive or interest in my work. Personally, it was more about losing interest/drive in other areas of my life. I also wanted to draw attention to one of the symptoms the article mentions: irritability with colleagues/clients. This one is pretty dangerous because you can actually cause some damage based on your inability to control emotions because of this. It’s worth noting that if you constantly find yourself irritated by colleagues and/or clients and have some of the other symptoms present, you might be on your way to burning out. If you’ve always been irritated by your colleagues/clients, maybe you’re just sour. :) The list is pretty short, but the article does a good job of covering some of the common causes and symptoms, so it’s worth it for a quick read.
  • 10 Signs You’re Burning Out — And What To Do About It: This article by Lisa M. Gerry speaks to a story very similar to my own. Our burn out experiences were really not something like working overtime for a couple weeks straight… it took years to happen, and that’s why it’s dangerous. Lisa lists several symptoms that should be familiar now if you’ve checked out Wikipedia and the previous article(s).  Interpersonal problems come up again as a symptom and same with cynicism… They’re probably related. The interpersonal problems can come on multiple fronts too, whether it’s an individual removing his or herself from their friends and family, or finding that they’re getting in more arguments (or just plain not getting along) with their friends/family. Lisa goes on to list some ways to get back on track, including cultivating a rich non-work life (something I’m seriously lacking right now) and actually taking a break from work. Those are two really important things, but she lists a handful more.
  • I Came Undone: One Woman’s Horrifyingly Real Experience With Burnout: I really loved this article by Glynnis MacNicol because it felt like the same experience I was going through… Except I never got to the point where I quit my job. One thing I keep pointing out because I feel it’s a bit different is that most people that go through burn out seem to resent their job… But I still love what I’m doing, and maybe that’s the only reason things didn’t go too far for me. Glynnis talks about being overly connected (thanks to social media, smart phones, email, etc…) and how it’s a struggle to actually just go home and be away from work. Are you even able to do that in your career? I’ve always felt like I like being connected to work when I go home so I can help out when it’s necessary… but on days where I’m feeling burdened, I have to explicitly tell myself “Close Outlook. Only use your phone when you want to get a hold of someone. Close the work instant messenger.” It does the trick for me, but I suppose it’s unfortunate that “home time” doesn’t actually mean “time to not work”.
  • Burn out and chronic stress: This one is another sort of “fact sheet” on burn out and chronic stress. It re-iterates many of the same points regarding symptoms of being over-stressed and feeling burnt out, but I liked the latter portion of the listing. Specifically, the very last point on the page says to re-evaluate your priorities and goals. Many of the other posts suggest that taking time off and forcing yourself to slow down are necessary, but few of them actually say to re-evaluate your goals. I think that without re-evaluating, you’re setting yourself up for some difficult times… at least if you’re feeling like me. I know I’m starting to burn out. I know I should slow down… but if I don’t change my priorities around, taking that time off and disconnecting is going to feel like a mental burden to me. How could I remove myself from work if my goal was to get more work done? If I can re-evaluate my goals to say that spending more time with friends and family is important and that taking X amount of time off for myself is important, then it’s a lot easier to convince myself that I actually do need that time off.

Thanks for reading! If you like this post, follow Dev Leader on social media:

Burn Out


I wanted to write this post to share my honest and personal experiences with burn out in the software and startup scene. I’m hoping that my experiences with getting to a stage of burn out can help someone identify if they’re going through the same thing. Hopefully someone will be able to take preventative actions before things get too serious, like I’ve been able to do. I’d also like to point out that I absolutely love my job (you’ll be reminded of that in my post) so my experience might be biased in some ways because of that. If I didn’t love what I do, I’d be finding another job where I did.

What is Burn Out?

In my earlier days at the company I work for, I remember my HR manager talking to me about burning out. It’s not unusual to pull all-nighters to work on something at a startup, and after hearing about this a few times, she mentioned to me that I need to be careful about this. She said I need to be careful that I don’t make a habit of doing things like that all the time or else I’ll “burn out”.

Now I had heard this phrase before, but never really spoke to anyone who had burnt out from too much work. From going to the University of Waterloo for co-op, I had heard about lucrative opportunities for some co-ops going out to The Valley to get jobs where they could work crazy overtime and make a killing. The idea was that on a co-op it was okay because after only four months you wouldn’t “burn out” too badly. Four months of 60-80 hour work weeks would be really intense and draining… But it couldn’t REALLY have that big of an impact on your life, right?

So that was really all I knew about burning out. 60-80 hour work-weeks for an extended period of time would result in burn out. And that meant… What? What did it mean to burn out? All I could think of was that you would become disinterested in your job and not want to work there any longer. You’d start to be tired all the time and resent going to work. You’d be an old cranky person in a potentially younger person body. Yeah, that sounds like it sucks. Is that far-off from what burning out actually is? Maybe not. But is there more to it?

Wikipedia (and yeah I’m referencing Wikipedia… deal with it) defines burning out as:

“a psychological term that refers to long-term exhaustion and diminished interest in work. Burnout has been assumed to result from chronic occupational stress (e.g., work overload)”

And that looks like it chalks up to what my initial definition of burn out used to be. It also mentions this though:

“The symptoms of burnout are similar to those of clinical depression”

So that one is a bit more extreme than the symptoms I had in my mind, previously. If you keep reading the Wikipedia article on burn out, you’ll get some spoilers for what I want to continue to talk about… The point is that burn out is actually pretty serious business and it’s a little bit more than being cranky and not liking your job.

My Early(ier) Startup Days

I had (and still have) my first job out of university at a company that was super small and appeared to have a really exciting future. A blossoming startup. In the really early days things were always moving incredibly fast. We’d turn out feature after feature in our software, triage critical bugs into the wee hours of the morning, ensure any customer we talked to was 100% pleased in every facet of the business, and we’d be doing all of this around the clock. It was exciting, and it still is exciting to be able to take pride in doing all of those things (although, there’s less fixing of critical bugs because… we’re like… perfect… or something). Having a really fast paced environment, a team of people you love to work with, an awesome product, and an incredible mission, it was easy to get sucked right into work.

I was still a 9 o’clocker. I hated (and I still dread) mornings. I’d like to sleep until noon every day if I could. I’d get into the office around 9 and head home at 5:30-6:00ish. It might mean I pick up the odd little thing at home or do a quick investigation into a bug if I heard something in an email, but otherwise those were my core hours. This worked out really well for me when I wanted to pull a really late night to work on something cool because I could still get enough rest to come into work.

I can think back to days (and I’m only talking about a couple of years ago, not like I’m some wise old man, so take that for what it’s worth) where I’d head into the office to triage bugs that we’d consider huge blockers until two or three in the morning. I didn’t have my bosses hounding me to do this, and whether they knew it or not, I didn’t care. I had pride in what we were making so I wanted to be part of ensuring that it was of the highest quality. I’d find myself trying to churn out some extra code on weekends in my spare time when I thought of something cool related to our product or business, or just to get us a little bit more ahead.

Between hitting the gym, hanging with my friends at bars/parties, playing video games, programming my own stuff for fun, or just relaxing at home, I’d find time every now and then to program stuff for work. Again, not because anyone forced me to… but because I wanted to. I wouldn’t let my gym/nutrition schedule slide during our hectic releases, and I know we had co-op students that can recall me popping out of the office for a couple of hours during crazy releases to ensure that was the case. I’ll make sacrifices into my other personal time, but ensuring I can get my gym time in is sacred to how I choose to live my life. I was still keeping in touch with my friends from university even though most of them moved away right after school, and I’d of course always have time for my close high school friends. Weekends were a great time to drive out (aside from having an old crappy car that was always overheating) to visit friends or have them drop in.

Early startup days were exciting and insanely busy. It was hard work but we always made sure we were having fun along the way.

… As Time Went On…

This trend kept up for a while… which was awesome for our company. We’ve received so many accolades for our success and it’s great to share a responsibility in that. We’d hear back from our clients about how we were making a difference in the world, and that was more fuel to keep doing such an amazing job. I knew by then that I loved where I worked and I loved what I was doing. I had received more responsibilities in my job by this point too, so I was not only programming but I became a people manager (which was an entirely new experience for me). There was more (and very different) work being introduced for my day-to-day activities, but it continued to be an exciting journey.

There were fewer late nights to triage bugs because we adapted to have much better systems in place. There were more people that knew different parts of our code base so I could rely on other people to help out. It was reassuring to know the right people were being brought on in our company to help out with all of the different pieces. Even though I felt like I had more work to do, the responsibilities were shared on some of the big pieces that I didn’t want to be entirely responsible for. That was a bit of a relief. The difference was that now I had to know the status of more things, which added pressure.

I started to be a little bit more distant with my friends. I think it’s a natural thing to happen after university (just like it was with high school) where some of your closer friends start to go off in different directions. It’s part of life. You can keep your close friends close, but you always know that you can catch up with your for-life friends even if you’re apart for long periods of time. Okay, let’s not get all emotional on the friend-front. I noticed that I was starting to put off visiting friends for certain work things at this point though. For example, if I had a big release I might skip someone’s birthday because I knew I had a stressful weekend coming up, and of course it didn’t help that we had a milestone with some project that was following right after too. I was trying to find ways to make it up to my friends for missing things because I felt bad about it.

My hobbies started to narrow a bit by this point. I’m still an avid gym goer, and I was during this time frame as well. I was going every single day like I had planned… even during those hectic releases. I was playing video games less because they weren’t really something that was productive. If I noticed I was spending a lot of time on video games, I could often convince myself that there was work to do that would have a positive impact if I could deliver it. Do I need to level up my digital wizard character again in some fantasy land that doesn’t mean anything, or could I knock off another feature from our roadmap? It’s not that hard to change your mind when you like what your building, so the choice would often come down to “what’s more productive”? This is also coming from a person who doesn’t watch TV ever because it doesn’t feel productive, so maybe I’m just weird.

After a couple of years of startup life, I was still loving it. Certain parts of my life were changing (less time for friends and hobbies… more and varied responsibilities at work), but the positives still outweighed the negatives. Besides, it feels really good to be productive.

And Now…

It’s been a few years now, and yes, I still absolutely still love my job, what we make, who I make it with, our customers, and all of the crazy things we go through. If you talk to anyone on my team, they’ll let you know I’m a morning person now. Except that I’m really not. I actually hate waking up early, but rolling out of bed at 7 to get to work for 7:30-7:45 means that I get some extra time in the morning to work. My team would also let you know that I work late too, so if you needed to pop into the office because you forgot something, you could come by my desk and chat with me. My core hours aren’t 9-5 anymore, but they’ve evolved to be about 8 to 6. If I’m not at the office by 8, some of the early risers actually get worried about where I’m at. If I’m out of the office before 6, people will ask me what’s wrong because if I’m leaving “early”, then something must be up. I don’t really take vacation now either. I’ve been bothered (for what I believe to be all of the right reasons) by my HR manager to take more vacation than I do. And yeah, this is the same HR manager that mentioned the burn out thing to me. I don’t really take vacation now because it chews into my work time. Work often carries over into the weekends too. I’m working those Valley hours now trying to get as much productivity as I can in my 24×7 window.

My job responsibilities? They’ve shifted to encompass more things, which feels great. It feels good to put in time and be able to take on more responsibilities. However, with more responsibilities comes more accountability for things (obviously) which can mean pressure build ups when certain things align. For example, instead of being responsible for a single project or deliverable, I might be responsible for two to four of these things. If they happen to line up in a short period of time, it can mean an immense amount of stress. It can also mean that I don’t feel comfortable taking vacation during those heavy periods. Unfortunately, the more prolonged that goes, the more I need vacation and the more I feel like I can’t take it.

My hobbies are really narrow now. I hit the gym every day still. I’m still adamant about this. However, my nutrition has been starting to slack. I enjoy eating healthy, preparing food, and knowing what I’m putting in my body. The latest thing to give way is food preparation  because it takes time, and it’s easy to get food in other ways. I’m not really proud of this or happy with this. Video games? I’ll take a day every now and then and binge on them to blow off some steam. Hobby programming? Not a chance. Blogging? Look at the frequency of my posts as of late to get an idea… It’s trailed off.  My current frame of mind seems to revolve around the idea of “if it’s not work, I probably shouldn’t be doing it”.

My friends? I feel like I only have my closest friends still and my colleagues (and I love my colleagues like family, so that’s not a bad thing). I’ve done a really poor job of keeping in touch with everyone else because I’m not making any time for them. I’ve been doing a pretty bad job of keeping in touch with m y immediate family too. I didn’t even realize it until my parents started pointing it out, which is obviously a problem.

So What’s Going On?

Right now I’d say thing in my life probably aren’t what I would consider great, despite the fact that I’m living to all of the goals that I’ve set for myself. I’ve graduated from university with a degree studying computer engineering. I have a full time job that I love and work hard at. I have a car that I like. I have a condo that I love. Why aren’t things great?

I’ll direct us back to Wikipedia for this interesting little list they have. They’ve actually defined a list of the stages of burning out, and I can speak to a lot of them in the order that they present them:

  • The Compulsion to Prove Oneself: New to the workforce. New to the job. New to the team. I saw great potential in the company, and I wanted to prove that I could be a driver in getting it to where it could be. I needed to prove to someone (myself? I don’t even know) that I could be that driving change. Could it be done without me? I’m sure my team could have gotten to where they are without me because they’re all talented people, and I didn’t bring anything to the table that they couldn’t have made up for. But I wanted people to look back and think that I was a primary driver in all of this.
  • Working Harder: You can likely see it in the transitions I described above. I’m not a morning person, but now I wake up early to get more time for work. I stay up later to get more time in for work. I trade out my hobbies so that I can make time for work. I have tried to find any way I can to increase the amount of work I can get done.
  • Neglecting Their Needs: I’ve probably been in denial on this one for a long time. I try to be as healthy as I can… But I’m neglecting my need to sleep sufficiently. I’m neglecting my need to spend time with friends and family. I often look at my “needs” as biological (good food and exercise) and my ability to keep a roof over my head. I’ve been neglecting the other pieces.
  • Displacement of Conflicts: This is apparently the stage when people first start to realize something is wrong. Is that why I’m writing this post in the first place? Am I only at this early stage of burn out? I feel like I’m showing traits of some of the following steps though.
  • Revision of Values: When reflecting on my current state compared to how I viewed myself at the end of university, I know things have changed. My highest valued trait is my ability to do work. If I don’t work as much or as hard, I value myself less. I’ve certainly become more emotionally blunt as well. Over the past few years, I’ve been referred to as robotic more and more frequently. Other people are noticing this too, so it’t not just me.
  • Denial of Emerging Problems: My personality type tends to ride the line between introvert and extrovert on certain things. I can tell that my ability to be extroverted has become extremely demanding on me mentally/emotionally and that often means that I’d choose to be alone versus with a group of people. The article also states increased amounts of aggression and sarcasm are present. For anyone that knows me well, sarcasm is my middle name… And when I’m irritated, sarcasm becomes my weapon of choice (which is really unfortunate). I also blame all of this on the amount of work that I have and pressure that I believe I’m under. I don’t blame any of this on how I’ve changed my value systems over the past couple years, which isn’t fair.
  • Withdrawal: I’m not quite sure if I’ve totally hit this step, but this really just refers to an increased level of wanting to be removed from social interactions.
  • Obvious Behavioral Changes: I suppose this is for other people to observe. I’ve picked up a few cues that other people are noticing I behave differently. An example is my reduced emotional intelligence and tolerance for certain things I don’t find logical at face value. I generally get irritated by this kind of thing and then turn to sarcasm.
  • Depersonalization: This point was interesting. While I don’t think that I’ve devalued myself or others necessarily, I do think that I view my life as a series of mechanical functions. It’s a rather boring way to look at life, but I’ll admit I look at things as a regular process and I look for ways to optimize my time to get more work done. The amount of work I can get done is how I determine my efficiency, and my life currently revolves around being more efficient.
  • Inner Emptiness: I think I’ve arrived close to this point, personally. As I mentioned above… I’ve set a few personal goals in my life: education, good job, car, and place to live. I feel that I’ve achieved those things, and I’m always working to improve in those areas. I still feel completely empty in terms of achievement though.
  • Depression: Next up? Depression. The great news is that I don’t feel depressed. At all. There’s a history of depression in both my mother’s and father’s sides of the family, so this is a fear of mine. I’m worried about falling into a depression, but I don’t believe I’m there yet. I actually think I’m a long way off from it. I think as far along into burning out that I might be, I can take the necessary steps to avoid getting to a depressed state.
  • Burnout Syndrome: This is the final stage that involves collapsing physically and emotionally. While I do have a feeling of emptiness, I’m still quite physically healthy and I think I have the right frame of mind for how I’m looking at my state of burn out. With that said, I’m quite confident that I’m not at this stage.

I’d encourage you to actually check out the article on this because it’s pretty interesting; especially if you think that you’re on your way to being burn out.

I haven’t been totally oblivious to what’s been happening over time. Here’s my own list of the things I’ve picked up on:

  • My emotional intelligence has been slipping and I’m always thinking in a more logical manner, often neglecting the feelings of others. I’ve had a few instances come up where I’ve said the wrong thing because I wasn’t really offering support for a friend, but instead telling them what I thought based on my more robotic personality.
  • Being around people is draining. I hate to admit this one, but I find spending time around other people is draining. Spending time around people I don’t know for a night might mean that I don’t feel like hanging out with anyone for a week or more.
  • I’m becoming socially challenged. When I need to meet new people, I don’t really know what to say anymore. I don’t have all that much to talk about now. I’d rather just be alone. Sure, I might be a programmer so people expect that my social skills aren’t up to average, but I’m actually noticing that I don’t know how to interact with new people now. It’s scary. You might not observe it if you meet me, which just means I’m doing a really good job of hiding it because that’s how I feel about it.
  • I have one hobby, and it’s lifting weights. Unfortunately, I happened to pick one hobby that not a ton of people find that exciting. I don’t make time for creating music anymore. I don’t hobby program that often. I rarely play video games. I don’t feel like I have time or interest to go pick up anything new.

The Silver Lining

If you’ve made it this far without clicking away, falling asleep, or both, then it probably sounds like a pretty lame post about my life. That’s not the goal of it though, and that’s certainly not how I feel about my situation. I’m actually just trying to understand all that’s going on with regards to going through burn out. With that said, I think there’s a handful of really positive things I’ve picked up on over the past few years with respect to this:

  • I’ve learned how I work most efficiently. I’ve had to work in a variety of scenarios on a variety of different projects. I know that I like working mostly in isolation or if I’m part of a team, then working around just those individuals. I like having distractions of my other responsibilities removed (which for my career, is often tricky given that I interface with many different people). I know that I like having some music going and being able to crank out code without interruption. I like to stay well caffeinated, and I like working in the evening more than I like working in the morning. I’m a typical programmer.
  • I’ve learned that I love working with the people at my office. Call it corny, but I have my work family, and I love to work with them. They have a high level of trust in me, and I’m able to trust them. It’s a great dynamic and I’m glad I’ve had the opportunity to work with so many great people.
  • I know that given enough time, I can work through most problems no matter how difficult they seem. I’ve had to come up with some really unique solutions to problems I originally thought near impossible.
  • I consider myself the hardest working individual that I know. I pride myself in this, but… perhaps that’s the whole problem here :)

What’s Next?

That’s the big question here. I’ve identified that I’m well on my way to burning out… So what’s next for me? If you’re going through something similar… What’s next for you?

  • Spend more time with friends. Hands down. Number one priority. I’m going to start making more time for friends.  If they’re out of town, I’m going to start offering to drive out to visit them more often if they don’t feel like making the journey here. Same goes for family. I’m getting regular Skype sessions set up with my family so we can stay in touch between visits. Friends and family are one of my needs that I’m neglecting, and I’m going to remedy that first.
  • Vacation. I used to believe I lived the work-hard-play-hard lifestyle, but it’s just the work hard lifestyle now. It’s time to take some vacation and acknowledge that I need it in order to actually stay sharp and operate at the best of my ability. Taking vacations and having time for yourself (and/or your friends/family) is hugely beneficial. Just because it doesn’t let me turn out more lines of code doesn’t mean it’s a bad thing.
  • Tell my HR manager she’s been right for a long time. And this will be my first step in seeking some external help. The first step is admitting the problem… and the next step is getting help for it :)

I’m keeping my list of goals pretty short for now. I need to start making changes in how I operate and then reassess how these changes are affecting my life. I’m expecting positive changes, but I’m not sure how fast.

If you think you’re on the way to potentially burning out, I think the most important thing you can do is be aware of it. I still don’t believe there’s anything wrong with working hard and pouring your heart into something you love doing. But like anything, the more time you dedicate to something and take away time from other places, you’ll find that it starts to change the person that you are. Pay attention to it. Be aware of it. It’s all that you can do to prevent yourself from getting to a state where you feel like it’s too late for you to make a change.

It’s never too late for you to work your way back from burning out.

One on One Evolution


I’m a “middle manager” where I work, but that means a whole bunch of things. My everyday tasks primarily consist of programming, but I do a bunch of work to interface with other departments and teams, and I play a role in managing people on… well, the “people” side of things. For the latter part, I refer to that as people leadership.

I think it’s pretty easy to look at some of the aspects of people leadership and dismiss them as “fluffy” or needless… I consider myself a logical/technical thinker, so I have that frame of mind sometimes. However, I do see the value in actually being able to support my team so that they can operate at the best of their abilities. I try to find ways to do that without it seeming to them like I’m doing “fluffy leadership things”, and in turn, I don’t feel that way about it either. With that in mind, I had previously set out with ways to accommodate team feedback in a way that works best for them.

One on Ones: The Early Days

I worked with my HR manager a couple of years back to establish a one on one template that I could use with the developers on my team. The goal was to be able to identify points of conversation since the last time we met, the individual’s current situation (both positive and concerns), and then identify goals. Ideally, the individual is able to fill this out on the form in as much detail as necessary for us to be able to have a conversation about it later.

I didn’t want this to seem like a chore for people so I’ve tried to identify why this is useful for the individual and for myself. For the individual, it gives them an avenue to discuss anything that’s becoming a problem over the period of a few weeks (i.e. something not obvious all at once) or be able to identify successes in their work. It also allows them to reflect on their goals that they want to set in their career, current projects, or even things outside of work (because improving your abilities outside of work is a good thing too). For me, it provides better insight into the trend of problems people are experiencing, their contributions to their current projects, and even helps me see where people are at with their career goals. Both parties are able to benefit from these!

I’ve left it open in the past as to how people submit them. Written? Sure. Digital? Sure. Whatever is easiest for the individual provided I can get it a couple of days before we meet. I’ve also left it open ended as to how much of the form they fill in. Based on the trends, I think people see value in having more content but sometimes the goal setting is a bit of a grey area. People might be between setting different goals and want to wait to discuss those things. The best part is, I don’t need to hassle the team to fill in more… They just do a great job of providing information for me!

One on Ones: Continuous Improvement

I’m all for continuous improvement in our development processes that we have as well as our management processes. With that said, we’ve made a few tweaks to the one on ones recently that I think have had a great positive impact.

  • Digitized: I’ve got everyone on board with digitizing their one on ones. This is incredibly handy for being able to search for content later on (instead of sifting through paper), so I get a huge benefit from it. Each individual can probably benefit from this too if their ever looking for things we discussed. Archiving digital documents has so many benefits over the paper counterparts that it’s hard to imagine going back to these mostly being paper-based. I can easily print off copies for the individual if they lose them (or if I lose them) and it makes life easier for me at year end. I can quickly scan over documents on my computer to get a good overview of a person’s year right on my laptop.
  • Nick’s Notes: A little tweak to the one on one process is that with the digital copies, I can put in highlighted notes. This allows me to get down my feedback to the individuals before we meet. In the past, I requested documents a couple of days before we meet so I can try to action what I can ahead of time. However, adding my notes and getting it back to the individual before we meet let’s them know things I want to dive deeper on. It gives them an opportunity to prepare their thoughts, and from what I’ve heard, this is really beneficial for them. The other positive thing is that it let’s me provide them kudos on certain things that I don’t necessarily need to spend a lot of time talking about them with one on one. It’s improved the efficiency of our meetings, and I think it benefits both sides.

What’s Next?

I’ll be honest in that I don’t have any next steps planned for these one on ones. But that’s okay! I’m going to let a few more rounds of these go through before I try to tweak the process. This let’s me get a feel for how the changes are playing out and then from there I can see where I might need to make some improvements.

If you don’t have a semi-structured system in place for your one on ones, I highly recommend it! Make it something you can at least get a feel for how successful they are. If you can gauge their effectiveness, then you can try to tweak the process over time to improve it! You’ll benefit from the information, and your team will benefit from you providing support for them.

Should My Method Do This? Should My Class?

Whose Job Is It?

I wanted to share my experience that I had working on a recent project. If you’ve been programming for a while, you’ve definitely heard of the single responsibility principle. If you’re new to programming, maybe this is news. The principle states:

That every class should have responsibility over a single part of the functionality provided by the software, and that responsibility should be entirely encapsulated by the class

You could extend this concept to apply to not only classes, but methods as well. Should you have that one method that is entirely responsible for creating a database connection, connecting to a web service, downloading data, updating the database, uploading some data, and then doing some user interface rendering? What would you even call that?!

The idea is really this: break down your code into separate pieces of functionality.

Easier Said Than Done… Or Is It?

The idea seems easy, right? Then why is it that people keep writing code that doesn’t follow this guideline? I’m guessing it’s because even though it’s an easy rule, it’s even easier to just… code what works.

The recent experience I wanted to share was my work on a project that has a pretty short time frame to prove it was feasible. It was starting something from scratch, so I had all the flexibility in the world to design code however I wanted to. I really made an effort to keep asking myself this one question: Whose job is it?

Every time I asked that question and found that it was not my current method’s responsibility, I would ask “Is this class really responsible for that”? I’d either go make myself a new method in my class or I’d just go immediately make a new class with a single method on it. It seemed like a bit of extra overhead each time I had to do it, but was it worth it in the end?

Absolutely. After the project had proven itself and development continued on, I was easily able to refactor code (where necessary) and mock out functionality in my coded tests. Instead of trying to write test setup code that required a whack of classes I needed to initialize, I could mock out a couple of interfaces and test with ease. It was also really obvious which pieces were responsible for what functionality.

Final Thoughts

If you want to get better at following the single responsibility principle, I think it starts with one question: Whose job is it? Try it out!

There’s Nothing Wrong With Failing


Failure to Communicate

So this post will be pretty short, but I wanted to quickly touch on a workplace experience that happened the other day. I was approached by a colleague (who’s perspective I really value) about the way some of us on the team were discussing a series of events. This individual was really concerned that we kept calling it a failure, and in this person’s mind, we hadn’t truly failed at anything. We had done an experiment in terms of tackling a development problem and the team had reached a critical mass where we declared “enough is enough, this is a failure”. I became concerned because I wanted to make sure this person and I were on the same page.

I couldn’t totally wrap my ahead around why this person was so concerned about calling it a failure. In my opinion, all the evidence was there to call it a failure! But I guess that was just a failure on my part to communicate properly. I think that there was a work culture gap where this person was viewing our declaration of a failure as something really negative, whereas a lot of us were really just marking it as a point of realization to not continue along with something. All of the reasons this person offered up for why our experiment was not a failure were true. We hadn’t missed a deadline to ship and we had a plan for how to work around it. That sounds like success, right?

I guess the communication breakdown was really this: There’s nothing wrong with failing. We tried something and we’ve identified that it’s not working. That’s a failure. What makes us successful? Being able to identify our failures, learn from them, and improve going forward. And that’s exactly what we’re doing. Acknowledging a failure and planning how we can be better next time around.

So with that said… You should be failing when you push the boundaries. Just make sure you learn from your failures.

Multiple C# Projects In Your Unity 3D Solution


Problem: Visual Studio and Unity Aren’t Playing Nice!

Disclaimer: I develop on Windows, so I have no idea if any of this even applies to other operating systems. I assume not. Sorry.

I just started poking around in Unity 4.6 and I’ve been having a blast. I’ve made it to the point where I want to actually start hammering out some code, but I came across a bit of a problem: I want to start leveraging other projects I’ve written in my Unity solution while I’m in Visual Studio, and things are blowing up. So, what gives?

Okay, so let me start by explaining why I want to do this. I understand that if I’m making a simple game, I should have no problem breaking out my unity scripts into sub folders and organizing them to be nice and pretty. The problem I’m encountering is that I have existing projects under source control and I don’t want to copy and paste all of the code as scripts into my Unity folder. I also want to be able to create re-usable code for my future games, so I’d like to start breaking things out into libraries as I see fit.

So, if you’ve been playing around in Unity for a bit, you might say “Oh, well you’re a dummy! Unity can totally leverage your C# DLLs once you drop them into your asset folder”! And you’d be 100% correct. But that’s not the workflow I want.

The underlying problem here is this: Unity will re-write your solution and project file when you flip between Unity and Visual Studio. But I’m sure they have it that way for a reason.

The Goal: Visual Studio and Unity Should… Play Nice!

My ideal state would be something like this:

  • Work in visual studio as much as I’d like to new projects to my solution, and reference them accordingly
  • Flip back and forth from Unity and Visual Studio without having to reset things to compile/run again
  • Build from visual studio and have things end up in the right spot… NOT copy DLLs
  • Not copy+paste my entire project(s) already under source control elsewhere

Is this something that can be achieved though? I was pretty determined that I should be able to do *something* to have this working. Could I get it perfect? I wasn’t sure… But I knew I could make it better.

The Solution: Give and Take with Unity

My *almost* perfect sution, which I’ll walk you through, is this: Leveraging Visual Studio tools for Unity, modify the Unity solution as you see fit and use directory junctions (symlinks) to the build output directories of other projects.

  1. Let’s get Visual Studio tools for Unity installed. Visit that link and download the version that you need for the version of Visual Studio that you use. After installing, I opened up my project within Unity and I had to import the Visual Studio Tools package.Import Package
    After selecting this menu item, I was presented with a dialog for picking the items to import. I left it as is.Import Package2After importing these items, I could see that Unity had successfully added these entries under my Assets folder. Okay, now we’re getting somewhere. Next up, I wanted to configure Unity to not modify my solution every time I go back and forth from Unity to Visual Studio. This is the part that kills whether or not I’ve added projects to my solution. For me, it’s critical to have code I’m working on immediately accessible so that I can jump back and forth between projects. Lucky for us, this part is pretty easy. Go to the menu to access your new Visual Studio Tools menu item:

    VS Tools Configure
    Selecting “Configuration” opens up a really simple dialog. Let’s make sure “Generate solution file” is unchecked! It’s that easy.

    VS Tools Configure2
    Once we have all of this setup, we should be able to go into Visual Studio and add other projects to our solution.

  2. The one thing that I *could not* get this solution to do is have Unity leave my main game project alone in Visual Studio. As a result, the rest of this walk through is allowing us to play by Unity’s rules. Unity is good at magically referencing all of the managed DLLs that you include within your assets folder. If you drop DLLs somewhere within “Assets” and switch to Visual Studio, Unity will likely have modified your main project to reference this DLL.My next step was creating a spot where I wanted to drop the build outputs of my extra projects I wanted to reference. In my Visual Studio solution, I have my original game project and some newly added projects I want to build from source. In Unity, I wanted these to end up in “Assets/Dependencies/bin”. No problem. Let’s make that folder structure (or your equivalent if you don’t like my naming):Bin Dependencies
    The next part is probably the “trickiest” part because it’s… well… unusual. You could technically stop here and manually copy DLLs back and forth, but I’m not about that life. I want things to happen automatically. For this, we’re going to use junction points. Browse to your newly created folder in an administrator command prompt. I say administrator because only certain users have permissions to create junction points. Your non-admin user might, but this is my “safe” way of instructing you. On the command prompt, we’re going to use “mklink” to create a junction. The command is “mlkink /D /J <NAME_OF_YOUR_PROJECT> <RELATIVE_PATH_TO_YOUR_PROJECT>”. For example, if you had a C# project you wanted to reference that was “MyCoolLibrary.csproj” and was located in the directory above your Unity project, you might use the command “mlkink /D /J MyCoolLibrary “……..MyCoolLibrarybindebug””. Note that I used two dots to go back up a directory several times (since we’re inside of AssetsDependenciesbin and want to get outside of our Unity project). you should get a success message when your junction is created.

    Repeat this step for as many extra projects as you want to include. You can always come back and add more projects this way too, or remove the junctions if you don’t want to include a project anymore.

    At this point, you’re technically done. If you build from Visual Studio, you should have your other projects’ DLLs end up in your Unity folder, and your main game project will be updated by Unity to reference these now!

  3. But… You’re not done if you use source control for your Unity project and have separate source control on your other projects. The scary thing here is that usually we don’t want our build outputs to be stored in source control… But if we do nothing else, your source control system will likely want to include the newly created “AssetsDependenciesbin” folder and any of the contents you’re building into there. I just modified my git ignore file (I’m sure there’s an equivalent for SVN or other source control) to exclude the contents of “AssetsDependenciesbin”.The reason I didn’t excluded dependencies all together is because I can add other folders and DLL references here that I don’t want to build (like… the normal way). This gives me the flexibility of building the projects I want to control and still be able to just reference other pre-built DLLs!


In three easy steps, you should be able to use Unity, Visual Studio, and multiple projects in one solution in a what-feels-like-normal way. Because there’s still some dynamic stuff going on with Unity updating your main project, you might find the odd time you need to build twice to fix up compilation problems. I’ve seen this happen maybe once or twice so far, but otherwise it feels like normal. It’s also  important to note that you can’t escape the Unity project updating… don’t add references to your main project manually. That’s what that “AssetsDependencies” folder is for that we made.

Here are a few shots of what my setup looks like (proof that it works):

Solution Explorer

Unity Dependencies

And of course… it’s not the perfect solution. There’s still these things:

  • Unity gets mad at you for using junctions within your project. It actually tells you not to do this because you can mess things up. It’s working awesome for me right now though… So I’m going to just ignore this warning.
  • Remember step 3 where we ignored the AssetsDependenciesbin location in git? This actually ignored your junction points you created too. As a result, anyone else who clones your code will need to create junctions too. I’m working solo, so I’m not too worried about this step… But it’s definitely something that should be fixed up (again, I’m sure it’s doable, but I’m in no rush).

Hope that helps you feel more at home in Unity and Visual Studio! It certainly made it nicer for me.


C# Dev Connect 1 – Intro To Threading

C# Dev Connect

C# Dev Connect 1: Intro to Threading

In my last post, I mentioned we’d be hosting a C# Dev Connect meetup at our Magnet Forensics HQ in Waterloo. I figured I’d post to talk about how the event went so that if you couldn’t make it, you’ll have an idea for next time (and if you did make it, maybe you can comment on how you thought the event went). Our first Dev Connect was lead by a colleague of mine, Chris Sippel, who wanted to give a talk on threading basics in C#. Threading can quickly become a really complex topic, so Chris wanted to keep it high level and talk about the different approaches you can use to start threading in your C# applications.

Dev Connect: Before the Talk

Before Chris gave his talk on threading, we had our attendees slowly streaming in. Sure, we had a lot of our Magnet development team show up to offer support for Chris, but I was still pleasantly surprised to see others from the area that I’ve never met before showing an interest in C#. Our colleague Amaris had done an awesome job coordinating the first event for us, and even got us stocked up with pizza and pop. For the first hour or so, we had our guests fed and introduced to each other. A great start to the evening!

Dev Connect: The Talk

After everyone was settled in, we had our attendees pull up some chairs at tables or post up in our comfy soft seating to listen to what Chris had to say. Chris walked us through various slides and coding examples and was able to show us working examples of code to back up what he was saying. I was really proud of Chris for taking the leap to be our first speaker, and I think he did a great job. His slides and sample code are available at the Dev Connect git hub if you’re interested in taking a peek.

Dev Connect: The Aftermath

Once Chris was done talking, we had a few attendees leave to carry on with the rest of their evening, but it was great to see the majority hang back for further discussion. Some people were trying out the threading exercises that Chris had put together, others had tried it beforehand and had questions on it, and a bunch of people were sticking around just to talk .NET. When I envisioned what Dev Connect might have looked like, this was it. It felt great to help facilitate a positive discussion around using the .NET framework and C#, especially because people were clearly benefiting from it.

If you came for our first meetup, then thanks! If you couldn’t make it or you’re interested in the next one, be sure to check out our meetup page. We’ll see you next time!

First C# Dev Connect is Coming Up

C# Dev Connect


C# Dev Connect Meetup!

About a year ago I had thrown around the idea of creating a C#-specific group that would meet at a regular interval with some of my colleagues. I saw that there was interest, but between all of the things we had going on in our personal lives and work lives, we just hadn’t been able to co-ordinate something. I’m excited to announce that with some more solid planning over the last couple of months, C# Dev Connect will be able to host their first meetup! The company I work for, Magnet Forensics, has graciously offered our new office to host the event which will help tremendously. We’ll have a group of people from Magnet Forensics their to help out, but the only thing “Magnet” about the event is really just that it’s hosted at the office.

What’s on the Dev Connect Agenda?

This upcoming Tuesday (Tuesday January 20th, 2015) C# Dev Connect will be hosting their first monthly meetup on the topic of Threading in C#. Directly from the event’s Meetup page:

Overview of the the basics of threading in C# language. Threading is a very complex idea with many different ways of handling the same problem, however, you have to learn to crawl before you can walk. We’ll be discussing the basics of threads in .NET 2.0 and .NET 4.0. In .NET 2.0 we’ll be discussing the Thread object, various ways to start/stop threads, and potential stumbling blocks when it comes to threading in C#. In .NET 4.0 we’ll be talking about the async and await operators and how to use them.

A colleague of mine, Chris Sippel, will be giving the talk. People are encouraged to bring their laptops so they can try out some C# exercises related to the discussion. This initial talk may be more geared at an introductory-level, but our goal is to be able to cover topics for all levels of knowledge in C# (From never used it before, to expert level). We’ll even provide some food! All you have to do is show up and be ready to learn some C#, or share your C# knowledge.

If you’re looking for our venue, we had this little map put together:

C# Dev Connect Venue Map

Go into the back of 156 Columbia Street West in Waterloo (at the corner of Phillip and Columbia). If you’re familiar with the area, this used to be called RIM/Blackberry 5.


More Dev Connect Info

Here are a few additional links to get you to more C# Dev Connect information online:

We’re excited for you to join us!

  • Nick Cosentino

    Nick Cosentino

    I work as a team lead of software engineering at Magnet Forensics (http://www.magnetforensics.com). I'm into powerlifting, bodybuilding, and blogging about leadership/development topics over at http://www.devleader.ca.

    Verified Services

    View Full Profile →

  • Copyright © 1996-2010 Dev Leader. All rights reserved.
    Jarrah theme by Templates Next | Powered by WordPress