Tips

Resolutions: Why Have Them and How to be Successful

Resolutions

What’s Up With Resolutions?

It’s that time of year! You know, where everyone is thinking back on all of the things they wish they had actually accomplished this year and they’re convincing themselves they’ll get it done next year. It’s time to set some New Year’s resolutions!

But what’s up with that? Why does it take people a whole year to reflect on what’s going right or wrong in their life and try to change their direction? Why does it take you a year to realize your diet and exercise regime is something you couldn’t stick to and you’re no better off than you were last year? Why were you still unmotivated in your career doing the same old thing? Why didn’t you get your head in the game for school? Why did you continue to pursue toxic relationships?

Continuous Improvement

Resolutions are all about trying to get better; we’re trying to continuously improve. Often when I talk to people about “agile” software development, all that I really try to drive at is that “continuous improvement”, in my own personal opinion, is really the important part.

So to continuously try to improve, you need to analyze what’s going well and what’s going not so well, set some goals, try things out, and re-evaluate. It’s a nice iterative cycle. It’s kind of like setting mini resolutions for yourself (or in the case of software development, maybe for your team or teams).

The big difference is the amount of time between measuring whether or not your change is having an effect! Waiting an entire year to try and measure your success would be absolute insanity in a fast moving software environment… why haven’t we gotten better at realizing this for our own personal continuous improvement?

Mark Manson

I’ve been reading a ton of Mark Manson material lately because of events going on in my life and the fact that the way he writes really aligns with how I often talk to my close friends. There’s analysis, there’s some humour, but it’s often a bit blunt and to the point. It’s actually a really nice change from many leadership, self help, or similar content where everything almost feels impossibly positive. This just feels like a real person talking to you.

Mark talks about setting goals in this blog post, and it got me motivated to reflect on my own goals and even write this post. In Mark’s post, he talks about our identities being built up by a bunch of habits, and goes on to state that some research shows that often habits only take about 30 days to form. In his opinion, using a whole year to set a goal of changing, adding, or dropping a habit just allows us to procrastinate for the entire year and then ultimately we fail.

His suggestion? Shorten the time frame.

If it takes on average 30 days to make a habit, why not have a “New Month’s Resolution”? Setting resolutions this way should then allow you to establish a new habit and then at the end of the month reflect on whether or not it worked well. You have less time to procrastinate. Your iteration is much shorter. Interesting.

My Own Goals

I figured I’d wrap this up by sharing some of my own goals publicly. I have a few things I’d like to work on coming up for the year, so I’ll outline them briefly:

  • Read more:
    • I’ve definitely dropped the ball on this one. I always had the excuse for myself that I don’t have time to do it. However, I found when I read the most consistently was when I found a decent book that I could read for a few minutes before I fell asleep every night. No pressure to get through it, but the books were there if I felt intrigued or needed to relax my brain a bit.
  • Try meditation:
    • I’ve always associated meditation with being spiritual or religious. Both of these things don’t really mesh well with me, personally. Mark Manson mentioned meditation in his post that I mentioned earlier, and it gave me a different perspective. I know I get stressed easily and I used to have pretty bad anxiety problems. Maybe this is something I could try out?
  • Write more:
    • I used to blog a lot. Between this blog, my fitness blog, and my car blog, I used to write content multiple times per week. It was always a bit of a social media experiment to get a better feel for how internet traffic works and where different types of content get the best visibility, but it also let me express myself. My content production has been almost nothing over the past year, and it’s something I’d like to look at more of.
  • Try public speaking:
    • This was something my HR Director had a chat with me about as a potentially cool opportunity. We were discussing getting more involved with the community and pushing boundaries, and she proposed speaking to students at local colleges or similar. I was turned off by it at first because I don’t like public speaking. But then the more I thought about it, I don’t know what public speaking is because I’ve never really done it. So why not try it?

But those aren’t my resolutions! Those are all just ideas for things I’m interested in improving. So taking some of Manson’s advice, I’m going to take ONE of those things and try to form a habit out of it for a month. Focusing on one thing at a time allows you to really give yourself an opportunity to establish the habit without worrying about too many other things, and ultimately setting yourself up for failure.

My first resolution is going to be to try out meditation. So for the first month, I’m going to try meditating four times per week for about 10 minutes at a time. I should be able to easily do this for two days on Saturday and Sunday where I don’t really have any external commitments, and then during the week I should be able to find at least two days before work where I can give this a shot.

Small steps, but small steps still take you forward.


How to Refocus: Getting Back in the Groove

How to Refocus: Getting Back in the Groove

Identifying when you need to refocus

It happens to everyone at some point to varying degrees, for various reasons, and at different times in our lives–but it’ll happen! You hit a period or a rut where you can’t keep your focus on continuing to be successful (and I’m over-generalizing that for a good reason).

Maybe this means you can’t focus at work to perform at an optimal level. Maybe you’re falling off the diet you’ve been working hard on. Maybe your training in the gym or for your sport is taking a hit because your head isn’t in the game. Maybe you find yourself unable to hit the books studying or completing your projects in school.

It can look different for everyone.

There are a bunch of different little warning signs that things aren’t quite on track and you need to refocus:

  • You’re losing interest in what you’re working on or have been working towards
  • You can’t seem to keep your mind on the goal(s) that you’ve set
  • You feel like you’re plateauing in your progress toward your goal(s)
  • You’re suddenly finding you’re not happy or not feeling fulfilled
  • You’re taking out stress on your co-workers, friends, or loved ones
  • You’re isolating yourself from friends and family
  • You find yourself overly concerned with things you can’t change (dwelling on the past or fearing a future event, like an exam)

But don’t freak out just yet… you need to see and acknowledge the signs before you can start to make any progress. Feeling pretty good about everything in your life? Then keep doin’ what you’re doin’! If any of those points seemed to resonate with you, then let’s continue on!

Don’t worry

If you’ve found that you’re in a bit of a rut, it’s important to not worry. You need to remind yourself that you were once on track and you’ll get back on track. You’ve already identified you need to refocus, so you have the power to get back on track.

Worrying about the fact you’ve identified you’re not in an ideal state of mind doesn’t help anything; in fact, it makes it worse.

“I can’t seem to find my focus at work… I’m going to be such a bad employee. I wonder if I can even get my work done now. My colleagues are going to notice… My manager will notice!”

“Training has really been kicking my butt… Why am I even doing this? I wonder if I should just give up. I haven’t seen any progress in my abilities in the past couple of weeks. I’m hopeless at this.”

“There’s a lot going on at school now and I can’t seem to keep up anymore. I’m going to fail this project that’s due next week because I can’t seem to get started on it. And my exams are coming up and I can’t seem to study. I’m going to fail this term.”

All of that kind of talk is negative and it’s not going to help you progress! So why are you continuing to focus on hampering your progress? Don’t do it. Instead, acknowledge you’re looking for a positive change, and then acknowledge that you’re in full control to start making that change.

And step one is to stop worrying and drop the negativity.

Analyze what’s getting you down

I get told that the engineer in me talks too much about analysis… but I think it’s a critical step! You need to understand the things that are getting you down. You’ve identified that you need to refocus because you’re not happy with your current behaviour or state of mind, but what are those things that are getting you down?

If you understand what’s getting you down you can start to take corrective actions. It’s got a (cue the fancy buzzword) synergistic effect with my previous point–Drop the negative thoughts and work on correcting them in parallel.

Let’s look at a couple of potential examples:

  • You’re unable to see any progress in your work, schooling, or training
    • How are you measuring progress right now?
      • Some things aren’t well suited for quantitative measurement
      • Try and identify a consistent mechanism for measuring progress
    • How often do you measure progress?
      • Some things don’t change very frequently so it’s hard to notice progress
      • Many things don’t progress in a totally linear fashion
    • Is it time to update your strategy for continuing success?
      • How long have you been doing the exact same thing expecting to get the same increase in results?
      • Have other environmental factors changed that suggest you should update what you’re doing?
    • Have you actually compared your current status to a previous point in time, or is it just how you feel?
      • Maybe it’s all in your head!
      • Try reflecting on where you were a month ago, 6 months ago, and a year ago.
  • You’re constantly comparing yourself to others
    • Do you actually know all the ins and outs of a person’s life?
      • Just because you observe certain things, it doesn’t mean they’re exactly as they seem
      • If you don’t have the full perspective and details on someone’s life, you’re guaranteed to be misunderstanding something
    • Can you change other people?
      • … Even if you could, you shouldn’t!
      • See the next major point 🙂
    • Are you comparing different subsets of your lives and expecting them to align a certain way?
      • Other people are not you and are living a different life
      • You can only truly compare yourself to your own self at various parts in your life
  • You’re dwelling on things you can’t change
    • Are you expecting to change something in the past that’s already happened?
      • Unless you have a time machine, you absolutely cannot change past events
      • Trying to understand past events can be helpful learning for the future
    • Are you dreading an event in the future that’s unavoidable?
      • If you can’t avoid it, then work at accepting it’s going to happen. (Things like exams or year-end reviews for work, for example)
      • Ask yourself why you’re dreading it. Try applying this example of analysis to THAT reason and dive deeper.
    • Are you focused on the thoughts and emotions of other people?
      • You can’t (and shouldn’t try to) control how other people think and feel
      • The best you can do is focus on yourself and live the values that you believe in
      • When it comes to thoughts and feelings, we all observe and interpret on our own
    • Have you considered whether this situation is temporary?
      • When you don’t know how long you’ll be out of control, it can make you feel helpless
      • Knowing there’s a point in time where there’s a change that can affect your situation can be a great help (i.e. money is tight for two weeks and you just need that next pay cheque to come through)

These are just a handful of examples, but hopefully you can see a pattern:

  1. Identify a particular thing that you know is getting you down.
  2. Ask yourself what effects it’s having and why you believe it’s having those effects on you.
  3. Dive deeper on each one of those by repeating these steps.

It’s nothing groundbreaking and I’m not claiming it will magically fix your problems… But analyzing things can lead to understanding, and understanding can lead to progress.

Remind yourself of your strengths

Everyone gets down on themselves at some point and this will cause you to lose focus on your goals. But I guarantee you if you stop and think about it, there’s a lot of great things that you got going on!

Don’t believe me? I challenge you to take a pen and something you can write on.

  • Write three things you’re proud of or that you’ve accomplished
  • Write three things about why your best friends like you
  • Write down the thing you love doing most or loved doing most before this point in time
  • Write down the thing you think you’re best at

Now step back for a second and think about the things you wrote.

  • It’s very likely the accomplishments you made or things you’re proud of required you to overcome something. Unless you got lucky or had some magic, odds are you used your strengths to achieve these things.
  • Your friends stay by your side because they admire you. They admire the qualities you have and see strength in you. You might not realize these strengths, but your friends perceive these about you.
  • If you love doing something, you’re probably pretty good at it, and if you’re not, odds are you’ll get good at it because you love to do it! Acknowledge and understand what you’re passionate about because it will tell you about your strengths.
  • Sometimes you’re good at things that you’re not totally passionate about. That’s cool too! What makes you good at this thing? Can you apply this to other areas in your life?

Set some goals

At this point you’ve:

  • Identified that you’re not content with your current state
  • Reminded yourself that you can make a change
  • Analyzed what’s getting you down so that you have a better understanding of some direction to take
  • Reflected on your own personal strengths

And now… It’s time to set some goals!

Goals you set should ideally align with SMART goals. Do yourself a favour and check that page out for a little bit more information so you can set yourself up for success. You want to make sure you’ve agreed your goal is achievable within a certain period of time and that you can measure progress in some way as you go. This is critical for a few reasons:

  • No time box? How will you know if you’re on track?
  • No way to measure? … Same problem!
  • Not realistic or achievable? You’re setting yourself up for failure.

It seems obvious when it’s laid out like that, but this will keep you from setting goals like “I’m going to do better at work”, “I’ll kick my training up a notch”, or “I’ll worry less about what’s going on in other peoples’ lives”. None of those goal statements indicate when you’ll be done by or how you’re going to measure progress.

Here’s a simple example:

In the next month, instead of missing on average three practices per week, I’ll reduce this to one. I’ll make sure that I have things put into my agenda ahead of time so I won’t schedule things over practice sessions, and if something critical comes up last minute, I can use the following week to compensate for it.

  • Specifically about not missing practices
  • Measured weekly by an average of missed practices
  • Achievable because it’s an improvement and not an expectation of perfection
  • Realistic and with the reward of getting to more practices
  • Time boxed to one month.

Start slow and set one or two SMART goals. As you build confidence that you’re progressing in your goals, try adding in another. You don’t want to overwhelm yourself!

Be brave enough to ask for help

If you’re reading this and you’re considering making changes then you’re already starting your path to progress. That’s AWESOME and you’re a strong person for being able to get started.

Sometimes things can get tough though. You might feel you’ve made progress over a few weeks or months and seemingly fall back to square one. You might feel like you’ve set SMART goals but you’re having trouble even getting started. Maybe you read this and still don’t even know how to get started.

There are a million reasons why getting started or continuing can be hard. Be brave though. Ask for help. I can guarantee you have some amazing friends and family that love you that want to see you be successful. There’s nothing to be ashamed of when asking for help! It’s a courageous thing to admit that you’d like assistance on your path for doing better, and people see that. You might feel embarrassed or ashamed, but other people see a brave person trying to move forward.

Summary

It’s a common thing for people to fall into a figurative rut in life. It happens to everyone at some point and it’s nothing to get down on yourself about. You’re not a bad human being if it happens to you, so don’t sweat it.

Analyzing your current situation and why you feel certain ways can help you gain an understanding of what’s going on. Focus on driving out the negativity and create actions to try making progress by leveraging your strengths.

In the end, remember that you control your life and you can make all the positive changes to it that you want to see. It takes time and hard work, but if you put in the effort, you’ll always get to where you want to be.

Now get out there and go kick some ass.


What Makes Good Code? – Should Every Class Have An Interface? Pt 1

What Makes Good Code? - Should Every Class Have An Interface?

What’s An Interface?

I mentioned in the first post of this series that I’ll likely be referring to C# in most of these posts. I think the concept of an interface in C# extends to other languages–sometimes by a different name–so the discussion here may still be applicable. Some examples in C++, Javaand Python to get you going for comparisons.

From MSDN:

An interface contains definitions for a group of related functionalities that a class or a struct can implement.
By using interfaces, you can, for example, include behavior from multiple sources in a class. That capability is important in C# because the language doesn’t support multiple inheritance of classes. In addition, you must use an interface if you want to simulate inheritance for structs, because they can’t actually inherit from another struct or class.

It’s also important to note that an interface decouples the definition of something from its implementation. Decoupled code is, in general, something that programmers are always after. If we refer back to the points I defined for what makes good code (again, in my opinion), we can see how interfaces should help with that.

  • Extensibility: Referring to interfaces in code instead of concrete classes allows a developer to swap out the implementation easier (i.e. extend support for different data providers in your data layer). They provide a specification to be met should a developer want to extend the code base with new concrete implementations.
  • Maintainability: Interfaces make refactoring an easier job (when the interface signature doesn’t have to change). A developer can get the flexibility of modifying the implementation that already exists or creating a new one provided that it meets the interface.
  • Testability: Referring to interfaces in code instead of concrete classes allows mocking frameworks to leverage mocked objects so that true unit tests are easier to write.
  • Readability: I’m neutral on this. I don’t think interfaces are overly helpful for making code more readable, but I don’t think they inherently make code harder to read.

I’m only trying to focus on some of the pro’s here, and we’ll use this sub-series to explore if these hold true across the board. So… should every class have a backing interface?

An Example

Let’s walk through a little example. In this example, we’ll look at an object that “does stuff”, but it requires something that can do a string lookup to “do stuff” with. We’ll look at how using an interface can make this type of code extensible!

First, here is our interface that we’ll use for looking up strings:

public interface IStringLookup
{
    string GetString(string name);
}

And here is our first implementation of something that can lookup strings for us. It’ll just lookup an XML node and pull a value from it. (How it actually does this stuff isn’t really important for the example, which is why I’m glossing over it):

public sealed class XmlStringLookup : IStringLookup
{
    private readonly XmlDocument _xmlDocument;

    public XmlStringLookup(XmlDocument xmlDocument)
    {
        _xmlDocument = xmlDocument;
    }

    public string GetString(string name)
    {
        return _xmlDocument
            .GetElementsByTagName(name)
            .Cast<XmlElement>()
            .First()
            .Value;
    }
}

This will be used to plug into the rest of the code:

private static int Main(string[] args)
{
    var obj = CreateObj();
    var stringLookup = CreateStringLookup();
    
    obj.DoStuff(stringLookup);
 
    return 0;
}
 
private static IMyObject CreateObj()
{
    return new MyObject();
}
 
private static IStringLookup CreateStringLookup()
{
    return new XmlStringLookup(new XmlDocument());
}
 
public interface IMyObject
{
    void DoStuff(IStringLookup stringLookup);
}
 
public class MyObject : IMyObject
{
    public void DoStuff(IStringLookup stringLookup)
    {
        var theFancyString = stringLookup.GetString("FancyString");
        
        // TODO: do stuff with this string
    }
}

In the code snippet above, you’ll see our Main() method creating an instance of “MyObject” which is the thing that’s going to “DoStuff” with our XML string lookup. The important thing to note is that the DoStuff method takes in the interface IStringLookup that our XML class implements.

Now, XML string lookups are great, but let’s show why interfaces make this code extensible. Let’s swap out an XML lookup for an overly simplified CSV string lookup! Here’s the implementation:

public sealed class CsvStringLookup : IStringLookup
{
    private readonly StreamReader _reader;
 
    public CsvStringLookup(StreamReader reader)
    {
        _reader = reader;
    }
 
    public string GetString(string name)
    {
        string line;
        while ((line = _reader.ReadLine()) != null)
        {
            var split = line.Split(',');
            if (split[0] != name)
            {
                continue;
            }
 
            return split[1];
        }
 
        throw new InvalidOperationException("Not found.");
    }
}

Now to leverage this class, we only need to modify ONE line of code from the original posting! Just modify CreateStringLookup() to be:

private static IStringLookup CreateStringLookup()
{
    return new CsvStringLookup(new StreamReader(File.OpenRead(@"pathtosomefile.txt")));
}

And voila! We’ve been able to extend our code to use a COMPLETELY different implementation of a string lookup with relatively no code change. You could make the argument that if you needed to modify the implementation for a buggy class that as long as you were adhering to the interface, you wouldn’t need to modify much surrounding code (just like this example). This would be a point towards improved maintainability in code.

“But wait!” you shout, “I could have done the EXACT same thing with an abstract class instead of the IStringLookup interface you big dummy! Interfaces are garbage!”

And you wouldn’t be wrong about the abstract class part! It’s totally true that IStringLookup could instead have been an abstract class like StringLookupBase (or something…) and the benefits would still apply! That’s a really interesting point, so let’s keep that in mind as we continue on through out this whole series. The little lesson here? It’s not the interface that gives us this bonus, it’s the API boundary and level of abstraction we introduced (something that does string lookups). Both an interface and abstract class happen to help us a lot here.

Continue to Part 2


Staying Productive

Staying Productive

Background

I wrote a post a long while back about how I started to use Google Keep to get myself organized. Google Keep has been a go-to app for me on my phone for a long time now. I love using it to make lists of things, and I find it much more convenient than a paper notebook.

Don’t get me wrong–I think a paper notebook still has plenty of uses! I love my notebook for long running meetings with open-ended discussions or brain storming sessions. It’s great to be able to take a pen/pencil and doodle down any idea that comes to mind. When I’m having a free-form conversation, I need a free-form way to take notes.

However, my phone is something I almost always have with me–and my paper notebook isn’t. My phone allows me to take my Google Keep notes and email them to myself. It allows me to have a reminder right on my homescreen every time I unlock my phone. It’s just more convenient.

But something happened since the last time I wrote about using Google Keep. I use it more and more, and at some point I felt like I was getting less and less done. This is less about in the office and more about how productive I feel at home. So how can I be getting less done (or at least feeling that way) if I’m taking my own advice and using Google Keep to hack my TODO list?

I have tons of lists and no actions.

I think that’s the big take away. I list all the things I’m thinking about, and I keep making more lists. There’s no time frame around actioning things with the lists I’m making! So, in the spirit of continuous improvement, I set out to make some changes.

Inspiration

I know I wanted to make some changes with this part of my life because it was starting to weigh down on me; I didn’t feel productive. But I knew this wasn’t going to be something I’d answer over night. I kept my eyes and ears open for ideas for a little while before I thought up some tweaks.

The first thing I came across while living my alter ego was an Instagram post by Big J. Big J is this guy that’s incredibly big and incredibly strong. He’s lived the bodybuilding life and has a lot to show for it… And because being successful in the bodybuilding and strength world means being extremely motivated and hardworking, it’s no surprise I picked up this little bit from Big J:

Simple idea, right? Put some time into planning your schedule for the upcoming days. It almost seems to obvious to not be doing. I mean, don’t I do this already? I have meeting invites and stuff in my calendar for work… But, that’s right! I don’t have anything in my calendar for my own personal things that I like to do outside of work. Hmmm…

The next little tip to push me along was after a conversation with a teammate of mine at work. Our conversation was mostly about work-life balance, but my colleague was telling me about something he was trying out around forming habits. Essentially, over a period of time he’s been recording his success at keeping on top of good habits and identifying reasons why he’s sometimes missing them. Definitely right up the continuous improvement alley! Another great point he brought up was that good habits need to be introduced one at a time and only once you’ve been consistent with your other habits. By adding too much at once, you can derail the whole good habit process.

The “Staying Productive” Hack

This is the hack I’ve been implementing for a bit over a week now, and it’s helped tremendously with feeling productive!

Every night when I’m laying in bed, I spend about 5-15 minutes with my phone and I schedule personal activities in my calendar for the following day.

There it is. It’s not rocket science or something Earth shattering, but it’s definitely helping. Taking a page out of Big J’s book and a tip from my colleague, I’ve modified my schedule to introduce a very brief planning period every day. And it’s just one change that I think is helping introduce a good habit into my life.

This has helped me:

  • Stay on top of prepping food (which is a big part of the lifestyle I try to live)
  • Schedule time to relax (yes, I even schedule time for things like video games!)
  • Schedule time to blog (I run three blogs, and sometimes finding time to write feels like a chore)
  • Work on personal projects
  • … Feel like I’m being productive.

And no, I didn’t drop Google Keep–It actually helps feed into my scheduling! It’s great to look over my lists of things and try to create actions for them.

Next Steps

This simple hack is not only nothing particularly fancy, it’s also not bullet proof! But that’s okay when you’re always trying to continuously improve. Some snags I’ve run into or things I’ve thought about are:

  • How do I adjust my planned schedule when unexpected things come up? If someone drops in for a visit out of nowhere, or my car breaks down, or my dog decides to tear up the furniture, how do I make sure I can continue on with my planned schedule? Right now some things drop off the schedule or I push other things off to compensate. This hasn’t been too big of a problem so far, but sometimes this has a bit of a landslide effect and it makes the rest of the day feel unproductive. A little bit of dirt in the cogs seems to throw the whole thing off for me! This is something I’ll be thinking about as I encounter it and I’ll try to thing of some easy solutions.
  • How can I be more like Big J?! Aside from being bigger and stronger, how can I plan for more days? Big J plans every Sunday but I plan every night for the next day. Is there a happy medium? Planning every Sunday would potentially amplify the landslide effect I previously mentioned, but it would be a convenient single planning session for the whole week. Perhaps I’ll continue with the advice of my colleague and modify one part of my new habit at a time and look at planning for an extra day at a time and see how that goes!

If you’ve been making checklists and find that you’re unable to action items, try this approach! It takes only a few minutes every day, and so far I’ve been having great success in feeling productive. It’s not difficult, so it’s worth a try!


Burn Out

Disclaimer

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

Background

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

Fail!

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.


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!


MyoSharp – Update On The Horizon

MyoSharp

If you haven’t checked it out already, my friend Tayfun and I created an open source C# wrapper for Thalmic’s Myo. It’s hosted on GitHub over here, so you can browse and pull down code whenever you want. We’ve had some great feedback from users of our API, so we continue to welcome it (both positive and negative!) in order to improve the usability.

Thalmic has plans to release a firmware update to allow more data to be accessible through their API. Right now, MyoSharp is a bit out of date, but once this big firmware update lands we’ll take some more time to get it up to date again. Remember, it’s open source so you can feel free to contribute!

Troubleshooting

The most common question I receive is “I keep getting an exception about not being able to connect when I run the sample code”. I’ve tried to help a few people through this so I just figured I’d mention it right here for clarity: It’s more than likely that your MyoConnect version and the version we packaged with MyoSharp have become out of date. You probably keep your Myo SDK more up to date than MyoSharp is.

Don’t worry! So far we’ve had reasonably good luck just replacing the Myo DLLs in the x86 and x64 folder of the solution. Provided Thalmic didn’t break any API compatibility, things should actually just work out of the box. If they *DID* break backwards compatibility, it’s likely not that big of a deal either. You can update the PInvokes used to match the signatures they expect, and again, you should be up and running pretty quickly.

With that said, hold tight! We’ll get something updated soon. If you can’t wait, then that’s my suggestion for how to get up and running. Please don’t hesitate to contact Tayfun or myself for troubleshooting. Just post in the comments here and we can try to help out!


  • 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