Tuesday, June 30, 2009



in this photo I am making a new chuck key for the MakerSpace lathe. the MakerSpace is a communal workshop we've started in downtown wellington. It's been described to back me as play school for adults. which is a great idea.

now that we are adults we can eat ice creme for dinner and stay up as late as we like.

I remember when I was a child I imagined that when I was grown up, I'd like to have a big house and have a whole room dedicated entirely to Lego.

I didn't think that my house would be a tent in the wellington town belt, but since I've got a room full of (grown up) lego I feel like I'm more or less exactly where I always wanted to be.

plus, there are some big upsides to living in a tent.

Thursday, June 18, 2009

Ive been exploring the internet these last two days, and i've found some pretty weird stuff.

the first thing was a stumbled upon something which had copy-pasted my blog through a english-french translator. I was searching for 'confessions of a cyber-hobo' and it got that before this site, (although returns this site now) they have discarded all but the title on the actual page now, but here is a copy-paste from the google cache:

confessions of a cyberhobo: grails Day 1 in some measure 2

15 juin 2009

Class Trip {String fictitious. Airline airline}class Airline{ plague constraints = { } String denominate String url String frequentFlyer String notes plague hasMany = [trip:Trip] }and all the other shove upstanding as the tutorial requires. I start up grails and glance at to localhost:8080/trip-planner/I discover an offload catalogue of trips, including the brand-new Airline area. thats uncommon. so I click on ‘create new’ and arise:Error 500: Error processing GroovyPageView: Error executing drag along with by: org.codehaus.groovy.grails.web.pages.exceptions.GroovyPagesException: Error evaluating pathos [tripInstance?.airline?.id] on tactics [34]:


why doesn’t discern the characteristic airline? looking at the stockpile beaten path is unjaundiced more horrendous: by belittling by org.codehaus.groovy.grails.web.pages.exceptions.GroovyPagesException


when you arise an slip-up you don’t know the sooner up is alway sample all the undeniable things and upon it goes away. 3 more this is an outrageously criptic slip-up.

What is the deal with this? it's done with wordpress and all about pages, etc and left on the default french-canadian settings. is this some sort of link farming opperation? there are no links back to the original articles.

maybe they are duplicating blogs which link to them, plus a smoke screen of other blogs, so it doesn't look too suspucious? you could detect this, by crawling the page for links and seeing where they all point.

also, i've found an exciting new keyword: bootstrapping. this is an old term for a impossible task ("pull your self up by your bootstraps"), a less old computer term, and a new marketing term.

it's bootstrap marketting which is the new term for me. do a google search, there are millions of people talking about "bootstrapping"

back to the first bootstrap website http://bootstrap.quebecblogue.com who made it and what is it's purpose? I'm not sure. the only generality I can see is that it's often articles about bootstrap marketing and other website optimisation stuff...

Wednesday, June 17, 2009

SmartSketch is crazy.

I have a friend who says Flash used to be really, good and you would do anything with it... he could endlessly sing it's phrases, he isn't a java programmer, so i don't take him too seriously*, but anyway, I was reading about flash on wikipedia...

*maybe this is an unfair prejedus?

It describes the company which developed it, FutureWave Software (who later sold out to Macromedia, who had already consumed Altsys, and went on to gobble up iBand Software, Andromedia Corporation, Allaire, Presedia, and eHelp Corporation before they where themselves brought out by Adobe... who interestingly acquired it with a stock swap, instead of paying money. I wonder what they swapped it for?

anyway. Flash grew out of a product made by FutureWave Software for called SmartSketch, which apparently " was designed to make creating computer graphics as simple as drawing on paper" I've been having a few ideas about how to make drawing on a computer more like drawing on paper myself, so i thought I'd check it out. there was no wikipedia link so I googled it and got this

It didn't seem like quite the same thing but apparently "SmartSketch provides powerful features such as parametrics and relationships that enable execution of design changes quickly and efficiently. It automatically creates and maintains relationships between geometric elements, and supports parametric graphics"

which sound interesting as well. I used a CAD program for the first time a little while ago, but it was very disappointing to see that if i edited something, interrelated parts of the drawing didn't also change in a sensible way... if I changed my mind I had to start over. SmartSketch sounds like it has a way around this, so I thought well, I'll give it a go.

Looking for a evaluation download is discover that you can't down load it! but they will post it to you on a CD for free... I started to fill out the form, but then had to impulse to read the license agreement.

hell. it scared me. not only was it written ALL CAPITALS AND BOLD IN A VERY LARGE FONT, but it was also said things like "The PP&M Product is designed to automatically terminate without notice on the expiration date delivered with the evaluation key. " and "Upon expiration or termination of the license herein granted, Evaluator shall return to PP&M all copies of the Product and any other data furnished by PP&M in connection herewith".

I have to return the CD? yes, and also destroy any notes you have made.
"In addition, Evaluator shall return to PP&M or destroy all reports or evaluations of the Product."

plus your not allowed to tell anyone else what you saw on the CD, even after the evaluation ends. if you do gangs of highly payed Intellectual Property Lawyers will rape you in a dark alley.


also, I am obliged to tell them what I think of the product, otherwise they will terminate the license "At any time" and presumably I will have to return the CD immediately.

by now i was intimidated enough to not want to try the software.

this is the most intense, scary, license agreement I have ever seen.

it's like the time I brought the dianetics book* from the Scientologists. the ones i met seemed like completely ordinary, nice people, but a few months later I received a letter giving me the option of a trial subscription to a Scientology magazine... but only if I signed an agreement on the form which said I would do nothing against the church of Scientology.

which is kinda creepy. they have something to hide and maybe i'd rather they didn't know where I lived.

same goes for PP&M

dianetics by the way, has a few simple interesting ideas, but is fatally flawed by mostly being unreadably absurd.

Sunday, June 14, 2009

wordpress 1

installing wordpress in 5 minutes.

monday 18:38 PM

  1. Download and unzip the WordPress package, if you haven't already. (actually I've already done this - but it didn't take long! it was only 2 megabytes)
  2. Create a database for WordPress on your web server, as well as a MySQL user who has all privileges for accessing and modifying it.
>mysql -uroot -p

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 44
Server version: 5.0.51a-3ubuntu5.4 (Ubuntu)

mysql> create database musicarc;
mysql> connect musicarc
Connection id: 47
Current database: musicarc

mysql> grant all on musicarc to musicarcuser;
Query OK, 0 rows affected (0.01 sec)

it took a bit of fluffing around to figure that out.
monday 19:08

3. Rename the wp-config-sample.php file to wp-config.php.
4. Open wp-config.php in your favorite text editor and fill in your database details as explained in Editing wp-config.php to generate and use your secret key password.

right. easy...

Place the WordPress files in the desired location on your web server:
  • If you want to integrate WordPress into the root of your domain (e.g. http://example.com/), move or upload all contents of the unzipped WordPress directory (but excluding the directory itself) into the root directory of your web server.
then I forget about the instructions and race ahead and browse to localhost/wordpress/

and get "Your PHP installation appears to be missing the MySQL extension which is required by WordPress."

monday 19:15

I put this down for several hours while a makerspace meeting conviens.
you'll be hearing alot more aout this later.

I pick it back up at about

monday 22:30 ish

then i see
6. Run the WordPress installation script by accessing wp-admin/install.php in your favorite web browser.
  • If you installed WordPress in its own subdirectory called blog, for example, you should visit: http://example.com/blog/wp-admin/install.php
ah... same error.

googled the error, and found something refuring to php.ini which i couldn't find, so I searched for the error + ubuntu. was recomended
sudo apt-get install php5-mysql
then restart server
sudo apachectrl restart
now I have an informative looking error message nicely formatted in the browser, with even friendly sounding suggestions as to what might be the problem!

monday 22:41

something about the user not being able to connect to the database. I think it must be something wrong with my grant command. I changed the user to the root mysql user anyway... I promise I'll fix it later.

thats gotten past that error and yay! it worked.

monday 23:08

it's only taken 1 hours.

alright, see you tomorrow.


i was begining to feel like I'd never find any work - so this afternoon i phone I start phoning all the cafe's in the phone book and ask them if they needed dishwashers, or baristas, or anything. I got to the letter E before I got an interview. Also, the first person I rang turns out i went to high school with.

I know, making coffee ain't exactly cyber. but sometimes a hobo's gotta do what a hobo's gotta do.

then - this afternoon I check my email and discover that someone wants me to make them a website! fantastic. this is my important first freelance job.

he wants me to use wordpress, and rewrite his content. a quick check on wordpress site claim that you could install it in 5 minutes.

I hope that is true. lets see.

grails Day 1 part 2

... then I hit a brick wall.

following the second Mastering Grails tutorial, I create an class Trip which has a object Airline, and an Airline class:

Class Trip {
String destination
Airline airline
class Airline{
static constraints = {

String name
String url
String frequentFlyer
String notes

static hasMany = [trip:Trip]
and all the other stuff just as the tutorial requires...
I start up grails and browse to localhost:8080/trip-planner/
I see an empty table of trips, including the new Airline field. so I click on 'create new' and get:
Error 500: Error processing GroovyPageView: Error executing tag : org.codehaus.groovy.grails.web.pages.exceptions.GroovyPagesException: Error evaluating expression [tripInstance?.airline?.id] on line [34]: java.lang.NoSuchMethodException: Unknown property 'airline'
Servlet: grails
URI: /trip-planner2/grails/trip/create.dispatch
Exception Message: Unknown property 'airline'
Caused by: Error processing GroovyPageView: Error executing tag : org.codehaus.groovy.grails.web.pages.exceptions.GroovyPagesException: Error evaluating expression [tripInstance?.airline?.id] on line [34]: java.lang.NoSuchMethodException: Unknown property 'airline'
Class: /WEB-INF/grails-app/views/trip/create.gsp
At Line: [-1]
Code Snippet:
hmm. thats strange. why doesn't know the property airline? looking at the stack trace is even more scary:
org.codehaus.groovy.grails.web.pages.exceptions.GroovyPagesException: Error processing GroovyPageView: Error executing tag : org.codehaus.groovy.grails.web.pages.exceptions.GroovyPagesException: Error evaluating expression [tripInstance?.airline?.id] on line [34]: java.lang.NoSuchMethodException: Unknown property 'airline'
at org.codehaus.groovy.grails.web.servlet.view.GroovyPageView.handleException(GroovyPageView.java:134)
at org.codehaus.groovy.grails.web.servlet.view.GroovyPageView.renderWithTemplateEngine(GroovyPageView.java:112)
at org.codehaus.groovy.grails.web.servlet.view.GroovyPageView.renderMergedOutputModel(GroovyPageView.java:86)
at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:257)
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1183)
at org.codehaus.groovy.grails.web.servlet.GrailsDispatcherServlet.doDispatch(GrailsDispatcherServlet.java:294)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
<...heaps more...>
Caused by: org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException: Error executing tag : org.codehaus.groovy.grails.web.pages.exceptions.GroovyPagesException: Error evaluating expression [tripInstance?.airline?.id] on line [34]: java.lang.NoSuchMethodException: Unknown property 'airline'
at home_dominic_code_trip_planner2_grails_app_views_trip_create_gsp.run(home_dominic_code_trip_planner2_grails_app_views_trip_create_gsp:81)
Caused by: org.codehaus.groovy.runtime.InvokerInvocationException: org.codehaus.groovy.grails.web.pages.exceptions.GroovyPagesException: Error evaluating expression [tripInstance?.airline?.id] on line [34]: java.lang.NoSuchMethodException: Unknown property 'airline'
... 1 more
Caused by: org.codehaus.groovy.grails.web.pages.exceptions.GroovyPagesException: Error evaluating expression [tripInstance?.airline?.id] on line [34]: java.lang.NoSuchMethodException: Unknown property 'airline'
at home_dominic_code_trip_planner2_grails_app_views_trip_create_gsp$_run_closure10.doCall(home_dominic_code_trip_planner2_grails_app_views_trip_create_gsp:45)
at home_dominic_code_trip_planner2_grails_app_views_trip_create_gsp$_run_closure10.doCall(home_dominic_code_trip_planner2_grails_app_views_trip_create_gsp)
... 1 more
Caused by: org.codehaus.groovy.runtime.InvokerInvocationException: java.lang.NoSuchMethodException: Unknown property 'airline'
... 3 more
Caused by: java.lang.NoSuchMethodException: Unknown property 'airline'
at org.apache.commons.beanutils.PropertyUtilsBean.getSimpleProperty(PropertyUtilsBean.java:1122)
at org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:686)
at org.apache.commons.beanutils.PropertyUtilsBean.getProperty(PropertyUtilsBean.java:715)
at org.apache.commons.beanutils.PropertyUtils.getProperty(PropertyUtils.java:290)
at org.apache.commons.beanutils.PropertyUtils$getProperty.call(Unknown Source)
at home_dominic_code_trip_planner2_grails_app_views_trip_create_gsp$_run_closure10_closure18.doCall(home_dominic_code_trip_planner2_grails_app_views_trip_create_gsp:45)
... 3 more
this is an extremely criptic error. when you get an error you don't understand the first step is alway try all the obvious things and hope it goes away... restart the server, make sure you followed the instructions precisely, etc. but no luck.

the next step is to try and localize the problem. when does it start to occur? what is the last normal thing happen? this case is complicated by the fact that it it's all made from several different technologies strapped together, and presented as a single object. this means it's difficult to delve into the depths of the thing.

but I do manage to find a clue. grails Bootstrap class. it's called when the application is started, and I'd seen a tutorial use it to load example data into the database.

what if I use it to create a trip with an Airline object? will it cause the same error?

I add this code to the Bootstrap class:
class BootStrap {

def init = { servletContext ->
println "boot strapping!"
Airline a = new Airline(name:"XYZ",url:"www.xyz.com");
new Trip(name:"XYZ", airline: a).save()
def destroy = {

it causes exactly the same error... but in a different place! and the bootstrap code runs fine, it runs as the application starts, but the error doesn't occur untill you try to view localhost:8080/trip-planner/trip/list remember that the first error didn't occur until I tried to view localhost:8080/trip-planner/trip/create. this is progress. when you have an error like this every inch is an achivement. and you just get it to budge what ever way you can untill you can beat it's secret out of it.

what do I know about the problem? well I know that the code itself worked fine. in the bootstrap class I created an Airline and a trip and set the trip property on the Airline. it's just ordinary groovy code so of course it should work.

just as I was writing this, it occured to me that I hadn't tested printing out the Trip.airline field untill I had done that I couldn't really be sure that it's working.

so I wrote some code to do that and guess what? the error again!

why am i able to set the property 'airline' but not print it?

I had read that grails takes your Plain Old Java Objects ("POJOs") and added stuff to it like getter and setter functions, so that you don't have to. It looks a little like the problem might be in this area.

now that I have a decent clue i'll make a post on a forum somewhere

Grails Day 1

I've been living like an itinerant for nearly 6 months now. I've really been enjoying it, but my funds are beginning to run dry.

I was looking for work, half-arsedly because I neither want to take something too uninteresting nor make an on going commitment, when someone suggested freelancing programming work.

so poking around elance.com to get a smell of what was going i saw it's largely websites...

considering that I have mostly experience with java, and have recently been using groovy. decided to give grails a try...

reading the various introductions I learn grails will magically configure itself, install as easily as opening an envelope, and provide me with massive gains in productivity by not tiring my fingers writing too much code...

sounds fantastic.

I set about installing it on my Asus eee runing ubuntu eee.

I download the latest grails release from grails.org and follow the installation instructions. this proceeds smoothly.

then following the quickstart tutorial I run into my first error. trying to run the >grails create-app

immediately throws an error about 'JAVA_HOME' not being set correctly. this is a pretty nube error, one that had been a nucance to me for some time.

of course I had a line setting java home in my .profile:


but, it didn't seem to work. it worked when I ran the above expression from the command line, but not when the line was inside a script. unless I ran it with the command :

>. setjavahome.sh

>sh setjavahome.sh
did nothing.

when you run a script with "sh" or "bash" it is as if it creates a new terminal and runs it in that. if you run it with "." it is as if it runs it in the current terminal.

later I realise that the problem is I need to use the command "export".

export JAVA_HOME=~/java/jdk1.6.0_13/

thats the first thing I learned today.

after that workaround I get through the first Mastering Grails tutorial easily.

I am beginning to get excited about having full control of the awesome power of grails when I hit a brick wall...

Hello, World

it's a tradition in computer programming, the first program you show a student how to write will output the text "Hello, World"

it's like playing chopsticks on paino.

this is the first post on my first blog...

I've started because of a mounting frustration installing and settingup a web development tool called Grails - more on that next post.

I decided to start a blog because I know that this particular problem I'm tackling is too cryptic to just post on a forum. And this will create both a better resource than a forum thread, but also, committing to writing it will force me to think out the problem in a more effective way.

as well as being a platform for my ruminations about life, and stories of my various adventures which are both quite fascinating!

so: Hello, World. and get the fuck out of my way!