- Fresh snow falling from the sky
- The taste of butter of a bran muffin
- Warm tea and background office noise
- Helpful coworkers
- Subtle kitty purrs
- A dog that goes into hysterics of excitement when you wake up
- Sunshine through the window during yoga
- Friends who check in and care
- Abundant knowledge everywhere
- Rediscovering lost items
- Sunshine in the Okanagan
- Random running adventures
- A supportive team
- Pastel de Nata
- Being comfortable with being alone
- The smell of the wilderness
- Hot tea on a hot summer’s day
- Lightweight travel gear
- The sound of footsteps on the crunchy snow
- Discovering new music by just letting Spotify do it’s random thing
- Late nights drinking tea working through code at the coffee shop
- Cheese. Oh man I do love me some cheese!
- Warm jackets that keep the cold out during winter bike rides
- Pants that are comfy and fit well
- A work environment that makes me a better developer and person every day
- Eating french fries and not caring
- Waking up to a cat purring beside me.
2016 in Review
2016 was a whirlwind of a year. On one hand, a lot of big things happened, on the other, I feel like I could have done more. Here are the highlights:
2016 was a big year for downsizing. Early on in the year, my partner and I decided to move to Vernon from Lake Country since her work was closer to Vernon. It was a bit nerve-wracking at firt but once we started crunching the numbers, we realized it was an opportunity to reduce or housing expenes significantly. While our house in Lake Country was a unique find and we loved it very much, it was also bigger than we needed, took a lot to maintain (3/4 of an acre), and was a 30 min drive from the city. Between the commute, property taxes and maintenance, it was costing us quite a bit money but also time. It waxsn’t financuially out of reach by any means, but it meant less vacations, recreation time, and other life experiences. Once we started crunching the numbers, moving to a smaller place in Vernon would almost half our housing costs and put us within waling distance of lamost everything including the office I spent a few days a week in.
Moving to Vernon was a was a no-brainer.
In February, we started searching for homes, and after a few misses managed to land a comfy little home in one of thee most desirable neighbourhoods of Vernon. It was half the cost of our previous home, had a garage, yard for the dog to run around in and great neighbours. Downsizing and moving to our current home in Vernon was by far the best decision of 2016.
The other area we’ve downsized in is “stuff.” We’ve sold, donated, given away and thrown out alot of our things. I estimate that currently, I own the least amount of “things” since moving out from my parents. I’ve sold most of my electronics, extra clothing, books, and furniture. We don’t even own a TV anymore. I also sold my beloved 1992 Land Cruiser. For those that don’t know me, this was a HUGE decision, as I’ve been a Land Cruiser enthusiast and have owned 12 different ones over the past 15 years, This truck was a super rare find, something I had spent 10+ years looking for. In the end, priorities change , experiences are more important than things and I decided that the Land Cruiser was a carry-over of an older lifestyle. Stuff is over-rated and in my mind, a distraction from real happiness. Note, I still own a lot of recreation items for hiking, backpacking and camping but focus on quality over quantity there. More on that in a future posts
Finding my Work happy Place
2016 was also a year of soul-searching in terms of finding a new work that resonated with me. Downsizing was a huge help in this regard, creating much more financial room for me to experiment with different approaches. TO be honest I spent a lot of the year bouncing around between various companies, startups and freelance gigs. I even took on a full time “job”, quit it 4 months later and applied for a couple of jobs in the late summer. It seemed that every month, I was doing a different thing, but none of it really felt ‘right.’ SUre it was all fun an interesting work, and I got to work with a lot of awesome pople, but it felt like something was missing. In late summer, I took a break from all of it, and came back to it a few weeks later with more clarity. I figured out that I work best on teams of contractors that are farily autonomous, yet connected on similar goals, values and work styles. I also like working on a variety of things, so to that end I’ve determined that an idea mix for me is 50-75% agency work, leaving 25%+ for “social impact” type work. I’m not doing tone of social impact work right now but hoping to change that in 2017
One unexpected highlight of 2016 was teaching a local developer bootcamp in the Okanagan.
Looking ahead to 2017
100 things I can do:
- Summit Mt Hood
- Run a 100k ultramarathon
- Run a races in at least one other country
- Run 1500km, total elevation of 50,000+
- Summit at least 5 peaks in the Canadian Rockies
- Get my Ham Radio licence
- Achieve a net-zero electricty bill over the year
- Get rid of (even more) stuff
2017 River Valley Revenge
Hanging on by a Thread
It was at kilometer 58 and hanging on by a thread. Metaphors aside, I was physically grasping onto “threads” of grass/shrubs high on a steep muddy bank of the North Saskatchewan River. Both of my feet had just slipped out from under me, and the lower half of my body was quickly making a decent to the river below. I grabbed the grass in a last ditch attempt and to my absolute amazement, these tiny clumps held strong. In fact, I was so astonished that it took my brain a second to switch from “sh*t, we’re going into the river, prepare for the worst” to “holy crap, we might have a chance here!” I quickly dug the side lugs of my shoes into the mud below the trail and scrambled on hands and knees back up onto the trail.
Flashback to 8 hours before, there I was standing with 15 other runners in the drizzle beside the Starting Arch. My watch showed 2:57am and the Race Director was going through the last details of the course. “We’re going to have you go around Golfball Alley and Two Truck trail, apparently some 100-milers ended up in the river and there are no more branches to grab onto. I mean you can go on it if you really want to..”
Fast forward back to the “situation at 58km”, now that I was out of emergency mode, I could assess the situation. I likely wouldn’t have ended up all the way down in the river. But on tired legs after rolling/sliding down the hill, it would have been a bad/tough time getting back up to the trail, and maybe have been enough to mentally break me into dropping out. I nipped that thought in the bud, forged ahead and running over two.. golfballs.. on the trail. “That’s weird” I thought, and then it all sunk in. “crap, this is that Golfball trail they told us to avoid, shit shit shit” I thought to myself(out loud). A few of runners had missed the turn and now two of us were standing in front of a mud “halfpipe/chute” we had to cross. In the dry conditions it would have been a non-issue but with all the rain, “dodgy” was an understatement. The runner behind me looked at it, said “F this” and then disappeared into the bushes above the trail. I thought about my options and decided the risk of a race-ending trip down the chute was too high (I gave it 50/50 odds) and going back* was also too dodgy. I made the executive decision to abort this “alternative course” and seek the “boring-yet-safe course” through the residential area on the ridge. After bushwhacking through chest level shrubs, and a little jaunt beside a golf course (ahh, that explains the golf balls!) I was back on the course markings. Huge relief
The rest of east loop was much less eventful. From the top, I spotted Anthony Henday bridge off in the distance which marked 65km and the farthest I would be from the finish line on this loop. If I could make it there, I could make it to the finish line. The trail then dropped back down below the residential into fun flowy singletrack. It was great to get back to “easy” trail running and I started to forget the stress and frustration I had felt just minutes ago. There were a few memorable spots along the course that had this yin/yang effect on me. It would transition between progressively challenging (physical and mentally) that would just push and push and push me right to the breaking point, then suddenly switch gears into the most amazing time ever.
Cruising along the double track now, I finally made the bridge and had 15km remaining. Up to this race, my record for personal distance was 56km so I was setting a new PB with every step I took. At his point, I was doing quite a bit of walking but found some extra energy in the Terwillegar trail section. I hadn’t been on the trails here for a very long time, so it was neat to return to trails I had last seen in my high school days. Not to mention, it’s flat so that was a welcome bonus! Coming back to the Ribbon Bridge I spotted someone in a November Project shirt, someone familiar looking. Was it a hallucination, or my imagination? No, my friend Dave was there in the actual flesh, having tracked me down on Strava Beacon while out for a (much shorter, haha) run of his own. Little moments like this make such a difference, and after been in my own head for hours and hours, it was so great to see a familiar face in the flesh. Thanks again Dave!
Back on the other side of the river, I now had only 7km to go. I was trying not to think about the finish line. There was still work to be done. But I felt great, cruised along the trails at a stable pace and watched the distance tick away.
One thing I like about the back half of trail races is the “race solitude” that comes from the runners being spread out at this point. While I love the community aspect of races, a major reason I’m out there is to push myself and enjoy the wilderness. Even with the 100km and 100mi racers sharing the same course, I only saw 3 or 4 other runners during the entire back half. The motivation, support, and community of a race combined with the tranquility of just being out there running your own race is this weird dichotomy that I love immensely
Approaching the Rio Terrace Aid Station (77km), I could hear it before I could see it. Every race has at least one “extreme energy to the max all the time” aid station and I had just found it. The only thing that stood between me and it was.. the world’s largest staircase. “That’s a lot of steps” I said out loud to no one. But like a moth to a flame, the energy drew me up the stars to the top. Whoah, music, extreme dance party, neon pink, this one had it all. To the Rio Terrace volunteers: sorry I didn’t stay longer at your dance party, I had a race to finish! Rest assured your “energy extreme” was like a slingshot that fired me towards the finish line
The last 3.5km was kind of surreal. I reflected on all the things that had gone well.. And also all the little things I had overcome in the past 24 hours: The early start (I am not a morning person) The 3 hours of sleep I was running on( why did I go to bed so late, I’m so dumb). The chest congestion that returned and ensuing coughing fit for the entire 11 hour drive to Edmonton. The pouring rain for the first 3 hours of the race. I had overcome all of these and managed to keep moving for 11+ hours to cover almost 80k! As I crossed the finish line, I felt a mixture of fatigue, gratification & serenity. I had no idea what placement I was in, nor did it really matter. I had continually pushed myself through difficult & uncomfortable situations and made it out the other side. I had pushed myself to new mental, physical and emotional thresholds. This is why I run ultras. To push myself, get uncomfortable, and see what I can accomplish. And accomplish something today I did.
By the numbers
- 11 hours, 24 minutes, 12 seconds.
- 9000 calories burnt (according to Strava)
- 1347m elevation gain
- 3000 mosquitos
- 10L of water
- 6 Berry Blast Probars
- 350g of Hammer Montana Huckleberry Gel (equivalent to ~12 gel packets)
- 7 Hammer Effervescent Electrolyte tabs
- 2 pairs of socks/shorts/shirts
- 2 golfcourse fairways skirted in commando-mode.
Thanks to all the organizers & volunteers that made this event happen, you guys rock! I can’t even begin to imagine how much work it would take. Thanks to my partner Charlotte for all the inspirational SMS messages along the way (“Only 20km left!!”) and to all my friends on Facebook/Instagram sending virtual cheers watching along the way. Thanks to my parents for showing up at the Finish Line (sorry that I ran past you, Mom!)
It’s giving Tuesday and I’m going to sweeten up the deal. Make a donation to a registered charity and I’ll randomly pick one and TRIPLE your donation. So you donate $100 and if yours gets picked, I’ll donate an additional $300. If you’ve been on the fence about what to do with all that money you didn’t spend on Black Friday, now is your chance.
Make your donation now and then post below (or message me)
1) The donation must be made between now and 10am PST Wed Nov 30
2) It must be to a registered charity
3) I will contribute up to $500
4) The draw is at 12pm PST Wed Nov 3
How to be a Developer
What makes a great developer? Are they great at MongoDB or iOS? Do they know how to use Promises, ES6 and React?
Maybe. Or Maybe not.
The tech industry places far too much importance on technical skills. Language, frameworks, and platforms come and go, but approach and behaviour is what separate the good from the great. .We need to shift focus and cultivate the soft skills in parallel with hands-on skills.
I’ve come up with a”Tao of being a great developer” to help bring these principles back into focus. It’s something that I strive to work by and I hope you can too.
Do the “right” thing (instead of just the “easy”, “cool” or “fun” thing)
This isn’t about taking the skipping out on shortcuts or avoiding new technologies. This is about paying attention and listening . This is about being honest with yourself in every action and decision you make
If there’s one group of people that can convince themselves they have to use technology X or methodology Y, it’s programmers. How many times has your team decided on the language before even starting a project? Have you met with a client, barely listening to their requirements while planning out the architecture in your mind?
Doing the right thing = being honest with yourself and putting the needs of the client and project ahead of your own.
Is <Framework X> really the right fit for the project? Or are you choosing it mainly to learn and add your resume (selfish reasons)?
WebSockets are cool and all but are they really the right choice for the customer’s blog product?
Ask yourself: “How will the end users benefit from this choice? How will <MongoDB> make the user’s experience more enjoyable and more reliable? How will deploying this to Amazon Web Services make this a better product that more people will want?”
This can be a really hard question to answer honestly without bias (Some youy may not even be aware of ). Play Devil’s Advocate in your own mind. Find others to do the same (especially ones that you know hold different views and will try and talk you out of it). This ability is what seperates good developers from great developers
Be confident, but humble.
If you’ve worked as a developer for some time, it’s pretty easy to let your successes go to your head. It’s human nature to be good at remembering our successes and forgetting our mistakes, oversights and bad decisions.
When doing your work, be confident enough in your experience but open-minded to other input and perspective. Listen to everyone: juniors, non-technical people, sysadmins, marketers, etc. Everyone has a different (and potentially valuable) perspective. Be comfortable with saying: “I don’t really know that technology well, but am confident I can figure it out.” or “I don’t feel comfortable that I’m the right guy for x, and just want to be up-front. But so-and-so is great at that, so lets loop him in”
I also want to call out is the bullshit technical debates that are (mostly) a waste of our time. We all have our preferences an choices, but getting into low-level, polarizing battles doesn’t help anyone. For example, NoSQL databases are a great idea for certain projects and a terrible idea for others. To say “I hate MongoDB, it’s crap” because of a single anecdotal experience doesn’t help anyone. It might have been the right tool at the time, or a client requirement or a million other things. Service X might be slow with millions of records but if its great for MVPs and that’s what your building, it might be the perfect choice. View anyone that issues blanket statements about a technology with a critical eye, especially if they don’t know the use case.
Solve problems instead of pointing fingers
We’ve all been in a meeting where something has gone wrong and the first thing to happen is fingers get pointed.
“This is DevOps fault, they should have been watching for those errors”
“This is the user’s fault, they shouldn’t be clicking the submit button twice”
Blame does nothing to help the user or the project or the client. The only thing that matters are the solution and outcomes.
A good developer is really good at owning their mistakes and fixing them
We’re all human and all make mistakes. It’s a surprisingly rare trait to openly admit a mistake (the sooner the better). Even better, propose a quick solution and a longer term one to make sure it doesn’t happen again. The blamers will eventually get outed as projecting their shortcomings onto other people. These people are toxic.
You either succeed as a team or fail as a team, there is no in between
To be a great developer, your personality and style matters just as much as your technical chops. You need to do the right things, and balance learning cool stuff with making the right choices. If you are confident and approach mistakes as a chance to become better, you are on the path to greatness.
You signed up for that Yoga class. You bought a (lightly used!) treadmill. You got the brochures for that trip you always wanted to take. But two month later, you’ve gone to one yoga class, have logged 5k on the treadmill and who knows where the brochures went.
Oh well, there’s always next year, right? Wrong.
Here’s a secret: You can set a resolution anytime, not just at an arbitrary day of the year where the earth happens to be in the same spot as it was 365.25 days prior.
This might surprise you, but those successful people you read about actually fail a lot. They probably have 10x the amount of failures as the do successful things. The difference though, is that they don’t get discouraged, they keep going. They take lessons from the failure and say “Okay, oops, I won’t do it that way again” and then use that to get better.
Maybe yoga just isn’t your thing. Or maybe you need to try a different variation (Bikram, Yin, Hatha, etc.). I like running now, but I used to hate it (but I’d do it twice a month anyway.) It was a task, a chore, something that needed to be done, something that I did to lose weight. Then last year I discovered trail running. Everything switched. Being outdoors and on the trails was what I needed for it to resonate with me. Now I can run 4 hours on the trail like it’s no big deal. I’m out in nature, seeing things, relaxing.. but also happen to be jogging at the same time. It no longer feels like work, but rather something I can’t not do. I run 2-3 times a week now.
Start things often. Fail at things often. The key to this though is that you have to start. Making excuses like “hmm, better luck next year” is the easy way out. Try something different, make more realistic goals, and set new “resolutions” for yourself continuously throughout your life, not just once a year.