I’m often asked about tools and
technologies that I use on a daily basis. Like everyone else out there, I lead a
pretty busy life and I’m always trying to find ways to be more efficient or to
use tools that better support the way I work and live. Below you can find a list
of the tools and technologies that make my life easier in some way or the other.
I’ve cataloged these tools using some general categories to help delineate
functionality. As much as possible, I tried to avoid the mundane things and
concentrate on smaller niche tools or new technologies that you might not have
heard of or actively use and which might enable you to tweak a bit more
efficiency or productivity out of your day. Enjoy and please feel free to add
comments citing tools that you believe might be of interest to others.

Digital Media
-
Wall Street Journal on Audible.com – The Journal is the way that I
get my news every day. No commercial interruptions, no funding drives, no
annoyances. The MP3 version shows up at around 6:00 am every morning and is
ready for download to my iPod. The daily read is about an hour long and
includes selected articles unabridged and read in their entirety.
-
IT Conversations - Some really great Podcasts by leading edge
thinkers in the IT industry. The material is first rate strategic thinking
and helps keep me centered on larger issues even when my day-to-day concerns
are often much more pragmatic.
-
TiVo,
TiVo Central, and
TiVoToGo – Yeah, almost everyone offers DVRs these days but TiVo was
not only the original, it has remained the most fully featured. With TiVo
Central, you can schedule your recordings from a Web browser so that you can
make sure to record that show you forgot to schedule last night. With
TiVoToGo, you can transfer TiVo recordings to your PC, laptop, or most
recently to a number of mobile video devices, such as the video iPod.
There’s nothing like watching Lost or 24 on the walk into work in the
morning.
-
Video iPod and the
Transpod – The video iPod is truly an amazing thing. All that
storage, all those songs, and a phenomenal little viewing screen. The
Transpod lets me take my music on the road with me and will continue to get
good use until I get my next car, which will definitely have some type of
interface for the iPod.
-
Handy Backup – I’ve never had a hard drive with critical personal
files crash on me. Statistically speaking, though, it’s only a matter of
time before this happens. I therefore use the Handy Backup tool to do
incremental and occasional full backups to an offsite FTP server. The disk
space, you ask – MediaMax Streamload - $4.99/month for 100GB storage.
-
Turbine Video Encoder – Used for taking my AVI videos and converting
them to the industry standard Flash format for video distribution. This is
the same process that YouTube does except that it’s not them doing it, it’s
me.
-
Audacity – An open source sound recorder and editor that’s great for
recording, editing, and publishing audio in MP3 format. I’ve use this for
all of my GeoGlue recordings.
-
Afterdark CD Series – With different techno flavors representing a
variety of US and international cities, the Afterdark collection contains
enough funky grooves to get you through days of work without ever hearing
the same song twice.
Web-Based
-
Firefox – Once you go to Firefox, you won’t go back to Internet
Explorer. Firefox is benefiting from fresh ideas in a market where others
had long since capitulated to Microsoft’s dominance and meaningless updates.
Microsoft’s newest version of Internet Explorer, with tabbed browsing,
integrated search, and customization is a blatant rip off of Firefox. Thanks
but no thanks.
-
Netvibes, RSS, and
Delicious – Earlier this year, I switched from my home page of over
3 years – Google and moved to Netvibes, a Web 2.0 home page. While Google,
Yahoo, and Microsoft struggled to catch up with their home grown portal
offerings. Netvibes and its brethren (such as Pageflakes) have created
vibrant ecosystems with all of the portal services that you might need and
open APIs to create your own services should you see fit. Two of the most
useful services are the RSS and del.icio.us modules. Having access to all of
your blogs and favorite links from one well organized home page will
contribute a lot to your efficiency.
-
Safari and
Books 24x7 – As an addict to technical books, these two sites were
godsends in so many ways. With enterprise subscriptions, the entire array of
Apress, O’Reilly, Addison Wesley Professional, and Wrox technical books
amongst others are at your fingertips. If you buy and read a lot of
technical books and can handle the digital media, this is definitely
something for you. If the subscriptions seem a bit too pricey, a
Professional membership to the Association of Computing Machinery (ACM) will
get you entry grade access to both of these collections.
Software Engineering
-
Visual Studio Professional and
NetBeans - On a day-to-day basis there’s really no other way to do
professional .NET and Java development than with a professional IDE. For
.NET Visual Studio professional has all of the tools that you need and
avoids the overbearing Team System overhead that you might not. With Java,
I’m doing my work right now in NetBeans although I’m working with a bunch of
different IDEs to determine which I like best. Oracle JDeveloper and
MyEclipse are a close second and third, respectively.
-
Enterprise Architect – UML modeling, team-based modeling, round trip
code-model synchronization and design tool extraordinaire. Enterprise
Architect does it all and does it all well. All of this for $200 per
license. EA is arguably one of the best buys in the industry and one tool
that you’ll never catch me without.
-
TestDriven.NET – A must have for any .NET developer, in my mind.
TestDriven allows you to run a variety of unit test suites (NUnit, MbUnit,
and Team System) directly from the Visual Studio IDE. One of the killer
features is the ability to run the tests with the debugger. Recent features
include the addition of menu items leveraging NCover for code coverage and
Lutz Roeder’s Reflector for disassembly and dependency analysis amongst
libraries.
-
WebHost4Life and
eApps – I host a variety of content online and have found these two
hosts to be the best over time. WebHost4Life provides reliable .NET hosting
using .NET 1.1/2.0, full SQL Server 2000/2005 functionality (with full
Enterprise Manager access), registering of COM/COM+ components, and set up
of SharePoint sites. eApps provides Java and Ruby on Rails hosting. Java
hosting includes JBoss/Hibernate, OpenLDAP, and Subversion repository
creation.
Knowledge and Document
Management
-
OpenOffice – Although I’m still locked into Office at work,
OpenOffice provides a free alternative from my home computers. With support
of the new Oasis standard OpenDoc format, reading from and saving to
Microsoft compatible (e.g. Word, Excel, Powerpoint) files, built in PDF
creation, and conversion of Powerpoints to Flash, OpenOffice meets all of my
home document management needs.
-
Subversion and
TortoiseSVN – A great example of truly open source software beating
out best of breed commercial competitors. Subversion is an open source
revision control system that is replacing CVS as the repository of choice
for managing open source and commercial code alike. Running on top of
Apache, Subversion communicates very efficiently via http and is thus a
great choice for distributed development. With widespread plugin support,
including the Windows Explorer-based Tortoise SVN, Subversion is a great
choice not only for managing source code but for managing changes to any
documents that might be accessed by a variety of users.
-
The Brain – Although there is a lot of mind mapping software out
there, the Brain is by far my favorite. It’s a great way to organize
disparate thoughts; allowing me to capture hundreds of thoughts, focus on
the ones at hand and drill down through the whirling nodes of radial
visualization with a few clicks to get to any of those hundreds of thoughts
or ideas. Check this one out online.
-
Win2PDF Pro – I distribute almost all my Web-based documents as PDF.
Win2PDF Pro is much cheaper than a full version of Acrobat and it let’s me
create PDF from most common programs. The pro package includes password
protection, encryption, PDF hyperlinks and other niceties.
-
Camtasia – Useful for illustrating the use of particular software or
techniques. On-screen activities are captured and may then be edited down
and described with the addition of narrative audio tracks.
-
Whiteboard Photo Image – I am a big advocate of using whiteboards as
a documentation and facilitation tool. To avoid recreating the informal
images on these whiteboards, I suggest the use of digital cameras to capture
what’s on the whiteboards and the use of software like whiteboard photo
image to make these images a bit more true-to-life of the sketches that were
originally created. The tool also does a great job with sketches, CRC cards,
user stories, or anything else which starts out as paper but which you might
wish to give a bit more permanence.
It’s been a while since I’ve posted my last entry. To get
myself back in the groove of things, I thought that it might be nice to post
something lighthearted and entertaining that your average tech weenie would
enjoy. Now I don’t know if you follow the gurus of the technology world but my
research has turned up a set of long lost brothers amongst the talking (or
blogging) heads. Check out the two pictures below. The one on the left is Bruce
Schneier, cryptography and computer security wunderkind and designer of several cryptographic
algorithms, including Blowfish and Twofish. The one on the right is
Martin Fowler, refactoring, pattern, and agile god.  
I couldn’t believe it myself when I first saw this but a
side-by-side of these two gentlemen makes things perfectly clear. There’s got
to be some common lineage here. It’s crazy to think about what our world might
have been blessed with were these two great minds not separated at birth. Agile
cryptography? Algorithmic refactoring?
I enjoyed Harry Piereson’s well thought-out response to
David Chappel’s entry on SOA and the Reality of Reuse. I couldn't have said it
better myself, though that won’t stop me from trying. The way I see it, David
brings to light the fact that the emperor has no clothes and then Harry tells
you why the emperor is naked. The focus on business context in Harry’s entry
really caused me to think about why business logic reuse fails.
The use of the word “context” stirred up in my mind the
classic black box, gray box, white box argument. We can expect Java buttons or
.NET Windows objects to behave in
a low context, black box manner. From contextual business objects, we can at
best expect gray box behavior; although white box is much more realistic. I
guess in the box world, the opacity of the box is tantamount to the amount of
context that can get through. 
This said, in business object environments that demand high opacity/context, can and should we strive for reuse? I think the answer is
still a resounding “yes”. We just need to do it in a realistic manner. So what
does this mean? If our experience has shown that neither objects nor Web
services are the appropriate level of abstraction for business logic reuse,
where do we turn?
In my mind, analysis patterns
provide the answer to this question. Analysis patterns are the long lost
stepbrother of the popular design patterns. Martin Fowler does a great job of categorizing
common analysis patterns in his book of the same name. However, it is Eric Evan’s
Domain Driven Design book that provides the real insight into the process that
will lead to analysis pattern identification.
The true beauty of analysis patterns is that they not only work
within their target domain; they have the uncanny ability to shed new light on
similar situations across domains. I can well imagine that the case transfer
pattlet we created applies not only to the state government business domain for
which it was intended, but also fairly well to the transfer of cases in the
legal system domain.
In such high context, business rule driven transactions such
as case transfers, I would never aspire to build a reusable object or service.
Letting the analysis pattern speak for itself, I feel as if I’ve gotten all of
the reuse capability I need to at that level. Attempting to create a standard
programmatic solution that incorporates all the complexities of the pattlet’s
context is likely to cause more problems than it solves. As caretakers of the
business logic we need to understand the negative impacts of overengineering a
solution and learn to use the right colored box for the job.
Programming Atlas, by Christopher Wentz, has not yet officially been released but I’ve had the chance to read it and keep up with progress through the O’Reilly Rough Cuts program. With its last update happening over a month ago, I anticipate that its now press ready and that a review of the book would be appropriate at this time.

Even though Atlas has not yet been officially released, this book is already a late comer to the market. It’s been beaten to market by a variety of AJAX texts that included some coverage of Atlas and at least one dedicated Atlas book from Apress. With all the press around Ajax and the huge Microsoft ASP.NET programmers market, putting out a book in the Atlas category is an opportunity that won’t be ignored by the major publishing houses. After trying out Atlas for a while during its Community Technology Preview (CTP) release and seeing the fairly extensive documentation and examples released by both Microsoft and the community, I tend to think that it’s an opportunity that they might best have chosen to ignore just the same.
Working through Christopher’s book, things appeared to be clustered into several sections. Although this is not officially the way the book is broken down, it makes the most sense from a reviewing standpoint:
- Introductory Chapters – Introduction to Atlas, AJAX, JavaScript, and client-side controls. This material takes up the first eight chapters (i.e. half) of the book and the information contained within can largely be garnered elsewhere including articles, books, and the Atlas documentation. If you’re not entirely new to AJAX, this section of materials is skimmable or skippable entirely.
- Server-Side Chapters – These chapters cover using server data, custom data sources, Web services, and cross-domain calls using a server proxy. This is by far the best original material in the book and is well worth a read.
- Atlas Implementation Chapters – This section covers the broadest array of topics. Some of it, such as extending controls and using Atlas with Web parts, is very interesting material. Other sections, such as Map mashups (using MapPoint, blah!), and the Atlas control toolkit (great tools, no value added above and beyond MS materials).
- “Other” Chapters – Certainly not what I bought the book for. Using Atlas with PHP, other AJAX tool coverage, although interesting, was put at the tail end of the book for a reason. This material could just have well been made into appendixes or omitted entirely.
All in all, Christopher’s writing style is good and he gives adequate coverage to the breadth of Atlas topics. This book might make for a good desk reference but is a tedious end-to-end read. Stick to the documentation or go for more pragmatic materials such as O’Reilly’s other offering in this area, Getting Started with Atlas, from their shortcuts series.
Following up on a long-standing desire to get domain knowledge out of our heads and onto paper, a colleague and I engaged in writing our first state government pattlet. We spent about two weeks of our spare time putting together an abstract approach to case transfer based upon our varied experiences. We finally have a draft version which we feel comfortable sharing online.

As far as I know, this is a first-of-its-kind endeavor for state government. We drew heavily on Fowler’s Analysis Patterns: Reusable Object Models as background material for documenting the patterns. The underlying analysis, design, and approach are all original, though. Please understand that the pattlet is not perfect. We’ve marked it as a 0.1 version to reflect its state and we intend to update it over the next couple of weeks.
We would really appreciate your feedback on the pattlet. Specifically, we’re looking to understand if there are important case transfer nuances which we missed, flaws in the analysis and design, or significant domain details which might shed new light on how to approach this problem. I know that most people feel very comfortable with email but I ask you to please consider using the comments section on this page. That way, everyone can benefit from your insights.
Note that the pattlet is licensed under the Creative Commons “Attribution Share-Alike” license. This license falls along the lines of common open source software licenses, allowing you to modify and re-disseminate this as you see fit, so long as you attribute the original work to us and any new work goes out under the same license as the original. We plan on distributing future pattlets under the same license. It seems to be a happy compromise between rights and reuse.
Right now, we are only giving access to the final product in PDF format but we have kicked around the idea of hosting sample code, pattern documents, and design models on a Subversion share. Let us know if this would be interesting or if we’d just be wasting our time in this endeavor. Finally, you can find the pattlet by clicking on the link below. Case Transfer.pdf (164.24 KB)
The
article summary “Microsoft vs. Open Source: Who Will Win?” from the Harvard
Business School (HBS) Working Knowledge magazine bubbled up on the del.icio.us most popular list this
morning. Being that this is one of the “classic debates”, I felt compelled to
give it a read. As one might expect of an economic publication from HBS, the
material is relatively academic in nature. Some of the suggestions for folks in
Redmond to remain competitive with the open source community sound great in
theory but are unlikely to ever cut it outside the ivory towers. Price
discrimination on Windows software is one repeated suggestion. At first glance,
this appears very logical, since the marginal costs of distributing
additional copies of Windows are near nil. However, this would lead to a very
rapid deterioration in pricing structure leaving little or no pricing
transparency. People are agreeable with paying $300 for an iPod because they
know that everyone else is in the same boat. People hate contracting for
packaged software and buying cars because they always feel like they are getting
screwed by the salesman who uses some secret formula to determine the price of
the goods. Is this a perception that would increase Microsoft’s ability to
remain competitive? I highly doubt it. 
Aside
from the purely academic nature of the write up, what irked me more was the
choice of protagonists in this story. Microsoft versus Linux, Java versus .NET, scale up or scale out. These debates are just
so passé. Large organizations don’t care about Microsoft versus open source –
they buy software to minimize switching costs; reduce staff retraining,
retention, and hiring costs; and to have a vendor to hold their hands when
times get tough. Average PC buyers like my parents don’t care about Microsoft
versus open source either – they want something that is easy, that meets their
simple needs, and that runs. If the cost of this is bundled into the cost of
the PC itself, they are blissfully ignorant of this fact. Most importantly,
perhaps, is that Microsoft and the open source community are increasingly ambivalent.
Microsoft,
despite its insistence to the contrary, is spending money hand over fist to
catch up to Google and Yahoo. Yeah, these two competitors might run on open
source software but that’s not what’s worrying Microsoft. It’s their business services
and advertising revenues that has Microsoft concerned enough to plow money (to
the tune of $500 million in FY ’06) from its cash cows, Windows and Office,
into the risky venture they refer to as Windows Live. Linux, and its open source brethren, are taking on
lives of their own in a world where the PC is likely to be marginalized in the
not so distant future. Internet appliances, consumer devices, dedicated control
systems and other “embedded applications” is one area where Linux shines. Apparently
someone cares about Microsoft versus open source though – those who funded the
research. I couldn’t derive who that might be from the brief interview with the
study’s authors but I’d be interested in finding out.
On October 4, 2006, the Pennsylvania State Capitol
Building celebrates the
centennial anniversary of its dedication. In honor of this special event, I
have created a GeoCast for the Capitol building, its art, and some surrounding
points of interest. This GeoCast can be downloaded or streamed in MP3 format by
clicking the link below or by going to the Pennsylvania category on GeoGlue.com.
If you are interested in further
information about the Capitol or the centennial celebration activities, the
Capitol Preservation Committee website provides a treasure trove of
information. If you can’t make the trip to Harrisburg but would like to experience the
Capitol’s beauty, a QuickTime virtual tour is available on line as well.
Capitol.mp3 (8.1 MB)
|