iPhone: Did Apple read my blog?

http://compiledmonkey.com/2006/05/09/one-device/Finally, my wish was answered. :) 

Is it Friday yet?

Friday marks the release of the much anticipated iPhone from Apple.  There has been a ton of hate in the blogging and podcasting community about the device nobody has used yet.  Basically, they’re hating on the people who are excited about the device.  People are excited, and why shouldn’t they be?  Have you seen the ads out there?  Of course, everyone knows it’s an ad and it’s designed to sell a product, but it’s still cool and interesting.  Don’t hate on a product you haven’t seen in person yet!  Nobody is saying it’s going to be great or that it’s an amazing product, because those people haven’t seen it either.  They’re simply excited about what they’ve seen and the possibility it holds. 

Moving past that, I’m going to be picking one up on Friday if I can find one and I like what I see when I get there.  If I do end up getting one, look forward to a full review early next week on Richmond.com!

Introducing DotNetSvn

Given our love for open source, C#, and Subversion, Jon Lumpkin and I started a new open source project called DotNetSvn. Taken from the DotNetSvn website, “Our goal is to provide a Microsoft .NET platform for developers that utilize Subversion. We aim to develop a library, using C#, that is a wrapper for the Subversion command line. In the long term, our goal is to develop a standalone Windows client for Subversion access.” We’re well aware of TortoiseSVN and both use it every day. Our goal is not to be TortoiseSVN, or even to replicate it. We’re aiming to first create a library that anyone can take and utilize how they see fit. That’s the core goal of the project. In the long term, and probably branded in another way, we’d like to create a standalone Windows client for Subversion using the DotNetSvn library to drive it.

Today we released version 0.1.0 of the project, our first actual release. It’s very incomplete but does contain a fair number of the Subversion commands, such as list and info. We’re hoping to see a few downloads and gather bug reports and enhancement requests into our project management tool.

You can find more about the release here: http://trac.dotnetsvn.com/wiki/Releases/0.1.0


Digg!

What I’m reading…

I’ve been making my way through two books;The Old New Thing: Practical Development Throughout the Evolution of Windows” and Dreaming in Code: Two Dozen Programmers, Three Years, 4,732 Bugs, and One Quest for Transcendent Software“.

The Old New Thing is a look at the evolution of Microsoft Windows from someone who’s been there since the beginning.  It’s not exactly the best book in the world but does give you an interesting look at design decisions that were made.  A lot of the book seems to be a half angry developer defending Windows from all of the common complaints often directed towards Microsoft.  I’ve semi enjoyed it because some pieces of the book are interesting.  Other pieces of the book are overly detailed in terms of Win32 code and simply not worthwhile for most people to read.

Dreaming in Code is a look at an overly ambitious project from it’s beginning.  It examines the process from day one and gives you an excellent look at the real process of software development.  The example turned out to be a failure in many ways, which leads to an even better learning experience for the reader.  I’ve found myself frustrated at times while reading the book.  You’ll quickly see a common trend throughout the book; the project group can’t seem to make a decision and run with it.  In all seriousness, it takes a solid two years before the group has a real plan for their project.  Now, that isn’t a flaw in the book, but rather a plus.  The book conveys that project so well that you can almost get emotionally stressed out by the lack of progress these people are making.  I would definitely recommend this book to anyone involved in the software product life cycle as you’ll learn a lot of what not to do.

This morning my next two books came in; Design Patterns: Elements of Reusable Object-Oriented Software” and “Refactoring: Improving the Design of Existing Code“.  Both of which are a little less than light reading, but I’m looking forward to them nonetheless. 

Project Management

Equipped with a first class source control management tool and automated build and deployment environment, we were ready to move forward with development. We’re in the early stages of a new project and the planning has been really important to get right the first time. We discovered quickly that we were missing a rather important piece to successfully manage a software project; a project management tool. I have been using Microsoft Project to scope out the major pieces to the project, estimate times, and coordinate efforts across a number of developers. What Project fails to offer is a way to communicate these tasks in a social way. I should be able to easily get very detailed about a task and the developers should be able to see that task and comment on it openly. In addition, we also wanted a way to coordinate releases as we move forward. We’d like to know, graphically, how far along we are to the next release of our project at all times.

The tool we found to do all of this and more is called Trac. Trac is an open source project management tool designed to stay out of the developer’s way. Trac also provides a Wiki for documentation. Trac allows you to create milestones for your project with due dates. You can then create tickets against these milestones and track progress along the way. Tickets are classified as functionality, defects, or enhancements. Tickets give us the detail we need to complete high level components you might typically lay out using Microsoft Project. Each ticket provides a message board style communication medium to discuss the specifics of the ticket. As tickets are resovled, the progress is instantly reflected in your milestones.

A huge plus with Trac is it’s integration with Subversion. Trac provides a web based view of your repository. You can view comments, revision numbers, and even file diffs directly in your browser.

Continuous Integration

Now that we’ve made the switch to Subversion for source control management, we’ve opened the door to a whole new world of tools we can use during our development process.  Part of my job is to evaluate these options and find the right way for our group to develop good software efficiently.  As with any software project, developers create bugs and developers break builds.  Discovering these problems as early as possible helps us fix the issue easily.

The concept of continuous integration is constantly compiling the project and running any unit tests it may have.  The results of these tests should be easily accessible to the development team.  CruiseControl.NET is a CI tool for the .NET platform that integrates nicely with Subversion.  CC.NET also has support for NAnt, an XML based build tool, and NUnit, a framework for unit testing in .NET.

I spent a little time over the last 2 days discovering how these tools work and setting up a CI environment for our projects.  So now, whenever we commit a change to source control, CC.NET will detect this commit, build the project, and run the unit tests.  The status of this process is cleanly presented on an internal website and even gives us a dashboard view for a quick sanity check across our Subversion repositories.

Subversion

I’ve talked about Subversion a few times in the past. For whatever reason, I’ve always been interested in it and I’ve always wanted to deploy it for daily use. I think I got pretty close to doing so during my final months with Timmons Group. I can remember the tech support guy dodging that request because since it was open source he couldn’t pick up the phone for support if we had any problems. I wonder what Microsoft would have told him if he called them about support for Visual Source Safe 6.0d…

When I made the move to CapTech they were coming off of Subversion and moving to Team Foundation Server. I personally loved TFS. Not all of the Microsoft team agreed, but I never had an issue with it. The best feature I saw, besides the raw source management, was the integration of work items. I could easily associate a changeset with a bug or work item that my business analyst had created. That was seamless integration.

One of the first decisions I had to make at Richmond.com was with source control management. They too had a Source Safe 6.0d deployment. I decided at the time to make use of Visual Source Safe 2005 and its HTTP capabilities. I thought about Subversion then, but decided against it because of the lack of integration with Visual Studio. If Source Safe does anything well, it’s integration with Visual Studio. At the time, the Richmond.com development team was pretty stationary. By that, I mean everyone had desktops and access was pretty limited. Since then, we’ve expanded a bit, and in the process have enabled our team to be more mobile. For the most part, we’ve moved to laptops. We’ve also recently installed a new T1 line into the office and enabled VPN access at the same time. Suddenly our working environment has changed and we’ve become much more flexible in how we do our jobs.

With all of the changes, my hopes had been source control access from home via the VPN. As I tested it for the first time, I happily could access the network machines and database servers. However, when I went to work with Source Safe through Visual Studio, it just wouldn’t work. I think that was about the breaking point. I’ve always wanted to use Subversion and we needed a solution that was designed with a distributed workforce in mind. Not to mention the stability over Source Safe’s wonderful reputation.

Today we made that switch. We have a set of Subversion repositories setup on our development environment that give us access from anywhere by way of the VPN. No longer do I need to head to the office at all hours of the night because of a parser failure or a random bug in the code. Once I write a script for automatic backup of the repositories, I’ll be able to sleep peacefully. :)

Busy!

The lady and I have been really busy with the wedding and work. We put an offer on a new house on Monday and received the acceptance call the next morning. At the end of May we’ll be moving into our first home. It’s on the southern side of the river, but not so much south side. It’s in the Bon Air area near Stony Point.

Work has been pretty busy. We’ve got a lot of things going on right now. I guess I can’t give too much away but we’re doing some really interesting things with the web site that will come to fruition in the next few months.

Mac, our “puppy”, has gotten quite large over the last few months. He’s just over 4 months old now and is easily 35 pounds with paws about as big as my fist. It’s funny to watch him get bigger but still rumble around the house like he’s a 6 week old puppy. I’m really amazed at how well he’s learning. He understands a fair amount of what we say to him. And for as much training as we do for him (cough *none* cough), it’s impressive. I think he benefits a lot from the older dog we have, watching how she carries herself around the house.

I’ve been meaning to get newer pictures of him put up. I’ll get to that soon I hope. Maybe some pictures of the new house as well…

Review of Vista

So I wrote a review of Windows Vista and our editor liked it enough to publish it in our Science & Technology channel. Cool. :D

Link

The World of Dual Monitors

Man it’s nice to have dual monitors again.  Back in what I like to call “the good old days” at VCU, Matt and I had dual 17″ LCDs on our desktops.  We were so lucky and just didn’t know it.  My next job was with Timmons Group.  Our setups were mobile in that we had laptops and a docking station.  Some of the guys would hook up their external monitor and create a semi dual setup by using it along with their laptop display.  I personally didn’t really care for the size and resolution difference going back and forth between the two displays.  One day I randomly found a study that showed a ~30% increase in productivity while using dual monitors.  I sent that link to our COO, who is a completely awesome guy, and about 2 days later it was “made official” that our group should all have dual monitors.  From his perspective it’s an easy choice.  Spend about $250 per person to gain any productivity increase at all; easily worth it. Once it got to the IT department we were quickly shutdown.  Our docking stations didn’t support dual external monitor support, so no duals.  HP sucks.

So on to the next job; CapTech.  Here I was completely mobile… to the point that we didn’t even have desks.  There was really no hope in having such an awesome setup there.  I was lucky for about 2 months to work in the lab and use an external display with my laptop.  The resolution of my laptop was so good that I could bare going back and forth all day.

Now, I’m at Richmond.com.  I got a laptop from Dell with Vista and have been enjoying that.  Last week I ordered a docking station and what kind of support does it have; dual monitors!  We ordered 2 20″ widescreen LCDs and all I can say is “WOW!”  They showed up this morning and I quickly got them up and running.

I firmly believe in the power of having dual monitors.  Not only do you get double the screen real estate but you capture the attention of your employees by providing them with a cool “toy”.  Little do they know they are being more productive… muhahahahaha!!!  :)

Next Page »