Q & A: Kris Bell

March 8th, 2007 | by Aldacron |

There are a number of names and handles you will be familiar with from the different D forums (newsgroups, DSource, #D) and projects. Most of them were early adopters of the language and have devoted many man-hours to develop tools, libraries, wiki entries and tutorials. I’ve been wanting to do some interviews for this blog, so I thought it would be interesting to get to know these people a bit better. We know the names, now let’s learn a bit about the people behind them.

So this is the first in a series of short Question & Answer sessions with some of the earliest adopters and most active members of the D community. The keyword here being short. I’m not a professional journalist and I certainly don’t have the time to write up lengthy interviews. My goal is to shed some light on who is at the keyboard behind the handles and why they are doing the great things they do.

Once I settled on the format of the interviews, I immediately decided to approach Kris Bell for the first Q & A. You will know him on the different forums by the handle kris. Not only has he been around D for a long while, he has also been at the heart of two major D libraries: Mango andTango. He’s an active participant in discussions about D features on d.D and can be found regularly in #D.tango and #D. He also makes me extremely jealous — I can never seem to format my D modules as nicely as his.

So when Kris agreed to answer my queries, I sent him some questions about his background, D and Mango & Tango. My questions are in bold, his answers in normal type.

When you aren’t hacking D, what do you do to pay the bills?

Last paying job was at PARC. August 2006 to February 2007 was spent traveling, since I always wanted to go on a long trip and finally made the time to do it. Recently I’ve been focused on Tango instead of working. Seems like a good deal to me :)

Before you found D, what was your programming background? Which languages were you most familiar with and which was/were your preference?

I’ve been lucky to become involved in a wide range of software applications. Started off doing firmware for factory automation and so on; then did some really interesting immersive environment-simulation; then some real-time 3D graphics before the hardware started doing it all.

After that, I spent a number of years building RAD platforms for various companies, and constructing high-performance clustering systems. More recently I went back to the firmware again, creating interactive-clothing and related products.

It’s much more fun building interactive systems (simulation, and interactive clothing) since it visibly affects people at the emotional level ~ far more rewarding to see people get excited or have a good laugh over something you’ve built than, for example, to design or build the “most amazing” RAD platform for deploying HR and Financial applications. I imagine that’s why gaming is so popular these days ~ it’s just fun & rewarding to create stuff that others get a buzz from.

Languages? For commercial systems I’ve used Basic, Pascal, Modula, C, and Java; plus many assemblers. Simula was the first real language I learned and, from memory, D is probably closer to it than any other language I’m familiar with (Simula turns 40 this year). Don’t really have a preference for one in particular, though it’s true that Java makes it easier to get a big project (with lots of people involved) actually working correctly; that scores big points for Java in my book.

How and when did you first learn of D? What was it about the language that hooked you?

Went looking to see what Walter Bright had been doing; had used Zortech C back in the day, and the codegen was excellent. It was simply a matter of “hrm, wonder what happened to that dude”.

The ‘hook’ was when I realized D could be a way to avoid ever having to design or construct anything large in C++ again. The latter is, in my view, the worst thing that could possibly have happened to software in the nineties. Some people love C++; I loathe what it does to project costs.

Now that you’ve had quite a bit of experience with it, what are some things you really like about D? What don’t you like about it?

The three things that stand out are array-slicing, foreach and closures. Most other features that affect the writing of daily code are pretty common across (other) Algol-based languages.

I don’t much care for the pedantic manner in which interfaces are supported, or how alias is a central tenet of the language. Having said that, I suspect mixin is the most glaring design fault in D — mixins seem to encourage creating opaque, obtuse, and unmaintainable code, with too little in the way of tangible benefit. As an example: there was one very capable (nameless) package evaluated for Tango, and it failed the first hurdle due to problems related to mixin. Where D really shines is in concise, clear, readable code; the detrimental aspects of mixin tarnish that polish in one way or another.

(n.b. the one mixin statement within the Tango codebase is being replaced)

There’s a number of so-called “quality of implementation” issues with the DM compiler: D binaries are bloated with typeinfo that is only rarely used. For example, moving from v1.0 to v1.005 resulted in a huge binary-size increase for Tango applications ~ all of which is additional typeinfo, 99% of which will never be used in daily programming. That’s a growing problem with D, and it really ought to be addressed in a manner that makes the meta-data optional. Stack-based classes (via ’scope’) ought to be checked for the existence of a dtor, before the compiler injects a try/catch across the class creation and destruction. Then there’s the lack of full debug support. It would also be good to get some kind of roadmap for a 64bit compiler for Windows. These are not language issues per se, but are important in one way or another.

If you could add one new feature to D right now, what would it be? What other features do you think would be useful to have?

It’s hardly a feature in this day & age, but full support for a debugger would be nice.

The syntax for instantiating classes could be simplified somewhat (for those who are more comfortable with script-style code), and structs need a good ctor syntax also. It would be great if structs could be inspected dynamically for what they offer, in a manner similar to what interfaces can expose; that would blur the line between class and struct notably, and would likely result in one or two Tango classes becoming structs instead. D should probably enforce things like “override”, since they make for more robust code and thus help to reduce long-term costs.

Better runtime reflection (in general) would be a nice option to have, but purely as an option.

Before Tango came along, Mango was the gold standard for D libraries. There was quite a bit of praise for it. What was it that motivated you to create the project in the first place? Did you think it would be as popular as it has been?

Mango has a number of different facets, for scratching different itches. The initial motivation was to construct a scalable and efficient layer for developing the kind of platforms I’m used to. Was a personal thing; I wanted to build a really efficient web-server as a way to learn D. After that, it just grew to include a few handy tools, like the servlet engine and the basic clustering package, along with some i18n and XML tools that just weren’t available elsewhere.

I truly have no clue how many Mango users there are or how popular it is, but if it made someone happy then that’s cool.

I know that Tango arose out of discussions between Sean Kelly and yourself. Can you give a little insight into how those talks came to be? How exactly was Tango born?

Sean was doing a number of progressive things with Ares, way beyond what was downloaded with the compiler. Mango gained support for Ares early on, and it seemed that a merger might help to focus direction for both libraries. That happened in a big way, I think.

Tango, as a notion, was conceived in early April 2006 via a series of emails between Sean and I. After that, it was surprising how many were happy to get involved; Lars Ivar Igesund (larsivi) was the first. We’ve got some really capable people on board, and that’s where the Tango richness originates.

Tango, as it stands, is a fairly comprehensive library. Where do you see it heading in the future? What is the ultimate goal?

Tango will remain a medium-weight library; it’s not intended to be a Java-style runtime, with everything bundled. The core goals are to offer the kind of services we find useful, and to enable those in an efficient manner.

We decided early on that Tango would take the route of “library extensions”, instead of tossing the proverbial kitchen-sink into the core. The intent behind that is to provide “enough” useful facilities in the core to spur development elsewhere, but not to the point where it stifles innovation. For example, there are a few network-oriented clients in Tango, but no servers ~ there are many ways to skin the server cat, so we omit those to provide space for both innovation and alternatives. Clients are much duller, so we include them as a means to jump-start development.

What will Mango’s role be now that most of it has been integrated into Tango? Do you expect to expand it at all?

Just the lower level aspects of Mango made the migration into Tango, and were heavily revised during the transition. The ‘platform’ layers of Mango (servers, XML, etc) remained behind, since that’s not the kind of thing that belongs in Tango. Given that, I guess the role of Mango will remain a “network services” extension to Tango? It also stands as a reasonable example of how to apply Tango.

Aside from Mango and Tango, which D libraries and/or tools do you regularly make use of?

I’m still focused on the library at this time, so have limited use for anything but Build and Rebuild. When we turn more attention to building higher-level toolsets instead, a variety of other D projects will become much more useful. Right now the hands-down best tool for D, which I use daily, is MSVC6 :)

Are there any specific, and currently unimplemented, libraries or tools that you would like to see developed in the near future? Any you’re thinking of undertaking yourself?

RAD tools, such as RoR, are a huge boon for a large number of people. Tools/platforms like that are of interest to some Tango contributors, so that’s likely where I’ll be focusing next. Personally, I’d love to do some fun things with D for cell-phones and other commodity devices. I think that’s where a large part of software development will be directed for the next 10 years.

A big thanks to Kris for taking the time to answer these questions. Can you believe he’s free to work on D stuff full time? Some guys have all the luck.

I already know who my targets are for the next few Q & A posts. One of them will be hearing from me in a week or so :)

Technorati Tags: , ,

3 Responses to “Q & A: Kris Bell”

  1. By MDK on Mar 9, 2007

    Nice interview, waiting for the next one.

  2. By Lindquist on Mar 9, 2007

    Great stuff :)

  1. 1 Trackback(s)

  2. Apr 5, 2007: The One With D » Blog Archive » Q & A: Sean Kelly

Post a Comment