Agile Web Development with Rails 6 in Beta

April 30, 2019

I’m speaking at RailsConf, and the beta of the next verison of the seminal Agile Web Development with Rails is now out in beta.

My contribution thusfar was a chapter on ActionMailbox and ActionText, which I enjoyed learning about and would likely use on a new Rails app if I were building it today. If you want a great intro to Rails, buy this book!

Webpack From Nothing Updated For Webpack 4

March 28, 2019

I’ve updated Webpack from Nothing to use Webpack 4. I also ditched Karma for Jest, and I’m not sure if that was the right call, but my opinions of Webpack haven’t change, really. While it does work, it has terrible ergonomics and its behavior is still just as opaque and unpredictable as it has been.

I firmly believe the JavaScript community would be better served by small interoperable tools that communicate over a well-defined protocol, instead of the half-monolithic, plugin-ridden systems that exist now. Webpack isn’t unique here. That all said, the docs for Webpack have gotten better and most of what’s documented does work as advertised.

Brutalist Web Design

June 12, 2018

Most websites are a mess of decoration, hijacking, dark-UX, and general chaos. Few designs serve the needs of the user. One way to do that is to embrace websites for what they are, by adopting a form of brutalism for web design:

  • Content is readable on all reasonable screens and devices.
  • Only hyperlinks and buttons respond to clicks.
  • Hyperlinks are underlined and buttons look like buttons.
  • The back button works as expected.
  • View content by scrolling.
  • Decoration when needed and no unrelated content.
  • Performance is a feature.

If every website adopted these guidelines, the web would be fast and readable, our batteries would have much power at the end of the day, and we’d all be a lot happier.

Creating a Culture of Consistency

May 06, 2018

While I was not the first technical hire at Stitch Fix, I was early enough to make a lot of technical decisions that have had long-reaching effects on what is now a large engineering team of over 100 developers at a public, profitable company. Over that time, the good decisions were almost always about being consistent, and the bad ones where the introduction of arbitrary inconsistencies.

What Problem Does a Blockchain Solve?

April 16, 2018

Curious about Bitcoin and blockchains, I read the original paper, and documented what problem a blockchain solves, and if it’s of any use outside decentralized digital currency.

At its core, the blockchain concept described in the Bitcoin whitepaper serves as an immutable trustworthy ledger.

The site walks you through this problem step by step, then applies it to a non-currency use-case.

Running a Static Site with SSL on AWS

February 20, 2018

As I mentioned previously, non-SSL sites are heading toward being marked as security issues by browsers. If you want SSL and full control over your website, including a top-notch CDN, AWS provides the tools you need, and it’s not too hairy to get going. Considering what a nightmare anything SSL usually is, AWS makes it as painless as can be, as long as you are willing to get your feet wet with some infrastructure, and do a bit of manual scripting.

Now using SSL

February 18, 2018

Since Chrome is marking non-SSL sites as insecure soon, I finally got around to moving my site’s hosting from GitHub Pages to AWS. Setting up a static website using CloudFront and S3 is surprisingly easy. I’ll write up how to do it in a future post, but for now, enjoy the sweet security of SSL :)

Explicit Code is Inclusive

February 02, 2018

Python famously holds as a value “Explicit is better than implicit”. This is not something Rubyists (or many functional programmers) value, instead favoring compactness or “elegance”. I believe senior developers undervalue explicit code that uses fewer features than it could. Compact code that uses many language, library, and framework features excludes people from understanding and contributing to it, and I believe this is a serious consideration when writing code. What better judge of a codebase’s maintainability could there be than “fewest concepts needed to understand it”?

How to Travel to San Francisco Every Other Month for Five Years

January 25, 2018

I’ve been traveling to San Francisco every two months (more or less) for the last five years as part of my job. The hardest part used to be the traveling and staying in hotels (now it’s that I pack so much activity into such a small amount of time, I barely see any of my San Francisco friends any more). This is about how to make the travel and hotels suck less, and if you are currently working remotely, or planning to, reducing travel anxiety and hassle should be something you actively address.

Work vs Meta-Work: Delivering the Right Results

January 19, 2018

Engineers often deride anything that’s not writing code as being not “real” work. While this diminishes the contributions of others, and is generally an unhealthy bravado, it is critical to understand the difference between activities that directly solve a problem and those that organize said activities. The later, I call “meta-work” and engineers should be very conscious of spending too much time on it.