What Desktop Innovation Needs to Succeed
Open Source Feminism: The Unfinished Revolution
Why Debian Is the Gold Standard of Upstream Desktop Linux
Yesterday's Man: The Fall of Richard Stallman
What's the Future of Free Software?
May 14th, 2015

Portrait of an Everyday Computer Programmer

The FOSS Force Interview

Software.

The majority of us in today’s work force rely on it to earn our livings. Whether we use it directly while sitting in front of a computer or by tallying a daily quota for auditors to further calculate, in one way or another, software is the key to getting our jobs done.

computer software wizardMost people rarely give a thought about how the software they use came to be or even what it is. To most, it’s voodoo, magic conjured by wizards on mountaintops, their staffs held high, with bolts of energy breathing life into the encased boxes referred to as computers. But behind the wizard’s benefaction are real living and breathing carbon-based units: People who have the talent, and often times the personality, to make ones and zeros, along with a healthy supply of squiggly things, actually do something.

Many of us operate under the assumption that writing software demands a particular personality and skill set. We imagine people who skulk and pace between sittings, swilling Red Bull and muttering to themselves before a frenzy of creative genius leaps from the IDE. Certainly, the mad genius sometimes lurks in front of and often within the code — but mostly not. In real life, people who create software are pretty much the same as you and me: average people, but with the ability to write good and needed software.

Neil Munro is one of those people.

I met Neil while recruiting software people to help clean up the horrid mess that is text to speech (TTS) software in Linux. Actually, he approached me, and in an almost apologetic manner, offered to assist in any way he could. Humbleness is often a trait of software engineers. They severely understate their abilities and will brush off compliments of their skills as “something they picked up” along the way in their time at the terminal.

Calculating beam vectors? From where do you “pick that up?”

While several coders were considering either forking a current but under-supported TTS application or writing one from scratch, Neil went in a different direction. He decided that the actual platform should be the Chrome browser. He would build an extension that worked inside of Chrome. And yes, the platform of choice these days is quickly becoming the browser environment.

So I thought it would be a good idea to check in on him and spend some time talking about who he is, with a bit of in depth discussion about the things he is working on, to include the Chrome extension for text to speech. As a fun thing to do, I often start by asking the people I am interviewing to give me some bullet points about themselves that normally wouldn’t make it into an interview, maybe a bit of the odd or funny. Neil didn’t disappoint:

  • I’m hydro/aquaphobic, I don’t mind the rain and showers. In fact I like those. But I don’t feel comfortable surrounded by water. I had a bad scuba diving experience once and never got back in the water.
  • I have a fear of mannequins, they freak me out… (Don’t blink, don’t even blink. Blink and you’re dead. They’re fast, faster than you can imagine…)
  • I’m a pescatarian (vegetarian who eats fish). Not for any moral reasons, I just find most meats too heavy to consume.
  • I like to run. I try to run at least 5k a few times a week. I’d love to train to do something like a 10k or further.
  • I listen to a very strange mix of music: rock/metal, celtic/tribal, folk, blues… However, never jazz, and don’t get me started on dance, hip hop, r’n’b…
  • Irn-Bru is the best soda ever, closely followed by root beer.
  • I prefer Hershey’s chocolate to my native British chocolate. I’m told this is weird.
  • Coffee gets me through the day. Go into starbucks and order a frappe with mint and vanilla and they’ll think you’re mad, but it’s awesome. Besides, you’d frequently combine them as ice cream flavors.
  • I’m kinda sorta ambidextrous. I write with my left hand but frequently use typically right handed setups, mouse on the right or knife on the right at meals. Though I identify as being left handed, it confuses people to see me using my right.
**********

Ken: Neil, let’s find out a bit about you. What’s your age and where do you call home?

Neil: I’m 28 and I live in the northwest of England in a town called Eccles. It’s part of what’s known as greater Manchester. In fact, downtown Manchester is a quick tram ride away, and that has a Taco Bell! I can often be found on weekends in Ziferblatt in Manchester’s northern quarter.

Ken: Are you married? Kids?

Neil: Oh no. I’m extremely happy being single. I value my privacy and I choose new friends carefully. I like to take time and learn about people. Walks discussing all manner of things. Going for coffee and just learning about a person. I think in our “always connected” society, people rush into things. Some things take time to get right. That includes the important decision of choosing friends.

Ken: And what pays the bills for you these days?

Neil: I work in Wilmslow for a digital print company called Global Graphics. I am a software test engineer, but I don’t test software. I write the test software that other software engineers use to test software. I’m pretty much a one man team.

Ken: A one man team. Is that by design or job description? Do you prefer that as opposed to working on a team?

Neil: Yeah, it sort of evolved that way even though I interviewed for a team position. And yes, I do like working alone. If there’s a team meeting, I’m never late.

Ken: Tell about the progression to becoming a software programmer. When did you decide that this was what you wanted to do?

Neil: I guess it started when I was eight or nine years old. It would have been ‘96, I think. I’d seen a few computers in school. We had an old Windows 3.1 machine at home and I was shown the Internet for the first time. I don’t remember anything about the Internet, but I do remember that all computers had this Windows thing on them and it just seemed weird. What was it? Why was it called Windows? Why was everything grey?

It wasn’t until I was fifteen, I think, that I installed my first program and later that year my dad and I completed an introduction to HTML at night classes. I graduated high school with average grades. Not knowing what I wanted to do, I took a broad computer course at the city college. I graduated with the most middle of the road average score that it’s possible to get. Having scored high enough to earn entry to a university, I decided to go and study more. I finally gained a second class, second tier bachelor’s degree in computer studies.

I even had to repeat a uni [university] year, and ultimately failed my A level mathematics module. So let me be clear, I am in no way academically gifted. I found the whole education system a massive challenge. I’m far more vocational and an exam based testing system doesn’t play to my strengths.

Which is why it was surprising I should have scored 80% on my final year uni project (I was marked down for not meeting the presentation style and writing an extra 20,000 words). I thank Python for this.

I had spent five years (up to that point) studying programming and not understanding a word of it, so I resolved to write my own uni project (rejecting the suggested projects Windows/.Net based projects) on Linux, in Python with GTK.

With Python and Linux I felt that I was in control and able to understand what was going on. I mean, my Python was terrible as my education had taught me some pretty poor habits, but I was being productive and being creative. I had gotten a taste for it.

Ken: After university, did you find work immediately in the technology field?

Neil: Upon graduation I started my own computer company. It quickly became about removing viruses from windows computers. I was crushed and wrapped it up shortly after. I had a couple of jobs — I repaired Xbox 360s on the night shift. It was horrible. However, it was contract work, so I just called one Monday night and said I was done and wasn’t coming back in again.

I then worked in a bingo hall, called numbers, built spreadsheets, served beer, scrubbed toilets… Hey, you take what you can and work hard, and sometimes you really do, literally, have to wade through crap.

Totally out of the blue, after I knocked off an afternoon shift, I got a call and I thought someone was pulling a prank. Red Hat, yes, Red Hat, my dream company, called me and wanted me to interview for a support role for Europe, the Middle East and Africa. They knew I was more or less fresh from uni and I’d not be measured by my commercial experience.

So I rocked down to the south of England in my crappy car, donned an ill fitting suit, all excited, with my copy of “Under the Radar” in one hand and “The Cathedral and the Bazaar” in the other, and cried internally when they asked me in-depth about my non-existing commercial experience. I wasn’t at all surprised to get the call the very next day that I just didn’t have enough experience.

No hard feelings though, Red Hat. Things worked out okay. Manchester is pretty sweet, and as it turns out, I really don’t like travelling. But I did drive for like ten hours and wrecked my wheels due to a pothole.

Ken: Was that the last you heard from Red Hat?

Neil: It was, but a few months later I got a call from another company and I failed to get the job in a support role. Surprisingly, the company called back and said they felt I was wrong for that previous role, but they’d really like me to come back and interview with another team for a more developer focused position. As it turns out, knowledge of Jam (the build system), Linux, Autotools, Bash, Python and how managed languages work was exactly what they were looking for. I joined Global Graphics in February 2012 and have been here ever since.

Ken: Tell about some of the programs or projects you’ve been involved in. Are any of them in play today. Are any of them in play as far as distro repositories?

Neil: Okay, so I’m nmunro on GitHub. Sometimes niadh or njal elsewhere. I have a couple of projects there, the one I’ve been working on for a couple of years privately has just been thrown up there under the name “MajorTom”.

Spirit Of Christmas is an interactive Christmas party for families that my family and friends started almost seven years ago now. We have performers, stage games, audience games, food, drinks, a grotto and Father Christmas himself happening all at once. To pull it all off, we needed to have a coordinated networked system to inform staff of run time, upcoming sections and the ability to communicate, etc. So it’s a server that pushes real time information. When the server is notified that a new section begins, it sends out that information to all connected browsers. It’s designed to be more of a communication system, rather than an actual presentation itself.

I wanted to leave it up to the performance creator how they want the presentation to look and behave. We, ourselves, might want to change things independent of how the server system worked. Anyway, we certainly couldn’t afford to buy a package that did this sort of thing, so I built one, and it ran happily on a Raspberry Pi too!

It’s built upon Node.js and uses WebSockets. It was pretty mind bending but fun — pull requests welcome, hint, hint.

Ken: Talk a bit about the text to speech project you are working on as a Chrome extension. When you are finished with it, tell me what features it will have. What engine powers it.

Neil: Jerusalem is another project I have on GitHub. It’s a TTS web app packaged for Chrome/ChromeOS as an extension. I wrote it one weekend while I was trying to find a solution to the fact that voices in Linux TTS are just awful; they suck worse than a broken vacuum cleaner. Festival was bad, eSpeak was bad and MBROLA was no better.

Being a web developer, I’m quite aware that there’s all sorts of stuff going on in the web dev world, complex applications are being developed, including full 3D games, so I went looking to see what audio stuff might be available and stumbled upon the W3C spec on TTS. Currently the spec is only implemented by Chrome (not yet Chromium). I am following the Mozilla bug reports on this closely to see if this changes. Anyway, I had a bit of a play and was blown away by the quality of the voices.

I think the longest part was the most important: making it easy to use. I’d not call myself a UI designer, but I hate complicated interfaces.

It’s really just a web page packaged up for Chrome. It might as well just be a HTML page stored on your hard drive for all that it matters. There’s really not much to it yet. The reality is our browsers are full blown application platforms these days anyway and I just followed the spec. All the pieces were there, just not in a nicely presentable way. It was basically just a glorified jigsaw; all the hard work had already been done by Google.

I’m hesitant to say that any software will ever be finished, but there’s a few issues that I’d like to solve, small ones mostly. There’s an open bug about sometimes the audio cutting out, so I beefed up the error handling code but haven’t managed to reliably reproduce it yet. There’s a resizing bug in the text area; I’d like to see the text box resize vertically as well as horizontally. I will add other features as time allows, though. Themes? Saving a list of common phrases? Syncing settings via Google? I really don’t know. Again, pull requests welcome!

**********

So…you really don’t have to be a genius to write software? There’s hope for me to get a job even if I’m not a Mensa member?

I think the things that Neil Munro has shared with us can pretty much make that a check mark is the “yes” column. But mostly, we’ve learned that opening ourselves up to new possibilities in our lives will pay off in the long run. Like being a software engineer writing software for other software engineers.

Even if it entails calling out bingo numbers from time to time.

You can help FOSS Force grow our coverage by making a contribution during our May Pledge Drive. If you enjoyed this article, please help us by making a contribution. Get all of the details on our Indiegogo campaign page.

Ken Starks writes and publishes The Blog of Helios, a finalist in our Best FOSS or Linux Blog competition. In addition, he's the person behind the Reglue project, which refurbishes older computers and gives them to disadvantaged school kids in the Austin, Texas area. Follow him on Twitter @Reglue

2 comments to Portrait of an Everyday Computer Programmer