Physical connection to the past

Reading the introduction to the cooking book Melody of India Cuisine I was given pause by the opening sentence: "Mom and I started dabbling on our book twelve years ago on the model 1960 Underwood typewriter, the same typewriter my Dad had used to type his Ph. D. thesis." Given the book's publication date, the typewriter had been with them for 24 years. How many tools with personal history or significance do I still have? The IBM PC Jr and TurboPascal that I wrote my first compiler with? The Macintosh II Symantic THINK C++ IDE that I wrote Sextant with? Perl 4 that I used writing Mesa/Vista. To keep these tools would be silly. How do you retain this physical connection to the past?

Red Chair Studio assistant wanted

Red Chair Studio, Chris's other self, is looking for a assistant for 5 to 8 hours a week working here in her Peace Dale, RI studio. She is looking for a detail oriented and flexible person with sewing skills to help with production and shipping. Call Chris at 401-258-0817.

The software IDE and the non-software technical team

I very much like integrated development environments (IDE). Like most engineers, I suspect, I scratch a little while using them because they don't work just the way I want. However, the productivity increase is enormous in comparison to the small irritations. Yesterday, I watched the View Case Study: USDA Maximizing Collaboration with NetBeans and Codebeamer presentation. CodeBeemer adds to the NetBeans IDE development collaboration features like revision control, issue tracking, discussions, etc and all surfaced and integrated in the NetBeans approach to information design and use.

This posting is not, however, about software development but about other non-software technical groups outside of the software industry. Do these groups know about these rich tools? I would really like to see a print shop or an archeologist's dig or a municipal planning department use these tools. Perhaps the leap from the common ecology of Word documents + Excel spreadsheets + remote file system is too big a one.

Does anyone have experience with non-software teams using software IDEs to manage their work and materials?

Discontinuing a long running script

Looking at a bash script I wrote yesterday I see that I did not give the user a way of discontinuing the processing's long run. The user's only resort was to kill the process. Killing a long-running script is never good action. Where was the script in it's process coordination? Is clean-up needed? If so, from where and how? It would be better to let the script exit at a good discontinuation point.

To this end, I would like to write the script

. Logger.sh
. Continuance.sh

CONTINUANCE=$(continuance $(basename $0))

for f in ...
do
   if [ -e $CONTINUANCE ]
   then
       info Processing $f
       ...
   else
       warn Process discontinued before completion
       exit 1
   fi
done
or
. Logger.sh
. Continuance.sh

C=$(continuance $(basename $0))

while [ -e $CONTINUANCE  ]
do
   ...   
done

if [ ! -e $CONTINUANCE  ]
then
    warn Process discontinued before completion
fi
Where the call to "continuance" creates a temporary file, sets up a HUP trap to delete the file, and prints the instructions
2008-08-11 13:58:26 INFO To discontinue processing 
send "kill -HUP 31788" or remove the file 
/tmp/u-continuance-ITexo31793
The function is very simple
function continuance {
    f=$(mktemp -p /tmp $1-continuance-XXXXXXXXXX)
    trap "rm -f $f" HUP
    info To discontinue processing send \"kill -HUP $$\" or remove the file $f
    echo $f
}

Invisible streetlights


I have been following the South Kingstown Parks' department's plans for changing the Peace Dale Village Green. One of the change components is that the department wants to install is "period" lighting along the pathway between the Guild and Kingston Rd. Few people like the idea for reasons historical, safety and aesthetics.

Today I found the most interesting design in Jongoh Lee's invisible streetlight. The light is little more than an artificial branch with a few leaves embeded with LEDs. Fantastic!

Lee's design does not solve the Green's lighting issues, but seeing this kind of innovation gives me confidence that there is a creative solution out there. Just got to keep looking.

On to Git

I was not looking forward to learning Subversion SCM. It just looked too complicated. The basic manual is a few hundred pages. Thank goodness that Git is taking over the SCM world. I can move on from CVS, an old and fond friend, to something that actually works for distributed development.

In my search for Git introductions I found Getting into SCM with Git. Worth reading.

Scratch and programming for kids

Scratch is another graphical programming language oriented towards children. It is built in Java and has a programming environment and a runtime environment. The runtime environment is only needed if you want to share your (read-only) program with others via the web. The programming environment is a little too modal and other ways ridged for my tastes -- that is, with my "kid" hat on. When you watch kids play they clearly have a center and a periphery. Their tools need to model this.

RESTful search

I am working on a small project to build a web application using current best-practices and tools. To start, I am working on the RESTful interface -- the application's API. What I did not understand was how to do a RESTful search. Searching is not a GET because there is no one resource or all resources returned. It is not a POST because nothing is being updated. What I discovered looking around the web was that when using REST you are not limited to the gang-of-four HTTP methods -- GET, PUT, POST, and DELETE -- but instead are open to a whole other set of methods [a][b]. There is a SEARCH method at IETF in early draft state. This is good enough for my needs.

I will use Java for this project. I know how to implement the interface using the Servlet framework but I wanted to use a framework designed for RESTful interaction. I found the Restlet framework and really like what I see so far. (I have not coded anything yet and so don't know how practical it is.) There is also JSR 311, "JAX-RS: The Java API for RESTful Web Services", which is an annotation-oriented design. I like the Restlet's class-oriented design much better.

Paper craft and architectural and landscape projects

There seems to have been a resurgence in paper craft models. I think part of the reason is the ability of tools like Pepakura Designer to take a 3D model and determine the parts needed and layout them out on pages. (I would love to know how this is done -- at a moderate level of detail.) It occurred to me that you might be able to use this with Google's SketchUp to create models of architectural and landscape projects. Perhaps the resulting paper craft models are not of a quality suitable for client presentation but it sure would be fun.

Damn Small Linux

I have been thinking about teaching my kids how to use eToys. To do this, it would be best if they each had their own box and so I have been looking for cheap laptops. I found two Thinkpad T20's for $100 on Craigslist in various states of repair and bought them. I have worked on T20's in the past and so I know their idiosyncrasies well.

One of the idiosyncrasies is getting X Windows to work. I first installed Ubuntu and everything worked but at a glacial pace. The T20 only has a 700Mhz CPU after all. But even at 700Mhz X Windows should fly. The real problems are 1) Gnome is a system hog and 2) this machine only has 128Mb. (It still feels weird that 128Mb is not much RAM. I remember very well Carnegie Mellon University's 3M machines which were to have 1 million bytes of memory, 1 million pixels on screen, and 1 million instructions per second!) So I installed Xubuntu. And this time the pace was faster but only by a smidge. And boot time was still many minutes in duration. Application switching could take a minute.

Searching for a smaller Linux distribution I came across Damn Small Linux and installed that. Well, installed is the wrong word as I first ran it from the LiveCD. It booted the T20 within seconds. X worked. Internet worked. Everything worked. And worked fast. This was a truly usable system on a T20.

The down side, and this is something I am still fighting with, is that it is not a true Debian distribution. It has its own packaging and distribution system. DSL's author had to make significant changes to the Debian core to make a workable distribution that fit on a business-card CD. DSL is intended to be a system for recovering a broken box. I understand this and the understand the impact the changes would have on DSL's ability to use existing Debian packages. However, the impact is only for a few classes of packages. Most POSIX and GTK applications will run fine. I wish the time and effort put into building the packaging system had been used to allow for the installation of standard Debian packages instead.

Before I wrestle too much longer with DSL I need to get Squeak installed. Wish me luck.

Another tag cloud


Leigh Dodds had a link to the fun Wordle tag cloud. Here is mine from del.icio.us. What is striking is the large number of links I have tagged as "to-read". Too many interests for the time I have.

Yard Sale, June 21

Yard Sale
Saturday, June 21
8 AM to 1 PM

574 Saugatucket Rd
Peace Dale, RI
Help us clear out Chris's art stutio and my kids's rooms! Where again? Here!.

Roof woods

Roof woodsWhen you spend many weekends gardening -- new beds to dig, old ones to weed, plants to move, plants to add, grass to mow, etc -- sometimes you simply forget to look up every once in a while. Clearly, I need to clean out the gutters.

Groceries transportation

Groceries transportationNo excuse now for not riding the bike the few miles into town to buy groceries and small gadgets.

Log when your scripts start and end

When you write scripts that are the controllers for processing data make sure to log when they start and finish the work. It is so frustrating to debug an erroneous processing result -- often days or weeks later -- and not have any indication when the process actually started and finished. A missing finished log entry is the first indication that the processing ended abruptly.

So, in bash shell script use
#!/bin/bash
. logger.sh
info starting
....
info finished
#END
where logger.sh is somewhere in your path and has the content
#!/bin/bash

# logger.sh
#
# info, warning, error and fatal functions to display timestamped 
# messages to stderr. Use the infof, warningf, errorf and fatalf 
# functions to format the message using printf. A newline is 
# automatically added and should not be included in your printf 
# format string.

function info {
        log INFO $*
}

function infof {
        logf INFO $*
}

function warning {
        log WARNING $*
}

function warningf {
        logf WARNING $*
}

function error {
        log ERROR $*
}

function errorf {
        logf ERROR $*
}

function fatal {
        log FATAL $*
        exit 1;
}

function fatalf {
        logf FATAL $*
        exit 1;
}

function log {
        echo $(date +'%F %T') $* 1>&2
}

function logf {
        level=$1
        format=$2
        shift 2
        printf "$(date +'%F %T') $level $format\n" $* 1>&2
}

# END
Most other languages have extensive logging support.

Hardly seems worth posting such an obvious piece of advice, but look around into your scripts -- as I did mine -- and notice how few provide this data.

Remove shoes, cast vote

RI's Governor Carcieri has proposed that a photo-id be required to vote in RI. After all, (to paraphrase) "you need an id in order to fly". Perhaps we should also be expected to remove our shoes when voting too. It is hard to understand how our politicians continue to push for mechanisms to disenfranchise citizens.

How the States Got Their Shapes

I listened to some of How the States Got Their Shapes on the drive today. I was fascinated by the history of West Virginia -- a state that exists because of Civil War opportunism. How physical borders are negotiated is a great segue into how other kinds of borders are negotiated in families, sects, corporations, etc. Great source of projects for a high school, eg "Why is South Kingstown the shape it is?" or "Why does the Chariho school district exist?".

Oh no!

Two 3G iPhones + AT&T family plan + one mini Mac + development kit + reduced billable hours learning, developing & playing = one expensive Q3!

Goalkeeping & HTML Canvas

Henry is the goalkeeper for his soccer team. I was practicing with him the other day and trying to explain how to protect the goal by forcing the offensive player to have only one side of the goal to play the ball to and then only at a very acute angle. Henry is 8 and so none of this really sank in. Once again, I wished I had a pair of magic lens so that he and I could literally see the angles I was taking about overlaided on the playing field.

I was retelling this story to Geoffrey and I realized this was a small enough visualization project to perform my first canvas experiment. And here it is

Source

Update: Sometimes I am so old-school. I should be referencing augmented reality.

Sweet Cakes has a web site

The sign said "Cake is the new flowers". I do like both but tend to go to Sweet Cakes far more often than to Rose Shack.