I’ve spent the better part of the last 6 years dealing with state government systems that manage information about citizens receiving government services. As creative as state government can be in some areas, presenting new and interesting visual metaphors for the management of citizen and case (i.e. collections of citizens) information is certainly not a forte. This problem is not solely the fault of state governments. Rather, it’s the product of state government business leaders’ lack of knowledge of the available options, educational obligation complacency on part of government’s IT partners, and the real or perceived difficulty of being visually creative in an environment where accessibility compliance is not an option.
There are ways around the accessibility compliance constraints; up to and including parallel functionality with both accessibility compliant and non-accessibility compliant versions. Education, however, is not always as easy to come by. With the technology supporting rich Internet applications, we can do so much more than could be done with an old 3270 mainframe terminal. Yet, across a broad swathe of in-house, outsourced, and packaged case management solutions, you’ll rarely find anything beyond some minimalistic styling and obligatory “smiling citizen” pictures that could not have been done 20 years ago. There are many new metaphors that we could use to make the data presented by case management applications more meaningful to workers. I present three of the more radical concepts below:
1. Geospatial - Use a geographic metaphor to allow the discovery of relationships between individuals, cases, caseloads, or entire programs. With the advent of map mashups, this has surely become one of the more popular new visuals for creatively displaying data on the Web. For publicly accessible examples of what is possible, check out Chicago Crime and Citystat. These two examples represent visualizations of publicly available data in Chicago and Wasington D.C. , respectively. Also, these were built on top of relatively garden variety two dimensional maps. More recently, things are moving more in the direction of quasi 3 dimensional (a.k.a. “Bird’s Eye Views”) and fully navigable three dimensional models. If you haven’t seen Microsoft’s maps at all (or as of late), I strongly encourage you to give them a look. Right from your browser you get fully scrollable 2 dimensional maps and bird’s eye views of many major and non-major (check out the Capitol Complex in Harrisburg , as an example) US cities. As a bonus, if you’re using Internet Explorer, you can get fully virtual reality tours of several major cities. Firefox users, don’t despair, support is supposedly being added soon for Firefox too.

2. Temporal – Use a timeline metaphor to show a longitudinal time scale relationship between various events. These events could be various transactions within a case or across multiple cases. Simile Timelines are an exciting new way to model such relationships. Check out the example timeline for the events surrounding the assassination of John F. Kennedy. Notice especially how the top and bottom timelines interact together as you drag them independently. For bonus credit, check out how the scale of time changes in the most critical moments surrounding Kennedy’s assassination from months to days to hours to 15 minute intervals. Timline, much like the maps that support the geographic metaphor, has a fully API against which one can program. This leaves the possibilities for state government based uses of the timeline metaphor wide open. 
3. Network Graphs – Using the network metaphor enables the discovery of complex relationships between people and other entities. With a deep network of relationships in most case management systems, this is potentially one of the most useful new metaphors. Given the graphic and data intensive nature of displaying these relationships, it’s also one of the most difficult ones to implement technically. There are some great examples of this being done on the open Internet though, most of them using Flash. Check out Tracking the Threat’s terrorist network navigator. Imagine using the same thing to expand the network relationships in a case management system. Moritz Stephaner’s Relation Browser is also a great example of what can be done in this space. Unfortunately, there’s a lack of standard tools to build these types of models. The one tool that I know of (Prefuse) uses Java and Java Applets instead of Flash. Hopefully, we’ll see some key players recognize the opportunity and create standard tools to support this metaphor in the near future. 
These really are the more radical of the changes that I can think of. There are, of course, more rudimentary changes that can be made that could have just as profound of an impact. The use of pictures with personal profiles or the ability to perform full text searches on the system’s case notes (the unstructured data lifeblood of many systems) immediately come to mind. As much of a challenge as it seems to implement these suggestions for existing case management systems, the far greater challenge lies in adjusting users’ approach to leveraging these new features. A genuine knowledge worker approach is required to get the most out of these features. This is a proposition bound to be a very exciting opportunity for some and a very scary change for others.
One of the most common misunderstandings or missteps in following a particular software process is to follow that process in a blind, one-size-fits all fashion. This is especially true if you are mandated organizationally to use a particular software process. Just as the founding fathers could not have foreseen the challenges of the modern world when authoring the Constitution, there is no way that the creators of a generic software process could understand the nuances of every particular project where their process would be used.
Processes need to be malleable so that they don’t incite the “baby with the bathwater” response in which the entire process is tossed aside because it proves too inflexible. Good processes can and should be customized. There are several methods that can be used to achieve this end. One of my favorite articles on this topic is an oldie from Per Kroll (“Dr. Process”), entitled How Can We Customize the RUP? In this article, Per lays out 3 basic methods that can be used to customize the RUP:
- Make comprehensive changes to the RUP with the Process Workbench (Heavy)
- Produce a custom RUP configuration using RUP builder (Lighter)
- Create your own development case and place it in the project-specific Web site. (BINGO)
First reading this article caused me to re-examine the development case, an often overlooked project artifact. I fell in love with the idea of the development case but the RUP and online examples I could find at the time didn’t live up to my expectations. Between online examples, my ideas, and a great section on the development case in the book Software Development for Small Teams: A RUP-Centric Approach, I pulled together a template that I’ve carried with me, more or less unchanged, until this very day. I’ve included a copy of this template for you to download. The version that is included in Pennsylvania’s BSCoE Software Engineering Process (SEP) is very similar in many ways. You can find that version in the center ring of the online SEP.

The beauty of the development case is that: (1) it’s very lightweight, just a Word file; (2) it works equally well with a commercial process tool or with no process tool; (3) facilitating a meeting to walk through a development case forces people to communicate about what will and won’t work for them and to make decisions that often have very beneficial impacts for their projects. The best part of the development case is that it works very much like object-oriented inheritance. Customizations from higher levels in an organization can trickle down to lower layers of an organization with customizations and/or additions being provided at every layer where this is required to add value.
I finally got around to adding videos to the site that I’ve been accumulating over the last couple of years. I’ve blogged about investigating Flash video a number of times before. After putting a number of videos on YouTube and being disappointed with the quality of the end product after their compression and resizing process was completed, I decided to go it on my own.
The decision to make this move provided the necessary impetus to do the final research and prototyping necessary to make this a reality. From my experience, I’ve come up with the three things that you’ll need to host Flash Videos, aside from the source video itself, of course.
-
A server with plenty of bandwidth and the capability to stream media. Even though the Flash compression process yields fabulous results as compared to a raw video stream, these files are by no means small. I am seeing sizes of 6 – 12 MB per minute of Flash video depending upon the quality of the underlying source and some tweaking of the video encoder settings (like bitrate). Depending upon how much traffic your videos get, this could suck up quite a bit of bandwidth. With respect to streaming media, I suggest that you select a host that explicitly allows this or who gives you control over your server so that you can take care of this yourself. Beware that if you’re hosting on the Windows platform with Windows Server 2003, this server will not stream Flash videos out of the box. You’ll need to explicitly set the MIME type for the Flash videos as noted in this Tech Note from Adobe.
-
A solid Flash video encoder. With the explosion of Flash media at sites such as YouTube, Google Video, and MySpace, the number of tools available to do consumer Flash video conversion are on the rise. These tools range from rank amateur stuff to automated server-side tools like those used by the big boys. In the consumer space, you’re paying for three things: ease of use; the video encoder (codec); and the flash player. The most important of these things to me (but I’m sure not to everyone) is the actual codec.
The codec is like the engine in your car. That is, you can buy those flashy spinner wheels and fat (phat, maybe?) muffler but without a good engine, you’re going nowhere fast. That said, there is quite a war going on in the codec camp based upon proprietary versus non-proprietary formats (VP6 versus H.264). You can read On2’s summary of the issues here. Since On2 is the source of the proprietary “next generation” Flash codec, this comparison is to be taken with a grain of salt.

From a consumer’s point of view, you either buy On2’s technology or somebody else’s since most everyone else supports H.264. Many of the counterarguments to On2’s codec revolve around the portability, openness and near universal adoption of H.264. From my tests, the VP6 (On2) encoded videos looked better and compressed to smaller file sizes. The encoding process, however, is a bear and will peg the most capable of CPUs at near 100% utilization during encoding. The real proof for me was in the marketplace. With many major media and technology companies (including Adobe, themselves) using On2’s codec, I’ve assumed (rightly or wrongly so) that people much more knowledgeable than I in this area have done their homework and are convinced that On2 offers something that H.264 products do not. What seals the deal is that On2’s standard bare-bones encoder package costs only $39. Granted, it’s not as slick or user-friendly as some of the others that I tested but it has the most horsepower under the hood.
-
A configurable (ideally scriptable) Flash video player. The player is the part that actually drives the Flash video and allows the user to interact with the output, moving the video forwards and backwards, setting volume, etc. Many of the video encoder packages include a selection of players out of the box; so you may not be required to pick up one separately. If your codec doesn’t come with a player or you’re not satisfied with your player’s capabilities, I strongly recommend that you take a look at Jeroen Wijering’s Flash player.

As you can probably see from the screenshot above, Wijering’s Flash player is, well… not that flashy. What it lacks in glitz, it more than makes up for in power and flexibility. The player is very easy to use in its default configuration, playing either single Flash videos or running though multiple videos specified in an XML playlist. Furthermore, you can perform runtime manipulation of the Flash video by passing a set of parameters known as flashvars. This very handy feature alone makes this player standout head and shoulders above the rest. Finally, there seems to be a decent community support around this open source player with plugins built for popular tools like Wordpress, Drupal, and Coppermine. This extra article by Jeroen provides some good guidance on embedding Flash. For specifics, it’s best to download the tool and play with the samples.
Hosting Flash video is really not hard once you have these three things figured out. Although I didn’t mention source video, it really is key in the equation. Videos that I shot on older still cameras needed to be scaled up in size and are a bit pixilated. Videos that I shot on my newer Canon A630 look much better, but they are not in stereo and show signs of pixilation even if I use optical zoom. From this whole conversion effort, my most important takeaway is that I’m going back to my Sony Hanycam Digital for shooting video. It yields the best video and sound quality. The only downside is the digital tape to digital file conversion process.
In
the final installment of this March 1st trilogy, I’ll hit something
really topical, the precipitous fall of the Dow Jones Industrial Average (DJIA)
two days ago on February 26th. For those of you just diligently
minding your stakes in the market, you probably got wind that all the major
indexes tanked pretty badly on the 26th. The Dow, however, tanked in
a rather unnatural fashion that was quite different from the others.

You
can see the “Live” and recalculated Dow Jones numbers on the graph above.
Although the actual Dow (in orange) did
drop pretty steeply, there’s no way it could have done the near vertical drop
that the graph indicates without some outside intervention. It turns out that
this outside intervention was provided by a “computer glitch”, as reported in
the general press. More specifically, one of the queuing systems that feeds
data to the system that actually calculates the Dow Jones index got backed up
under record trading volumes. When market watchers got suspicious that the
index movement did not align with the sliding values of its core components, they
decided to investigate. Discovering the backlog, they manually switched over to
alternate systems. When these systems worked down the backload, a new DJIA was
calculated and voila, we had a 200 point drop in a couple of minutes. As painful as this must have been for professional
traders and as painful as it’s likely to be (in terms of lawsuits) for the Dow
Jones company, this is really interesting from an IT point of view. If you’re
an IT person looking for insight into how these markets work, I thoroughly
recommend the book Practical .NET for
Financial Markets. It’s one of the most advanced .NET texts I’ve ever read
and, as a positive side effect, introduced me to a completely unfamiliar
business domain, financial markets. Reading this book will not only make you a
more educated developer (whether or not you use .NET), it will help you
understand the causes and effects of events like those on the DOW two days ago.
If
you work in the IT world today, you have a greater chance of not finding a
Starbucks on a randomly selected block in Manhattan
than you do of not hearing the term “SOA” during your daily workday. It’s unfortunately
not nearly as often that I hear or read something about SOA that sounds
reasonable, practicable, and overcomes my otherwise skeptic view of all the
hype that so often masquerades as SOA. The recent ITConverations Podcast with
Todd Biske and Ed Vasquez from MomentumSI is just the sort of real-world advice
that avoids the hype and gives a heavy dose of ground truth reality.

Todd
and Ed offer some pragmatic advice with respect to SOA and highlight challenges
that really resonate with me based upon my experiences. Amongst these are the
lack of a single design time and run time governance toolset and the importance
of the mindshift from developing enterprise applications to developing reusable
enterprise functionality that can be leveraged by different applications. Most
importantly, however, is their insight in the importance of thinking of
services as products. I have found this to be one of the single largest hurdles
to achieving reuse – be it component-based or service-based reuse. Proficiency
in application development in no way guarantees proficiency in product-based
service development. In fact, most application development organizations that I
have dealt with have little or no experience with product-based development. I
couldn’t possibly cover all of the disciplines needed to master product-based
development in this short post but I’ll refer you to a couple of sources that I
feel give more than an adequate introduction.
I plan on recommending this Podcast to a number of
people that I work with or have worked with in the past. I can’t expect
everyone that I deal with to spend time digesting countless books and articles
on the topic of SOA. As a matter of fact, given some of the materials out
there, this might just prove more confusing than useful. An hour of time to
listen to a Podcast (especially this one) isn’t too much to ask though. You’ll
learn an awful lot in this hour.
In
the first of my beginning-of-the-month speed blogs, I’d like to start with the
topic that I’ve been putting off longest, building applications on top of
Amazon’s Web services. For those of you that think of Amazon.com as just a book
store, or an e-commerce platform, or [add your assumption here], think again.
In the last year or so, Amazon has released a number of services that have not
only established them as a first-class platform, but have pushed the envelope
considerably on the idea of virtualization.

This
trend started with Amazon’s Simple Storage Service (S3) and was expanded on
with their Simple Queue Service (S2). Late last year, Amazon blew the roof off
with the limited release of their Elastic Compute Cloud (EC2) service. EC2 is a
configurable computing environment where you can load up virtual instances
(roughly equivalent to your average Linux server) – on demand. You can load or
unload these instances to meet cyclical demand and you only get charged for the
computing time that you use. Couple this grid computing potential with S3 for
storage and S2 for queuing and let your imagination be the limit.
Doug
Kaye’s architecture for GigaVox Audio Lite, an audio file transcoder, might
give you some ideas about what can be done with these services. The related
ITConversations podcast contains plenty of details, with both Kaye and Jeff
Barr, from Amazon, on the wire with Phil Windley. This podcast does a good job
of conveying the vision and the realities of using these services. Some of the
discussions, like managing and developing on top of a globally distributed
queuing system where a call like size = MyQueue.size doesn’t really make any sense, will cause
you to stop and think.
The
final new Amazon service that I didn’t mention is Mechanical Turk, which is,
simply put, a computer interface onto human services. This one has been around
for a while and never got much attention from me until I heard the Podcast. Interestingly,
the site castingwords.com, which produces Podcast transcriptions, farms out
their work via Mechanical Turk. The combination - digital input in (MP3);
digital input out (electronic transcript); virtual computing; virtual workforce
– that’s pretty radical. There are some other great uses for this service mentioned
on the Podcast as well.
The Podcast is absolutely worth a listen. And if this
sort of thing piques your interest, you’re not alone. The queue to get into the
EC2 beta program is a few months long. If you’re even remotely interested, get
in line now.
One of my original intents of registering the beckshome.com domain name was to publish photos of my new baby son or daughter. That was two years and two daughters ago and, until this weekend, photos were nowhere to be found on my blog. I host my blog on the Windows platform and had no desire/time to do any of the following: (a) buy a separate package for image management; (b) cobble together an ASP.NET solution to manage my photos; (c) switch blogging software to a tool like Community Server that has integrated photo management. Furthermore, I already manage my photos on Flickr and I’m more than happy with the service, user experience, and the cost-benefit. What I really needed was a way to integrate my existing Flickr photos into my current .NET-based blog (DasBlog). The pursuit of this goal is what this blog entry is all about.
Being a regular blog reader, what I’ve seen a lot of out there are the Flickr badges. These badges, available in either HTML or Flash versions (like the one below), are pretty slick and can be found pretty much everywhere on the Web. The problem with these badges is that they only offer the opportunity for shallow integration. Click on the badge and bye-bye blog, you’re zipped off to Flickr’s site to look at the photos. Since I aspired to achieve a bit deeper integration, I needed a different approach.
Next thing that I looked into was programmatic access to the Flickr API or a pre-existing solution that I could use wholesale or reproduce with little effort on my part. The Great Flickr Tools Collection has a vast assortment of very interesting tools – none of which quite seemed to meet my needs. I checked out the Flickr.NET API Library, which was written about in a Coding4Fun post and can be found for download here. It’s very well done and, although it probably won’t be the last time I mention this API in my blog, it will be the last time I mention it in this posting.
What I eventually stumbled on was a simple and elegant solution that got me exactly what I wanted by embedding the Flickr slideshow viewer into a custom page on my existing blog. Paul Stamatiou has an excellent post on his blog on how to do just that. By using an iframe and setting some API attributes you can get this up and running very quickly; qualifying this as a super easy hack that just works. Note that only photos marked as public will be displayed.
With the Flickr slideshow viewer up and running, I only needed to add the ability to select between multiple photo groups and I was done. With the actual Flickr viewer taking care of all of the real AJAX work, all that was needed was a bit of light JavaScript to tie this all together. Below you will find the code that does all of the lifting.
<script type="text/javascript">
function changeSlideshow(url, title)
{
document.getElementById("SlideShow").src=url;
document.getElementById("Title").innerHTML=title;
return false;
}
</script>
Clicking on any of the photo group links / thumbnails makes a call to the above function passing the URL for the slideshow in the manner stipulated in Paul’s article for populating the slideshow viewer. The title is also passed so that the title of the page can be updated. You can see this at work on my new photopage. By viewing the page source, you can see the exact mechanism I used to make this work. If you’re have any questions, feel free to drop me a line.
I realize that the title of this blog post is something that one would probably not associate with a blog that purports to cover technology. Bear with me please and surf over to YouTube (or view below) to look at the video posted by the Pennsylvania Fish and Boat Commission. I think you will agree that the video is very well done. Much like the partnership between Google and the Pennsylvania Tourism Office that I blogged about a couple of months back, this posting to YouTube represents some signs of forward thinking, Web-based focus, and creativity on the part of state government.
Granted, with tourism and fishing, we are looking at revenue generating sectors of state government. You don’t yet see this sort of thing from Welfare service divisions. How long will it be though until other sectors of state government start looking at public Internet services as an alternate channel for communications with their constituents? The economics of these services surely works in their favor (that is, they’re free). It then becomes a question of what the best channel is to reach one’s constituents.
Face-to-face interaction, snail mail, and government sponsored portals will be around for a while to come, I surmise. But as usage of cell phones, email, inexpensive audio devices and collaborative community-based Internet services like YouTube continue to permeate through the layers of citizenry, state governments will not be able to ignore these viable communication mediums. The one question that remains is whether state governments are prepared to engage in the two way dialog and deal with the power shift that these new communication vehicles will invariably bring.
The innovation engine at Yahoo is heating up, looking to get
Yahoo back in the race with the “Big Boys”, rivals Google and Microsoft. In an
environment categorized by copycat service offerings and one-upmanship, Yahoo’s
offerings are refreshingly unique. I cover three of the most recent services
that I’ve been playing around with and that I think will prove entertaining to
my readers as well – Pipes, OmniFind Yahoo! Edition, and TagMaps.
- Pipes – No less a luminary than Tim
O’Reilly called Pipes “A milestone in the history of the Internet”. Pipes is a browser-based visual editor that
allows you to take input from one source and pipe it (in UNIX parlance) to another source. Along the way, you can
apply a series of filters and transformations to manipulate the data. The data
sources start and end as common feeds (RSS, RDF, etc). What you do with the
data between its input and output is constrained mostly by your imagination.

Yahoo! was certainly not first on
the scene with this idea. Dapper and others have preceded them in this regard.
What Pipes brings to the party that no one else does is a really cool visual
environment that allows you to trace the path of the data through the
transformations and filers, interactively debugging along the way based upon
the value of the successive outputs. It also has this cool reuse flavor to it,
where you can experiment with, tweak, learn from, and potentially improve or
fork off new versions of other peoples pipes or just reuse them in a black box
sense.
After you’ve read Tim O’Reilly’s
introduction, I encourage you to play around with Pipes. Although seeing is
believing, you’ll learn best by actually doing.
- OmniFind Yahoo! Edition – Product of a
nifty partnership with IBM, the
OmniFind Yahoo! Edition is an enterprisey search solution that is the baby
brother to IBM’s commercial
OmniFind enterprise product. Built on top of the open source Apache Lucene
search engine, OmniFind has the solid lineage necessary to be considered worthy
of the task.

The product is a very easy
install, whether on Windows or Linux, requiring very few steps to get the
product up and running. OmniFind returns search results against locally indexed
documents and the Internet, with the results being returned in the familiar
Yahoo! look and feel. For those interested, the UI can be styled to match a
particular site’s look and feel or you can go the direct route and work with
the exposed REST APIs.
With the pricetag (free) and
support for a couple hundred file types, there’s little not to like about
OmniFind. Search performance has proven to be very fast with a few thousand
documents. Indications are that the tool scales pretty well although the
indexing process can be quite processor intensive and there are a couple of
known issues with cleaning up very large temp files that could eat into your
available disk space.
- TagMaps – I stumbled onto this product a
couple of weeks ago while looking for some information about creating GeoRSS
feeds. TagMaps is another way of visualizing data (tags in this case) on maps.
I must confess that seeing tags on a map takes a bit of getting used to. I
found that the best way to indoctrinate myself was by using Trip Explorer

Trip Explorer is a mashup of
TagMaps and Yahoo! Travel users' public Trip
Plans. What’s cool about Trip Explorer is that the clustering of
tags reveals hidden tour gems that you might not otherwise find on a
traditional map mashup. These gems become more evident (and detailed) as you
progressively zoom in.
TagMaps is built upon Yahoo’s
Flash maps, which are very interesting in their own right and need to be
experienced if you haven’t yet had the chance. Aside from using Yahoo’s canned
Explorer TagMaps, of which Trip Explorer is one, you can create your own
TagMaps mashups. Simply create a GeoRSS feed or select an existing GeoRSS feed
that returns a set of weighted tags for a given lat/lon bounded box. Easier
said than done, I know. I’ll be writing more about how to do this in a coming
blog entry. Until then, give this a look.
|