2. What is your current job? Software Engineer. I work with Josh Bloch, Elliott Hughes and Bob Lee maintaining the Dalvik core libraries for Android. We do fun things like rewriting LinkedHashMap, and unfun things like fixing the X509 decoding in HTTPS.
3. What’s next for Glazed Lists, and what is your role in that project these days? For the most part, Glazed Lists is stable and complete. There’s been some interest in adding support for platforms like GWT, Android, and FX, but nothing is actively under development. I’m currently only a consultant to the project; it’s difficult to stay involved in a project that you aren’t using!
4. Would Java be better off today if Glazed Lists was an “official” part of the JDK, or had a formal JSR? Being in the JDK has severe disadvantages: an unpredictable release schedule, licensing problems, and a lack of competition. Consider java.util.logging, an absolutely horrible API that we’re all stuck with. Java would be better off if it were easier to adopt and manage third-party libraries. Often I’ll use a bad API that’s built-into the JDK to save the hassle of downloading a good open source alternative.
5. What’s the coolest thing you’ve coded? (like a clever little algorithm, or an application you are really excited about) I wrote a JMS-like message queue with an awesome API based around interfaces. To define a message, create an interface whose methods all return void. Message-senders simply call the interface, and message-receivers just implement it. Behind the scenes, these messages-as-method-calls are stored in a Bigtable. Everything was managed, fault-tolerant, distributed and fast.
6. What are your thoughts on learning multiple programming languages? Some developers get really hung up about syntax, which drives interest in languages with pretty “Hello World” examples but few tools and APIs. What gets me excited are the programming languages that go beyond syntax: Clojure has persistent collections; Noop is being designed for testability. But I haven’t used any alternative languages ’cause Java never really lets me down.
7. If you had the chance to work on whatever software project you wanted to for the next year, and money was no object, what kind of problem would you tackle? Ironically, I’ve got an idea for a programming platform. I’d like to build a programming language with structure rather than syntax. And one that is comprehensive: refactoring, versioning, collaboration, compilation, and deployment would all be an integrated part of the program’s development environment.
8. How is programming different today compared to when you started? In the 1990’s, all software was bad. It was hard to use, buggy, slow, and dumb. Think about fighting IRQ settings in Windows 95. Today’s software is generally easy-to-use and also easy to maintain. An individual developer has incredible resources at his disposal: APIs that can do almost anything, deployment targets like clouds and devices.
9. Has Java jumped the shark? What’s next, in your opinion? Java is still a productive language and platform; I haven’t seen anything that improves upon it enough for mainstream users to switch.
10. What is the biggest challenge facing programmers today? There are many, but a particularly tragic one is security. As we put more personal information into connected systems, they become more appealing targets for criminals. Attacks like the recent Twitter break-in are easy and we’re all vulnerable. Securing applications is very hard, and we don’t have the tools to even measure whether our applications are secure.
11. What are Timbits, and where can I get the best donuts in the world? Timbits are donut holes from Tim Horton’s, Canada’s ubiquitous community centre and cafe. Their double-chocolate is among the best donuts in the world; available at 3500 stores in the US and Canada.