Seven Questions with Developers: @Duerig

This is the latest in our weekly series Seven Questions for Developers on App.net, where we ask a different developer the same set of questions to learn a bit more about the people behind the apps. If you’d like to participate, contact @ben.

Our next developer is @duerig, who is a network researcher at the University of Utah. By day, he helps improve Emulab, a network testbed for experimenting with new internet applications and protocols. By night, he works on a wide variety of side projects including both App.net and indie game development. His homepage is jonathonduerig.com

Tell us about your App.net app. What are you looking to accomplish with it?

I’ve built half a dozen different apps at this point. My overarching goal is to build an interesting, cooperative, and social game rather than the nagware which currently calls itself ‘social games’. But I keep getting distracted.

Screen Shot 2012-12-19 at 2.04.31 PMPatter is a chat client. You can use it to create public or private chatrooms or send Private Messages. If you create a public room, you can post the URL and any other user can join in. Patter rooms are more flexible than PMs because you can change the member list after you create them to bring new people into the conversation. You can also use Patter as a replacement for Omega to send and receive private messages.

Vidcast, a collaboration with @ryantharp and @q, came about because Patter has turned out to be most useful for real time chat during events. And @jdscolam‘s #MondayNightDanceParty is one of the biggest users. Vidcast combines the real time chat of Patter with synchronized videos from YouTube (or Vimeo or SoundCloud). @jdscolam shows a bunch of different music videos. @sham likes showing more documentary or educational fare. I expect that somebody will start up #CuteCaturday at some point so people can share videos of cute animals and discuss them.

In Vidcast, usually one person acts as a DJ and can take requests from the crowd and queue them up. Everyone else watches the videos and can discuss them in real time and make requests using YouTube links. It can also run in jukebox mode which automatically plays any link posted to the #jukebox hashtag anywhere on App.net.

In addition to these, I’ve made a few simpler tools:

Dev Lite gives you an access token to make direct API calls yourself.

Thread Filter lets you look at just your own posts in a thread for editing into an essay or blog post.

My RSS Stream provides an RSS feed of your ‘my stream’ page.

My newest project is called Share, which is designed as a replacement for Google Reader Shares, a system for finding and sharing links abandoned by Google over a year ago. When finished, you’ll be able to use it as an RSS reader, share your favorite items in one or more feeds, and subscribe or comment on the shared feeds of others. It is currently in development, but you can play around with the functional prototype at share-app.net.

What qualities make a great app?

The best apps push at the boundaries of the App.net API. If you give @berg and @dalton a little bit of heartburn (but not too much), you are doing it right :). I see App.net 5 years from now as a transit network for dozens or hundreds of different communications layers, of which microblogging is only one. When you are thinking about a new app, look at the semantics of what App.net provides and map it onto a new and interesting network layer.

As an aside, I think that what makes a great indie game is a game which fits well within an existing genre, but has an interesting twist. I think that App.net provides an opportunity for adding that interesting twist to a game design.

What tools are important to you as a developer?

I write almost all of my code in Emacs. Github is essential for collaborative work. I am OS-agnostic but will always make sure that I have a UNIX-like console (on Windows, I use Cygwin). Aside from that, the tools I use depend on the task at hand.

Why did you decide to build something on App.net?

I joined app.net because I hate advertising that is foisted on me. But once I joined, I found that the architecture opened so many possibilities that I had to start exploring.

What got you started writing code? 

When I was little, I’d spend hours typing in BASIC programs from books into my older brother’s Atari 800. There is something magical about typing arcane formulae into your computer to tell it what to do. For a long time, it was just a hobby. At some point I realized that whatever else I ended up doing with my life I would always be programming.

Any advice for aspiring developers (all the young coders out there)?

Programming is different from most other professions because everything you need to do it (aside from a computer itself) is available for free. You can start learning programming yourself at any age, and it is a skill that will develop throughout your life. I’d recommend starting out with a free online book like “Learn Python the Hard Way” (http://learnpythonthehardway.org/). Python itself is free to download and runs on any computer. Make sure to go through the whole book and follow the instructions about typing things in.

After you have the basics, you should choose a project that is too big and hard for you to accomplish. Work on it every day as much as you can. About 10% in, you will realize that you were doing things wrong the whole time and that it will never work. Throw away all the code you have so far.

Start again, either on the same project or a new one, and avoid the mistakes you made the first time. Each time you do this you will grow as a programmer. Until one day you start one of these impossible projects and six months later, you realize that it works and that it is awesome. At that point, get an artist or designer to help you make it look pretty. :)

You should also pursue a formal education in computer science at the same time. If you follow my above advice, you will gain a good mastery of programming in general. But there will be gaps in your knowledge that you don’t even know you have. Often the gaps will be words you don’t know and solutions you hadn’t thought existed. On the other hand, if you pursue a formal education without the impossible projects, you will learn a lot of useful theory but find it difficult to put into practice.

When you’re not coding you’re…

Reading, Playing Computer Games, Geocaching (badly)