SciRuby authors Ara Howard and Justin Crawford interview Rick Nooner
Name
Rick Nooner
Title
Senior Architect
Institution
Level 3 Communications
Interview
[SciRuby] Can you briefly describe your research project(s)? What are you trying to learn?
Research would be strong word for what I do. I'm mainly involved in Voice over IP (VoIP) work right now. While much of what I do is new, I wouldn't consider it Research with a big 'R'. Our fundamental goal is to make VoIP as reliable as Ma Bell has been.
Specificly, I am studying how the Session Initiation Protocol (SIP) is being used today and how its use has evolved over time. Since SIP is an extensible protocol, much care needs to be taken by VoIP Carriers like Level 3 to ensure that they don't break the traffic currently being carried as next generation architectures are built. To achieve this, extensions added by each individual customer have to be understood since they don't generally consult with their Carriers before they make the extensions. A side benefit of this study is our ability to understand current SIP traffic patterns across the US.
[SciRuby] Can you briefly describe (a few paragraphs) how computers are helping you learn that?
Computers are fundamental to my work. Without computers, there would be no VoIP
Seriously, though, I have to analyze terabytes of data and reduce it to something understandable. Ruby plays a BIG part in this. All of the analysis software is written in Ruby. It turns out that development time is more important to us than analysis time. Ruby cuts our development costs by significantly reducing the amount of time to write our analysis software. It also allows for very fast turn around when we discover something new that needs to be accounted for in our analysis.
[SciRuby] What effect would you hope your research would have on the world?
Hopefully cheap, super-reliable VoIP.
[SciRuby] How many people are working on your project(s)?
We have two developers and two people concentrating on the analysis.
[SciRuby] Are any of your team members computer scientists?
We have no Phds in our group.
[SciRuby] What's your computing setup, i.e., what OS, hardware, and language are you using?
Currently the analysis uses a 4 processor Sun E4500 with 8 gig of RAM running Solaris connected to an EMC storage array. The development is done variously on a SunBlade 1500 with 1 Gig RAM, a Sun Ultra 10 with 1 gig RAM and a Apple iBook G4 with 768 meg of RAM. Our language choice, Ruby, allows us to be pretty much hardware/OS agnostic in our development.
The collection environment has over 100 Sun systems distributed over the US and Europe.
This is the third major project that I have done using Ruby. In my opinion, Ruby has the best mix of maintainability and development speed of any current language for the work that I am doing.
[SciRuby] What's your favourite software tool?
My editor, vim
Second favorite: Ruby Third: Ocaml
[SciRuby] Did you learn to program in school or on your own?
The short answer is that I taught myself. The long answer (feel free to skip this section)...
I started in High School learning Basic on a Commodore PET quite some time ago. That's pretty much the only formal training that I have.
Early on I joined the Air Force and worked on the F-16 avionics. I became the System Administrator of the Base MILNET connection in Hahn, Germany in the mid 80's. I learned quite a bit at this time about what was to become the Internet. I also wrote video games for the Amiga and Amiga based Arcade machines in 68K assembly to supplement my (meger) Air Force income. So most of my formal education is in electronics.
After leaving the military in 1990, I went to work in the Nuclear Power industry where I helped design and build the next generation security system at Arkansas Nuclear One. I also did both hardware and software on computers most people have never heard of, from Perkin-Elmer embeded systems to System Engineering Labs (SEL) minis, to Vaxen. During this time, I programmed mainly in Fortran, Assembly (various) and C with a little bit of C++. Since I also managed several DECStations running Ultrix and a couple of Sun workstations, I picked up my first scripting language in 1992 to help with this thankless task, Perl.
In 1995, I helped found one of the first ISPs in Arkansas. I was the Chief Engineer. This was the year that I read an article in Linux World about Python. I was still programming mainly in C/C++ and quickly realized that I could write all of my low level code in C/C++ and all of the high level control logic in Python. This lead to a huge savings in development time for the projects that I was working on. I've been a big believer in scripting languages ever since.
I think it's important to never stop learning and try to spend time each day learning something new.
[SciRuby] How much of your work is programming?
Just about all of it.
[SciRuby] Do you enjoy programming?
Oh, yes.
[SciRuby] What's your favorite beer?
[SciRuby] What languages have you used?
Well, I'm kind of a language junkie. I try to learn at least one new language a year not including anything new that I need for work.
So the list sort of goes like this in order of most recently used to least recently used:
Ruby, C++, C, Ocaml, Lisp, PHP, Python, Perl, Erlang, Haskell, Java, ABC, Forth, Fortran, Modula II, Pascal, Ada, ATLAS, various assembly languages and others to numerous to mention.
[SciRuby] What is your favorite?
Ruby
[SciRuby] Can you briefly describe (a few paragraphs) how Ruby is helping with your work?
[SciRuby] Which kinds of coding problems do you end up spending the most effort on?
Distributed programming since I deal with gathering terabytes of data from many computers throughout the world in near real-time.
[SciRuby] Which kinds of coding problems do you end up spending the most time on?
Right now, data analysis.
[SciRuby] Which kinds of coding problems form the largest obstacles for your field?
[SciRuby] How would you compare your software development practices to those of colleagues in your field?
More cutting edge than most of the people that I work with. Large companies are very process driven and are very slow when things need to be changed. I tend to lead the curve in methodology changes. I was the first (that I know of) at Level 3 to using a scripting language (Python) in 1998 for a large distributed computing project. I also tend toward Agile development methods rather than the UML based methods used for most work at Level 3.
[SciRuby] What programming accomplishment are you most proud of?
Hmmm... that's hard. I'm pretty happy with most of the work that I've done.
[SciRuby] Tea or Coffee?
Tea. Earl Grey.
[SciRuby] How do you test your code?
Unit testing. 'nuf said.
[SciRuby] How much time do you spend debugging code?
Less than ten percent of my time. This is one of the things that I like Ruby. Ruby really fits the way that I think. I have never had to use Ruby's debugger to find and fix a problem.
[SciRuby] If your project was going to be drawn by a famous comic book illustrator, what would it look like? (You don't have to answer this one; but if you do, your wish might come true)
[SciRuby] What do you do when you're not in the office/lab?
I play the trumpet in a local orchestra. I also like to get out in the mountains here in Colorado as much as possible. Oh, and I like Geocaching.