Titles for blog posts I haven’t written

  • The many different correct ways to write a WordPress plugin
  • How raising kids has taught me to give zero fucks about open source
  • If you work in tech, income equality is the real problem you should hack on
  • What I’ve learned about personal finance in the last year, and how it’s completely changed my perspective
  • All of the code I regret to have written
  • Open source is debt, not an asset

Back on WordPress.com

If you’re seeing this, then my blog is back to being hosted on WordPress.com.

The primary reason for this? I want to blog more often. The writing interface in WordPress.com is now much, much better than what you get in a standard WordPress install. Plus, there’s also something to be said about not having the mental overhead of site management every time you go to write a blog post.

This domain’s history: switched from 1&1 to WebFaction in June 2009, to Slicehost in May 2010, back to WebFaction in September 2010, to WordPress.com in November 2011to Digital Ocean in March 2014, and back to Webfaction in January 2015.

Webstock: Jason Kottke, I Built a Web App (And You Can Too)

This week I’m at Webstock, a lovely conference in New Zealand. I’m doing my best to write little blog posts about the amazing presentations. Please forgive any typos, etc. If you’re here too, come write a haiku at Automattic’s booth.

Jason Kottke is a blogger and a web developer. Kottke.org is a blog he’s been publishing since 1998. Today he’s talking about something else.

1. How do you decide to do something?

When one of his kids was born, lots of friends and family took pictures for tweeting, Flickr’ing, and generally posting on the web. Most interactions with those images came in the form:

  • Facebook: Like
  • Twitter: Favorite (with a star) and Retweet
  • Flickr: Favorite (with a star)
  • Vimeo: Like (with a heart)
  • Tumblr: Like (with a heart)

Three years ago, when Kottke started thinking about this, most companies just tucked the data away. It was/is hard to access again by users. “If you’re favoriting things to save important family memories, this is a problem.”

According to Stephen Johnson, good ideas come in the form of a “slow hunch.” One example: Tim Berners-Lee’s invention of the World Wide Web. After college in 1980, Tim coded a hyperlinked tool for academics to share knowledge. It didn’t really take on. In 1989, he hatched a plan to build a more ambitious version of the first tool. He took a vague notion and iterated on it, over and over.

Kottke’s first slow hunch: blogging software. He started Kottke.org by editing static HTML files. Since the time he switched to MT in 2002, he’s thought about writing his own blogging app.

The second slow hunch: streams. When the web first began, the NCSA logged everything that was new on the web. People would email the NCSA anytime they changed something with their website. And the NCSA would post the newest stuff at the top, and bump the older stuff down.

“It’s weird that we read backwards in time on the web, and forwards in time everywhere else.”

2. Stellar, something he decided to make

Stellar is a web app that collects all of your social media favorites in one place, and follow your friends’ favorites. At this point, 15k users have signed up. 2-3k are active users.

Kottke thinks of it as a lightweight blogging app. Every time you favorite something, it gets blogged to the stream. What’s surprising to him is how useful it is as a tool for finding things you didn’t know you’d be interested in. “The delicious cream off the social media churn.”

Stellar is hosted on two EC2 instances with RDS as the database. Software: Ubuntu Linux, PHP, Memcached, CodeIgniter, jQuery, Typekit, Mercurial, and MySQL (RDS). Everything is free, or very cheap, and way easier than it was five years ago.

3. What he’s learned, and the current status of Stellar

Another important stack: the meat stack. There are plenty of articles on how to get the most out of yourself and collaborators on HackerNews, Stack Overflow, etc. Kottke’s advice:

  • You can do it. When he started, there were many things he didn’t know: how to use an MVC framework, how to memcache, etc. Kottke started making Stellar, and learned along the way.
  • Sit in the chair and do it. Making something involves actually making something.

Design turned out to be harder than programming. One sign of success: if he got sidetracked by some new content while working on a feature, then he must be doing something right.

After two and a half years with 25-30 hours / week towards it, Kottke thinks Stellar is about 20% done. Some work to do:

  • Convert to Twitter’s new API request requirements.
  • There are almost 18 million favorited items in Stellar’s database, which is not insignificant. Database server needs to be upgraded or rethunk and it will be costly.

“How can I build a business on the shifting demands of corporate APIs?” Kottke hasn’t committed to Stellar since July 31st, 2012 because he’s been stuck. He was that guy, super stoked about what he was building, until about eight months ago. Only time will tell what will happen with Stellar.

Om Malik on ten years of blogging

Today we differentiate between blogging on blogging platforms and sharing on social platforms, but that is just semantics. The essence of blogging is not defined by a platform but by what I learned from Dave and his blogging platform — that media now is raw, collaborative and instantaneous.


Blogging is communal: In 2008, I wrote that “blogging is not just an act of publishing but also a communal activity. It is more than leaving comments; it is about creating connections.” That is the single biggest lesson learned of these past 10 years. Every connection has lead to a new idea, new thought and a new opportunity.

Being authentic in your thoughts and voice is the only way to survive the test of time.

Being wrong is as important as being right. What’s more important — when wrong, admit that you are wrong and listen to those who are/were right.

Om Malik — My 10 years of blogging: Reflections, Lessons & Some Stats Too


Reeder for Mac now integrates with MarsEdit, and it’s pretty darn sweet.

Notes from livecoding the ONA11 website

This is a quick post I’ve been meaning to do about the work we did this year on the ONA11 conference website.

Background: last year, I was late on getting a conference pass and ended up volunteering for an entire day in the student newsroom. ONA’s student newsroom produces stories, video, and other coverage related to the conference. I had so much fun that I volunteered to do it again this year. I planned to work on it over the summer, but 90% of the work ended up being done in the last week.

The goals for the website varied depending on the context:

  • Before the conference, the focus was convincing journalists to purchase tickets and attend.
  • During the conference, there are two audiences: those who are physically at the sessions and those who want to participate virtually. The former probably want a backchannel for conversation and capturing the highlights, whereas the latter probably want to participate in realtime as much as they can.
  • After the conference, everyone wants to access a historical archive of the content presented in sessions, either to catch those they missed or find the link they heard referenced.

With this in mind, we worked on making the website dynamically reflect these needs. It was helpful, although somewhat distracting from the experience, that I was working on the website during the entire conference.

What worked this time:

  • Session pages as a custom post type. This gave us a structured database of all sessions and allowed us to easily build a session listing, etc.
  • Using Posts 2 Posts to associate posts and presenters with session pages. Our realtime curation crew could easily publish content from the WordPress admin, associate it with a session, and have it automatically pulled into the session page. Furthermore, every presenter had a dedicated profile page and their information could automatically be pulled into other contexts on the website.
  • Auto-showing the livestream player on an individual session page based on timestamp. Every session was associated with a track and I had a bit of logic to pull in the correct livestream based on current time, session start, and session end.
  • Showing the session updates in reverse chronological order during the event (because the user is most likely refreshing the page and wants the most recent updates at the top) and then flipping to chronological order 15 minutes after the event.
  • Leveraging the Zoninator on the homepage for featured stories and events. Editorial loved that they could have full control over which stories were highlighted. WordPress normally lists headlines in reverse chronological order, and developers hack this with “featured” categories, etc.
  • Post formats presented content exactly as it was intended to be presented. I was particularly proud of my gallery implementation, even if there weren’t the visuals to go with it.

Next time I’d like to:

  • Get started earlier so these features are actually fleshed out before the day of.
  • Build an interface for posting updates from the session page so it’s brain dead simple to update (no associating with session post, choosing post type, writing a title if you don’t need to, etc.)
  • Allow for “featured” session updates a la NY Times Editors’ Picks for commenting.
  • Guest session update submissions with a moderation queue.
  • Live update the session page so it’s essentially liveblogging with rich media.
  • Show the bylines/avatars for people covering the event, so you know how well it’s going to be covered (e.g. one person versus five people participating)
  • On the all sessions page, show the number of updates an event has, whether it’s currently live/being livestreamed, etc.
  • Order content on the single session page based when it was published (e.g. you can assume everything 30 minutes after the session is coverage of it, whereas during the event is realtime updates on it).

Lastly, I have one more idea I’d like to pitch: a way of indicating who you want to meet at the conference. Every attendee that registers get access to a page on the website listing every other attendee. Then, they can go through and indicate whom they want to meet at the conference. It’s a double win; you get to notify who you want to meet that you want to meet them, and you get to see in advance who wants to meet you.

For archival purposes, I’ve captured a gallery of screengrabs from the website too.