Tuesday, December 19, 2006

Thank YOU


Time magazine selected "you" as person of the year with their definition of "you" encompassing people who posted user-generated content on the web. I wanted to pay tribute to all of the "you" out there who inform, motivate, and inspire me. My list is limited since I usually hit dozens of websites each week, but this is a list of the people who regularly reeled me in during the last year:

Raganwald - http://weblog.raganwald.com/
Thanks for the cut and dry honesty. Thanks for the delicious links.

Joel Spolsky - http://www.joelonsoftware.com/
I'm not a blue blooded programmer, educated at Yale, and you would be ashamed of how weak I am with C++ and pointers. But you give me an opportunity to learn and think about my craft. In the end I'm better for it.

Drew McLellan - http://allinthehead.com/
24 Ways. 'Nuff said.

Scott Hanselman - http://www.hanselman.com/blog/
You not only inform, you motivate. You're not arrogant. I can tell you're smart because you want to share the things you discover. You never make me feel like I went to the wrong school or that my pedigree is suspect, you focus on the technology. Your excitement is contagious.

Dare Obasanjo - http://www.25hoursaday.com/weblog/
You keep it real.

John Lam - http://iunknown.com/
You think different and still manage to be associated with Microsoft.

Eric Sink - http://software.ericsink.com/
Practical and smart. Open about what it's like to be an ISV.

Nate Koechley - http://nate.koechley.com/blog/
My inside track to Yahoo! and a good resource for general web developer issues.

Aaron Johnson - http://www.cephas.net/blog/
I can't believe that at one point you were my roommate and we never talked about programming. You're full of good stuff, I hope you never stop.

Ted Leung - http://www.sauria.com/blog
Another of the "programmer's programmer" people I latched onto a while back and keep visiting. I like the quality of your thoughts which refreshingly venture from programming from time to time.

Paul Graham - http://www.paulgraham.com
You're my idealist. I usually get a sense of excitement when you post a new essay and then print it out to read over lunch or at coffee.

Simon Willison - http://simonwillison.net/
Another connection to Yahoo! and a jedi at taking notes.

Steve Yegge - http://steve-yegge.blogspot.com
Keeping it as real as Dare, from Google. Saying what a lot of people think but are scared to admit. Another person who is down the path from me, whose footsteps I'd like to follow.

Larry O'Brien - http://www.knowing.net/
Educated gentleman who kept me awake for a while trying to prove to myself that I know my language (C#). I ported my Haar transform code to Java too. Also proof that you don't need to be in the throng of things because he's "holding it down" in Hawaii.

Mad Kristensen - http://www.madskristensen.dk/blog/
Another clever Dane, but very accessible to me. Every time I hit the site I learn something new that I can almost immediately use.

Aaron Swartz - http://www.aaronsw.com/weblog/
A smart kid. I can't concentrate through a lot of the stuff but every so often I find something darling. Maybe I should categorize this like a few I've mentioned above it as "good conversation" blogs or thoughts that inspire some thought.

Sam Gentile - http://codebetter.com/blogs/sam.gentile/default.aspx
A true blue Microsoftie. Staying on top of the blog keeps me on top, usually, of what I should be paying attention to from Microsoft: service packs, new releases, and so on.

Ian Griffiths - http://www.interact-sw.co.uk/iangblog/
Chris Sells's cohort in a recent WPF book and another good Microsoft-centric blog to keep a finger on the pulse.

Chris Sells - http://www.sellsbrothers.com/
Another clever jedi master who cares enough to share what he knows from time to time. Author (along with Ian, above) of some pretty good books that I own. One thing Chris said from a podcast with Scott Hanselman that stayed with me toward the end of the year was (I'm paraphrasing) that the information age will show a gap between people who can absorb a lot of information and those who can't.

Darren Niemke - http://markitup.com/
IM Conversation:
David - test
Darren - I read you.
David - got a sec for a question... ?
It's a bit strange that I can have someone like Darren on my IM list to bother from time to time. I usually get emails from published authors but having one who bothers to answer questions from some guy in South Dakota is quite a priviledge. Great ideas, great blog.

Mike Arace - http://mikeomatic.net/
Found as I searched for commentary on posts by Joel. After I'd put you in the aggregator I kept finding good stuff.

Jason Haley - http://jasonhaley.com/blog/default.aspx
You are the future of what the Time magazine selection means; you're a new type of curator, posting signs that people like me can follow.

Bart De Smet - http://blog.bartdesmet.net/blogs/bart/default.aspx
A programmer's paradox. How on earth do you stay productive enough to be as relevant (which you do) and maintain enough time to communicate it?

Reddit Kids - http://www.reddit.com/
Not only user-generated content, but relevant by democracy. I've especially enjoyed joel.reddit.com

Digg - http://www.digg.com/
Almost as good as Reddit.

Carl Franklin, Richard Campbell - http://www.dotnetrocks.com/
Love the podcast. I've got a love/hate thing going on with Carl's opinions, but I'm amazed that you keep it going and keep it as fresh as ever.

Josh McAdams - http://www.perlcast.com/
Love this podcast as well. You're pretty "aw shucks" about it but honestly you're the best interviewer of the technical podcasts I listen to regularly.

Markus Volter et. al. at Software Engineering Radio - http://www.se-radio.net/
Another great podcast from which to learn. It's intriguing to catch the Europeanisms as well and to hear something a bit more formal. Many of the podcasts I downloaded I had to listen to multiple times, not because of different accents, but because the content was that deep.

There are many other blogs, podcasts, and other online haunts that I gathered information (I'll pay tribute to the non-technical ones on my other blog) but every site listed above is a place I keep going back to and appreciating. I find it amazing that none of you have to do it and yet you keep on giving to your community. That's quite a gift.



Monday, December 18, 2006

Grab the Silver Keyboard!


Steve Yegge's last post couldn't have come at a better time for me; I've been having a lingering feeling that I'm stuck in the mud, working too hard and having bad ideas.

So how do you make yourself a superstar? Never stop learning. I've heard
people say they think this position is a crock, that it's ludicrous, that you
couldn't possibly spend your whole career learning new things.

But I think differently. I think every program you write should be the
hardest you've ever written. And that's what I blog about, mostly. Improving
yourself. Because most employers, the ones who matter in the long run, they'll
be able to see how great you've become, and they'll alter the very course of
their business plan, if necessary, to make the best use of you. Does that sound
incredible? Well, I've seen it play out both ways over my modest 20 years in our
industry, and that's how I see it.

I don't think it absolves me from having weak ideas or from lacking the most effecient approach to working outside of the office, but I know my direction is right. I need to work on my mechanics in future and make sure that while I strive to improve as a developer that I get better at picking what matters and solving problems that are this fine balance between learning something new and not being so challenging that they are unpractical.

I've been disheartened as well by the lack of community. People I know about online - my mentor list - make my life that much better but it seems rare that I meet people outside of conferences and the online world who have more desire for themselves other than getting a job done. In those dark moments I ask myself why I try and wonder whether it even will matter in the end.

But something in my intuition tells me I can't stop. That outside my "feelings" there are people like Steve who have walked a path I'm on.

This year I did become a better programmer. My skills as a designer improved. I created a bunch of tools that were useful not only to me but to others. My vindication came perhaps a month ago when I looked at a screenshot of a code repository program I'd written and forgotten about two years ago. I had rewritten a code repository program this year with tag support and as I compared the functionality and design I realized that I'd grown like a tree; the effect was visible over the long term but not on a daily basis.


Wednesday, December 13, 2006

foreach Considered Wack Quite Often


Don't get me wrong, it's not a jihad I have against the foreach in C#, it's just the fact that if I had a nickel (okay, a quarter to be realistic) for each time I changed a foreach to a normal for loop because I needed to track my position as I iterated through a collection and no underlying index was provided, I'd have enough money for coffee each week.

A simple example from the .NET world is the DataTable; when you iterate the Rows collection, the Rows don't expose an index. After seduction for the easy foreach, I end up with:

for(int i=0;i<myTable.Rows.Count;i++){}

There's only one time that a normal for loop got the better of me - I had to iterate and remove items from the collection. Modifying a collection that you're going through causes trouble but it's easily remedied - not with recursion as some would have it, but by simply going backward:

for(int i=myTable.Rows.Count -1;i>-1;i--){}

Besides its syntactic elegance, of what benefit is the foreach? By calling the underlying enumerator?


Tuesday, December 12, 2006

Epigrams on Programming


I am feeling my way around with CGI using perl so I took Alan Perlis's epigrams on programming and randomized them.

I think it will be my new homepage.


'Tis The Season


I'm quite fond of the different calendars with tutorials this season. From my first glances at this year's 24ways I should learn as much as I did last year. I also was delighted to discover the perl advent calendar. Any other decent holiday calendar/tutorials?


Thursday, December 07, 2006

Joel Rebuttal


Usually what Joel says is treated like gold by many developers, myself included. In a recent post he berated Om Malik for using a lego metaphor in describing how easy it was for startups to create software while paying homage to Fred Brooks's essay No Silver Bullet: Essence and Accidents of Software Engineering. Joel cleverly adds context to his comments by referencing a Business Week article from the early 1990s that uses the lego analogy with the idea of object oriented programming.

I've listened to Om Malik's podcast and can tell he is no programmer - in fact, I kind of laughed at a podcast on instant messaging where he called file sharing in instant messaging clients unnecessary (something nearly everyone I know from a working angle uses on a daily basis).

But what Om started was a good conversation which inspired Wesner Moise in his rebuttal to Joel asserting that Fred Brooks was as astute in his essay. Software development has advanced, Moise seems to be saying, well beyond what it was in the days of Brooks.

The desert for this travelling conversation was this story on programming Atari 2600 games. That sounds like tough work indeed.

Well, I'm off to play with regular bullets and legos.

Update: Some interesting comments from Phil Haack on the subject.


Sunday, December 03, 2006

What we wish we could say


Daring Fireball had me in stitches with the following paragraph on his colophon:

"If Daring Fireball looks like shit in your browser, you’re using a shitty
browser that doesn’t support web standards. Netscape 4 and Internet Explorer 5,
I’m looking in your direction. If you complain about this, I will laugh at you,
because I do not care. If, however, you are using a modern, standards-compliant
browser and have trouble viewing or reading Daring Fireball, please do let me
know. "

His most recent essay, Omnivapor, was referenced on Reddit but what got me going there was
his essay The Location Field is the New Command Line featured in Joel Spolsky's Best Software Writing I.


Friday, December 01, 2006



Dan Appleman, best known to me for his exhaustive book Dan Appleman's Visual Basic Programmer's Guide to the Wind32 API has had a sputtering blog over the last few years.

But recently it caught my eye because Appleman has created SearchDotNet which is a customized Google search engine for .NET sites.

It's nice to search for something like "Dictionary" or "Parallelism" and get relevant code despite the concept crossing language and platform barriers.


To Develop an Operating System


It's been around for a while but this powerpoint (linked directly as a *.ppt) is a presentation from Marc Lucovsky about the development process of the early iterations of Windows NT to Windows 2000.

Interesting things:
+ NT 3.1 was ~3 years late (I'm not feeling so bad about being behind on my current project)
+ The original team was only 6 people from DEC. That's astonishing. The eventual development team size was 200 with 140 people on the test team.
+ Quotes:
"To scale a development team, you need to establish a culture"
"Sloppiness is not tolerated"

+ By Windows 2000, the development team was 1400. I wonder what Vista's team size is?
+ The evolution of source control and branching at Microsoft.