Friday, September 21, 2007

Excellent Test Driven Development Article

A friend sent me the following Code Project link:


This is a really good article about Test Driven Development. It includes an NUnit primer with some history and context thrown in. Although it was last updated in 2003 it's still very relevant.

Sunday, September 2, 2007

The Future of UML and the American Programmer


The UML (Unified Modeling Language) has been in existence for some time now. As a developer I've been using Class Diagrams, Sequence Diagrams, and Activity Diagrams for years. In fact I just gave a presentation on UML to my team and I'm scheduled to give the same presentation again in a few weeks to some other interested developers in my company.

The OCL (Object Constraint Language), an extension of the UML, has been in existence for roughly the same amount of time and is a necessary ingredient to bring MDA (Model Driven Architecture) to fruition.

The vision of the OMG (the consortium that owns and maintains the UML) is that in the near future all applications will be written using only a modeling tool. There will be no "code base" to maintain (at least in the current sense of the term). Models will compile straight to machine language. Obviously we are not there yet. Jos Warmer & Anneke Kleppe in their book The Object Constraint Language: Getting Your Models Ready for MDA describe a series of five Modeling Maturity Levels (MML if you can stomach another three letter acronym) analogous to the CMMI levels. The most advanced MML, level 5, known as "Models Only" is achieved when "No adjustments need to be made to the resulting code." I assume this will be due to (1) development tools indicating to the developer that a model won't compile, (2) the abstraction levels being such that the mistakes we as developers make in our code today being nonexistant - we will have other problems to fix, and (3) the conceptual gap that exists today between code and the actual business model being reduced.

All of this raises some interesting questions. Although the MDA Initiative was announced by the OMG in 2000 (if memory serves correctly) how many more years will pass before a tool exists that allows MML Level 5 to be achieved? Will it ever happen? More importantly to those of us who are already feeling the squeeze from watching so many of our jobs go overseas to countries with lower labor rates, will business analysts soon be competing with us as well? Will tools advance to the point that many business people will be doing their own application development?

With regard to the MDA vision: Yes I think in some form, in some way, development tools will eventually achieve the abstraction level promised. Programming languages have progressed from machine languages to assembler languages through to today's high-level object oriented languages (with trade-offs at each transition) in the same way. Advances in hardware technology have contributed to this evolution as well. But how long this will take or whether the current MDA standard will be the winner are questions I don't have the answer to.

As to the plight of the North American programmer: Yes more people from different disciplines will indeed encroach on what was previously programmer territory. In the past application developers have been forced to change as staff cutbacks due to economic pressures have forced them to interact more with stakeholders and take on roles previously handled by project managers and business analysts. More and more, programmers are being forced into the corner of ROI (Return on Investment). Agile Methodologies are also working to change thinking about the Application Development Lifecycle and the programmer's role in it. Ten years from now the role of programmer will be different than it is today, no doubt impacted by new methodologies and tools. I think those who wish to remain on the same career path (corporate developer) must continue to learn the business they are supporting, continue to improve their rapport with business stakeholders through communication skills, and continuously retrain themselves as new technology lifecycles appear. This is not much different than what many of us have already been doing.

If you want to remain in the field of programming stay on top of UML, OCL, & MDA. Learn and be on the lookout for possible alternative paradigms such as Software Factories. Learn as much as you can about competing SDLC Methodologies (Process Models) and ALM tools. Learn how your company's business model works. Good night and good luck...

Saturday, August 18, 2007

Ontology

Ontology = Schema. It could refer to a database schema but more often it is in the context of the W3C's Semantic Web initiative. Specifically, the RDF - Resource Description Framework. Earlier philosophical definition - somehow related?

Tuesday, August 14, 2007

Multi-Touch

There's something new and interesting going on at Microsoft called Surface. It's based on a concept that has been around since the early 1980's (Wikipedia has a pretty nice backgrounder). It's called Multi-touch and it is really quite amazing to consider. MAKEzine has a nice little article for you hackers out there. The first thing crossed my mind watching the Surface demos was the movie Minority Report - the Wikipedia article mentions this as well. Actually Spielberg hired a number of professional "futurists" during the production of MR (for more on this see the Production section of this Wikipedia entry).

I rode home on the train this evening with a good friend who actually has a working prototype of something similar to Surface in his basement, though on a smaller scale. He's using an Acrylic screen that he purchased from Lowe's, a repurposed web cam, and some LEDs that he's sanded down. He explained that technology approach he is using is something called FTIR. What surprised me was that the most popular approach to Multi-touch is IR-based (infra red). I Can't say I completely comprehended everything he was trying to convey but I was fascinated.

Another thing Multi-touch brings to my mind is the whole UbiComp movement. I'm working my way through a great book on the subject, "Everyware - The dawning age of ubiquitous computing" by Adam Greenfield.

Fantastic Microsoft Video Training Library

On Microsoft's ASP.NET site they have amassed quite a few training videos available for free at http://msdn2.microsoft.com/en-us/asp.net/bb498194.aspx. There are dozens on AJAX alone.

Business Rules Management

I’m reading an excellent book about Business Rules Management Systems (BRMS) and SOA called, oddly enough, "Business Rules Management and Service Oriented Architecture". I’m still trying to get my head around what the next big thing will be but I’m pretty sure it will have something to do with the two of these.

The author duscusses some interesting nuances, for example there are levels of business rules: those that can never be broken, those that can occasionally be broken, etc.

The Semantic Web will be a part of the larger picture as well but I’m just not sure how it all fits together yet.

Just Purchased a Great Keyboard

The Microsoft Wireless Laser Desktop 6000 is awesome. Low profile keys. Ergodynamically designed. It is worth the money. Read the reviews: the only downside I have seen are complaints about the wireless connectivity. I haven't had any problems with the keyboard but I have had occasional issues with the mouse losing connectivity. I haven't determined the cause but I still have my old Logitech wireless station running so I'm thinking that's what is causing the interference.

Getting the Most Out of Your Cell Phone Part 2: Required Hardware & Software

In Part 1 I went over some basic background information about synchronizing your cell phone with your PC. In this section I’ll go over what you’ll need in the way of software and hardware.But first a little more background. You may be wondering why on earth anyone would want to do what I’m going to show you in the next several posts. Actually if you’re reading this second post you probably already know or aren’t interested but I’m going to tell you anyway ;).
  • Losing My Contacts. The thing that drove me mad about cell phones was that every time I lost one or replaced one or simply switched carriers I was forced to try to recall all of my contacts and re-enter them. Ridiculous. I know Verizon at least now has a way of backing up your contacts but I’m not interested in sharing my personal information with them. I know they can get it but I won’t be making it easy for them.
  • Paying Extra for Media I Own. If I already own the media (either by purchasing the CD/DVD or buying it online) I will not pay the phone company to get it.

  • Ringtones. These companies will kill you on ringtones. Make your own and you never have to think about it again.

Back to the topic: hardware and software. You will need the following…

  1. PC Adapter. My phone has Bluetooth capability. If your phone has it great. You buy a Bluetooth USB adapter and you’re golden for years to come. If you don’t, you’re going have to pay each time you switch phones so make sure your next phone has Bluetooth. Not to mention that if your spouse or other family member have different phone models you’ll have to pay for their adapters too if you wish to work with their phone(s).
  2. BitPim. BitPim is an open source free software application published under the GNU General Public License. It’s free for personal use. Download the latest version.

  3. Media Format Converter. For ringtones, my phone requires all ringtones to be in MP3 format. However the software I use to edit my music, Windows Media File Editor, requires a WMA format. So when I’m finished editing the ringtone I need something to convert it from WMA to MP3 format. I have been using 4U WMA MP3 Converter.

  4. Windows Media File Editor. As previously mentioned, for editing ringtones I have been using Microsoft’s Windows Media File Editor which is a free product available as part of the Windows Media Encoder 9 Series application.

You will likely also need to expand your phone’s available on-board memory with additional Flash memory. Flash memory is getting cheaper every day but a good place to start is DealRAM. You may also wish to rid yourself of messy wires and go with a set of Bluetooth headphones.

Great Free Tool for Brain Dumps

My father recently told me about a really neat tool called FreeMind. I've been working with it now for a few months and I love it. There are actually a number of so called "mind mapping" software tools available, some commercial, others free. Microsoft Visio also has a Mind Mapping tool called a "Brainstorming Diagram" (under "Brainstorming"). I've found Freemind very useful when attempting to put nebulous ideas or plans to paper. It's a great "first-pass" tool for just getting things out of your head.

Just Picked Up a Nice Webcam

I ordered the Microsoft VX-3000 webcam and it arrived the other day from NewEgg. It's a nice camera, as cameras go: extremely easy to setup, integrates tightly with MS Windows Live Messenger, and the thing just works. It lacks facial recognition, low-light sensitivity and other high-end features but I have to say it's really a nice little camera for the price.

Now I'm just not sure of what to do with it. None of my friends own webcams (or will admit to it). What to do with it. Hm. Oh well.

Getting the Most Out of Your Cell Phone Part 1: Introduction

I've been doing this for awhile so I figured I can share it now with confidence. I own an LG VX 8100 which is pretty worn out at this point. My provider is Verizon Wireless. I would love to purchase a SmartPhone model but they are all so damned expensive. I haven't looked lately but from time to time I see them being offered at deep discounts ($50 or even free). However you usually have to purchase a data plan along with a two year contract. That means a monthly bill starting at around $80 + taxes & fees, and about the same for my wife. No can do.

Anyway, here are some things I've been using my phone to do and I'll show you how.
  • Sync phone contacts with email contacts. The value in this is if you ever lose your phone (which I have done) you won't lose your contacts. I enter new contacts using my email since I usually have internet access wherever I am. You can enter them into your phone and later sync them with your email but I don't recommend that.

  • Sync your calendar with your phone. If you're like me you use your email calendar for everything: birthdays, anniversaries todo's, etc. I like to give myself reminders as well (maybe a day or two before the event). With LG phones (and others I'm sure) even the alarms/reminders are transferred.

  • MP3 player. My phone has an expansion slot for memory. Memory is getting so cheap nowadays it's unbelievable. I can get a 2gb miniSD flash card for less than $20, including p&h. That's enough for at least a dozen CDs or more. Many newer phones have BlueTooth so if you're like me and don't care for the wires you can spend a little extra and treat yourself to some BlueTooth enabled headphones.

  • Make your own ringtones. It's crazy to spend money to get ringtones when you can make them yourself and own them forever. I'll show you how to cut pieces of your favorite CDs or MP3s and make ringtones for your phone.

You don't have to be running a Windows operating system (I do). You will have to spend a little money (~$75) but it will go a long way, and for multiple phones. But you don't have to run out and spend the $75 all at once. In fact if you forgo the ringtones you only need $30.

In Part 2 I'll go over the hardware and software you'll need.