Working below one's means

"You must always work not just within but below your means. If you can handle three elements, handle only two. If you can handle ten, then handle five. In that way the ones you do handle, you handle with more ease, more mastery and you create a feeling of strength in reserve." -- Picasso

Maximizing PageRank via outlinks

Leigh Dodds's blog has a link to the paper Maximizing PageRank via outlinks about optimizing the Google page rank of a site. The basic strategy is to have a sequence of pages where each page links to the next page in the sequence, each page links back to all previous pages in the sequence, and the final page is the only page with outlinks. The paper illustrates this I am sorry to say that I have not read the paper as the proof looks like more than I can handle.

Interaction problems with Yahoo! Video

I have seen the beginning of Bill Scott's Yahoo! Video presentation several times today! The reason for this is that there is no way to know which interaction widgets are in-page interactions and which are cross-page interactions. Given that the presentation is about UI the problems on the page are all the more prominent. For example, "Share by email" is a cross-page interaction while "Save to del.icio.us" is in-page interaction (actually a pop-up window interaction) and yet they have the same visual design; the "+Add" is an in-page interaction even though it looks like a button which normally affords cross-page interaction; the rating stars are a cross-page interaction when generally this is an in-page interaction (especially when logged in).

Bill Scott's rich user interface design for web applications presentation

Bill Scott (again of Yahoo!) gives a great presentation about rich user interface design for web applications. (It has been a slow day at Andrew Gilmartin & Associates!)

The presentation also mentions the new Yahoo! Teachers "Gobbler." Gobbler is a tool panel that sits over web pages and allows you to clip content from the page for placing on a "project" page. Project are web pages that organizes web content for one or more lessons. I used it a little today and it does work. I need to use it more to see how it compares to the idea of "binders" that we tried to incorporate into AccessScience several years ago when it was built and hosted by Ingenta.

Steve Souders's web page performance best practices

Steve Souders (Yahoo!) gives a great presentation about web page performance. The 14 best practices are
  1. Make fewer HTTP requests
  2. Use a CDN (Content Delivery Network)
  3. Add an Expires header
  4. Gzip components
  5. Put stylesheets at the top
  6. Move scripts to the bottom
  7. Avoid CSS expressions
  8. Make JHS and CSS external
  9. Reduce DNS lookups
  10. Minify JS
  11. Avoid redirects
  12. Remove duplicate scripts
  13. Configure ETags
  14. Make AJAX cacheable
Many of these seem obvious at a gut level and the presentation gives detail about why at a technical level they are so.

The need for a richer and integrated data environment

I wrote this in a comment to David Ascher's posting about SOGo: Thunderbird-inspired and Thunderbird-compatible Groupware.

One of the great advances of the desktop rich applications was the compound document. Mixing text, images, interactive charts, active diagrams, busy/free displays with a simple drag and drop. The machines of the time were a little underpowered for this task but that should not take away from the advance. The compound document frameworks were also very difficult to program to. Mostly the power software houses like IBM, Microsoft, Borland, Lotus, Claris, Taligent, etc did it. The underpowered houses could not and so created data and display islands.

Another of the great advances was the expandable shell. The first one was OS/2's Presentation Manager. Then came Windows 95's Explorer. Linux had Nautilus. It is a very compelling idea to have a single tool that integrates browsing and searching hierarchical collections of data. The shell frameworks were also very difficult to program to. Mostly the power software houses like IBM, Microsoft, Borland, Lotus, Claris, etc did it. The underpowered houses could not and instead presented other independent hierarchical displays.

We need to go back to these ideas and implement them now with the more powerful machines and high level languages and toolkits. I really don't want Thunderbird to be so deep so as to enclose these tools and data repositories. I want a lighter touch. I want Thunderbird to provide interactiveness that is not currently available via the browser. Thunderbird needs to be a super-browser. I want it to show the way to where browsers need to go.

Comments on "The Slow Death of the Technical Specification"

The "The Slow Death of the Technical Specification" is another reason why so much slipshod work is passed off as finished work. Preparing the technical specification is an initial and thorough implementation of the work on paper. The coded implementation is the second implementation based on the strengths and weaknesses of the first paper implementation. As Fred Brooks says, plan to throw one away; you will, anyhow.

A work needs to be reviewed. The customer needs to know that they are getting what they asked for. How do you review a working implementation -- a web site, a desktop application, or an infrastructure? How do you review a paper implementation? People have been developing the skills and using the tools necessary to review a linear presentation of a work since secondary school. A very rare few people have the skills or tools to review a working implementation. Not having the written specification is short changing both the customer and the supplier. The customer gets something they are not in the position to review and the supplier is in the position of not knowing if the implementation is what the customer wanted.

The weakness of the paper implementation is that it does not define the coded implementation. The construction industries have "as built" blueprints. These are the original blueprints with annotations detailing the differences from the design and the construction (i.e. implementation). Software needs these too. We just don't have them yet.

Unfortunately, I have supplied much software without initial or even afterward technical specifications. Hardly great moments in a software development career.

Timezone math

For the last several years I have worked daily with folks in the United Kingdom and California. When communicating about times you must always include either timezones -- e.g. EST, PST, GMT (I can't bring myself to use UTC) -- or time pairs -- e.g "11:52 AM / 2:25 PM" -- in the conversation. To help keep my sanity I use FoxClocks to show in the Firefox status bar the times for each zone.

A really useful enhancement would be to be able to select one of the zone displays, enter a time, and have the other zone displays show me the time in each of their zones. For example, in this mockup I have ticked the "Peace Dale" time, entered "9 am", and FoxClocks would display the times for San Francisco and Oxford.



Perhaps this feature already exists in one of the many desktop widget sets available.

Update: The The World Clock Meeting Planner which allows you to display a timetable configured for serveral locations.

Looking for web-based contact management tool recommendations

I am looking for a web-based contact management tool either open-source or commercial. The features I am looking for are
  1. Add person.
  2. Add company.
  3. People and companies have the attributes name, telephones, emails, addresses (time zone), and description.
  4. People and companies have tags (al del.icio.us)
  5. Associate person with company.
  6. Associate person with person.
  7. Associate company with company.
  8. Associations have tags.
  9. Associations have attributes (optional).
  10. People and companies have a chronological log of contacts (by phone, in person, by email, etc.).
  11. A summary view of activity over a period of time (people added, contacts made, association changes, etc.).
  12. Export data as XML.
Can you recommend anything? Can you recommend a Windows desktop tool?

A small improvement to Google Calendar

My wife and I like Google Calendar a lot. That we use it everyday for every kind of event and planning tells me that it accommodates both the novice user and the experienced user. As you use GC more you will end up with lots of overlapping events. This is especially so if you use lots of calendars. (We have 6.) When this happens GC mostly only tells you that something is happening as most of the details are obscured. I would like GC to have three new features:

1. Use transparency when displaying events.

2. When displaying event to not be bound to the day's calendar column

3. Distinguish primary and secondary calendars. For example, the primary calendar's events always sit on top of the secondary calendar events. And I should also be able to quickly toggle on and off the visibility of the details of the secondary calendars.

For example,





Links need direct orientation markers

Geoffrey Bilder asked what is the use of having the URLs listed as footnotes when you are online?
This is a good question. In (plain text) email having the URLs visible is the only means of "linking." Placing URLs in footnotes improves the readability of the email message -- no odd word-wrapping in the message and URLs are less likely to be wrapped. These features, linking and readability, however, are directly supported on web pages. So why bother?

One fact given by seeing the URL is you can see if the link takes you off the page and/or off the site. This orientation feature is useful to me. Using the URL itself for this is indirect: I have to know the URL of the page I am on and then make the mental comparison between the two URLs. A better approach would be to use a marker that directly indicates the kind of link it is. This would be more useful on the web page. (And add the table of links on the printed page.)

It was a little slow at "Andrew Gilmartin & Associates" yesterday morning and so I used the opportunity to learn a little more about Prototype. It is a very powerful tool. It makes manipulating a DOM almost intuitive. When I next have some free time I will work on the orientation markers.
I am turning off the table of links feature. It was an interesting idea but in the end I agree with Geoffrey.



Automated "Table of Links"

I tend to print web pages for reference when I am off-line and so I like to ensure that URLs are visible somewhere in the text. I have copied Leigh Dodd's footnoting technique in email for years and am now using it in this blog also. I am not always consistent with the technical details of laying out the the links and footnotes mostly because it is somewhat cumbersome to use in HTML. I need a tool. So I wrote some JavaScript that will add the footnotes automatically to end of each posting. Here is my test code.

Update: I have this working in this blog now.

Update Again: If you use an RSS reader to read this blog you will not see the table of links at the end of the posting.

Update Again & Again: I have discontinued the use of the table of links script on this blog. See next post.

Java Agent Development Framework

I have been interested in software agent technologies since in the early days of Windows 3.1 when I discovered Actor. Agents are automatous tools that engage in formal conversations to get commitments and, later, responses to those commitments. Message queues are very popular technologies because when you add work to a queue you know that at some point the work will be done. Agents are like very smart queues where the queue can make decisions about the commitment to do the work. Unfortunately, my experience is mostly that of an armchair practitioner.

A few weeks ago I discovered JADE and have since read the book Developing Multi-Agent Systems with JADE. I highly recommend the book [*]. It really looks like JADE is a good agent framework and implementation. I know, for example, that Raytheon is using it for at least one non-defense project and Raytheon has a very conservative software selection process. Now, I need to find a client that wants to use it too. Know anyone?

[*] I also highly recommend using your local library's inter-library loan service to read the book before buying it. Jessica Wilson, a librarian in the South Kingstown library system, seems to be able to get anything.

Kindle and content's seamless ubiquity

Amazon's Kindle is now out. Amazon has done a great job at delivering a whole solution and not just a reader. Assuming that the device is ergonomically usable that you can download content from anywhere via the built in mobile phone technologies is key to its success. No docking. No bluetooth. No wifi. Just seamless ubiquity to the new and updated content.

Update: I was at Border's yesterday (2 Dec 2007) and saw the new Sony book reader. While I am generally attracted to bright and shinny objects the reader and it's display looked scuffed and forlorn in the long shallow of the Kindle.

Ready for Rails

I am ready for Rails!

Update: I have now read and recommend Rails for Java Developers. The authors take you through the Rails stack and at each step compare Rails's tools with best-of-breed Java tools. For example, when the authors talk about ActiveRecord they compare it to Hibernate. Fortunately, you only need to have a reading understanding of Hibernate, Structs, and Spring for the book to be valuable.
Not much technical talk here for a while. I have been thinking of writing "Avoiding The Long Winter Sleep" for sometime. This is an article about Hibernate and about frameworks and about natural fit. Clearly, I am still trying to find a focus: It will happen just don't know when.

Enthusiasm for technical change & challenges

When you are accustomed to technical and process change its occurrence again is taken as a matter of course. A steady response to change is appreciated when you are hired. A steady response to change when looking for work is seen as being unenthusiastic. Damed if you do and damed if you don't. As always, be contextual.

Wolk's Reading Comics

I just finished Wolk's Reading Comics and I highly recommend it. The first half of the book describes comics in terms of the medium, the readers, the authors, the subjects (superheros vs everything else!), and the visual styles. The last half of the book contains reviews of works, and in reflection on the first half of the book, Wolk does a great job of drawing one into the aesthetics and tactics of comics. A very enjoyable read especially in conjunction with field trips to a good comics store like Incredible Pulp in Narragansett.

I am grateful for their confidence in me

I have decided to focus on contract work for the foreseeable future. After four significant rejections and three by startups I think it is time to let Winter arrive and Fall leave and watch it from my home office desk. I am happy to accept contract work for the rest of the year. It is work that I know I can do and, more importantly, it is work others trust me to do well. I am grateful for their confidence in me.

A good night was had by all

Reading Wendell Berry, listening to James Taylor, drinking sapphire gin martinis, kid's doing homework all by an open fire is a wonderful evening mix. A time of honest conversation and truth telling. My kids went to bed happy and calm. So did I. A good night was had by all.