Archive for August, 2007

Resharper Jedi Envy

I’ve finally been bitten by the Resharper bug and now I want to be a Resharper Jedi when I grow up like Ilya Ryzhenkov on this video. According to the JetBrains .NET Tool Blog, a Resharper Jedi is someone who “can code hella fast with ReSharper and blow productivity levels off the chart”. I haven’t heard any claims about Resharper being able to help me Jedi-mind-trick my way out of traffic tickets, but there sure is a lot of reverent blogosphere speak about people like Ayende who can code at the speed of light during demos thanks to his mastery of this tool’s navigation, code generation, and refactoring keyboard short-cuts.

I just finished reading Joe White’s 31 days of R# and trying out almost every item in the Resharper menu that appears in Visual Studio after installing it. So far the force does not appear to be as strong in my family as I had hoped, but with luck I will make steady progress in the near future with the help of the Resharper Cheat Sheet, which I plan to post up on the wall of my new cube.

Below is a screen shot of one of my favorite features, the Usage option (Shift + Alt + F12 under VS Bindings). It shows all the references to the selected method or property, which is great when you are trying to determine potential side affects of changing legacy code (assuming you don’t already have a ton of unit tests to assuage your fears).

Breaking Up Is Hard To Do…

Last Friday I gave my two weeks notice at the bank that I worked at for the last 5 years. At first it was very difficult to tell people. When I told my boss, I had roughly the same anxiety level that I had when I broke up with my last girlfriend. It actually took me two attempts to tell the CFO, who I run with on a regular basis. Nevertheless, the anxiety gradually faded into nonchalance, which then quickly slid into boredom. I am now hovering at annoyance and feel that I am about to plunge into rudeness. This is pretty hard to avoid when you work at a place with over 150 people, which is too small to be anonymous, but too big to avoid having this type of conversation with everyone you pass in the hall.

Here are some of the reasons I shared with the first hundred people that asked:

  • My round-trip commute time will be cut from 2 hours to 20 minutes.
  • I will get to code full time again. I have had the title of architect for the last couple years and have been coding less and less over the last 6 months since our department has begun to mature and grow. I’ve found that I really miss writing software. I feel like a baseball player who has been benched and just wants to get back into the game.
  • I will get to code in C# instead of VB.NET
  • I will no longer have to endure a 2:1 auditor to developer ratio. The new place I am heading to has regulations to deal with, but not nearly the overhead that comes with SOX compliance.
  • There will be far fewer meetings since I will only be associated with one team and one department.
  • Did I mention that I will get to code full time again…

Here are the reasons that I am going to give the next 50 people who ask me why I am leaving:

  • I have made enough in my crack cocaine business to retire to Le Compton.
  • The bank refused to pay for my pending sex change operation.
  • The CEO’s daughter swore to me that she was 18.
  • I only have 2 weeks to live and I wanted to spend every remaining moment with ‘Justin the Metrosexual’
  • I have a highly contagious disease that rots away your private parts…cough…cough…give me a hug…
  • It’s because of you. I loathe and despise you.

Seriously, I wish everyone at the bank the best of luck. It’s been a great place to work and I would gladly recommend it to anyone living in the Topeka, KS area. But, it’s time for me to move on. Sometimes you just have to shake things up in your life and try something new. 

Ode to the ALT.NET Conference Organizers

Yesterday I was lucky enough to grab one of the coveted spots for the upcoming ALT.NET Conference in Austin, Texas this October. The registration was capped at one hundred participants and appears to have filled up within the first few days of being announced. The organizers include several of my favorite bloggers (Ayende Rahien, Scott Bellware, Jeremy Miller, and Roy Osherove), so I am very excited about the opportunity to meet them and hear their thoughts on several issues that have caught my attention lately such as Domain-Specific Languages, Dynamic Languages, Behavior Driven Development, and Domain Driven Design. It’s my first Open Spaces conference, which means that the agenda will be decided upon by the conference participants during the opening session.

In honor of the event, here is a list of some of my favorite posts by the conference organizers from the last few months. Enjoy.

Meeting Moths of the World, Unite!

…just do it over there and try to be quiet about it. I’ve got work to do.

Anyone who has ever worked with me knows that I am not fond of meetings. I’d like to think that I have improved over the years, so it is not quite as apparent to people who don’t know my body language well that I am getting impatient. I used to give ever-so-subtle hints like moving to the edge of my seat with my hands on the arms of the chair or throwing out the “…so is there anything else?” phrase with just the right intonation so as to warn listeners that there had better not be anything else. I’m sure I still do those things to some extent, but after being teased about it for a while I at least make an effort to exercise more patience these days.

One thing that has really helped improve my attitude towards meetings is the Agile practice of doing Daily Stand-ups. When I first heard that we were supposed increase the frequency of meetings from once every week to every day, I was skeptical to say the least. However, the format of a properly conducted stand-up meeting lends itself to very short, productive meetings that I actually find useful. Participants take turns answering three questions that focus on communicating to the group whether or not they have met the commitments they agreed to yesterday, what commitments they feel comfortable making today, and what issues are currently slowing them down. The physical discomfort of actually standing up in a circle is supposed to remind team members that they should be concise (the whole meeting should take no longer than 15 minutes) and reserve any topics that don’t involve the whole group for side discussions afterwards.

If you are new to the practice or are dissatisfied with how your daily stand-ups are currently being conducted, I recommend reading this article by Martin Fowler. I especially liked the section on Bad Meeting Smells (not to be confused with the body odor smells noticeable when standing too closely) and how to fix them. I definitely recognized a few symptoms that our teams have grappled with at one time or another, such as meetings lasting longer than 15 minutes, excessive problem solving, the “I can’t remember” phrase, and reporting to bosses not peers. I also appreciate how the main focus of each of Fowler’s suggestions relates back to the goal of keeping the energy level in meetings high, which is ultimately what I don’t like about the majority of traditional meetings I attend.

Now as for you meeting moths…shoo…

 

One Month Progress Report on Being a Better Developer

One month ago, I joined the epic struggle of Justice Gray (a.k.a. ”Justin the Metrosexual”) to “change the world” by publically sharing my roadmap to becoming a better developer. Justice’s own dubious plan involved reading one developer book a week for six months while presumably trying to prevent his brains ooze out of multiple orifices, a truly remarkable feat that should not to be attempted by anyone who has legitimate fears of losing cerebral tissue in a horribly sticky, uncomfortable manner.

Because misery loves company, he also started a mad game of tag with the aim of tricking as many other developers as possible into publically agreeing to give up their own free time in the name of becoming even geekier. I personally think that this whole idea was simply a plot hatched by Justice with the aim of diverting otherwise virile programmers away from the limited female population that will have anything to do with geeks in the first place, thereby improving his own otherwise meager odds. I mean come on…have you seen his picture? He obviously needs all the help he can get…:-)

In commemoration of my own one month anniversary of having succumbed to this evil plot, I feel compelled to provide a progress report. So far, I have made modest gains in exploring non-traditional MS technologies by working my way through various tutorials on Boo and the Windsor Container. I also inched my way closer to the open source world by familiarizing myself with the PoweShell Community Extensions and kick-started my goal of become an avid code reader by downloading and perusing the code in the SubText project. As far as tools are concerned, I spent several hours puzzling over the various graphical reports of NDepend trying to figure out the ins-and-outs of cyclomatic complexity. Not a bad start, but time is dwindling away and I’m not quite as far along the path as I had originally envisioned.

In the spirit of holding myself accountable through public humiliation, I am going to try to increase my pace a little by committing to more concrete goals for next 30 days. Since I shy away from writing a blog post on a technical topic until I reach a certain level of understanding (it’s all relative of course), I am going to commit to writing at least one blog post on each of the following goal-related topics during the next month:

  1. Tools: NDepend and Resharper
  2. Expand OOP/MS horizons: Windsor Container and F# 
  3. Code Reading: Rotor

I am also going to take a baby-step into the open source world by writing a personal email to Keith Hill offering my humble services on the PSCX project. If he is smart, he’ll say no, but at least I will have made an effort.

Until next month, may you have success in achieving your own developer goals while still managing to stake your claim on the geek-loving female of your choice.

P.S. - I recommend that you immediately delete any email or blog post that contains the word “Tag”. No good can come of it.

 

Vista Weather Gadget Broken?

I seem to have a morbid fascination with my Vista weather gadget today. Does anyone have eggs they would like me to fry on the sidewalk? Perhaps I’ll start my own version of Badwater Ultra-Marathon

 

Confessions of an Aero Addict

When given a choice between style and substance in software, I usually opt for what I consider to be substantive qualities such as speed, functionality, usability, and cost. Since I never saw a sentence about Vista without the phrase ”eye candy”, I casually dismissed Microsoft’s long-awaited OS release as fluff when it first came out and was in no hurry to jump aboard the upgrade band-wagon.

Well despite my valiant effort at indifference, I am ashamed to admit that I have finally succumbed to the narcotic affects of the Aero and was compelled to upgrade both my work and home PCs to Vista last week. After less than a week, I now experience acute withdrawal symptoms every time I sign back onto an XP machine and am deprived of my glass translucency goodness. I could talk enthusiastically about some my favorite non-visual features in Vista, such as the pervasive search box (ctrl + esc) that I now use in lieu of Google Desktop to quickly find content and launch programs, but who am I kidding? My name is Russell Ball and I am an eye-candy junkie.

For those of you who are weak like me and are considering an upgrade in the near future, here are a few things to keep in mind.

At the Office

  • If you’re going to take advantage of an MSDN license and upgrade your OS well ahead of the crowd, make sure you’re nice to the IT Pro group. I got their blessing ahead of time by offering to give them a scouting report of any issues they will likely encounter when trying to upgrade the entire department. 
  • When encountering an application error in Vista, try restarting the app using the right-click ‘Run as Admin’ option. Several rather cryptic errors have miraculously disappeared after re-opening the app under elevated priviledges.
  • Go paperless. The IT Pros in my shop are understandably reluctant to risk upgrading drivers on the print server just for me, so I am currently remoting in to the dev box to print documents until I can get someone to punch a whole in the dev domain firewall and let me connect directly to the printer. 
  • Expect to have to spend a little time applying a new service packs and installing new versions of applications. PowerShell requires a new version and Visual Studio and SQL Management Studio both require service pack upgrades before they will properly work on Vista. 
  • Expect a few apps to not work. I had to turn off a visual affect in order to get the UltraMon title bar butttons to show up and shut down the Track-It agents on my machine to stop getting bombarded with error messages. Transcender won’t work at all, so I’m having to remote into the development server to take practice tests for my upcoming certification exam. Considering that I probably have a hundred apps installed on my machine, that’s really not that bad.

At Home

  • If you have a machine that is more than a few years, just let it go. I had a P4 that worked fine for remoting into the office and web browsing, but it was easier to just spend the $800 at my local computer store for a basic machine than fuss with tracking down incompatible parts as part of the upgrade process. After a quick $150 upgrade for a new video card that supported dual monitors, I found myself with a Windows Experience Score of 4.8 (not bad) and enough RAM, disk space, and processing cycles to power a small third world country. 
  • When your wife sees the bill for the new PC, cast an “Aero Translucent Glass” spell on her. If she isn’t fully distracted, try the alt-tab spinning windows trick. If that doesn’t work, then try defending yourself with one of the countless left-over non-Vista compliant parts that will soon litter the tech landscape.

See you at the Vista half-way house. 

He Likes to Run for Fun in the Hot, Hot Sun

The heat index was over a hundred today when I ran one of my regular six mile routes. This summer has actually been pretty mild by Kansas standards (last summer we had 14 days that were over one hundred degrees). Having grown up in Michigan, I do my share of complaining about Kansas summers and generally try to avoid the heat whenever possible except when it comes to running. For some inexplicable reason, I am partial to noon runs when it is over a hundred degrees and sweat gushes from every one of my mutant, overactive sweat glands. To give you an idea of how much I sweat, I once weighed myself before and after a 20 mile summer run and discovered that I lost 5 pounds of water weight despite drinking a whole jug of gaterade along the way. Nevertheless, I actually enjoy the experience and find it to be purifying in a way that is addictive.

That being said, there is also a dark side to this pastime. A couple years ago, I was careless about my liquid intake during an unseasonably hot marathon and ended up severely dehydrated. By mile 23, I was on my knees in the middle of a busy intersection puking my guts out. It then took me over an hour to finish due to extreme muscle cramping and fatigue. By the time I finally crossed the finish line, I made my way directly to the med tent where I was quickly hooked up to an IV. Not one of my better races.

To be fair, my experience with running in the heat is downright tame in comparison to what the runners of the Badwater Ultra-Marathon experience. Considered to be one of the toughest endurance events around, this 135 mile race (the equivalent of over 5 consecutive marathons) starts in Death Valley in July where temperatures can climb up to 130 degrees Fahrenheit and the concrete gets hot enough to melt the soles of shoes. If that isn’t bad enough, the race covers three mountain ranges for a cumulative vertical ascent of 13,000 feet. The ultimate goal of these extreme runners is to finish the race in less than 48 hours so that they can get a coveted Badwater belt buckle. That’s right…no prize money is involved. The whole spectacle is captured in fascinating detail by a documentary called Running on the Sun that I bought a while ago and periodically watch with the same rapt attention one would pay to a gruesome car wreck. Here are some of my favorite highlights from the DVD:

  • One of the participants, who is a tough-as-nails marine with the physique of a greek god, confounds all expectations by first dropping out very early due to dehydration and then by rejoining the race later to offer moral support for another ailing runner who couldn’t afford a crew.
  • A 68 year old man from England finishes the race thanks to his wife who drove ahead of him in the final miles with a Guiness beer bottle attached to a stick on the back of her support van. He happily drank the beer as soon as he crossed the finish line.
  • A woman explains to the documentary crew that she knew she was feeling better because the frequency of her hallucinations had decreased.
  • A New Yorker reaches new and amusing heights of irritability when his crew returns late with his soup. 
  • Somewhere around a hundred miles, a runner suddenly stops talking to the camera crew that was driving next to him, announces that he is a little bit tired, and lays down flat in the middle of the road.
  • One of the more competitive runners explains that he had every one of his toe nails surgically removed because they kept falling off after his ultra-marathons. (see picture below for what this race will do to your feet)

I highly recommend that you buy this DVD for sheer entertainment value even if you never plan to put on a pair of running shoes in your life.

* By the way and for the record, I in NO WAY intend to run in this race…and I’m not just saying to assuage my wife who has threatened on numerous occasions to divorce and/or dismember various appendages if the thought so much as crossed my mind…which is hasn’t…seriously…for real. 

Error Message Surrealism

A co-worker came across this error message in a Microsoft Knowledgebase Article while doing some research on how to implement a password expiration policy using the .NET Membership provider:

Error Message: Your Password Must Be at Least 18770 Characters and Cannot Repeat Any of Your Previous 30689 Passwords

I’m going to ask Microsoft to please remove this link before they give our audit department any ideas…:-)

Boo: Not as Scary as it Sounds

I’m a little bit tired today because I stayed up late the last couple of nights working my way through the Boo Primer on codehaus. I think I first heard about this relatively young (2003), open source .NET language through various posts by Ayende and Hanselman. I was intrigued by the some of the adjectives that I commonly heard in relation to this language such as ‘beautiful’ and ‘wrist-friendly’, so I incorporated learning Boo into my 6 Month Roadmap to becoming a better developer. If nothing else, I just really like looking at the project’s stellar green ghost logo that reminds me of a Pac-Man ghost and makes me smile every time I load up the project home page.

Since Boo is built upon the Common Language Infrastructure, it is really not that much of a stretch for .NET developer to start using it, especially since the majority of programming in .NET these days involves using the base class library which is accessible from any CLI language. You’ll be even more comfortable with Boo if you’ve ever played around with Python. Although Boo is officially described as a mixture of Python, C#, and Ruby, the extremely bare bones syntax (hence the adjective ‘wrist-friendly’) most closely resembles Python.

Probably the easiest way to get started with Boo is to install SharpDevelop, an open source IDE for .NET. Have no fear; this is not like the typical multi-hour Visual Studio installation process. Despite being very close in functionality to Visual Studio, it only takes a few minutes to install. In fact, due to its incredibly quick start up time, I think I’m going to use this environment for quick proof of concept code instead of Visual Studio from now on. It has built-in support for Boo, so all you have to do to get a hello world running in Boo is create a new Boo console project and hit f5. Then you can get all the debugging goodness that you’re used to when working with VB.Net or C#.

If you prefer the command line, however, you can get up and running even quicker by downloading the compiler (booc.exe) and associated dll’s from the project homepage and setting your machine’s environmental path variable to the Boo bin directory. It comes with a nifty command line utility called Booish that provides real time execution environment so that you can test boo syntax without having to compile code first.

I haven’t had a chance to make up my mind on the aesthetics yet, but it was very nice to have such an easy time getting started and it has definitely been very refreshing to learn something completely new without any expectation that I will somehow use it at work. I think it put a little more fun back into programming.

Next Page »