Rants, rambles, news and notes from another geek

Server Down but Not Crashed

Oops. It looks like my web server was down since sometime late yesterday afternoon. That is the problem with:

a) Having your server in your home

b) Having a two-year old who likes pushing lighted buttons

My daughter Hadley is well known for going in the basement with no other intention that to have a snack of some cat food (ick) and turn off my web server. Then she comes back upstairs. I just don’t get it. And if I am busy and don’t notice, it can be a day or two before I catch on.

What I need is a free external service that monitors my web server and emails me or IMs me when it has been down for more than 5 minutes. Anyone know of such a thing?

Tech Ed CommNet Gone? Where Are the Slides?

I can’t seem to find the commnet site that was up during Tech Ed. I’m looking for a couple of slide decks and don’t feel like waiting for my DVD. Does anyone know where this stuff is, or am I hosed?

SharePoint Portal Area Explorer v1.0.4

So today I wrote a quick little tool to help me document an existing SharePoint Portal 2003 installation.

It uses the SharePoint Portal Web Services API, specifically the AreaService. You give it the portal URL, username, password and login doman and it will download the portal’s area structure.

SpsAreaExplorer Screenshot

Once you have downloaded the portal structure, you can then save it in an XML file for future reference, or you can export an HTML report. It isn’t much, but it does what I needed. Because of the way the SPS Web Services are structured, it ain’t the fastest thing in the world, but it works for me.

You can download version 1.0.4 here. If you find it useful, please drop me a line. If you would like the source, just ask.

UPDATE: For those of you looking for the source, I posted it in this post on June 18, 2004.

Geek Notes 2004-06-07

Back to work… back to work. Monday again. Wrote a cool SharePoint utility today. I’ll blog it next…

Geek Notes 2004-06-06

So I spent much of the weekend working on my new yard. I can’t tell you how nice it is to have a yard with grass again. And the sprinkler system rules. If only Denver would let me turn it on more than twice a week…

  • Test-first vs. Test-driven Development - Dave Thomas makes an interesting distinction between “always write tests before production code” and “use tests to control your design”. An interesting distinction, but I don’t know why it matters.
  • Jazmine Framework for SharePoint - Bob Mixon has release the framework he’s been working on to a GDN Workspace. Good work Bob.
  • MSDN Subscriber Downloads RSS Feed - I don’t know how I missed this one. I love the RSS feed for MSDN Downloads and now I can find out when new stuff shows up on subscriber downloads!
  • IL Graphing Reflector Add-In - Wow. I don’t really know why I would want a graph of the IL for a routine, but it is neat.
  • N-Tier Design is Good - Scott Hanselman reminds the world why we don’t like to build apps with all of the code in the Page_Load event handler.
  • Diff Debugging - Martin Fowler is really good at coming up with neat names for unnamed things people already do… like this. What do you do when you find a test failing suddenly? You do a checkout of an earlier build and use diff to figure out what changed.
  • Unit Testing in VS2K5TS - Jim Newkirk shows the ever-popular “Hello World” using the new unit testing features in Whidbey.
  • Genome 2.0 - Yet another object relational mapping tool. Jesus… Am I the only one who hasn’t released one of these damn things?

And last but not least… Harry Pierson tips us all off to XMLSPY Home Edition, a free version of XMLSMY. Right on. I needed that. Apparently it is missing the graphical WSDL editor, but I can live without that.

PAG Bloggers!

How the hell did I miss this? I already had Sandy Khaund’s blog&nbsp_place_holder;[rss] on my blogroll, but while I wasn’t looking Scott Densmore [rss] started blogging. And now late last night (or was it early this morning?) Jim Newkirk&nbsp_place_holder;[rss], of NUnit fame, started blogging.

I’m proud to know all of these guys and excited to see what they have to share.

Developers as Professional Athletes

Kris and I were talking about this the other day, and I’m really glad he blogged it.

I’ve got a theory that the best software developers are the ones that approach their trade in the same manner that athletes do.

Great athletes all have similar traits: talent, drive, and the ability to accept constructive criticism.

I agree with Kris 100% on this analogy. It is very interesting to observe how novice developers differ from the top notch people. As Kris points out, one of the more interesting differences related to how they handle the situation of “getting stuck.” Kris says, and I firmly believe, that developers should “ask for help when you are stuck for more than 5 minutes”.

I was surprised to see that someone argued with that idea. Chris Austin posted the following comment to Kris’ article:

I think that timeframe is a bit short. Without struggle then people don’t learn. So, if someone is always there to rescue you after 5 minutes then that developer will become to dependent on you and soon will become a resource hog that needs to be dealt with. Instead, I would rather the the developer spend more time, and take some pre-steps before going to you and asking. Steps like, a) google search (groups and web) b) MSDN Library c) topic related books. Then, if you are still completely stuck then ask. I just think you learn more when you are researching the problem rather than jumping up at first site of an issue to scream for help. What if you are the most knowledgable person on the project, in which case, in 5 minutes who do you ask?

I don’t agree with this at all. For most of my career, I have been the most knowledgeable person in the room and you know what? I always ask for help when I get stuck. I ask quickly. I have gone down terrible rabbit holes way too many times to want to do it again.&nbsp_place_holder;I find the very act of explaining my problem to someone else often helps me figure out the answer on my own. And often then other person has some excellent insight that I may have missed.

Austin continues…

This [practice and seek learning opportunities on your own] takes time outside of your 40 hour work week and it is unpaid. So, what is the incentive? Great athletes are either paid large sums of money or they are sponsored for their time, equipment, coaches and trainers needed for them to become great and stay great. Plus, 90% of their normal work week is practice. 110% of our work week is game time because clients don’t pay for practice, they pay to get a product done for them.

I’ll tell you, the one common thread among the top developers that I have had the pleasure of knowing and working with is that they spend tons of time, outside of work, playing with new technology and learning new things. These people (formerly known as hackers before the media destroyed the meaning of the word) love to learn… love to understand… love to take things apart. They have a need to know that is insatiable. They don’t do it for the money. Money is nice. It lets you have fancy cars and such, but it isn’t the driving influence.

This may be one area where Kris’ metaphor breaks down. But perhaps it doesn’t…

If you assume Kris is talking about professional athletes then it doesn’t work and Mr. Austin may be right. Those guys (especially football players) get paid to practice. But let’s not focus only on professional athletes. What about top track and field stars? Olympic athletes? College athletes? Top prep athletes? Now I think the metaphor applies just fine.

And let’s not forget, that even NFL players work their asses off during the off season… when they aren’t getting paid… to make sure they make the team when the season rolls around again.

Denver Pragmatic Practitioners, June Meeting

Please take note: The Denver Pragmatic Practitioners is moving its meetings to the 2nd Tuesday of every month, starting this month, so as not to conflict with another group’s scheduled meeting time. Hope to see you all there!

**Date: **Tuesday, June 8, 2004 5:30 PM-8:00 PM

Location: (map)
Interlink Group Offices
2nd Floor Conference Room
98 Inverness Drive East, Suite 150
Englewood CO 80112

**Topic: **Code Generation

What is code generation? Simply put, it’s when programs generate programs, or pieces of programs, on behalf of the developer. We’ll discuss what code generation is (and is not), and how to use it in your projects. Why not let the computer do all the grunt work, and save the fun stuff for yourself? :)

We’ll also discuss the similarities and differences between code generation and generic programming.

The Denver Pragmatic Practitioners take an informal approach to meeting. We prefer conversations over pizza and beer, so come ready to make some new friends and have a great chat about code generation! Refreshments will be provided.

We look forward to seeing you there!

(Join the Denver Pragmatic Practitioners Mailing List at http://groups.yahoo.com/group/pragprog-denver/)

Geek Notes 2004-06-01

I can’t believe it is June already. Where did the spring go? It is already starting to get HOT in Colorado and I’m wishing again that my house had central air conditioning.

I'm Presenting and WIN-DEV in October!

I just found out that Mike Woodring has selected two of my session proposals&nbsp_place_holder;for the CLR/C# track at WIN-DEV in Boston. If you don’t know what WIN-DEV is…

“Win-Dev Fall 2004 is focused on preparing you for the unprecedented transition in the Windows development platform brought about by .NET.”

My two talks are:

C12 - Refactoring Support in the Whidbey IDE
Thursday Oct 28 3:15pm - 4:45pm
Effective refactoring is one of the most powerful tools a developer can use to create well-structured, loosely-coupled code. The next version of Visual Studio .NET (codenamed “Whidbey”) will contain a host of new refactoring tools to make this job easier than ever before. This session will explore those tools and demonstrate how they can make you a mode effective developer.

C16 - Effective Unit Testing in C#
Friday Oct 29 3:15pm - 4:45pm
Almost everyone has heard of Unit Testing, but very few people actually do it well. This session will explore the common pitfalls associated with unit testing and provide some tools and techniques to help you create better tests for your code.

Here is the CLR/C# track schedule.

Should be a blast! If you aren’t yet registered for WIN-DEV, you can do so here. Hope to see you there!