It’s time for another installment of our developer chat series.  Today, we’ve got Carson McDonald.  You can find him on both Github and Work for Pie.  

Read about a pretty sweet Google Analytics dashboard for WordPress, get some really great advice for folks just getting started, and much more!  

Who are you and what do you do?

I am a developer, sometimes sysadmin, I like to hack on different open source projects and every once in a while I write about what I do on my blog. At work I spend about 60% of my time doing Enterprise Java development but over the past 3 years I have increasingly found myself doing Objective-C. Over the years I have used a lot of different languages for work with the top after Java and Objective-C being C/C++, Javascript, PHP and Ruby. When I hack for fun I try to experiment with different languages but lately I’ve been using Ruby heavily.

Outside of work and open source projects I have been known to fiddle with electronics and RC cars. I have a family and kids so I also spend time going to baseball games, gymnastics, maybe some camping and helping with homework. Fitting everything in is a challenge but I have found that minimizing the amount of TV I watch frees up a lot of time. TV is probably the biggest time suck ever created.

How did you get started writing code?

In 7th grade my computer lab teacher discovered that he could write basic on the Commodore 64s we had in the lab. He decided to teach us to type by having us program simple games. From that point on I was hooked.

I moved from Basic to C after a few years. I think the early beatings I took from C made me a better programmer. I spent hours debugging programs before I really understood what I was doing. By the time I got to college I was well versed in tracking down bugs.

In college I had to switch to Pascal for a while but I convinced my professors to let me do my work in C after my first semester. Around that same time Linux 0.99 was finding its way on to some of the PCs in the main computer lab. A number of students who had friends at other colleges had started to play MUDs and they installed Linux so they could host dungeons. I happened to be in the lab one day while someone was trying to get a MUD compiled and I thought “Wow, the source for all of this is just out there for anyone to see and change?”

Looking around for MUD source led me to the open source world. I was soon looking at the source for UNIX tools and at the time it was a great match for my C background. I learned a lot by just looking at the tools and trying to figure out why things had been done one way and not another.

Tell us about a project or two that you’ve built.

I start a lot of projects and then don’t have time to come back to them but there are a number that I focus on. A couple of those projects are my HTTP live streaming segmenter and Google Analytics Dashboard for WordPress.

The HTTP live streaming segmenter implements the pantos http live streaming spec. I used ruby for the project and it heavily leans on FFMpeg which is an awesome open source project. I created the project because Apple published a great spec for it but didn’t release any source to actually implement it. This is a good example of a project that I started with no goal outside of building something and learning but later found use for in business projects. Over time a few commercial businesses have sprung up that implement the same spec, Transloadit and Zencoder to name two, but plenty of people still find my open source project useful.

The Google Analytics Dashboard plugin is something I started because I got tired of having to log into multiple places to see blog stats. It embeds a partial view of your Google Analytics stats inside your WordPress dashboard using the Google Analytics data export API. These days maintaining the project helps me keep my PHP knowledge from completely atrophying. This is a project I thought would die when Automattic introduced their own stats collection and display system but interestingly enough it became even more popular.

What are some of your favorite projects that you haven’t built, some great stuff that we should pay attention to?

My favorite projects change a lot so this is a hard question to answer. Even though lots of people are paying attention to this one right now I think the project that has my attention the most right now is node.js. I find both Javascript on the server side and async programming interesting.

There are a lot of interesting projects currently using the JVM as a platform. The JVM is very solid, has a huge company behind it and there are years of knowledge built up on how to tune it. In the past I have played with JRuby and I’m currently playing with Clojure. My interest in Clojure is mainly to expand my learning into functional programming. I had some exposure to Lisp in graduate school but I never had use for it outside of the classroom.

There are a lot of things going on with performance through the web stack right now as well. I think Google’s SPDY stuff is interesting. Even if it never makes it into the wide world I think it is making people think about doing things differently. There are a number of implementations in different languages, I’m familiar with node-spdy and the Ruby SPDY gem with the node-spdy being the most complete implementation I’ve seen.  On the other end of the stack there is a lot of work going on around responsive design that is interesting.

Do you have some advice for folks who are new to development or open source work?  How do you recommend they get started?

The first and most important advice is to do something, anything really. I help evaluate potential employees for my company and if a candidate hasn’t pointed us to something like github or Google code I go searching. If I can’t find code I search for any other contribution they may have made to a project even if that is just helping someone on a mailing list or on StackOverflow. The primary thing I’m looking for is love of the game and you don’t spend hours working on or helping with an open source project without some of that.

My first contribution to an open source project was to Apache Tomcat in 1999. Back then I had to walk up hill both ways to get a commit! Today I don’t like to hear any excuse about getting involved because it is so much easier for most projects. Github, Google Code, Codeplex, StackOverflow, etc have made the interaction effortless enough that there is really no good reason to not be involved in some way no matter how small it is.

If you are completely new then participation is probably the best starting point. You can participate by answering questions or providing opinions. It can be hard to get an out of the blue commit accepted into a project. I see a lot of people complain that they tried to contribute code and it was rejected or just ignored. That happens to everyone, right now I have two pull requests to large projects on github that have been sitting for months. Being part of the community around a project before trying to contribute code can help so it is a good place to start.

If you can make the time then participating in something like rails rumble or node.js knockout can be great. Coming up with something to do for the contest can help you think of ideas to hack on. Some of those ideas can turn into longer running projects and on top of that you will probably learn something new.

If you just can’t bring yourself to interact with people you can always start your own project. Fill a need you have, even if there are other projects filling the same need. There are at least two major WordPress plugins that do a lot of what mine does but plenty of people still find mine useful. If you can’t think of a need then find a spec and implement it or find an idea that someone else has and make it happen or expand on it. Just do something.