Seabgo Resort – Cabin 6 Bedroom Interior
Interior of cabin 3 at Sebago resort in Nisswa, MN, on Round lake.

A tricky little problem, as it turns out. There is little out in google world to help you, and only a few tools. License issues with almost all I found, especially running on Windows boxes in 64 bit mode.
I finally found Yet Another Java Service Wrapper at yajsw. License is LGPL and it supports 64 bit windows. I was able to get my application running very quickly. Worked perfectly the first time. Getting going was interesting:
1) You download yajsw and extract the zip file.
2) You run your app and lookup its PID.
3) You run the yajsw script generator, and it analyzes your running application to create a script file.
4) You then run the yajsw bat files to install-service, uninstall-service, start-service, stop-service, etc.
The only trick is to run the bat files with administrator permissions. (Right-click on the bat file and select “Run as administrator”.)
Right now the yajsw folder needs to exist on the server as well. Doubtless there are more convenient ways to package the install, but this was a good first step.

Cabin 3 is one of the nicest and largest cabins, plus it is closest to the lake and the stairs going down to the docks.

<iframe width="100%" height="600" allowfullscreen style="border-style:none;" src="http://clevercaboose.com/pannellum/src/standalone/pannellum.htm?config=http://clevercaboose.com/pano2/20110530-9/config.json"></iframe> It has always been annoying that the Microsoft HDView tool relies on silverlight and forces users to install a plugin. Not to mention that I started embedding the panoramas in my page and that led to problems … crashes and lack of 360 deg awareness. So I took another look around at free hosting tools, and gigapan and 360cities emerged as two good options. Gigapan is picky in that they reject panoramas that are too small. They REALLY mean giga. 360cities has some restrictions, but not as severe.
For now, I am moving to 360cities. While my panoramas are not good enough for them to include publicly, they will host them so I can show them here.
My 360cites profile can be found at http://www.360cities.net/profile/richmacd
This is the start of a series of pictures I took of the insides of the cabins at Sebago. I am doing high-resolution (zoomed lens) and HDR in a cramped space, so the limitations of the camera do show, and it is really hard to get it perfectly. So it isn’t perfect.

Kitchen Interior of Cabin 6, Sebago Resort in USABy the way, the HDView panorama is the best way to see the cabin, but if we look at one picture, we have to choose which distortion we least dislike. The above image is hemispherical, and is used for the HDView panorama. Below is the panini projection, which tries to keep straight lines as straight lines. Better in some ways; worse in others.

Anyone coming from a Smalltalk background recognizes the idea of setters returning “this”. (Smalltalk does it automatically). It can be useful when chaining multiple setters together. (See this) And it is more readable than having a method with several parameters. Which would you prefer?
1) Methods don’t return anything:
myObject.setValue1(value1);
myObject.setValue2(value2);
myObject.setValue3(value3);
I’ve been using Parboiled Java on a current project and think it is fantastic. Best thing since sliced bread and regexp. But as I was finishing up the edge conditions of the testing, I ran into some fundamental pattern issues which are not obvious and not in the examples. So here are some notes:
My problem domain syntax is essentially OData with some modifications. We’ve kept the basic ideas and added some necessary extensions. A user will create a URL representing a database search, send it to my system, I parse that URL and convert it to a search object, perform the search, then reply with the data from the search.
It was easy to create code for the matching syntax. It was the error conditions and catching the errors that turned easy into hard and ugly. I don’t mind hard but I do mind ugly, so perhaps this post will lead to a better approach. Otoh, error handling and parsing tend to produce really ugly children, so a clean approach may not be possible either.
Here is an example of a URL snippet:
Person($expand=location($current))
Without getting into the meaning much, this is a database query that means Find all Persons and “expand” their “location” property which are “current”. In other words, find all people and return the people and their current locations.
Below is a parboiled parser class that does the trick:
So now we will no longer match on $currents. Problem is, the parser still succeeds because the Current() rule is enclosed by an Optional(). The error inside the Current() rule matching will be ignored.
We want the parsing to fail with a useful error message where the error occurred. How do we do this?
I’ve come up with two approaches, neither of which I am that crazy about:
Option 1 is to throw an Exception when the illegal text is discovered. Something like:
Option 2 is drastic: We define our parsing rules to accept “almost anything”, use the match() method to build up intermediate objects (i.e., abstract syntax trees or ASTs), then analyze these objects for correct data.
An argument for option 2 is that the parsing phase should be separate from the validation phase. And one can build up a generic and reusable AST system. I spent a day working this out, but ultimately abandoned it as the parsing rules had become so “unrelated” from the “correct syntax” of my problem domain. I didn’t like the code-smell.
I’m still working through this, but right now Option 1 is forging ahead.
Daughter spent the day cleaning and re-arranging her room. The miracle of mess-removal, and once again being able to see the hard wood floors that her Mother and I discovered under crappy carpet and restored. We thought of taking a picture, then I remembered that photosynth is available for her new itouch, so we played with that. Good, but not good enough for Dad, so I spent 2 hrs taking the pictures, and maybe 10 hrs building the panorama with hugin, then the computer did a few hours of cranking as well. This one came out quite nicely. Problems mostly due to the average camera lens.
Back in 1993, I was working an hellacious job at the refinery in El Dorado. (Hell Dorado, as I called it.) Monday through Friday in the plant, home for weekends. Lousy project. One bar in town and these were the days when you needed a “membership” to enter. I wound up eating most of my meals in my motel room.
Anyway, I was back in Lawrence for Art in the Park, and I ran into a very talented kid (high school senior) who was displaying his work. His name was Rob Gillaspie. One image in particular caught my eye: Corporate Slave. Surprise :-)
I told him I wanted to buy it and how much would he sell it for. Nice kid, he was stunned, and eventually came up with “five dollars”. I talked him up to ten dollars with a lecture about how it was going to cost me twice that to have it framed. Anyway, we parted company and I never saw nor heard from him again. Periodically I google and FB his name, but nothing yet. So now at least his name and his art work are in google and perhaps he can find me.
I’d scanned some of my Dad’s old newspaper clippings, so it was time to commit them for posterity.. Cricket from the sixties…
This is an article from the 1960s. Currie Cup cricket is the South African equivalent of each US state competing against each other. SA had 5 provinces (or “states”).
Golf next. My Dad never got a hole in one but he got an albatross at Royal Durban Golf Club.
RDGC is a unique golf course. Totally flat and wind-swept. Two-shot penalty if you got into the rough. Surrounded by a horse race track. They have actually reversed the front and back nine since our time. Dad was club President a couple of years in the 70s.Fond memories of New Years dinners with party hats and Dad making the speech.
My Dad made the Natal amateur semifinals a couple of times. Natal was one of the South African provinces.
Paradise Cafe in Lawrence, KS was my favorite restaurant back in the college days. Sadly no longer with us, but I made some great friends there.
(You can find their facebook page at facebook paradise cafe group )
For some reason or another, I got hold of the enchilada recipe, so here it is:
Filling
It occurs to me that everyone should maintain a list of “bucket-list” books. Books that are so important that we believe everyone should read. Or maybe this is the wrong term. Maybe this is just a list of books which we found essential to whoever we are today. I’ll get started here.
Zen and the art of motorcycle maintenance / Lila, by Robert Pirsig
Two books actually. Good college age reading, perhaps for advanced high school. This is an engineer’s bible. Foundations of logic and “truth”