Saturday, October 22, 2005

eee that Shaft eee was a reet daft bugger

As part of next years festival uke preparations I was given the project of woofing up the noise on the stall. This was to help us draw the crowds and let people hear the ukes when things got noisy, as they often do at rock festivals.

To this end I have amp-ed up my Ukulele with a bug and plugged it thru my cry-baby wah-wah pedal into a small amplifier.

It sounds like this

As George Formby famoulsy said "Eee that Shaft ee was a reet daft bugger"

Here are some uke wah wah pics:



Friday, October 21, 2005

Mobile innovation ..

Crikey ... now this is an innovation in mobile. I would get Mrs Spug one but I think she would rather have the last Sopranos box set and a cup of tea.

Attribute Oriented Programming

I have been reading stuff about Attribute Oriented Programming. I realise this makes me Captain Spug, King of Dullness but I thought I would share my insights.

Appfuse is a j2ee acceleration thing that enables you to get up an running quickly using Hibernate, Spring, Xdoclet and test driven stuff. One groovy thing is that a lot of the code is generated for you via Xdoclet. For instance by adding the following order object (POJO!):



/*
* Created on 30-Sep-2005
*
* TODO get a life, play more uke, look out of the window
*/
package uk.co.bluetrail.demo.model;

import java.io.Serializable;

/**
* @author Spug-mola
* @hibernate.class table="morder"
* @struts.form include-all="true" extends="BaseForm"
**/
public class Order extends BaseObject implements Serializable {

private Long id ;
private String username;
private int orderNo ;
private int custNo ;
private int prodNo ;
private int quantity ;
private String Notes ;



/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
public String toString() {
// TODO Auto-generated method stub
return "" + this.getOrderNo();
}

/* (non-Javadoc)
* @see java.lang.Object#equals(java.lang.Object)
*/
public boolean equals(Object o) {

Order order = (Order) o ;

return order.getOrderNo() == this.getOrderNo();
}

/* (non-Javadoc)
* @see java.lang.Object#hashCode()
*/
public int hashCode() {
// TODO Auto-generated method stub
return this.getOrderNo();
}

/**
* @return Returns the custNo.
* @hibernate.property
* @struts.validator type="required"
*/
public int getCustNo() {
return custNo;
}
/**
* @param custNo The custNo to set.
*/
public void setCustNo(int custNo) {
this.custNo = custNo;
}
/**
* @return Returns the id.
* @hibernate.id column="id"
* generator-class="increment" unsaved-value="null"
*/
public Long getId() {
return id;
}
/**
* @param id The id to set.
*/
public void setId(Long id) {
this.id = id;
}
/**
* @return Returns the notes.
* @hibernate.property length="255"
*/
public String getNotes() {
return Notes;
}
/**
* @param notes The notes to set.
*/
public void setNotes(String notes) {
Notes = notes;
}
/**
* @return Returns the orderNo.
* @hibernate.property
* @struts.validator type="required"
*/
public int getOrderNo() {
return orderNo;
}



/**
* @param orderNo The orderNo to set.
*/
public void setOrderNo(int orderNo) {
this.orderNo = orderNo;
}
/**
* @return Returns the prodNo.
* @hibernate.property
* @struts.validator type="required"
*/
public int getProdNo() {
return prodNo;
}
/**
* @param prodNo The prodNo to set.
*/
public void setProdNo(int prodNo) {
this.prodNo = prodNo;
}
/**
* @return Returns the quantity.
* @hibernate.property
* @struts.validator type="required"
*/
public int getQuantity() {
return quantity;
}
/**
* @param quantity The quantity to set.
*/
public void setQuantity(int quantity) {
this.quantity = quantity;
}
/**
* @return Returns the username.
* @hibernate.property length="20"
* @struts.validator type="required"
*/
public String getUsername() {
return username;
}
/**
* @param username The username to set.
*/
public void setUsername(String username) {
this.username = username;
}
}



I can run an ANT build target that generates

my database creation sql
my hibernate DAOs
the validation for struts
simple JSPs to add an order
simple JSPs to view orders
..... and many many more (said in Ronco voice)

This is all achieved by adding the xDoclet tags at the top of some of the functions and class declarations.

Clever ..

or maybe an indication of how looney-emporers-new-clothes-a-like j2EE has become, not sure which at the mo.

This page is powered by Blogger. Isn't yours?