1. 32

Today’s interview is with Lobsters founder joshua stein. His weblog is at https://jcs.org/

Introduce yourself, describe what you do for work and how long you’ve been at it.

I live in Chicago doing software development and consulting under the guise of Superblock.

I’ve been doing software development in some form or another since I was a young'un, starting with Visual Basic 3 in my early teens, then switching to Linux and Perl in the mid-90s.

I took a job at a small ISP during high school doing tech support, then moved into a dedicated software development role there automating co-workers and writing lots of backend systems. I left that job in 2006 and focused on my business full-time, taking on various software development projects for my own customers, a contract with Sun, OpenBSD consulting, and other random things.

In 2012, I created Pushover, a push notification service with Android and iOS apps, after an existing solution I was using shut down. Pushover currently occupies most of my work time.

I started using OpenBSD in 1998 (version 2.3, I think) to host a BBS and eventually became a developer for the OpenBSD project in 2001, although my contributions have thinned out in recent years. I hosted an OpenBSD mirror (rt.fm, at the ISP I worked at) from 2000 to 2009, have written a few drivers, and have generally just been around to test and complain about things.

What led you to start Lobsters? What have been the most important factors in its growth?

I was a frequent reader and contributor to Hacker News since 2007, but got hellbanned in 2012 for complaining about the mystery-moderators constantly changing submission titles for the worse. Since the quality of articles posted there and the general level of civility had been declining sharply in the years previous, I took the opportunity to create a slightly different site to try to fix the problems that I saw in HN and Reddit. I have been a member of various car- and technology-related forums for about 15 years, and have written software used by a few of them, so it seemed like a fun project to create a new piece of software to run this site using some of the things I’ve learned along the way.

As far as the site’s growth, I think that just allowing it to grow naturally and slowly was the best thing for it. Early on, a lot of people whined that the invitation system was too limiting and wrote off the site as a ghost town because it had no comments (hi tqbf), but I knew that opening it up to everyone at once would have just ruined it. Allowing the site to grow slowly ensured that it developed its own sense of community first, so that newcomers could see how things worked before jumping in with their two cents about how they want the site to run. It took 18 months for the software to finally need support for banning users (which I still haven’t used), and I think that’s a nod to how successful the invitation system has been.

What is your work/computing environment like?

I work by myself from my apartment using a 10-year old Ikea Jerker desk that I switched to a standing configuration about 4 years ago. My primary machine is an 11" MacBook Air dual-booting OS X and OpenBSD. I just recently upgraded my 2011 Air to the new 2013 Haswell model and I love the increase in battery life and that the fan almost never comes on while still staying cool, even when doing make -j4 build in OpenBSD.

My current phone is a Nexus 5, which I really like except for the dust that gets between the edge of the glass and the rubber. I have a Polycom IP 500 phone on my desk for work calls, and sometimes I use the Western Electric payphone in my living room for kicks.

I usually prefer to work in silence (which is why laptop fans annoy me), so I don’t often listen to music when I work. When I do, iTunes on the Mac Mini in my living room pipes music to the speakers in my office via an Airport Express, or I listen to my iPod through Westone 4R IEMs.

I use a Kindle Paperwhite for reading long-form articles and books.

What software are you most often using?

Long ago I exclusively used Thinkpads running OpenBSD, but now that much of my work involves compiling Android and iOS apps, I am booted into OS X more than I would like. My software configuration is pretty much the same in both operating systems to make dual-booting easier, using git to store most of my dotfiles.

I use XQuartz on OS X for X11 with ratpoison as my window manager and a bunch of xterms (the various terminal apps on OS X can never seem to match xterm for speed) with a mostly monochrome setup. The black-on-white scheme does get annoying after long periods of time, but I’ve found that frequently switching between black-on-white web pages and white-on-black terminals screws up my eyes after just a short period of time, so I use black-on-grayish terminals.

I use Firefox for web browsing with a few extensions like Certificate Patrol, Ghostery, HTTPS-Everywhere, Self-Destructing Cookies, Tamper Data, and Vimium (only for hit-a-hint). Occasionally I use xombrero on OpenBSD when I want to do quick split-screen half-terminal, half-web-browser sessions.

vim is my editor of choice with a modest vimrc and a couple plugins like NERDTree and sbd. mutt is my mail client.

My OpenBSD desktop configuration is pretty much the same, but I use dzen2 and a wrapper around i3status for my information bar at the top of the screen.

For Android development, I do everything in vim and compile on the command line with ant, pushing builds to my phone with an adb-over-wireless app. For iOS development, I have to tether an iPhone to my laptop and I develop in XCode because anything else is painful (and Objective C is too verbose to obsess about how the code is formatted).

On OS X, I use 1Password for managing passwords which lets me view them on my phone and in OpenBSD. I would have a hard time living without f.lux for hacking in the evenings (Redshift still needs support for adapting to already-loaded ICC profiles for me to use it on OpenBSD). I use Adium for Jabber and Sequel Pro for doing MySQL things by hand.

On my Android phone, I use a stock, rooted 4.4.2 ROM. I don’t use a ton of apps, but I do like Nova Launcher Prime as my launcher, Pocket Casts for podcasts, and Titanium Backup to deal with backups and migrating to new devices. Retune is a nice app for remotely controlling iTunes when listening to music in my office. I use Firefox as my mobile web browser, also with the Self-Destructing Cookies plugin and CleanQuit. I use Tasker to automate changing the volume on my phone so that when it’s plugged in next to my bed, it becomes loud, and when it’s unplugged, everything goes silent. K-9 mail is set to vibrate once when I get new personal e-mail, twice for work e-mail, Pushover vibrates 3 times for new notifications, and 8sms vibrates 4 times for new texts. This way I can tell what’s happening on my phone without having to disturb anyone else and if it’s only one or two vibrations, I can usually just ignore it for a while.

What’s an interesting project you’ve been working on recently?

For OpenBSD, I finally just recently imported the multi-touch trackpad driver for MacBooks that I started working on at the t2k13 Hackathon last year. There are a few changes I still want to make to OpenBSD’s wscons integration with X11 to make this driver work better, but for it currently supports things like two-finger scrolling and three-finger clicking to emulate a middle-mouse button.

For work, I am working on in-browser notifications (and OS X Mavericks' out-of-browser notifications) for Pushover to support web browsers as a 3rd platform. This involves a lot of Javascript with IndexedDB which is kind of an ugly thing to work with in Javascript. This project was a welcome distraction from having to work on the Windows Phone client.

For un-work, I have been doing Brazilian Jiu-Jitsu about twice a week for the past 10 months and am slowly getting better at it. Once it warms up again, I’ll be tinkering with my car and working on my lap times at the nearby tracks.

What is something new you’ve used or integrated into your work that has made a positive impact?

For the longest time I used vim in one-file-at-a-time mode, probably because of the type of projects I was working on (small, often single-file pieces of code). Once I finally took the time to setup the NERDtree and sbd plugins, they made it so much easier to work on a big group of files at once like an Android or Rails project.

What are the biggest challenges to keeping high quality submissions on the frontpage, and high quality comments? What are your plans for dealing with these?

I think the community has been pretty good with this so far, using the categorized downvotes to remove low quality submissions and comments, and perhaps more importantly, posting comments when downvoting to explain to newer users why something was downvoted.

One of my initial goals for this site was to have a better /newest page. If you look at HN’s /newest page during the day, you’ll often see that the last submission on the page is only about 30 minutes old. That means a new link only has 30 minutes to get traction or it scrolls off the newest page and is probably never seen again.

My idea to help stories get traction on Lobsters' newest page was to remove the upvoted stories that have already made it to the front page, and then include a random selection of other low-voted stories from the past few days. This way people that are casually browsing /newest might see something from 24 hours ago that they didn’t see initially, and will give an upvote to and possibly promote it to the frontpage.

I experimented with this idea the other day but some users complained about it not showing the actual “newest” stories, so I reverted it and moved the new code to a /recent page. Eventually I’d like to change the header link up top to point to /recent instead of /newest.

What do you wish people would write about/submit more stories about?

I love reading about the gory details of production systems. I know from experience that hardly anything in production for a long period of time is as cleanly designed as the “how to do (something common) using (programming language of the week)” articles would like to pretend, and it helps to read about what was tried, what failed, what worked, what baggage has accumulated over the years, etc.

  1. 3

    Interview was done by @kb – thanks, Kevin!

    1. 2

      Great interview. Did not know about the /recent

      1. 1

        @jcs, you only use an 11" MacBook Air, without any external monitors?

        1. 1

          Yes, I’ve always used small laptops so 1366x768 is a decent resolution for me. I just make extensive use of virtual desktops/spaces.