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 track down another prominent Code Project member Paul Griffin.
Paul joined The Code Project fairly recently, but has already amassed an almighty reputation by way of helpful Q&A answers and witty Lounge banter.
Who are you?
I'm Paul Griffin, and I live just outside Ystradgynlais in Powys, Wales. Fortunately for me, I am self-employed and work from home, so my daily commute is about six feet and I rarely complain about traffic congestion on the way ... As a self employed one-man band I have whatever job title I feel like on the day, but generally settle for "Software Engineer" or "Music Critic for Exchange & Mart" if I am at a social event – it reduces the number of conversations that die immediately or continue with "can you fix my computer?"
What do you do?
I develop software for Windows, web sites and embedded devices – the later being my real love. As a result, I regularly use C and Embedded C++, C# and various assemblers, although I also cope OK in Visual Basic. For Windows, I use the .NET Framework almost exclusively, though I started with V1.0 of MFC and C++. (I wouldn't touch it with a ten foot pole now.)
As far as clients go, I can't reply for the usual reasons, but I have been involved in development of industrial inkjet printers, listen-only LAN cards, financial information data collection, ultrasonic thickness detectors, and a wide variety of other devices and applications.
What is your development environment?
My hardware and software is pretty much out-of-date: a dual-processor Xeon 2GB HP box, with about 2TB of storage, plus twice that in NAS backup storage over the gigabit section of the house network, and a single monitor. I use an Epson printer that is full of cat fur, but my window overlooks the apple tree outside which is older than I am.
Input devices are a Logitech Trackman upside-downy mouse (because I love 'em) and a Wacom tablet with pressure sensitive pen for graphics work.
Software-wise I use Visual Studio 2008 as I haven't had the need yet to move to Visual Studio 2010, although I installed it about six months ago. Other software: OpenOffice, PaintShopPro 9 (the last version before Corel got their hands on it, bwwwaaaa), SVN, SQL Server 2008 R2, Chrome, PSPad programmer's editor and Expresso fill most of my needs.
At the moment, I'm sticking to C# for Windows and web development. I dabbled with WPF, but just didn't get the feeling it was mature enough. The cloud I am avoiding until it matures and you can tell what is going to happen with it. I remember mainframe days, and don't really want all my data out of my control!
What is your coding pet peeve?
Coding pet peeve? The lack of education about SQL injection attacks in computing courses. Criminal.
The use of default names for controls. Stupid!
Leaving the comments for later because "I'll come back to it…". Grrrr!
Favorite naming convention? I try to stick to camel case, but Hungarian was soooo useful that I find it difficult to stop – I still automatically name my buttons "butXXX", integers "iXXX" and so forth. I'll try harder to stop!
Indentation? Easy: indented to block, with a block definition everywhere a single statement is allowed, so every if, every for has a block, even if it contains only one statement. Caught by that in the past, and not getting caught again!
I don't like K&R style as I consider it inconsistent: If you would indent a single statement, why not the whole thing? But I really hate the 1TBS style with a passion!
How did you get started programming?
I have to whisper this bit: Cobol on an ICL 1900 running GEORGE 3, with punched cards, at university. Six punch machines, 600 students, one machine which could print on the cards. Psychotic computer operators who actively hated students (can't say I blame them).
The developer community is full of generous, intelligent people who will give their time and effort to help others along. It's also full of a***holes who couldn't find their own backsides with both hands and a map. Telling the difference is the big problem.
In ten years, I hope to be here, pretty much, doing much the same as I am now. I started as a Junior Programmer, and worked my way up to MD through working at three companies. Then I broke my collarbone falling off a brand new Ducati the shop lent me for the day, developed a frozen shoulder, and was off work for four years because I couldn't go anywhere without being in agony, and couldn't use a computer. At the end, I realised that I didn't need the stress I hadn't realized I was under and decided to take it easier. I'm happy where I am, so don't want to change unless I have to!
What advice would you offer to an up-and-coming programmer?
Develop a thick skin, a sense of humor, and listen to your users. After that, learn to program embedded devices from scratch in assembler. You will understand and appreciate IDEs and debuggers a whole lot more!