Programming Posts

Piña Colada Driven Development on the island of Ko Lanta

Piña Colada Driven Development on the island of Ko Lanta

I have spent the past month on the island of Ko Lanta, on the Andaman Sea in southern Thailand. I couldn’t have imagined a place more dramatically different from the cities I’ve spent the majority of my time for the last decade. It’s been a welcome departure, and I’ve even managed to work while here, without sacrificing enjoyment of the natural beauty, swims in the ocean and sunset drinks.

A retrospective on one month in Chiang Mai
A Chiang Mai alleyway. Photo credit: richardhwc (Flickr)

A retrospective on one month in Chiang Mai

I just wrapped up my month with Hacker Paradise in Chiang Mai, Thailand and have settled into my accommodation in Ko Lanta. I had done a post a month ago when I’d just arrived detailing my first impressions of the place and figure I should do a retrospective post now that I’ve spent quite a bit more time in the city. I loved Chiang Mai, and hope to return in the future. That said, I wanted to highlight both the good and the bad, to try and give people an accurate picture of what it is really like to live there for a month.

Asia, Hacker Paradise and Plans for 2017-18
Ristr8o Cafe, Nimman. A popular cafe in my neighborhood and one that nicely represents the vibe in Chiang Mai. Photo credit: BK Magazine

Asia, Hacker Paradise and Plans for 2017-18

I have been in Chiang Mai, Thailand since past Saturday with Hacker Paradise, a roving group of creatives and remote workers. I joined Hacker Paradise on the recommendation of a friend, who had been on a prior trip. It is my first time in Asia, and so far there has been a tremendous amount to take in.

I have been in Chiang Mai just 4 full days right now, and will certainly be sharing a more mature perspective on the city as my month here progresses. So far there has been both a lot that squarely aligns with preconceptions I’d had of the city, and also quite a lot that has been a surprise.

What gear are you in?
Ironically, I think these are single-speed bikes.

What gear are you in?

I recently read a wonderful profile of a young Larry Ellison by serial entrepreneur and teacher Steve Blank. One passage leapt out at me for its relevance to many recent experiences of my own:

Larry ascribed to the adage, “We don’t do things right, we do the right things.”

I was reminded of another aphorism I’d once heard – a bicycling metaphor:

It’s not how fast you pedal, it’s what gear you’re in.

I’ve seen time and again that one of the most destructive things to a software development team, be their product nascent or mature, is bad prioritization.

Taking Cloud66 for a spin

Taking Cloud66 for a spin

I decided to take Cloud66 for a spin recently, after finding myself dissatisfied with the bespoke configuration management solutions I typically work with. I felt that there had to be something that gave me a Heroku/12-factor -like admin experience but atop hardware of my choosing. I have found this solution in Cloud66, and I am stunned that this tool doesn’t receive more attention. My impression is that, for applications of a certain shape, it is the solution that many companies are looking for but don’t know exists.

File uploads in Rails 5.2 with ActiveStorage

File uploads in Rails 5.2 with ActiveStorage

The forthcoming Rails 5.2 release will ship with ActiveStorage, a simple module for handling file uploads either to your own host or to third-party services like Amazon S3 and Google Cloud Storage. If you have worked with Rails, you are likely familiar with gems like CarrierWave and Paperclip. ActiveStorage achieves a similar but more limited end as these libraries.

When writing in the past about ActiveJob, a job queue interface introduced in Rails 4.2, the framework’s author/maintainer David Heinemeier Hansson explained that it is central to the philosophy of Rails that any function that your web application will almost certainly end up incorporating should ship stock with the framework. In the case of ActiveJob, it was recognized that nearly every web application will need a job queue. ActiveStorage is presumably now a consequence of the recognition that nearly every web application will incorporate file upload and storage features to some degree.

Chatbot UIs mostly regressive

Chatbot UIs mostly regressive

Chatbot UIs have been gaining a foothold in an increasing number of niches. The one that is most relevant to my work as a developer is the area of SysOps. Things like kicking off builds, deployments and miscellaneous other infrastructure-related tasks are increasingly delegated to chatbots. In a distant time, long before AI was being hyped to the mainstream, when development teams were using Campfire or Hipchat if they were using anything at all for internal team chat, Github created what I consider the granddaddy of today’s chat bots with their internal tool Hubot (now long since open-sourced).

Instead of going to a interface – whether bespoke, PaaS-furnished (like Heroku’s “git push to deploy”), or living in a dedicated web-based utility like Cloud66 or DeployBot – teams issue an incantation to a bot that lingers in one or all of their chat channels to perform certain ops and deployment-related tasks.

Caching strategies for Rails 5 applications

Caching strategies for Rails 5 applications

One of the tremendous benefits of building with a high-level framework like Ruby on Rails is that you are afforded both mental space and an abundance of tools to optimize your application with a thoughtful caching strategy. Caching can be done at several levels in the stack and I wanted to provide an overview of the most common caching strategies for Rails applications and the tradeoffs inherent in each.