March 2009 Entries

Thanks to Clint Edmonson, I got a chance to go to Mix this year.  While Las Vegas was absolutely frustrating (it was the week of St. Patrick’s Day AND Spring Break week), Mix itself was outstanding. hungover

We kicked it off with a keynote from Bill Buxton. Each Mix attendee got a copy of his book on Sketching User Experiences. Bill is THE MAN when it comes to UX design, and he did not disappoint. He was energetic, animated and passionate: everything you look for in a speaker. It is always enjoyable to see someone passionate about what they’re speaking about. Even though, I loved Scott Guthrie’s keynote. I have to give the presentation win to Bill. As a matter of fact he was the MOST passionate and most enjoyable speaker of the conference (for me).

Scott Guthrie came out after Bill Buxton and announced that Silverlight 3 Beta was now available for download. There had been some speculation beforehand so this wasn’t an absolute shock, but good news nonetheless. The real kicker was watching the crowd react to the Red Polo. We also got mini talks from Erik Saltwell (SuperPreview), Bill Staples, Joel Spolsky and Jeff Atwood, and many others.

The rest of Wednesday found me learning about ASP.NET 4.0, building wireframes and improving my UX design skills. Thursday, I learned more about Expression Blend, Extending ASP.NET MVC for the Mobile web, Sketch Flow, and UX Design Patterns. On Friday, I got even more Silverlight, learned about the Dynamic Language Runtime, and then bounced around to hear a bit about ASP.NET Data Access and a tiny bit more Silverlight. In between the phenomenal sessions, I hung out at “3rd Place” which was a large room with about 15 couches and twice as many chairs. At each grouping of chairs and couches was a white board with a country name on it, like “London” or “Australia” and anybody could go write a topic on the white board and start a conversation. Those who wanted to join a conversation, could simply walk around to the white boards and see what people were talking about and just join in. Unfortunately, I didn’t figure out the system until the end of the day Thursday. I know, I’m a loser.

Each night was another Microsoft Mix party. Wednesday night was the party at Tao. From 6-10pm, Microsoft had an open bar set up at Tao, at least I think it was an open bar. If it wasn’t, I stole a couple beers from Tao on Wednesday night. Thursday was “Together @ Mix” at the Lavo Lounge. Again, it was either an open bar, or I committed some petty larceny. After, Kevin Grossnicklaus and I met Arsen Yeremen and we went to the Grand Lux to grab a bite and shoot the breeze. We talked about software development and software architecture as a practice and life in general. It was a really good time. On Friday, there was a Geek Dinner at The Grand Lux Restaurant. I had a better time at the dinner I think. I got to sit next to Shawn Wildermuth, Justin Etheridge, Dave Ward, Rob Zelt and Brian Henderson. We had some really good conversation about the state of development and the community. These are some SHARP guys and I really enjoyed talking to them. I then foolishly decided to walk down the strip to Mandalay Bay (at the other end of the strip). It was a LOOOONG walk, but I did see a lot of amazing stuff and picked up a Del Taco Macho Combo Burrito and a Kingburger from Fatburger.

All in all a positive experience. Even though the sessions were great, I think the best part of the conference for me was meeting all the great people. I got to meet Chad Moran and even met Phil Haack and John Lam briefly. I also met some people with interesting products, but I’ll blog more about that later.

Thanks to Clint for the ticket and to all the great people I met.

‘Til next time.

~L

ugly_girl At the AgileKC meeting this last month Martin Olson gave a great overview of Scrum. There were some people who came to learn about Scrum and Agile Development in general. They came to hear the good, the bad and the tips and tricks. One of the things I mentioned, having made my first attempt at XP this last year at my new job, was that they might find some real ugliness in their current development environment and will be forced to deal with it. My Analogy:

Agile development is a lot like turning on the lights at the bar at three in the morning. You really start to see things that, under the low lights and disco ball, look okay but are really NOT okay once the house lights are on. That girl you've been dancing with may turn out to look more like your uncle Fred, once you can see her clearly. It's not her fault. She didn't set the disco ball and fog machine in motion, that's just the environment you've been in. Agile is not to blame, when it reveals the ugliness of your environment to you.

How have your experiences with Agile development been the same? Different? Is the analogy fair?

Just a thought...

~Lee

I've been using 64-bit Windows & on my laptop for a couple of weeks now and I'm pretty happy with it. I was very happy with my Windows 2008 Server install, but I finally took the plunge to pave my laptop with WIndows 7.

I found a little trick today that will get me around something that was annoying me since I installed. If you use the task bar buttons to launch a program (like where your quick launch menu would be), if you click it again, it does NOT open a second instance of the program, even though that might be what you wanted to do.

For instance, I have a project open in Visual Studio 2008 and I want to open a second VS2008 instance to read some code in another project. clicking on the task bar launcher, like you would with your quick launch menu, simply sets focus to the instance that is already open.

In order to open a second instance, you have to shift+click the task bar launcher. This will open a second instance.

Hope this helps someone.

~Lee

At the Kansas City Office Geeks meeting tonight,  John Alexander brought me a GWB t-shirt with my blog's url on the back! Totally pimped and I am totally stoked to wear it to work tomorrow.

Thanks to John and Jeff for running the show, and to Jerod for keeping up with the shirts (and getting me a 5X)!

gwb_tshirt_backgwb_tshirt

I am starting a new series on my blog that will hopefully spark some (civil, productive, non-inflammatory) conversations. These will mostly be random thoughts I have. This will also lead bc_shoutme to post more often and not wait until I have something large to say. So for this [insert frequency of series' posts here]'s entry:

The MacBook Pro. I've seen lots of developers lately using MBPs as development machines. I am interested in learning Ruby, so it might be a good option for me. I wonder how they perform. The developers that use them say Windows runs fantastic on a MBP. VMWare Fusion is a must have for easy switching back and forth. How does Vista perform in the VM? Is it a true VM? Any problems to be aware of? Are there those of you who tried using a MBP for .NET development and switched back? What about customer service?

Just considering it right now. I grew up using Apple products and have used Linux on and off for years, so I feel pretty comfortable with OSX, but the $3K price tag for a 17-incher must give anyone pause.

Thought?

My friends, Clint Edmonson and Mike Benkovich are coming to Kansas City next Tuesday, March 10th for their quarterly community events. Clint will be talking about the cloud and how it will affect our future architectures in the morning and Mike will be sharing some Visual Studio 2008 debugging secrets and developing mobile Windows applications that afternoon. If you live in or around KC or are going to be in the KC metro next Tuesday, head on over to the Microsoft building in Corporate Woods and get some free information (and a free lunch)!

 

See ya there - Lee

I have been developing web sites for a little over a decade now, and I have to tell you, I missed the boat. A lot of that time was wasted. I spent most of my career developing crappy code that was doomed to cause some poor sap some real heartache. To those who have had to support my crappy legacy code, I profusely apologize. You know who you are, and you undoubtedly know who I am. You've probably spent many hours rewriting my leftovers and trying to spin gold out of code-dung. Again, I apologize.Wait for Meee

You see, I didn't have very many mentors. I worked quite a few jobs where I was the only developer. The few mentors that I had helped immensely, but I only learned from them what they taught me for the project we were working on. I never got involved in the community. I didn't read blogs. I read the wrong books. I didn't just sit down and chat with high-caliber developers and discuss techniques.

When I took my latest job, ASP.NET MVC Framework had just surfaced on ScottGu's blog and I was interested to see. I'd heard about MVC from people who'd done SmallTalk development, but since I was primarily an ASP.NET guy, it seemed far away until ASP.NET MVC showed up. This put it squarely on my doorstep and since I was evaluating what technologies to use to develop the product I was being hired to develop, it came at an exceptionally opportune moment. My current employer was great about giving me room to learn about these technologies and evaluate them.

While I was reading about ASP.NET MVC, I started seeing tests for TDD and the big buzz around the MVC framework is that it helped testability. So I started reading about that. With TDD, came mock objects and dependency injection inversion of control. I had opened up Pandora's Box. There was no closing it now. How had I been developing web sites so long without hearing any of this? I'd put together some pretty sophisticated line-of-business applications for the web and these things would have really made those products exceptional. Especially Test-Driven Development.

As anyone who's worked with me in the past can attest, I write code that resembles a Brazilian rain forest: Dark, wet, bug-filled and possibly deadly. (OK, I have no idea where dark and wet fit in there.) I always hated having QA testers finding bugs. They found tons. Everything seemed to work when I ran the app, but now it's breaking all over the place. It got to the point where if someone asked me if the app was working I always said, "As far as I know." Ugh. I hated it. The material I was reading about TDD was talking about high code confidence and I was HOOKED.

Anyway, the point of this post (which has been lost in nostalgia) is that it took me 8 years of development to finally start learning how to do it well. The point for me is to teach everyone else I know, what I've learned. I want to discuss it. I want to learn from you guys (my 2 trusty readers glued with Oouey Blouey to their RSS Readers). I want to see people bashing my code, trying it, fixing it, sharing it.

Understand that I am still a novice. I probably always will consider myself that way. Anything that makes me a better programmer is totally welcome in my book. Hopefully, it also makes all of you better developers, too.

~Lee

I belong to the LinkedIn TDD group and one of the other members, Raphaël Parrée (CTO of Trivera Technologies), recently posted about a flaw he sees in test driven development. The post is very thoughtful and comes from their experience with TDD. What I read from his post is that mid-level and junior-level developers are not strong enough developers to do it effectively. I disagree... sort of.Drill_Sgt

It does take a certain amount of skill in development to understand the essence of TDD/BDD, but that should be a reason for not doing it. It takes a certain level of competence with programming to write good code, but that shouldn't mean that we stop expecting mid-level and junior-level developers to turn out good code. I don't consider myself a coding wizard, but I have been doing this stuff for awhile and I have picked up some good techniques (and some bad ones). Software development (good software development anyway) is supposed to be hard. It's supposed to be an intellectual challenge and people who do well in this industry tend to be people who like that challenge.

I am also considered a senior-level developer on my team. I think that it most shops that might just mean I have to do the "hard stuff", but it should mean that I should be writing higher quality code and helping my peers, and those less experienced than myself, do the same. So everything flows. This does NOT mean that the new coders can't teach the senior guys a few tricks. Sometimes just mentoring junior developers teaches a more experienced coder a new way to look at a problem. I understand that this may slow development a bit. That may not please the business, but the other choice is lower-quality code. Helping a business understand that higher quality code costs less overall, is part of our jobs as TDD/BDD evangelists.

As usual, I am interested to see what people have to say, so please leave a comment, and read Raphaël's Post as well.

Here it is. It's 3:30am and I am thinking about my life. Grand schemes for my life that are belied by the half-empty Diet Dr. Pepper and a reheated bowl of vegetable fried rice in front of me. I want to travel. I want to experience the awe of standing at the foot of The Great Pyramids. I want to walk through the floating city of Venice late in the afternoon. I want to see Switzerland and New Zealand and Iceland and Africa. I also want to have a family. My wife and I have been talking about kids for years. We've even tried off and on for the last two years. I want to get serious about it. I also want to get back in shape. I've always been a big guy, but now it's getting out of hand. I am about 150lbs overweight. Something must be done. I make great money as a programmer, but we've managed to spend ourselves into a place where we have too many payments for me to lose any of that pay. My wife will also graduate this27_West_Texas_Highway[1] year with a Master's in Elementary Education and is SO looking forward to becoming a teacher. How could I be so selfish as to uproot her now? This is NOT going to be easy. I'm almost forty. I had imagined so much more for my life by this age. What happened? Why hasn't my life turned out how I imagined? More importantly, how do I change my fortunes? How do I get myself moving in that direction?

I have to make it happen. I've spent the last 20-something years thinking that if I paid my dues and worked hard, that all those things would just happen naturally. It doesn't work that way. I have to make those things happen. I have to actively find a way to take those things that I want. Not in an "I take what I want because I'm a overbearing jerk" kind of way, but in a "God helps those who help themselves" kind of way. So here it is. The time has come and I'm going to do it. I've said it before and failed to follow through. I've made the promise to myself and let myself down before. This time I am here. I am at that place where I have simply decided to do it. Stop talking about it and do it.

Obviously, I can't just quit my job and move to Crete and start traveling. I am starting with this blog entry. I am starting with a plan.

Rights Managed1. Exercise at least 3 times a week for 30 minutes (to start with). Exercise includes anything that gets my heart rate up to my target heart rate or brings a muscle group to muscle failure.

2. Stop eating crap. I was going to go with stop eating, full stop. Not realistic. This being a general plan, I know what a crappy diet looks like, and I know what a healthy diet looks like. I choose to start eating a healthy one. Period.

3. Get serious about starting a family. It sounds silly, but she's a full-time student and I'm a programmer with side work and developer community obligations. Finding time is not always easy.

4. Cut every possible cost, except where it might further the overall goal. Spend money on important things like paying off credit cards, making home improvements or buying tools to help with career/personal goals.

5. Speak more in the community. In fact, get more involved in the world community as a whole. I LOVE what I do. I want to meet and talk to others who love doing it too and share experiences with them. I want to learn voraciously and give back as much as I can.

That's it so far. I've made some of these promises before and never followed through. I've just got to do it. 6 years ago I decided to quit smoking after many years of promising myself I would quit. I just decided that I was going to do it and that was that. There was no other option. There is no third door. There is no other life. This is it. If you screw it up, you don't get to yell "DO-OVERS" on your death bed.

For the last few years, my life has been like driving through Texas; long straight and not much scenery along the way. Today I make a new trip. It may take me awhile, and some of the road may be rocky, but I am heading to California's Route 1. I am going to cruise the PCH all the way up.