June 19, 2013

You use PHP because you don't know better.

My typical response when asked to defend a given offhand, derogatory comment I’ve just made about PHP is to cite the most excellent PHP is a fractal of bad design. But, spurred, by the numerous comments hating on me for hating on PHP on this Portugese translation of my PHP vs Python vs Ruby vs Clojure piece (which, to be fair, is emphatically biased), I’m going to go ahead and let the hate out now, as one big rant, so that I have something to refer to in the future (even though I bet I’ll find it embarrassing and childish then).

Read more »

June 13, 2013

Clojure.core: Batteries (almost) included

Today, I want to provide a guided tour through some of the many libraries available from the Clojure team that don’t come distributed with Clojure. Consider them Clojures standard library. Some came from old clojure.contrib libs, others are brand-new, but all are great.

Read more »

June 4, 2013

Structured Clojure: Protocols and multimethods (oh my!)

You can use Clojure to do just about anything without ever needing to define anything but functions and vars, but you’d be missing out. Clojure supports some very nice ways to make your code more expressive – and more structured – when dealing with operations on data types.

Read more »

May 27, 2013

Improving your Clojure code with core.reducers

Clojure is developed, maintained and documented by a cadre of extremely brainy people. This is mostly excellent news for users of clojure, but sometimes, I find myself feel a bit left behind reading about features and details of the language, especially coming from a background of procedural languages. Last year I read Rich Hickey’s blog post on Clojure’s new reducers library. My takeaways on reducers at the time were thus:

Read more »

May 19, 2013

Idea: Device-specific screenshots (or, Abusing Retina.js on Addressbin)

In January I came into possession of a new retina-display Macbook Pro. The screen is amazing, but has the side effect of making images on websites look mostly like garbage, unless the developer has taken extra steps to serve double-sized images to people with fancy screens. I ran across this problem trying to put a screenshot of Outlook on the homepage of Addressbin.com, my latest project. I knew it looked fine for almost every other visitor, but it was jarring for me, and presumably to anyone with a retina screen.

Read more »

May 13, 2013

"Good Enough" error handling in Clojure

Writing Clojure is not like writing Java. In Java, exceptions are an accepted part of the workflow; in Clojure, they are begrudgingly supported out of necessity, but generally avoided. Why is that? Probably because writing code that throws exceptions makes your functional code a lot less functional – that is, a lot less composable. When you can’t trust a function to execute and return a value you lose some functional purity.

Read more »

April 7, 2013

Clojure web apps: Zero to 'Hello World' on Heroku in Clojure in 15 minutes.

I’ve been talking a lot about Clojure lately, but the pool of people who want to listen is pretty small. I know, I know, it’s pretty different, but I promise it’s really cool – maybe even better than the languages you already know – once you get to know it. So today I want to step back to the very basics by outlining how to get a Clojure app up and running, and maybe produce some more Clojurenauts in the process.

Read more »

April 5, 2013

Why Clojure? Part 2: Effortless async by design

As a second part in what I’ve decided will be a series attempting to justify my choice of Clojure as a general-purpose web language, I’d like to talk a little bit about writing asynchronous code in Clojure, and just how easy the design decisions made by Mr. Hickey make that.

Read more »

April 2, 2013

Middleman + Enlive: The best thing since PHP

Before I begin, the ideas in this article were introduced to me by this blog post, which I consider a must-read for anyone who uses Clojure on the web.

I’ve been using Clojure for web development a lot more lately. This can be a contentious topic for some people. “Clojure is hard to hire for”, they say. “It’s for pretentious nerds”. “It’s overkill for the web”.

Read more »

February 28, 2013

Cover Letters: Then and now

I was told the other day that my communication style (as interpreted by cover letters I sent) had changed dramatically for the better over three years. Thanks for that! So I thought I’d share in hopes of helping someone else do the same.

Read more »

January 3, 2013

Trending: The iOS Stock Viewer that's better than the stock viewer

Trending, by Tapfolio, is an iOS app for tracking stocks, available now on the app store. It makes viewing your stock portfolio’s current pricing a snap, and sorts on most changed so you always see what you want to know about. Also, I just started work at Tapstream, a company which may or may not be affiliated with Tapfolio. It seems pretty rad, and I’m really looking forward it.

Read more »