I recently read Chad Fowler’s The Passionate Programmer, a book broadly concerned with finding fulfillment through work in software development. The book had an unexpectedly strong impact on me. Many of Fowler’s key points aligned uncannily with recent experiences and observations of my own. One section that leapt out in particular to me concerned practice.
I did never know so full a voice issue from so empty a heart. But the saying is true: “The empty vessel makes the greatest sound.”
A decade living in New York has conditioned me to have an instinctive skepticism of the loudest voice in the room. The loud people, the pushy people, the bullies, those who take up the most space, whether in the workplace or hooting on the sidewalks at night on the weekend – these are almost always also the people of least consequence, but its a fact that is tragically lost on most.
Though Cron has been around since the 1970s, it is often still a perfectly viable, incredibly robust way to run scheduled jobs for your web application – in particular if you deploy your app to a single dedicated server or VPS.
Whenever is a command line utility, written in Ruby, that lets you declare your Crontab entries using the very human-readable Ice Cube DSL, and that includes related utilities to actually write out to your Crontab based upon these human-friendly source files. The benefits for your project are twofold. First, you get to define your Crontab entries in a language that is natural to read rather than in the famously obscure and forgettable native syntax. Second, you get to keep your schedule definition within your project tree so that it becomes, in effect, integrated with your application rather than something managed separately with your infrastructure.
I have been away from New York much more this past year than I’m accustomed to and have been trying to encourage myself to take more photos, since it is not a habit I’ve cultivated at home. I thought it would help if I kept a photo log up here on my personal site and so I made ZPhotostream, a simple but featureful-enough photo log app that I could style to my liking and host myself.
Validation contexts are a little-appreciated but immensely practical feature of Ruby on Rails’ object-relational mapper, ActiveRecord. I cannot count the number of times I have seen hacks around a problem for which a validation context would have been a perfect fit simply because this feature lives a bit under the radar and isn’t in every Rails developer’s toolbox.
What is a validation context, precisely? It is a way to constrain a model validation to a particular usage context for a record. This is similar to what you might achieve with something like state_machine, but far more lightweight.
I’ve been in Berlin for the past month. I ended up here somewhat arbitrarily, on behalf of a client, but I can honestly say I have fallen in love with this city, perhaps more so than any city I have spent time in aside from New York, which has been my home for nearly ten years.
I wanted to do a post to reflect on the things that are unique and wonderful about this city for anybody who may be thinking about traveling to or working from here.
These days I increasingly feel that I am in a minority in my deep appreciation – love, even – of the heaviest weight of heavyweight dynamic MVC web frameworks: Ruby on Rails. I have worked, now, with many of the more popular frameworks on both the server and client side. Flask, Django, Web.py, React, Angular, Express JS, Sinatra and others. I still come back to Rails.
I belive that, for the overwhelming majority of domains, it is the tool – if weilded with healthy reverence for its conventions and idioms – which leads to the most manageable, consistent, non-redundant and all-around sane codebases.
I was at a party several days ago and found myself talking to a bunch of other developers about skateboarding. We realized we had all been really passionate skateboarders through some part of our youth. Later that same night, surfing youtube, I found this TED talk by Rodney Mullen, one of the most important figures in the whole history of the sport. I couldn’t believe it when he turned to the subject of hackers and open source software. So unexpected — and yet so relevant, it turned out, to the broader subjects of the talk.
A couple years ago I read an article DHH had posted to 37Signals’ “Signal vs. Noise” blog called Pattern Vision. I love that article not because it is at all profound. It isn’t. Kind of the opposite. I love it because I could have written it. The ways of thinking described in it are overwhelmingly common in the work I come across and live with day to day. Every new codebase I encounter seems to carry some new dubiously-applied patterns, some new collection of less-than-idiomatic directories, modules and classes for me to discover nested within “/app”.
I’ve been reading Joseph Mitchell’s Up in the Old Hotel, a fascinating collection of writings from the first half of the 20th century about New York street characters by one of the New Yorker Magazine’s most famous and eccentric contributors. If you haven’t read it, and you have a deep interest in the history of New York City, I highly recommend it.