Sunday, October 29, 2006

The Black Box

When I was in electronics school in the 1970's, we often spoke of a "black box": You would define the required outputs for all possible combinations of inputs. It didn't matter how the black box worked on the inside; only that it met the required spec. The engineer would develop a product using some number of various black boxes, promoting reuse and allowing focus on the results rather than the internal workings of the black box.

Good software is constructed in much the same manner. The designer breaks down an application into functional units. In the software world, the black box might take the form of a module, class, .NET assembly, or even a Web service. The common thread is that each unit is developed and tested separately, employing design practices that properly handle not only the expected, but also intelligently recover from inappropriate inputs. Those self-contained units can then be assembled into an application.

Another advantage of this approach is that these black boxes can be updated without adversely impacting the overall design.

A great example of this design methodology is the automobile. An automotive designer takes pre-designed, pre-tested objects such as the motor, transmission, radio, tires, and in many cases a standard chassis and body panels, and assembles those units into a complete product. Upgrading the motor, transmission or radio is simply the choice of the consumer, rather than re-designing the product on a one-off basis.

In summary, good software is constructed in a modular fashion, where each function is clearly defined, designed and tested to meet or exceed the black-box specification. These pre-built units are then assembled to create the application.

Saturday, October 14, 2006

Remote Control

Windows XP's Remote Desktop feature introduces a new world of connectivity (even with its shortcomings). The first time I connected via VPN to a customer server, I knew that this was truly the future.

My primary home office workspace has a HP desktop with a 19" CRT, alongside a ThinkPad notebook. I will RDP from the HP to the ThinkPad where I keep my latest files, using the HP's huge disk for backups and archiving customer files. That way, I have the full-size keyboard, networked printers, and big monitor when I'm "in" but when I run out, the notebook has all the up-to-date bits.

Remote administration in the Linux world is commonplace; on the home network I'm using VNC Viewer from SourceForge.net to connect from my Windows machines to my Linux machines.

Speaking of shortcomings, XP's Remote Desktop does not allow the local user to view what's going on; the VNC Viewer can be config'd so that both parties can interact simultaneously. Secondly, Windows 2000 is left out (you can install a client to connect to XP, but not vice-versa) but the solution there is another open-source program, Real VNC which runs in the system tray as a service and consumes around 7,500 K per Task Manager.

Lastly, the Real VNC + VNC Viewer combination does not flip the Num Lock key "on" like Remote Desktop does on my ThinkPad (pet peeve).

Thursday, October 12, 2006

Windows Server Core

There is a new development on the horizon coming from the Windows Longhorn Server project, it is called Windows Server Core. Quoting from the Redmond Magazine article:

"Server Core can only act as a file server, domain controller, DNS server or DHCP server. As such, it's far from being a full-fledged Windows operating system (although Microsoft is considering other roles for future versions). Besides these four core roles, Server Core also supports Cluster Server, Network Load Balancing, the Unix subsystem, the new Windows Backup in Longhorn, Multipath I/O, Removable Storage Management, BitLocker drive encryption and SNMP. Server Core also supports Remote Desktop administration, although you'll only get a command-line window when you connect.

"That's about it. There's no Internet Explorer, no Outlook Express, Calculator or Windows Paint, no Wordpad, Windows Messenger or Media Player -- just the basics. Microsoft did add Windows Notepad to Server Core at the request of several sneak-preview customers, but even that's a stripped down version. You can't, for example, use the "Save As" function, because Server Core doesn't have dialog boxes for functions like Open and Save As.

"There's also no Microsoft .NET Framework. This means you can't run any managed code on Server Core. Mason says his development team wants to add the .NET Framework to Server Core, but they first need the Framework team to modularize the code so they can add just the essentials. The Framework's absence in Server Core is significant. For example, you can't run Windows PowerShell, Microsoft's vaunted new management shell, on Server Core. "

This to me sounds like an excellent idea, one that flies in the face of the current drive towards GUI everything, transparent windows, automatic previews and such.

Sunday, October 08, 2006

Portable Apps

There are many exciting things going on in the open-source world. One of the most ambitious is the Portable Apps Suite which includes "...web browser, email client, web editor, office suite, word processor, calendar/scheduler, instant messaging client and FTP client, all preconfigured to work portably and be easy to back up. Just drop it on your portable device and you're ready to go."

In fact, I am writing this blog entry using portable Firefox, which behaves much like the non-portable variety.

All of the portable apps have a common thread - nothing is installed on your hard drive, which makes for a much cleaner system. Unzipping and running the suite from a 512 Meg USB thumb drive, about 1/2 of the space is used by the suite. Actually, the unzipping took almost an hour from a Pentium 4 at 2.8 GHz with 1 GB of RAM, to a USB 2.0 thumb drive.

So far, I've only become familiar with AbiWord (first encountered in Ubuntu Linux) and of course Firefox.

As it turns out, what I'm using is the Beta 1 release, which is being superseded by Portable Apps Suite 1.0 due "next week". Stay tuned.