Haoyi's Programming Blog

Hello World Blog

Posted 2016-01-07

I have a new programming blog, and you're looking at it! I'll post things about programming on it and there'll be a comment box at the bottom of each post if anyone wants to discuss the things I posted. I'm currently working with the Scala, Python and Javascript programming languages, and am interested in static analysis, compilers, web development and developer tools.

I am not the first person to have a blog, nor the first person to have a programming blog, nor is this my first blog. Nevertheless, for me, doing this is a mix of new and old ideas.

About the Author: Haoyi is a software engineer and author of the Fluent Code Explorer, an online tool that helps you search, understand and collaborate on a large codebase

The Old

This is not the first time I have had a blog/site. I had built one back in 2011 while in college, and it was very much my own introduction to web development and distributed systems. The source code is online, in all its gory details: it's custom templating language, it's now-defunct Facebook API keys, random server logs, and other things. The content is missing, because I misplaced it, and who used version control back then anyway? Some can be retrieved from the Web Archive, while others (like all the static assets and images) seems lost forever

This is not the first time I have published things on the internet. I've written hundreds of pages of documentation for the open source projects I've been involved in 1 3, including the Hands-on Scala.js e-book.

Nor is this the first time I've had discussions with other people online. I'm relatively active on Twitter, on the mailing lists, on the programming reddits, and on the Gitter channels of various projects.

The New

Given that all these things have already happened, what then is the value of starting a blog, yet another place to write things, for people to look at, and all that?


Unlike the 2011 blog, this one actually has a target audience.

The original was a somewhat meandering smattering of "things I thought were cool": programming, photography, DIY pneumatics and electronics. Although I don't have the content anymore, none of it was all that interesting to begin with, and given how un-targeted it was it's unlikely a random passer-by would find it interesting. In contrast this one is a lot more targeted: I will talk about programming, and presumably the people coming here will be interested in programming, and everyone will find something they're interested it. As for my other interests, they may start appearing here eventually, or I may simple continue publishing those on other channels like Facebook or mailing-lists.


This blog is meant to bridge a gap between the forever-lived documentation sites I publish for projects and short-lived emails, tweets and chat messages.

A chat message (e.g. on Gitter) takes seconds to compose and lives for minutes before being buried. An email or tweet may takes minutes to write and live for days, but they soon get buried too (The entire thread of exchange may last longer for weeks, but the individual messages get buried quickly and disappear from the public eye).

At the other extreme are the documentation sites: things like the documentation for Ammonite or FastParse are built up over multiple days or weeks, and I expect them to last forever. That slows things down, as I have to make sure new additions "fit in" to the existing docs, and need to be careful to keep things in sync and ensure the docs don't get broken.

The posts on this blog are expected to take hours to a day compose and live for months to a year.

While a doc-site has to be maintained and kept updated as the thing it's documenting changes, the content here will be in plain markdown. It will be neither maintainable nor maintained, will not be well organized, and will definitely become stale over time. This freedom from maintenance to write more and more varied things that I'd be able to fit into a doc-site'.

Unlike channels like Twitter or Gitter or Mailing lists, the content here will be longer-form and longer-lived. The short time on chat or social-media limit how in-depth you can discuss things: there simply isn't enough time to tell a story or to build upon knowledge you've earlier presented to the reader. This blog should provide plenty of opportunities to tell stories and educate the reader, building upon their knowledge throughout a single post.

Where will this blog go? Will people read it? Will I have the commitment to keep it alive, or will it die a slow, lonely death like so many others before it? Only time will tell!

Updated 2016-02-14 2016-01-07