How I Got Started In Software Development

Michael Eaton started it, and others took off and ran with it.  Now it’s a certified meme. So I guess I might as well join in the fray and relate the beginnings of my geekdom.

A Long, Long Time Ago…

How old were you when you started programming?

I was about 7ish when I first started. Read on for more details…

How did you you get started in programming?

When I was around 7, my uncle had an Atari 400.  I initially just played games on it, but one day I noticed a stack of Byte magazines in the corner.  Inside this magazine was source code, it said it was “BASIC” and needed to be typed in… hmm.. there’s this Atari-BASIC cartridge, and there’s a keyboard.  A light went off, I can make this machine /do/ something?  So I typed in the program, saved it to the cassette drive, and then tweaked it.

Next thing I know I’m begging my parent’s for a computer.  For my 8th birthday I got an Atari 65XE and a couple of BASIC games books, and I’ve been totally hooked ever since.  Time passed, and eventually I got into things like QBASIC, DOS Batch, and C/C++ (via an old copy of TurboC a friend loaned me).  Then in high school someone gave me a Linux CD and having a whole slew of development tools really helped.

I just kept hacking away…

What’s the most fun you’ve ever had … programming?

Staying awake for 48 hours straight and hacking an ANSI art viewer in C with Jim Balcomb.  We were probably 15 and 16 at the time and just didn’t need to rest when programming was to be had.  I think it’d kill me today.  Oh yeah, and then I delivered papers in the morning after being jacked up on coffee and Jolt and my father was convinced I was on speed…

Googoo gah gah?

What was your first language?

Well it was BASIC obviously, from Atari-BASIC, to BASICA, to QBasic, eventually to QuickBasic…

What was the first real program you wrote?

One that really stands out was a grading program I wrote in high school for the Learning department at the school.  It was all done in QBasic and had menus that were keyboard driven, grid data entry, and a printing subsystem.  I wish I still had that code…

What languages have you used since you started programming?

Define use? Here are all the languages I have written something of some complexity in:

  • AutoIT (don’t ask…)
  • Bash Shell
  • BASIC (variations there of)
  • C/C++
  • C#
  • DOS Batch
  • JavaScript
  • PHP
  • Ruby
  • TSQL (don’t ask)

..and [Insert Deity Here] knows what else…

Get a good job with more pay and you’re okay.

What was your first programming gig?

I’ve always loved programming, and have been doing it has a hobbyist since as far back as I can remember.  However, without experience (and never having finished college) I was never able to really get a foot in the door.  I worked in support at Harley-Davidson Dealer Systems for 6 years and had a chance to do some development work (I had written a number of utilities for support including SetPrinter) I jumped at the opportunity.  I actually took a “demotion” from Team Lead to Developer for the chance.

After a couple years of doing development work there I had pretty much tapped out all I could do and was stuck, that’s when I was introduced to PreEmptive Solutions and am currently doing development there.  My work at PreEmptive is much more like a “real” development job then HDDS.  At HDDS I was pretty much a cowboy left on my own.  Here I’m working with a true development team.

If you knew then what you know now, would you have started programming?

Oh hell yes, I truly believe I was born to be a computer programmer, I can imagine doing nothing else.

If there is one thing you learned along the way that you would tell new developers, what would it be?

RTFM.

Thanks Mike!

A big thank you to Mike Eaton for getting the ball rolling on this, it’s fascinating to see how my fellow tweeps and hackers got started.  I’m not going to “tag” anyone, because that’s silly, but I do encourage anyone who reads this post to do the same and link back to mike’s blog, he’s keeping a list of people responding!

T-SQL Hex String to VarBinary (Improved)

Peter DeBetta posted a while back with a function to take a hex string and convert it to varbinary It has a couple of slight issues, the biggest of which is it can’t handle an odd number of hex digits. Below is my replacement, because it’s using bigints the upper limit isn’t as high, but it’s good enough for most things:

CREATE FUNCTION dbo.HexStrToVarBinary(@hexstr varchar(8000))
RETURNS varbinary(8000)
AS
BEGIN
    DECLARE @hex char(1), @i int, @place bigint, @a bigint
    SET @i = LEN(@hexstr) 

    set @place = convert(bigint,1)
    SET @a = convert(bigint, 0)

    WHILE (@i > 0 AND (substring(@hexstr, @i, 1) like ‘[0-9A-Fa-f]’))
     BEGIN
        SET @hex = SUBSTRING(@hexstr, @i, 1)
        SET @a = @a +
    convert(bigint, CASE WHEN @hex LIKE ‘[0-9]’
         THEN CAST(@hex as int)
         ELSE CAST(ASCII(UPPER(@hex))-55 as int) end * @place)
    set @place = @place * convert(bigint,16)
        SET @i = @i - 1

     END 

    RETURN convert(varbinary(8000),@a)
END
GO

Fun with Twitter.

Dan Hounshell announced his new little side project RandomTweets.  Basically it’s similar to bash.org or qdb.us but for Twitter.  Right now Dan is using the API to pull random tweets and then manually sorting through them for humor or inspirational value.  He states his intention is to make the site more community driven in the future, but he’s got some pretty funny stuff up there already. You should check it out!

The Microsoft .NET Framework Source Available for Developers!

Scott Guthrie just made an exciting post, starting with .NET 3.5 and VS 2008 the .NET libraries will have source available!  This is quite the boon to developers, the ability to drill down to source level while debugging should lead to more accurate code.  Of course there could be a downside, namely developers coding around implementation details rather then the exposed methods.  But regardless this is a very cool move by Microsoft.  It’s being released under the Microsoft Reference License which doesn’t give you a whole lot of rights (none really, other then to look at the source), but it’s something.  Considering how important the framework is to Microsoft this is a bold move.  For a truly permissive license check out Mono, here’s hoping there’s no “patent/copyright” pollution there either…

MichaelDotNet’s Leaderboard

If you haven’t heard, Techmeme has a new feature, the “Leaderboard“.  TechCrunch is heralding it as the defeating the last stronghold of TechnoratiRobert Scoble is lamenting the “death of blogging”.  Techmeme itself says the list consists of “Techmeme’s top 100 sources, including blogs, non-blogs, and everything in between”, so they’re not trying to be the sort of “Blog Authority” everyone else seems to be trying to make them. 

I don’t think Technorati nor blogging in general have anything to worry about.  Technorati is suppose to be aimed squarley at blogs, in this case I’m defining a blog as “The single and unfiltered voice of an individual”.   Techmeme’s Leaderboard is solely a list of the most newsworthy sites in a particular month, some of which just happen to be blogs. 

The best authority for the top bloggers is, of course, the bloggers themselves.  Until Google starts to release an aggregated form of their users’s Reader Stats (which may indeed herald the end of Technorati), we’ll have to turn to each other and Technorati will show us that.

In the interest of promoting tech blogs that deserve to be noticed, I provide you with my current personal “Tech Blog Leaderboard” based on my personal Reader trends:

 

  • MSDN Blogs:  Surprised?  You shouldn’t be, Microsoft employs alot of smart people, this is the best way to find out something you didn’t know before.  And it’s not necessarily Microsoft specific all the time.
  • Worse Then Failure:   Geeky humor, and great examples of what NOT to do for coders.
  • Slashdot:  Still a good resource after all these years, not a blog, yet still not on Techmeme’s Leaderboard either…
  • CodingHorror:  Everyone in development should be subscribed to this blog.
  • Scobleizer: Cause Robert Scoble always has neat stuff.
  • Robert’s Shared Items:  Doing all the crawling/subscribing so I don’t have to.
  • Jon Skeet’s Coding Blog:  Man knows his C#.
  • Evil Mad Scientist Laboratories: Cause deep inside we’re all evil geniuses.
  • Scott Hanselman’s Computer Zen:   I mean, doesn’t the fact he’s not on the Leaderboard make you question it just a bit?

That’s just a sampling, alot of webcomics and non-tech blogs in my reader too. 

What are some of your favourite/regular tech blogs? Is there anyone that I’m obviously missing that I just HAVE to subscribe to?

What’s New In The Microsoft C# Community?

Charlie Calvert’s Community Convergence posts are a great way to catch up with the Microsoft C# team.  Be sure to check out the latest edition!

My personal Highlights:

Query Analyzer, Resurrected.

Carpe Datum over at MSDN talks about people wanting Query Analyzer back over Management Studio.  I admit, the lack of Query Analyzer has been a source of ire for me as well.  I like the default Management Studio for editing databases and what not, but if I want to whip up a quick query or something I miss query analyzer.  Unfortunately the solution he provides causes Management Studio to always assume you want to run a query.  After a bit of fooling around, I came up with a batch routine that seems to mimic Query Analyzer pretty well.  I present to you isqlw.bat :)

 

@echo offif  ‘%1′==” goto nofilegoto file:nofileecho. > %TEMP%\Untitled.sqlstart sqlwb -nosplash %TEMP%\Untitled.sqlgoto end:filestart sqlwb -nosplash %1:end

 

This works well for me, YMMV of course, but I hope you might find it useful.

Are You Just In It For The Money?

Peter Van Ooijen made a post today that ended up being Kicked and generated some discussion.  Basically he’s saying that a Software Architect should code.  I agree.  A Software Architect should be someone who is passionate about technology and development.  Some people say they were never given time to code.  I say that’s bullshit.  Are you a developer for the pay, or because it’s something you love

If you are not passionate about what we do, get out.  Seriously.  I don’t want you in my industry, make room for those developers who ARE passionate about what they do.  Make room for those developers who spend at least some of their free time putting around with languages they don’t know, technology that’s just coming out.  If all you want is a paycheck there are plenty of other places you can go.

I want the kid who hacks on vBulletin in his spare time for his World of Warcraft guild.  I want the father who waits until his kids go to sleep and then spends a few hours hacking in XNA.  Where are those people? 

Why does the guy who simply got in this business because it was “hot” get promoted, while the people who Live To Code are left at the bottom rungs?    Part of it is choice I’m sure, I’ve done the managerial bit, it’s less “fun” for sure.  But those in the trenches are frequently ignored, while those who read “Buzzword Weekly” make all the important decisions.

Fortunately, it seems Peter has a good architect who at least knows what he doesn’t know, and that’s a good start.

Microsofties Aren’t Robots? Perish The Thought…

Glenn Bock over at Microsoft recently blogged that he was not a robot because he uses the following non-Microsoft technologies: A Mac Mini (which really doesn’t count, Microsoft doesn’t make computers and as far as I am aware they still write software for the Mac),  an iPod, Yahoo, Google, NUnit (MS tech related), Firefox, OpenSource, Resharper (MS tech related), Ruby on Rails, and Linux.  That’s all well and good, but would he still follow the Programming Promises? I bet he at least tries, though I’d also guess he’s a tad biased. :)  Regardless he’s also right in he wouldn’t be doing a good job if he wasn’t examining and using alternatives, especially when they were better then the items he could dogfood.  It’s a reminder that we all need to continually be exploring and expanding our exposure to technology from all fronts.

ArcReady, CodeToLive, and Sidewalks 2.0

Attended the Microsoft ArcReady event yesterday. Got a chance to see Brian H. Prince and Josh Holmes again. I always look forward to try to absorb what I can from these two, very very bright guys.

Josh made a point to show me his new 2007 Road King, hinting that it was somehow relevant to his job. It seems that Josh is doing what looks like is going to be an awesome show, called CodeToLive. He is taking the bike across America with Steve Loethen and interviewing developers. Based on the trailer (which he showed during the presentation) and the first episode, it looks like this is going to be a blast to follow. CodeToLive is definitely a mantra I live by, developing isn’t what I do, it is who I am. I’m hoping to see many more episodes from those two.

Due to an administrative error (specifically an admin confusing Kansas City and Cleveland), there was a surprisingly small turnout. That did not prevent a few spirited exchanges though, it was interesting to hear how some could not fathom how Twitter and Twittervision applied to the concept of Platforms being better products then Applications. One of the real benefits of these events is getting a chance to interact with fellow professionals in different areas with different background. Getting those unique perspectives and having a chance to articulate your own positions really helps put things into focus. So regardless of the turn out it was a worth while and lively crowd in my opinion.

Josh’s presentation was enjoyable as always, interspersed with personal stories and anecdotes that help illustrate situations we may find in our day to day jobs. The first story he relayed was his treacherous experiencing trusting a single data provider, namely NavTeq. The second related to utilizing your users to drive design. His alum Franciscan University of Stubenville, had installed some new sidewalks and were dismayed to see none of the students using them. They had elected, rather, to cut through the grass along a shorter and more direct route. When the university expanded and added new buildings, the initially did not put any sidewalks in. Instead the planted grass. They then waited until the students had worn trails in the grass along their preferred routes and paved those. It’s really quite a good story about the importance of user-centric and user-driven design.

Brian talked next and demonstrated how some of the concepts are used at QuickSolutions. You’d think it’d be incredibly boring, but Brian’s skill as a presenter is such that you really don’t notice. He demoed a bit with the BizTalk Labs site, specifically the Connectivity Service and went over some of the procedures QS uses. A joy to listen to as always.

Josh also gave us a brief overview of Tafiti (which I had seen before, but it’s always good when the MS guys start doing new demos ;) ). And things wrapped up then with the usual giveaways. A few books, a copy of Expression and Office 2007. Though my chances were good I walked away empty handed, yet not empty headed :) I am definitely looking forward to the next ArcReady!

Don’t forget to checkout CodeToLive, and a reminder that CodeMash registration will be opening soon!