Friday, March 30, 2007

Another Strategy/Tactics Post

As I look over the last 6 years as a consultant, one thing becomes very clear, technical solutions by themselves will only get you so far. As a great leader once said Good tactics can save even the worst strategy. Bad tactics will destroy even the best strategy” (George S. Patton) this is very true for software development, but with a slight twist.  As long as you continue an effective tactical operation, the problems with the strategy may remain hidden.

From 2001-2005 I developed a mission critical system for a very large company, over the course of these years, I did what it took (including searching out Internet café’s in Key West) to keep this system operating as efficiently as possible. As an outside technical development asset, my primary mission was make sure I kept the business constituents happy, the scope of the change I could affect on the organization was limited, for long term, this change would be required to embrace and support system. As I left this engagement in early 2006, it was clear that this system was not going to be properly supported. In March of 2007 for better or worse, Software Logistics was re-engaged on this effort and will make a significant positive impact.

So how does this come back to my original quote from GSP? In this effort I worked on the “Product” and very little on the “Process”. The product succeeded at the tactical level with assistance of Internet cafés in Key West, however at the strategic level the proper systems and protocols where not being put in place.  It was clear the technical/tactical part of the solution was sound however the strategic part needed some help.   What was required for long term success on this project was a complementary skill set. Enter my business partner David E. McCracken, I’m extremely excited to work with Dave on this project going forward. There is a considerable amount of power and flexibility within the system that was developed however this power and flexibility came at a cost of an investment in understanding two domains, the first being a non-trivial understanding of the subject matter data and the second being an understanding of the architecture.  The adoption beyond the immediate team required considerable effort that in some way is mutually exclusive to the day-to-day activities.    This effort is not in creating the code, stored procedures or even the documentation around these software artifacts.  This effort is in making sure that our tactical efforts that we perform as software engineers today not only satisfy the immediate and pressing needs of the business, but also are done is such a way that they can be repeated on a consistent and predictable fashion in to support strategic goals.  In the short term tactics can make up for poor strategics, however in the long run this is not a sustainable model.  Some great gems of knowledge can be found on David's blog on some ideas on how these efforts can take place.

Bottom line is how much are you working to satisfy your business constituent's tactical and immediate needs and how many fail-safes do you have in place to ensure the long term strategic organizational goals?  Do you have the right infrastructure in place for both these equally important journeys?

-ec

Monday, March 26, 2007

DevConnection Orlando 2007 - Day 1

I was up in the air as to going to DevConnections earlier this March, but after making the decision and attending Day 1, I'm extremely glad I showed up.

Sunday, March 18, 2007

NiVek J.D.'s Maiden Voyage

Everything came together today for NiVek's J.D.'s official first journey. NiVek J.D. is a remote control tractor purchased from Target that was converted over to be controlled via a small on-board computer programmed in Java. The same basic board I used for NiVek I was used for this "robot".




This robot has two cool features not on NiVek I. The first is it has a GPS module purchased from Parallax. The second and which I think is really exciting is it using a Windows Mobile device as a "Repeater" that allows for communications from the NiVek embedded computer to a a PC. This design is based upon software components that are part of WiMo or Windows Mobile Robot, you really need to check out that site! This consists of some kewl software components that are made up of a Compact Framework 2.0 application that runs on Windows Mobile and a collection of services that run under Microsoft's Robotics Studio.

NiVek J.D.'s Hardware

Basically the radio was just ripped out of the existing remote control tractor and and the motors were connected to the NiVek embedded computer. As with the "original" WiMo, the Windows Mobile device was mounted on a servo with a CD-ROM. The original WiMo used a SmartPhone not a Pocket PC so that probably worked out a little better, it's nice to be able to pan the camera however with my driving skills (smacking into walls) one of these days, I'm pretty sure the CD-ROM is going to end up in pieces ;-). I need to re-think that part of the design.

NiVeK J.D.'s Maiden Voyage (well at least one of the first few)

50,000ft System Overview

  • The actual robot itself is controlled by an embedded computer based upon a small PIC processor with some additional components that allow it to be programmed in Java with 32K RAM & ROM this was purchased from Parallax and is called a Javelin Stamp. (See this post for more information)
  • The embedded computer has a BlueTooth transceiver module that allows it to communicate with a Windows Mobile Device.
  • The Windows Mobile Device has a Compact Frameworks 2.0 application running code available from the WiMo Bot web site.
  • The Windows Mobile WiMo application communicates with the robot via BlueTooth. It also has the ability to listen on a socket for connections from a remote application. Since this is a Windows Mobile device (in my case a phone), it will not only work while it's connected via a local LAN via WiFi, but it can also communicate via the GPRS radio and be a sort of "repeater" that will allow it to communicate to a host controller program anywhere it has cellular reception, just think about this...this is very kewl! A nice feature is on the opening screen shot of WiMo it tells you the IP address of the device.
  • On the PC side you have a set of Microsoft Robotics Studio services. When these services first start you will be greeted by a dialog that will allow you to enter the IP address of the remote Windows Mobile device.
  • Once you press "Connect" (and the software gods are shining on you) you should establish a connection from your PC to the WiMo application.
  • At this point a couple of additional forms will show up from the MSRS services. The one in the upper left is displaying console messages from MSRS (Microsoft Robotics Studio). This is a great way to see what's actually going on with your services.
  • The one in the upper right is from a service that came with WiMo (with the addition of buttons to control the motors). Another really cool built in feature with WiMo is the ability to use the camera on your Windows Mobile device to send pictures back from your robot. This from also sends messages to the core WiMo communications MSRS service to pass those to the WiMo device application. These messages allow for control of the robot from the PC.
  • The dialog in the bottom is an additional MSRS service that was built that subscribes the the TextMessageReceived event from the core WiMo service.
    • The NiVek embedded computer spits out GPS readings every second (probably need to change this so it only sends when the location changes).
    • This gets sent from NiVek to the the WiMo software on the device with a simple <stx><etx> binary protocol. The WiMo software turns it into a simple text message.
    • For our GPS WiMo constructs a simple text message "GPS: #Sats=4 Lat=28.4.042 Long=82.42.5522".
    • This text message is sent over the wire from the Windows Mobile application to the WimoComm MSRS service.
    • The WiMo MSRS service picks up the text message and finds any services that subscribe to this type of incoming event.
    • The GPS Point plotter MSRS service subscribes to these messages so it takes those readings and plots the on the crude dialog you see below. The challenge here is that for a robot this size of NiVek J.D. if it moves 50ft that's a long distance, and the resolution on the GPS module I purchased just doesn't seem to be all that accurate.

Finally one last picture of you host at the controls!

Looks like my day job is going to be busy over the next few weeks with DevConnections and MEDC but I hope to sneak in a few hours every once in a while to push this effort forward!

Can anyone figure out what NiVek stands for?

- ec

Monday, March 12, 2007

Client Project – ConnectWise Mobile

A couple of years ago, I was contacted through a current client that they had a "Fun Project" to work on, normally when I here this I go running for the hills!  This one was different, ever since my early days as an embedded systems programmer, I had a passion for mobile devices.  I've always played around with these technologies since early Windows CE devices but as in this post until the last couple of years the hardware and development platforms just weren't out there to realistcally do anything but non-trivial apps without a very significant development effort.  The application was for a company that has a professional services automation tool and is called:

Once I completed the initial requirements gathering and design, this application started out life as a Compact Frameworks 1.0 application on Windows PPC 2003 using SQL Server CE.  It currently runs on the Compact Frameworks 2.0 on Windows Mobile 5.0 and I will be attending MEDC 2007 to learn about any changes required or new capabilities offered in new framework to be offered later this year.  Along the way I converted CFNunit to work with the Compact Frameworks 2.0 and add a little more functionality on the PC for running these tests.  I also learned a ton about what it takes to make a PPC CF application work without a stylus, this doesn't really come that way out-of-the box.  Finally we also have a desktop version of this app using the same Business Objects and Control Library.

This site discusses the features of this application much better than I could do here so check it out!

-ec