Category: Programming

  • A Season of Learning

    A Season of Learning

    There’s a concept in computer science called explore vs. exploit. Exploitation means using what you know to get reliable returns; exploration means trying new things at the cost of those returns. Most algorithms skew too hard toward exploit. Humans have also been known to do this – including me. The known path is comfortable. My…

  • What Raccoon Are You Quiz  (and some thoughts on vibe coding)

    What Raccoon Are You Quiz (and some thoughts on vibe coding)

    Raccoons are very much part of my brand, so many friends (and my boss) sent me the latest adventures of the drunken raccoon in the liquor store. The past couple of years I’ve also been framing my talks about tech as we used to be instagram raccoons – and now we all live in Toronto.…

  • Console DevTools Podcast

    Console DevTools Podcast

    I recorded an episode of Console‘s DevTools podcast, talking about privacy engineering. You can listen to it here.

  • Book: Working Effectively with Legacy Code

    Book: Working Effectively with Legacy Code

    Reading Working Effectively with Legacy Code (Amazon) made me really want to get into something and write some tests. It’s a really actionable book, and I liked how pragmatic it was – focusing on being able to create incremental progress, but balancing that with what you’re aiming towards. I think a sign of a foundational programming…

  • Estimations and Orders of Magnitude

    Estimations and Orders of Magnitude

    Call me a cynic, but I don’t expect software estimations to be accurate. Because software is built by humans – and they take sick days, and vacations, time to help their colleagues (hopefully), have off days as well as good ones. But I still think estimations are worth doing. Firstly, because if we don’t have…

  • Towards Productive Technical Discussions

    Towards Productive Technical Discussions

    Note: I wrote this post for an internal team blog, but thought it was worth sharing more widely. Part of getting to good code reviews is some up front discussion about trade-offs and implications for bigger architectural changes. I think of code review as when “my” code becomes “our” code – for architecture, those conversations…

  • Why Do Standup

    Why Do Standup

    Share work before it happens – prevent overlap, raise gotchas. Foster communication and collaboration – offer help rather than waiting for someone to ask. Start the day with intention. Turns out, status updates are not the most useful aspect of standup.

  • Creating a Randomized Emoji String in Python

    Creating a Randomized Emoji String in Python

    You might have noticed this part of the 2016 Emoji Report – part of the graphic features an emoji for each of our subscribers. It’s a randomized ordering of all the different skin tones of the 👩‍💻 and 👨‍💻 emoji, repeated [number of subscribers] / 12. Our subscriber count wasn’t exactly divisible by 12, so I…

  • We Hire The Best

    We Hire The Best

    The tech industry prides itself on its rationality, and yet is filled with trite slogans that are demonstrably untrue… and further, harmful. Originally published in Model View Culture, November 2014. “We hire the best.” It’s a slogan we can rally around in company meetings, a tagline to put on the jobs page… a shoring up…