Better Know a WebDev: Kumar McMillan (aka kumar303)

James Socol

Welcome back! No, we didn’t forget about our blog profiles, but your humble chronicler was away and neglected to get a substitute.

So we return from our brief hiatus with the powerhouse engineer, Kumar McMillan. In his own words…

Kumar in his element

What do you do at Mozilla?

I work on addons.mozilla.org, a large Django app that hosts Firefox add-ons. We just launched marketplace.mozilla.org for apps which is an exciting new take on what an app store can be; it runs on the same codebase as the add-ons site. Open web apps can run on any device that supports modern web standards and WebRT, our web runtime. If you buy an app through Mozilla’s marketplace you can use it in any environment that we support (currently: Mac OS X, Windows, Android). If we don’t yet support it, you can roll your own by hooking into our receipt verification service. Open web apps offer a compelling promise: write your “native feeling” app once using web standards and deploy everywhere. Ours is the first app store that doesn’t lock you into a device and a vertical development silo. It’s currently not that straight forward to use HTML5, CSS3, and JS to make an app feel “native” but the incentives are pretty huge for the community to improve on this so I think we’ll see it happen (e.g. Twitter’s bootstrap, Application Cache, etc). There are some other interesting parts of the marketplace that I’m working on specifically like in-app payments.

Any fun side projects you’re working on?

I spend a lot of my free time working on a volunteer-run Internet radio station in Chicago called CHIRP Radio. I head up their Tech Dept. and help build apps for listening to CHIRP and tools for DJs to use while operating the station. CHIRP Radio is non profit and, it’s funny, there are a lot of similarities with Mozilla albeit on a much smaller scale. We develop everything in the open and engage with the open source community, for example.

I also host a radio show Tuesday mornings as DJ Bylamplight and that’s something else I spend a lot of time on: music. I like to balance my cerebral world of hacking on code with music. It’s emotional. I love to DJ songs for people because it affects their mood. I also dabble in a recording studio that I share with several engineers and bands. I just finished producing an album for Summer Girlfriends which was a lot of fun. Oh yeah, and I help run a vinyl label called Addenda and a cassette label called Plustapes. People love cassette tapes. It is true.

How did you get started in web development or programming?

I went to The School of the Art Institute of Chicago because they had a Sound Department which I thought was a neat idea. As part of my degree I did a lot of different things though: Film, Performance, Art & Technology. In the latter, I took a class where the instructor bravely had us write C code to process images (even though no one had any programming experience). We literally just made X and Y loops of pixels and wrote programs to distort images. It was super fun and from that moment I was hooked. However, art school made me realize I didn’t want to be in the art scene. The Web was exploding at the time and it felt like the place to be so I taught myself web programming (initially in PHP). The creative process of writing code isn’t very different than that of building sculptures or painting. There’s just more typing involved.

How did you get involved with Mozilla?

I’ve used the same online bookmark system since 2002 (don’t ask) and long before I joined Mozilla I had a folder of bookmarks called Mozilla. I looked up the first thing I ever bookmarked in that folder and it was this link back in 2005: http://www.mozilla.org/quality/smoketests (gone now), which was about the extensive automated test suite for Firefox. I was totally fascinated by this test suite and how they had heat map regression tests for when CSS implementations broke visual layouts. I was very inspired by this when I started to do automated testing. Mozilla felt like a pioneer in this area and many other areas.

Several years after that, Mozilla started doing a lot of work in Python and several people I knew from the open source community started working there. I liked what they were doing with Python and since they were already using some open source libraries I was working on, it was a natural fit. Actually, most of the people we hire in webdev are authors of libraries I’ve used or are authors of blog posts that turn up regularly when I search for tech help.

What’s a funny fail story or mistake you can share?

I once deployed a bad change to addon.mozilla.org‘s web service used by Firefox clients that triggered an unexpected traceback on every request. Since these service URLs serve about 8,000 requests a second it killed the cache and basically started to melt down the server cluster (the graphs were ominous). Luckily my new code was behind a feature flag so we could turn it off immediately without having to re-deploy. There ya go kids, always use feature flags. It was indeed a reminder that our flag based strategy was a good one.

What’s something you’re particularly proud of?

It still needs some work but I wrote JS TestNet to allow addons.mozilla.org to run small integration tests for our JavaScript functionality. support.mozilla.org is using it now as well. Providing a continuous integration framework for JS testing only solves half of the problem though. There is a huge gap in the JS web dev community where barely anyone writes automated tests. All the popular patterns around jQuery and jQuery plugins do not encourage you to write testable code and it’s hard to retro fit tests into code like that.

What’s coming up that you’re excited about?

I’m excited about the Mozilla apps project and how our payment systems might instigate new online business models. I’m excited about apps in general. I can’t wait to build apps for cars. I love my iPad, my Android tablet, and my Android phone. If we stand by and do nothing, the web is going to become a second class citizen in these apps-centric devices. Mozilla can change that. I think we might even get some major players like Facebook or Google to join in our crusade to appify the the web in an open and egalitarian way if we prove that our concepts will work.

I’m also excited about Sagrada and Petri, two projects that aim to build a scalable platform for hosting web applications. One day Mozilla may be able host community apps on these platforms and further our mission to keep the web open and accessible to all.

What question do you wish you’d been asked?

How do today’s open source communities relate to ancient hunter / gatherer tribes where shared resources and equality were key components?

What do you listen to while you work/program?

I listen to CHIRP Radio, WBEZ, KCRWWFMUThis Is My Jam, Soundcloud, my record collection, and my mp3 collection. Thanks for asking.