Click here to Skip to main content
15,867,568 members
Articles / All Topics
Article

A Coder Interview With Martin Pilkington

,
Rate me:
Please Sign up or sign in to vote.
5.00/5 (4 votes)
12 Sep 2012CPOL5 min read 12.2K   3   1
Welcome to our continuing series of Code Project interviews in which we talk to developers about their backgrounds, projects, interests and pet peeves. In this installment we talk to Martin Pilkington.

Welcome to our continuing series of Code Project interviews in which we talk to developers about their backgrounds, projects, interests and pet peeves. In this installment we talk to Martin Pilkington.

Who are you?

I’m Martin Pilkington. I’m based in Accrington, England and run a company called M Cubed Software that currently consists of just me.

What do you do? 

Most of the projects that I can currently talk about are my own apps, which can be found at mcubedsw.com. I mostly spend my time designing or coding up Mac and iOS software, both for my own apps and for clients.

I have been involved with a few other things. I write up reviews of new Xcode releases on my blog, such as this one for Xcode 4.0, and am currently working on a book about Xcode.

I also give talks at development conferences on occasion.

What is your development environment?

My main dev machine is a 27“ iMac with a Quad 2.93GHz i7, 16GB of RAM and 1TB HD. I also have a 20” Dell display as my second monitor. Recently I got a Mac Mini to use as a testing server. It’s running Mac OS X Lion and Mountain Lion at the moment, but I’m hoping to get Windows 8 and Ubuntu on there as well at some point.

The majority of my day is spent in Xcode. I also spend a lot of time using my own Lighthouse Keeper app for issue tracking, Tower for making git usable, OmniOutliner and OmniGraffle for sketching out ideas and Photoshop for doing UI design.

For any web development or scripting I use a combination of Textmate, Coda, RubyMine, MAMP and Querious.

My favourite language is by far Objective-C. A lot of people dislike it at first, but when you get to learn it properly you begin to appreciate how powerful it is.

By extension I’m also quite fond of C. It can be painful to deal with, but I believe that is largely down to the APIs. Most C APIs are not well named, nor very easy to use, but that’s a result of the time in which they were created. If you use more modern APIs, such as Apple’s excellent Core Foundation, C can be as nice to use as any other language.

What new tools, languages or frameworks interest you?

I’m looking more into Ruby and Rails. I’ve used Ruby for scripting, but usually stuck to PHP for the little web development I’ve had to do, simply due to its ease of deployment and my familiarity with it (PHP was my first language).

I am very interested in Windows 8 and Windows Phone. Metro is one of the most exciting things Microsoft has ever done. I’ve noticed many Mac and iOS developers who have long dismissed Windows as not worth the effort to develop for, who are now looking at it quite curiously now. Hopefully I’ll be able to find the time to get into the development tools, languages and frameworks.

What is your coding pet peeve?

Poor naming. We are not in the 1970s or 80s any more, there is no valid reason not to give methods and variables descriptive names. So many languages and frameworks try to be overly concise rather than being obvious, optimising for writing than for reading. Don’t abbreviate things. And don’t use non-obvious names. Sure it may make you feel smart to name a method “squeeze”, as in the case of one of Ruby’s String methods, but naming it “stringByRemovingDuplicateCharactersInSet” is far clearer as to what is being returned (a new string), what it is doing (removing duplicates) and what is being passed in (a character set).

For my own code I prefer to use K&R and tabs. The naming convention depends on the language I’m using. Overall I prefer camel case, but I’ll use whatever is the standard for a particular language

How did you get started programming?

The first computer I remember having was an Performa 5200 back in the mid 90s (though apparently my family had an LC in the early 90s when I was still a toddler).

I initially started making point and click adventure games using ClarisWorks and Apple Media Tool. I gradually started making more and more advanced games until I reached the point where I had to learn how to program.

My first real language ended up being PHP, simply because there was a book on it in my local library and I was starting to get interested in building websites. I’m always conflicted about PHP. On the one hand, it’s my first language so it has a special place in my heart, but on the other hand it does frustrate the hell out of me when I use it at times.

How has the developer community influenced your coding?

The developer community has influenced my coding greatly. The biggest impact the that other developers have had on my coding is making me think a lot more about the structure of the code I write.

My biggest dislike about the developer community in general is probably how closed minded many people can be. The degree of this can vary a bit from community to community, but often there are those who dismiss the ideas of others simply for being different. Obviously not every idea is good, nor does every idea work well in all situations, but it’s good to see what other communities are doing and see if you can gain benefits from them.

My biggest online resources are probably GitHub for sharing code and Twitter and StackOverflow for solving problems. I don’t really use forums too much nowadays, but I’ll occasionally go on Apple’s Dev Forums. I find them too slow and clunky compared to other forms of communication

What advice would you offer to an up-and-coming programmer?

Never stop learning. You should always be learning new languages, tools, frameworks and techniques. As a general rule of thumb, if you look back at code you wrote 6 months ago and don’t see things that could be improved, you haven’t spent enough time working on your craft. Like most things, software development is easy to learn but incredibly hard to master.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer CodeProject Solutions
Canada Canada
The CodeProject team have been writing software, building communities, and hosting CodeProject.com for over 20 years. We are passionate about helping developers share knowledge, learn new skills, and connect. We believe everyone can code, and every contribution, no matter how small, helps.

The CodeProject team is currently focussing on CodeProject.AI Server, a stand-alone, self-hosted server that provides AI inferencing services on any platform for any language. Learn AI by jumping in the deep end with us: codeproject.com/AI.
This is a Organisation

4 members

Written By
Founder M Cubed Software
United Kingdom United Kingdom
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
GeneralMy vote of 5 Pin
Pranit Kothari12-Sep-12 16:07
Pranit Kothari12-Sep-12 16:07 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.