• Poolside

    At near terminal velocity, breaking through the layers of clouds I finally emerge to see the world growing ever larger beneath me. The most prominent feature being a small island not far from the coast, that at first seems to be completely green. The island has a tall peak at one end that sweeps down to the sea on the other side. Closer still and I can begin to see the buildings tucked behind the dense tropical foliage. Suddenly I am aware of my surroundings, it’s Hong Kong the setting for my childhood.

  • Tailor your monkeys with refinements

    One of the most powerful features of Ruby is open classes. You can reopen any class and change, or extend it. Unfortunately these monkey patches have global scope, so their convenience comes with possible side effects. In Ruby 2.1+ refinements allow you to limit the scope of monkey patches, so you can enjoy their convenience again.

  • Okagesama de

    I enjoy digging into language. In particular, I like foreign words that are difficult to translate. There are some ideas we don’t have a word for in English and they give me an opportunity to see the world from another perspective.

  • Is your branch up-to-date?

    git can be confusing, especially for beginners. Even a common message: Your branch is up-to-date with 'origin/master' might not mean what you think. Nowadays I’m comfortable with my git workflow and rarely see an error, but I can still remember feeling completely lost.

  • Listening to developers on screen

    I’m one year into my new career as a software developer, so I’ve been reflecting on what’s changed. One of the clearest contrasts with working in theatre production is the way my team communicates.

  • Handling failed builds on GitHub Pages

    Last month I created this site with Jekyll 2.0 and took advantage of the free hosting on GitHub Pages. The deployment process is effortless: git push origin master. If you’ve used Heroku this looks familiar, but on GitHub Pages you won’t see any details of the deployment. So what happens if the build fails?

  • Everyday thinking

    Keeping your audience interested is tricky if you sound religious, so I find it hard to discuss lessons and ideas from Zen without over-explaining. I think much of my difficulty stems from the language.

  • A welcome contribution

    I have been working through the Ruby exercises on from time to time for seven months. It provides a great resource to practise writing code in different ways. Yesterday I found a small wrinkle and had an opportunity to give something back.

  • Optimising calls to a new API with StatsD and Graphite

    Monitoring calls to third-party APIs can reveal interesting trends and alert you to problems. Following my last post, I describe how we used StatsD and Graphite to monitor calls to a new API and optimise an exponential back-off and retry mechanism.

  • Back-off and retry with RabbitMQ

    A common issue with third-party APIs is limited availability during peak hours. Even outside peak hours, API requests can be rejected, timeout and fail. In this post I’ll describe a lightweight exponential back-off and retry mechanism for RabbitMQ consumers.

  • Six month review

    Today I had my six month review at globaldev. Everything has been going pretty well, but I couldn’t help feeling a little nervous and unsure what might be store. Turns out Sam Barnes had a surprise for me, a promotion!

  • Ruby practice on

    Last week I joined to practise Ruby. I’m looking forward to iterating on the problems set out by @kytrinyx and co. I think the open-ended nature will encourage me to iterate and practise lots of small decisions.

  • Q&A after graduating from Makers Academy

    Josh graduated on the 8th of November and has signed a contract as a full-time junior web developer 4 weeks after graduation with globaldev.