Click here to Skip to main content
Licence CPOL
First Posted 7 Sep 2011
Views 15,137
Bookmarked 5 times

A Coder Interview With Marc Clifton

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 Code Project member Marc Clifton.

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 Marc Clifton.

Marc is the creator of two open source projets, MyXaml and Interacx. He has been a Code Project member since 2002, is a perennial community MVP and has written over 130 articles.

Who are you?

My name is Marc Clifton, and I work out of my home in Philmont, New York. I prefer to work as a contractor, focusing primarily on n-tier WinForms application development.

What do you do?

I tend to work on projects that help automate business processes and improve information flow. This has led me to develop software that improves the profitability and accounting in adult entertainment clubs (Video Simplex), boat yard management, and the design of communication satellites (Space Systems/Loral) such as those used by DirecTV and Sirius. I have solved complex technical issues regarding failure and end-of-life analysis of switch rings, which are used on satellites to switch in spare transmitters to extend the lifetime of a satellite.

One of the more amusing projects I have worked on was to tie in to NOAA to determine how much ice should be packed with a shipment of chocolate based on 3-day temperature predictions.

I’ve also worked on voter registration software (Votec), done “edutainment” game development, and helped develop the security system for the MX Missile Train (fortunately cancelled by Congress years ago!) The security product that I co-developed was featured on CNN’s Headline News for the Atlanta Olympic games a few years ago.

Throughout my career, I have enjoyed immensely working with hardware engineers, especially on low light intensified camera systems and multi-spectral cameras (Xybion Corp. and Robot Research, now Sensormatic). One of the highlights of my career after the Challenger shuttle disaster was developing real-time spectral analysis software to detect hydrogen fires on the launch pad.

I have also developed my own n-tier application development environment, Interacx, which I have used extensively with my clients, and I developed the MyXaml open source project, which allows developers to instantiate object graphs declaratively.

What is your development environment?

When required (business rules and domain-specific development), I use C# – with some dabbling into Python and F# – using Visual Studio.

For n-tier development work, I prefer to use my own product, Interacx, as it provides unified form, schema, and report designers (using DevExpress XtraReports) with automated SQL generation, plugins for change tracking, security, etc. Interacx is developed in C#, so I venture into that various APIs for domain-agnostic development. I shy away from the idea of having declarative concepts implemented imperatively, hence Interacx is my preferred environment for developing n-tier applications.

For that reason, I also avoid with a passion anything ORM related – the idea of taking a database table or view and re-implementing it as a set of classes is my personal soapbox. Yes, there is a place for ORM when doing processing of the data, but the majority of my work involves the correct presentation and mining of data, which in no way involves an ORM.

Hardware-wise, I have an HP desktop with 8GB RAM, 64-bit Windows Vista (Home Edition, would you believe?) and a 1TB hard drive. The processor is an AMD Phenom II X6 running at 2.70 Ghz. I also do a lot of development on a Gateway I5 laptop. I prefer the convenience of a being able to work where I want. I use a Sprint MiFi card for Internet access when there’s no wifi hotspots available. I also have a dedicated server (Peer1) that is terribly under-utilized – my websites are in total disarray – but it is a central repository for all my source code, using Subversion.

I’m not sure I have a favorite language. I miss C++ with multiple inheritance (when you want it, you really want it) and STL (C#’s generics just don’t cut it). I rather dislike interfaces, but I love the reflection capabilities in C#. My favorite framework is my own (it better be, right?) and I also like DevExpress, but wish that it was simpler – I guess having incredibly powerful and also simple are opposing forces – so I wrap the DevExpress UI classes that I use and automate the behavior that I want, once I figure out how to get DevExpress to do what I want. That way, I never have to figure it out again!

What new tools, languages or frameworks interest you?

I have an ongoing struggle with learning functional programming with F#. The way one thinks about programming problems functionally is so different to my old imperative brain. What I really want is someone to teach it to me, but I think that would require more of a therapist than a programmer!

I really have no interest in WPF – mainly because my clients don’t either.

I do have a passion for all things declarative and have been looking at some interesting ideas related to relationship-oriented programming that hopefully will evolve into some articles.

What is your coding pet peeve?

Aesthetics. Code should not just be beautiful, it should look and be formatted beautifully. It drives me nuts when developers don’t line up their statements and are inconsistent about the use of white space. Code for me is a piece of art, and I think there is a correlation between how much care a developer puts into how their code looks, its architecture, and its quality from the user’s perspective.

There are three things I loathe:

  • underscores for member fields
  • regions (I want to see the whole thing)
  • “this.” notation, a hangover from the days when IntelliSense didn’t kick in right away but required an object reference.

Other than that, I don’t have a naming convention preference as long as it is applied consistently and classes are neatly organized with regards to delegates, enums, fields, properties, constructors and methods.

How did you get started programming?

In 6th grade, my very first keystroke, on a PDP–11 teletype, was (following the instructions) to press Ctrl+C, which duly crashed the computer. Turns out the power supply for the mag tape drive was tied in with the CPU, so if the tape drive drew too much current, it crashed the CPU. I exited the school’s computer room with all due haste and didn’t touch the thing for a year.

I learned BASIC on that machine, programmed my first Federation vs. Romulan game (a 10x10 grid printed out every round) and saved my programs on punch tape. I had a dickens of a time understanding how a computer “knew” that when I wrote A=5, that later A would still equal 5. The next year I was teaching BASIC.

After high school, I dived into assembly language (still my first real love, I think programming should be done only in assembly language!) and wrote my second Star Trek game for the Commodore PET and a Fairchild joystick, which became a small commercial success and launched me on this adventure.

How has the developer community influenced your coding?

I remember when I first was working with C# and was trying to figure out how to force the debugger to break at a certain place without using a breakpoint. Coming from the C/C++ environment where I would simply emit an “int 3” assembly language instruction, I had the idea that maybe something like that would need to be done in C#. Searching online, I didn’t find anything, so I figured out how to emit the instruction in C# and promptly spit out an article on the topic, thinking, “Ooh, I’ve done something cool.” One of the first responses I got to the article was “I guess you don’t know about System.Diagnostics.Debugger.Break();

Oh, my ego!

But this illustrates how the developer community, especially online, has influenced my coding – the .NET Framework is full of stuff I just don’t know about. So I like it when even a simple article or blog utilizes something I didn’t know about in .NET or with the C# language (may not even be the topic of the article). I look at some of the LINQ or lambda expressions people use and I wonder, how the heck did you figure that out? So it’s that last 10%, the somewhat obscure, rarely used, but really useful at times, coding features that I like to read about and that influence my own code.

There’s a lot to like about the developer community today. The folks that frequent The Code Project and StackOverflow answer questions promptly and I’ve gotten good answers. There’s also a wealth of knowledge to mine when I’m looking for an answer. It surprises me how many answers I find on blogs, but that may simply be because of Google’s search bias.

What I dislike is the spin-doctoring from, quite frankly, certain Microsoft bloggers that seem then to get picked up by the rest of the dev community. I don’t like the hype around new technologies, the “faster and with fewer bugs” mantra. The only way I’ve ever succeeded at having fewer bugs is by doing things slower! I don’t understand how someone in marketing can think that developers are actually stupid enough to believe that hype, but then again, those product blurbs probably aren’t written with developers as the target audience in mind.

I’m also not a fan of instructional videos. I’d much rather have a well written document that I can easily bookmark, cross reference, write some notes in the margins, and so forth. But then again, writing documentation takes longer than slapping together a low-res video. That’s too bad, because we are doing a disservice to each other, in my opinion.

Basically, the only online resources I use are Google, Code Project, and StackOverflow. Google often points me to MSDN and various people’s blogs, and that’s it. The only forum I actually spend time hanging out in is Code Project’s Lounge. The rest of my online time is spent on non-developer sites (don’t get any ideas!) dealing with science and philosophy.

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

My first employer, Paul Zuzelo, took the time and had the patience to hammer that into me when I was 18: Learn how to clearly communicate (in a human language, not a computer language) 1) the problem you are trying to solve and 2) the way you are going to solve the problem.

License

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

About the Authors

The Code Project

Software Developer
The Code Project
Canada Canada

Member



Organisation
16 members



Marc Clifton



United States United States

Member

Marc is the creator of two open source projets, MyXaml, a declarative (XML) instantiation engine and the Advanced Unit Testing framework, and Interacx, a commercial n-tier RAD application suite.  Visit his website, www.marcclifton.com, where you will find many of his articles and his blog.
 
Marc lives in Philmont, NY with his son Ian.

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
GeneralMy vote of 5 PinmemberMonjurul Habib5:47 24 Dec '11  
QuestionWhere are your websites? PinmemberSiavash Mortazavi6:06 13 Sep '11  
AnswerRe: Where are your websites? PinprotectorMarc Clifton7:23 13 Sep '11  
GeneralMy vote of 5 PinmemberManuel_Perez_II5:02 13 Sep '11  
Questionnot trying to start a religious war, but... :) Pinmembersi61814:56 11 Sep '11  
AnswerRe: not trying to start a religious war, but... :) PinprotectorMarc Clifton16:15 11 Sep '11  
Questionnice... Pinmemberl a u r e n6:07 8 Sep '11  
QuestionFriends don't let friend ORM Pinmembergeekware5:58 8 Sep '11  
QuestionI know MSDN is famous for breaking changes but... PinmemberDan Neely5:42 8 Sep '11  
GeneralMy vote of 5 PinmemberIlka Guigova5:33 8 Sep '11  
Question:-) Enjoying the fame? PinmemberRon Garlit5:19 8 Sep '11  
QuestionVery interesting and varied career! Pinmembercharlieg5:04 8 Sep '11  
AnswerRe: Very interesting and varied career! Pinmembercharlieg5:05 8 Sep '11  
GeneralMy vote of 5 Pinmemberjosemotta4:33 8 Sep '11  
GeneralMy vote of 5 PinmemberAnnieMacD3:29 8 Sep '11  
QuestionGood stuff, so you have any screen shots of your Star Trek game? PinmvpSacha Barber3:09 8 Sep '11  
QuestionGo Marc Go! PinmemberKaЯl2:03 8 Sep '11  
QuestionVery Good PinmemberNagy Vilmos1:35 8 Sep '11  
GeneralMy vote of 5 PinmemberVivek_Minhas0:09 8 Sep '11  
GeneralBreak(); PinmentorDaveAuld11:34 7 Sep '11  

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

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

Permalink | Advertise | Privacy | Mobile
Web01 | 2.5.120517.1 | Last Updated 7 Sep 2011
Article Copyright 2011 by The Code Project, Marc Clifton
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid