Wednesday, January 28, 2009

Slooow bureaucracy

The beginning of the wikipedia page on Bureaucracy reads as follows:

Bureaucracy is the structure and set of regulations in place to control activity, usually in large organizations and government. As opposed to adhocracy, it is represented by standardized procedure (rule-following) that dictates the execution of most or all processes within the body, formal division of powers, hierarchy, and relationships.

The Merriam-Webster dictionary definition of bureaucracy includes:
3: a system of administration marked by officialism, red tape, and proliferation

Another characteristic I regularly observe within bureaucracies is behaviour driven by aversion to (perceived) risk. One example is the tendency to make sure you don't do anything too different to everyone else. Another is the inability to take initiative and make decisions, resulting in missed opportunities.

One outcome of all this, is that the bureaucratic organisation moves at glacial speed in terms of fulfilling its actual purpose, especially when something that doesn't match its current processes is involved.

All the large Australian organisations (and most smaller ones) I have worked with are bureaucratic. Occasionally you find small pockets of people that are different. Overall though, it is pretty frustrating if you enjoy actually getting stuff done and trying to do it well!

Friday, January 23, 2009

Agile Development Methodologies - Reality vs Hype

Just tidying up. This is an old presentation I gave at the QUT FIT Dean's Industry Working Breakfast.


The circulated abstract for the morning was:
Over the past decade agile development methodologies have become an increasingly common approach to software development. While there are a number of different agile methods, the various agile approaches are underpinned by the capacity to embrace and promote evolutionary change throughout the entire life-cycle of the project. Common characteristics of agile methods also include the frequent delivery of software, close interaction between clients and developers, and the expectation that requirements will not only change but that all requirements may not be known at the outset of a project.

Mr Richard Thomas will highlight research currently being undertaken at QUT’s Faculty of Information Technology including the findings of a recent study exploring how organisations, particularly SMEs, go about adopting software engineering methodologies. Richard’s presentation will briefly outline development of an Agile methodology called RSWP which is aimed at supporting inexperienced developers. He will also discuss how research indicates Agile methodologies will impact on the commercial world of tomorrow.

Focusing on the business perspective Mr Brad Clow will draw on the experience of Workingmouse in delivering commercial projects based on Agile Development Methodologies. His presentation will include not only the advantages of the approach, but issues which need to be addressed in order to successfully establish such an initiative, concerns of business projects moving to an agile approach and some of the pitfalls to avoid.

Wednesday, January 21, 2009

Scala example for accessing Ehcache Server

Back in December Greg Luck asked me to do a Scala example of accessing Ehcache, to fit in with the code samples on their site. Yesterday I finally got around to looking at it and Greg has now posted it on his blog.

My goal was not to write the perfect example. I decided to do something to fit in with the style of the existing Ruby code sample, which just prints the response of a HTTP GET to a fixed URL. Given that this is the sole purpose of the program, I didn't see the point of explicitly handling exceptions or closing network connections.

I couldn't find a HTTP client library written in Scala, so rewriting the Java code sample would basically be a thin veneer of Scala syntax over the Java libraries. Too much time for little value.

I must admit that I had the total number of lines of code in the back of my mind, simply because the other samples, apart from the Java one (which does more) are all short and people will notice this. Personally I think this emphasis on short LOC, considered in isolation is misguided.

For me, the expressiveness of a language is more important, i.e. the ability to express abstractions and properties that matter (or perhaps should matter). Assuming that it is possible to express a particular concept in a language, the next question is how easy it is to do so and LOC/number of characters are aspects of this.

Here is my simple Scala program:

import java.net.URL
import scala.io.Source.fromInputStream

object ExampleScalaGet extends Application {
val url = new URL("http://localhost:8080/ehcache/rest/sampleCache2/2")
fromInputStream(url.openStream).getLines.foreach(println)
}

I see three meaningful language features utilised (apart from static typing):
  • Easy definition of an immutable value. The keyword val on line 5.

  • Type inference. The type of the value url is not explicitly annotated in the code, but inferred at compile time.

  • Easy use of higher order functions. foreach on line 6, takes a function as its argument.

Thursday, January 15, 2009

Wednesday, January 14, 2009

QOTD

Regarding emerging technologies:

First, it is ridiculed by those ignorant of its potential.

Next, it is subverted by those threatened by its potential.

Finally, it is considered self-evident.

- Paul Moller

From his TED video, Take a ride in the Skycar.

Monday, January 12, 2009

eBay auctions

Recently I wanted to purchase a particular item and after investigating other avenues, decided upon using eBay. There seemed to be about one auction finishing per day for this item.

I observed that generally there are none/inconsequential bids for most of the time. In the last few hours there is some sporadic activity and then everything really happens in the dying couple of minutes. This seems reasonable behaviour, given that when I am bidding I wait till the last few minutes, as I don't want to unnecessarily drive up the price with earlier bids and want the element of surprise to increase my chances of getting what I want.

So a five day auction lasts 120 hours. The first 119 hours and 55 minutes are basically advertising that an auction is going to occur for five minutes (or less) at an appointed time.

Wednesday, January 7, 2009

iiNet toolbox error


Wanted to check my current ADSL data usage via the ISP.