Programming Is Not Math

When I learned to program, back when dinosaurs walked the earth and the internet had no cats, there was an idea: if you were good at math, you’d be good at programming. I was great at math as a kid, but perhaps because I didn’t like it much, no one steered me towards programming. I came to it accidentally, in college, when I took an elective programming class because it fit my schedule.

So my first programming language was Fortran, an abbreviation of “Formula Translation.” As you might expect from the name, the projects in the class were exciting things like estimating the area under a curve using rectangles, like you see in the diagram below.

The Riemann Sum.

The Riemann Sum. Thanks to H.J. Keisler.

Doing Riemann sums in Fortran is about as math-oriented an introduction to programming as you can get.

And I loved it. SO MUCH!

That same quarter, I was taking my first Japanese class. Towards the end of the term, when I was getting ready to change my major to computer science because PROGRAMMING FUCK YEAH, I thought briefly about how similar the two classes felt. In both cases, I was coming into a culture I didn’t understand or feel part of. I was learning the mechanics of communicating, while at the same time trying to gain enough cultural knowledge to feel at ease.

But I knew – and everyone knew – that programming was like math. So clearly, I was good at Fortran because I was good at math.

Now, almost twenty years later, Read more »

What Your Conference Proposal Is Missing

As a developer, doing talks at tech conferences is great for lots of reasons: boosting your career, promoting your company, and getting more excitement into other parts of your life. As an introvert, though, the best perk as far as I’m concerned is the stream of people who come up and talk to me. No more awkward unstructured break time!

I’ve done almost 30 conference talks since 2009, but I still remember how hard it was to figure out at first. The biggest mystery in the whole process, for me, was responding to a Call For Proposals (CFP).

When a conference has an open CFP, even if you’ve thought of some topics you want to talk about, it’s not obvious how you translate that into a title, an abstract, and a description. I’ll talk about those three here. Sadly, I still have no idea how to write a speaker bio, so you’re still on your own for that. Read more »

Why You Should Never Use MongoDB

Disclaimer: I do not build database engines. I build web applications. I run 4-6 different projects every year, so I build a lot of web applications. I see apps with different requirements and different data storage needs. I’ve deployed most of the data stores you’ve heard about, and a few that you probably haven’t.

I’ve picked the wrong one a few times. This is a story about one of those times — why we picked it originally, how we discovered it was wrong, and how we recovered. It all happened on an open source project called Diaspora. Read more »

How To Prevent Inappropriate Presentations

This weekend there was another inappropriate presentation at a technology conference. This is sadly not a new phenomenon. But in my work with RailsBridge over the last four years, I have found the secret to preventing these types of talks.
Read more »

How Diaspora Connects Users

Note: this is the first in a series of technical posts about Diaspora’s software architecture and code, and is a slightly modified version of the original on the Diaspora blog. If you have topics you’d like to see covered in future installments, please let me know.

A single installation of the Diaspora software is called a pod. The Diaspora distributed network is made up of hundreds of these pods, each with a set of users – sometimes just one on an individual pod, sometimes tens of thousands on a community pod. Each pod is run by a different person or organization. But no matter what pod you sign up on, you can connect with users on any other pod.

When you have friends on different pods, your stream seamlessly mixes updates from remote friends with updates from friends on your pod. In this way Diaspora is a distributed social network that resembles, from the user’s perspective, a centralized social network.
Read more »

CruiseControl.rb and RubyGems 1.5.2

Diaspora uses CruiseControl.rb to run our continuous integration server. CC.rb is on Rails 2.3, but the applications it’s building are on Rails 3, which means I occasionally run into … weirdness.

Last week, for example, I wanted to speed up our builds by upgrading Bundler to 1.0.10 and RubyGems to 1.5.2. Because of the new partial caching of the dependency graph, the upgrades shaved two whole minutes off the build locally, and I wanted to get that on CI.
Read more »

Running Cucumber Features Without a Display

I’ve been helping out with the Diaspora project, an open source social network that gives you control over your own data.

When I first started poking around the codebase a few months ago, they’d just started writing a few cucumber selenium integration tests – which of course I want to encourage! – but they weren’t running them on their continuous integration box. And if you aren’t running them on CI, you can’t really call them tests…

It’s not that the developers were lazy; it’s just that Diaspora’s CI box is an ubuntu server instance that doesn’t even have xwindows. There’s no way to attach a display, and without a display, a browser won’t run. So how can you run selenium features that have to actually open a browser window and click on stuff?
Read more »

Disalienation: Why Gender is a Text Field on Diaspora

A few months ago, I started contributing to the Diaspora project. I began by refactoring their test suite and setting up a continuous integration server. Then I installed Jasmine and started mucking around with the JavaScript. That was all pretty straightforward.

A few weeks ago I made a slightly more controversial change.
Read more »

Speak Ruby in Japanese

I’ve studied Japanese on and off for more than ten years – mostly “off.” I took a year of language when I was in college, but since then it’s just been periodic classes at Soko Gakuen in San Francisco.

I managed to pass the JLPT level 3 a few years ago, so in Japan last month, I was decent at ordering food and navigating the subway. But I quickly discovered that I couldn’t really talk to another programmer. None of my classes even taught me how to say “programmer,” let alone “code,” “object,” “method,” “development environment”… Read more »

Ruby Kaigi

Apart from attending Ruby meetups, my main reason for visiting Japan last month was RubyKaigi 2010.

Why not, indeed? (photo by Lee Lundrigan)

I wasn’t sure what to expect. Would it be all men in button-down dress shirts and pleated pants? Would I give my talk to a room full of blank looks? Would I be the one with the blank look when I went to a talk in Japanese? WOULD THERE BE FAN SERVICE??
Read more »