Manifesto for Agile Government
I'm sure that many readers of this blog have read the
Manifesto for Agile Software Development.
Having worked in government over the past year,
I wondered how a similar manifesto for government,
created by a group of people who would radically want to improve existing
would look like.
Here is my take.
Continue reading "Manifesto for Agile Government"
Farewell to Disks
A classic web-comic illustrates how idle Wikipedia browsing can lead us from the Tacoma Narrows Bridge to Fatal hilarity (and worse). The comic doesn’t show the path leading from A to B, and finding it is an interesting challenge—think how you would engineer a system that could answer such questions. I believe that this problem and a solution I’ll present demonstrate some programming tools and techniques that will become increasingly important in the years to come.
Continue reading "Farewell to Disks"
Synchronizing Thunderbird's Replied Flag
My main email client is Thunderbird, but I also use BlackBerry's and Apple's
all through the same IMAP account.
Disconcertingly, email messages to which I have
replied through the other clients don't show up in Thunderbird with the
"replied" () icon.
This means that when I browse my email using Thunderbird,
I waste time trying to remember whether I have responded
to a particular message.
Here is how I solved the problem.
Continue reading "Synchronizing Thunderbird's Replied Flag"
The innumerate misleading the illiterate.
— Stan Kelly-Bootle, “The Devil’s DP Dictionary”
A mechanical engineer who sees the symbol ⊥ in a diagram will immediately realize that a feature is specified to be perpendicular to another. In contrast, a software engineer looking at a diagram’s line ending with the symbol ◊ will, at best, wonder whether it denotes aggregation (as in UML), or a “zero or one” cardinality (as in IDEF1X), or something else invented by a creative academic. Worse, many developers will simply scratch their head in bewilderment.
Continue reading "UML, Everywhere"
Sane vim Editing of Unicode Files
Being able to use plain alphabeitc keys as editing commands
is for many of us a great strength of the vi editor.
It allows us to edit without hunting for the placement of
the various movement keys on each particular keyboard,
and, most of the time,
without having to juggle in order to combine particular keys with
Continue reading "Sane vim Editing of Unicode Files"
However, this advantage can turn into a curse when editing files
using a non-ASCII keyboard layout.
When the keyboard input method is switched to another script
(Greek in my case, or, say, Cyrillic for others)
vi will stop responding to its normal commands, because it will
encounter unknown characters.
Here is how I've dealt with this problem.
Batch Files as Shell Scripts Revisited
Four years ago I wrote
about a method that could be used to have the Unix Bourne shell interpret
Windows batch files.
I'm using this trick a lot, because programming using the Windows/DOS
batch files facilities is decidedly painful, whereas the Bourne
shell remains a classy programming environment.
There are still many cases where the style of Unix shell programming
outshines and outperforms even modern scripting languages.
Continue reading "Batch Files as Shell Scripts Revisited"
Technical prose is almost immortal.
— Frederick P. Brooks, Jr.
Although programming is a form of literary expression, the relationship between code and its documentation is uneasy at best. As Figure 1 shows, among the thousands of projects that FreeBSD maintainers have considered important enough to port to the platform, the number of comments per 100 lines varies substantially. Clearly, as developers our views on how we should document our code are anything but consistent. Yet, there are universal principles, nifty tools, and useful practices that can benefit us all.
Continue reading "Code Documentation"
Impact Factor of Computer Science Journals 2009
The ISI Web of Knowledge
recently published the 2009
Journal Citation Reports.
similar studies I performed in
here is my analysis of the current status and trends for the
in computer science journals.
Continue reading "Impact Factor of Computer Science Journals 2009"
During the past six months I've been drowning in email.
I spend a large part of my day responding to email messages and filing
incoming messages I consider important.
Yet I'm falling behind
and this affects the quality of my work:
I sometimes delay responding to important messages.
Followng Peter Drucker's dictum
"If you can't measure it, you can't manage it",
I decided to write a tool to analyze my incoming and outgoing
Continue reading "Email Analytics"
Ron Heifetz on Crisis Leadership
Earlier today I had the privilege to attend a lecture on
crisis management by the Harvard Senior Lecturer
Here is a list of points that struck me
(in the form of slightly edited tweets),
and my view of their relevance to software development.
Continue reading "Ron Heifetz on Crisis Leadership"
Email's Ten by Ten Law
I drown in email and my aspirations for handling it are becoming increasingly
In the 1980s my goal used to be an empty mailbox at the end of each
During the 1990s the goal became to empty the mailbox by the end of the day.
But tasks I couldn't complete within the day accumulated, so in the 2000s
I just tried to have only so many messages as could fit in a window without
a scrollbar, so that I could immediately scan what I had to do.
Nowadays my modest goal is to keep the size of my mailbox below 100
messages, and I succeed in that only half of the time.
Continue reading "Email's Ten by Ten Law"
A generous car reviewer might praise a vehicle’s handling by writing that it turns as if it’s running on railroad tracks. Indeed, tracks offer guidance and support. When you run on tracks you can carry more weight, you can run faster, and you can’t get lost. That’s why engineers, from early childhood to old age, get hooked on trains. Can we get our software to run on tracks?
Continue reading "Software Tracks"
Useful Polyglot Code
Four years ago I blogged about an
incantation that would allow the Windows command interpreter (cmd) to execute
Unix shell scripts written inside plain batch files.
Time for an update.
Continue reading "Useful Polyglot Code"