Professional
Keywords: C#, .NET, WCF, WPF, Agile Methodologies, ASP.Net MVC, Software Patterns, ASP.Net, NoSql, nHibernate, Source control, Git, Visual Studio, PHP, SQL, SQL Server, MySQL, ReSharper
Full C.V. Here
I currently work for
JustGiving as a "Senior Software Developer". I work in a small team on an industry leading and defining site dedicated to online fundraising and charitable giving and love working at a company staffed by real people. We work in the .NET stack (C#) and attempt to use "best in breed" tools and practices (dependency injection, TDD, ASP.net MVC, ReSharper, Agile-ish etc)
Previously I've worked in the City on Sports Betting and mobile application development, for a major subsidiary of Vodafone in Manchester (Yes Telecom) and for an award winning eCommerce startup on intelligent pricing engines and end to end producrement software. In addition to this, I consult from time to time for a few small startups and freelance projects (if they appear interesting) and love dabbling in mobile software, great API design, fluent interfaces / DSLs, touch screen / "NUI" interfaces and anything else that looks interesting.
I've been working with C# since the first .NET betas, and have experience across all iterations of the language up to and including C# 3 (in .NET 3.5, and some dabbling with C#4) including production experiance of
Windows Communication Foundation,
Windows Presentation Foundation,
Windows Workflow Foundation,
SQL2005, ASP.Net MVC), along with a dedicate to XP / Agile methodologies - leading to an obvious enthusiasm for test driven development / test first development, peer review, etc along with unit testing.
I've developed a pretty keen following for nHibernate (specifically, but more generally
Object-Relational mapping tools),
nUnit,
MbUnit,
JetBrains Resharper (the greatest programming crutch known to man..) and open source SCMs like
Subversion and Git / Mercurial on the DVCS side.
I've got an active interest in design patterns and programming methodologies and genuinely see appropriate code reuse as the pinacle of software design, don't do a half assed job under any circumstance. On the way I've managed to develop a complete hatred for most anything that the
Oracle corporation touches (starting with, but not limited to, the Oracle DBMS and
NetSuite CMS), with good reason (shoddy, buggy, crashey code with no concept of security stuck in an early 90s mindset).
In my past roles I've been heavily involved with designing and implementing distributed systems in C# using WCF, building monitoring tools, engineering new build and deployment solutions (introducing continious integration with cruise control.net and nightly builds), building software libraries to integrate legacy systems, building libraries to communicate with third party products, introducing new technologies to other developers and peer training.
In addition to this I've managed, at the developer level, a project implemented by a third party contractors, taken part in extensive troubleshooting excercises on other teams projects and introduced wiki-based requirements capture and code documentation techniques.
In other roles I've focues on ASP.net,
BizTalk, MS and MySql,
.Net CompactFramework, the black art of regular expressions and PHP4/5 and other open source toys.
I love what I do (else I wouldn't do it) and as a side effect I find myself doing alot of things that appear worklike in my spare time. I spend a little too much time thrashing out ideas for applications and code samples that eventually either fold themselves into my work, form a distributable product or library or are just good fun to write.
I love challenge in my professional work, I enjoy working on difficult, or progressive projects and thrive in those environments. I enjoy working with motivated and progressive development teams who are open to new ideas, techniques and methodologies (usually before mainstream adoption) because I really believe that strong motivated teams push software development forwards and produce brilliant code. You only produce fantastic software when you're enthusiastic about what you're doing.
I also have a habit of reading influential computer science and programming books before attempting to name drop them into debates, which seems like a increasing trend.
Of the "influential set", I probably enjoyed
"The Mythical Man Month + Essays" most because it served as interesting casual reading as well as education. If I recall I picked it up due to the number of times it's name dropped and was pleasantly surprised. I rate
"The Pragmatic Programmer" (it contains lots of knowledge many developers cultivate after a year or two on the job but it's very well written) and I've most recently enjoyed
Clean Code.
I maintain two blogs, a personal
one on this website (which I treat as a gateway to all of my content on the internet) and "
David Develops" which provides a different user experience for the technical subset of content from my main blog. If you don't want to see photos of cats but you're interested in my technical output, I'd suggest you subscribe there rather than here.
I've been working predominently inside of a Microsoft eco-system since graduating The University of Manchester Institute of Science and Technology (UMIST) (now
Manchester University) with a degree in Computation.
Personal
The first of three kids (
Richard) and sister (
Nicola), two and a half years and six years my junior respectively.
One of my earliest childhood memories is attempting and failing to use a
Commodore 64 (+ tape deck!) and slightly later, an
Amstrad PCW8512. These memories certainly feel, at least in retrospect, as the starting point in my lifelong obsession with technology.
In the late 80's I moved with my family to
Hong Kong (primarily due to my fathers work), giving me an odd mix of cultural references from my childhood. I was obviously fairly young, however my memory of the island, the schools and the surrounding areas of the middle and far east (which I remember visiting on various holidays) is still clear and striking. My parents divorced in the early 90's and in 1992 I returned to the Manchester with mother and siblings. And a
Gameboy and a stack of 30 games.
The rest of my teenage years, in retrospect, were very happy. I became obsessed with videogames, but not really to play them, but more to break them. I gained a childhood obsession with what amounts to tedious bug testing of 8-16 bit games, and that lead to my needing to know how they worked. I dabbled around with various flavours of Basic, like any curious child and seemed to enjoy reading
Computer Shopper and
PC Format after my mother brought back an old 386 from work so she could work from home (complete with Dos, Windows 3.x and
WordStar) in 1993.
In early 1995, after much pressure and begging, my parents bought a 486-DX2, from Toys' R' Us, of all places. One of the early
Compaq Presarios, it had a CD-ROM drive and I could play
Star Wars: Rebel Assault on it. On top of that, I could play all of
LucasArts adventure games. After spending time with the admittedly fancy looking Game Boy and then
Mega Drive, the difference in both pace and aestetic of PC gaming was both exciting and addicting. For the first time I had the ability to start digging through the games files on the file system and see what I could break. We managed to get some kind of
Windows 95 upgrade deal when we bought the computer (which I remember installing off 50+ floppies that I still have), and the short answer to the question "what could I break" was "Windows". And it was fun.
I broke that computer so many times I cost our family a small fortune in repairs. But then I learnt to fix it, and then I learnt how to fix other computers and other problems. At the same time, I started attending
"The" Manchester Grammar School. I remember touring the school at an open day, a very prestigious institution, established 1616, devoted to a high standard of learning and I remember seeing huge computer labs and feeling particularly excited. When I started school there however, it became apparent that the institution was just a little bit too traditional and they actually didn't teach anything more than basic word processing.
I was terribly dissapointed and recieved a very traditional education (including ancient greek and latin) instead of what I really wanted to learn. The education was worthwhile and character building. Like many people, I didn't really enjoy school at the time, but in retrospect very much appreciate the education I recieved, both for it's timelessness and the amount of prepairation for the outside world I received as a result. At the end of my education there, computing still wasn't an option (I briefly considered going to a sixth form college to remedy this) and I ended up specialising in Art (eventually computer graphics / design), English Language and Literature, History and Politics.
Throughout my teenage years I maintained a healthy obsession with videogames, cinema, and later as a result, music. The passion for these subjects combined directly lead to "taking programming seriously" and really getting into computing. From 1996 onwards, after reading about the "Internet" in PC Format, I convinced my mother to sign up to
Compuserve, and recieved one of their ever useless numerical username and email addresses and distinctly remember struggling to configure
WinSock to browse the early internet in
Mosaic. It was an ugly experience, but I discovered
USENET and
IRC at the same time which somewhat sweetened the deal. I'd been subscribing to
Empire magazine since we returned to the UK, and I decided I wanted to make a website about films. It obviously didn't work (and in 1999
"Ain't It Cool News" effectively did what I wanted to do) but I learnt HTML (3!) on the way and caught the web publishing bug.
I attempted to run a few websites until in 1997
"Grand Theft Auto" was released on the PC and I got into the game modding scene. I'd dabbled earlier when Quake was released a year earlier, but spent more time enjoying laggy deathmatch than hacking the game. I distinctly remember DMA design releasing the data format documentation for GTA and a number of user created level editors and guides getting released (which for trivia, were later used by DMA to produce GTA2) and I built, at first, a few simple patches for the game. In order to distribute these patches, I started a website, which in turn, I needed to maintain. So I learnt
Perl. And then I spent some time attempting to learn C++ from the biggest book I had ever seen in my life. Then one month PC Format featured
Borland C++ Builder on it's covermount and I started to approach development seriously, in part due to the (for the time) groundbreaking RAD tools and WYSIWYG designers available in C++ Builder 3.
The dotCom bubble was in full force around that time, and I got a few small jobs producing websites for small firms, friends and friends parents, using my newly learnt development chops. It was all very small town, but exceptionally character building. My mum realised I was on to something, and despite her lack of technical knowledge did her best to encourage it. I enrolled in night classes at a local college when I was 15 and did a
City and Guilds certification in C and C++. The average age of the students there was about 35 and I felt a little out of my depth, but I managed to produce vending machine simulating C console apps with the best of them.
My mum brought me up on a healthy mix of
Bryan Adams and
Meat Loaf as a child. I then didn't really "get" music until I started buying film soundtracks. The watershed for me was in 1997 when I picked up the
Monster Magnet album "Powertrip" and discovered hard rock and heavy metal. Thankfully, this coincided with the MP3 file format taking off on IRC and later the early peer to peer file sharing networks. Despite what the record industry thinks of file sharing, the evolution of file sharing gave me easy access to free music and made a music purchaser out of me. I discovered artists and genres I'd never realised existed and I've never looked back since; branching off into progressive rock and metal, death metal and industrial rock.
Tool,
The Smashing Pumpkins and
Strapping Young Lad via Everclear and Dire Straits - that really sums up the joy of discovering music to me.
As any contrary teenager would, when I was at Manchester Grammar, effectively unable to do any technology, I spent all my time doing so (often letting my other work suffer) and as a result, when I graduated, I was absolutely certain I wanted to study computer science at degree level. I spent a large portion of my degree wishing I'd done art. In retrospect, this was because I don't feel the majority of the degree was interesting or well taught, it was over subscribed and not especially enjoyable, but I pushed through. I did occasional contract work on small development projects throughout uni. In the summer between my second and third years I started doing occasional work for the trading services department of the university, cumulating in the porting of a registrations system into the then-new .Net framework from VB6. I pretty much learnt VB6 on the job the first week there, and I loved programming with meaning again.
I've never really looked back. I met my partner whilst at University, she now works in the media as the chief sub-editor of
Bizarre Magazine which pretty much makes her day more interesting than mine consistently (I should probably mention that the Bizarre Magazine link is probably "not safe for work" and certainly "not safe for children"). I spent my time writing software, watching films, listening to music and going to (mostly metal) gigs and then communiting back and forth between Manchester and London (where my partner lives, and I'm aiming to move shortly). I still dabble in illustraition and art (a few of my digital projects are hosted on this site, check the "exits" link) and try to read as widely as possible.