Now that’s a job advert!

Harry Pynn de-constructs the common stupididty of recruiting developers through agencies and offers a re-written and powerful job advert.

If you think you meet Harry’s criteria, I suggest getting in touch with him soon ;)

Harry Pynn: What Sanderson of Oundle can teach us about developer recrutiment

The REST Dialogues

When I first encountered Duncan Cragg’s “REST dialogues” I was not sure how they would develop. As I have read more, I have become progressively more impressed. Cragg uses the style of a Socratic dialogue with an imaginary “eBay architect” to teach about the nature and use of REST techniques as an alternative to more traditional approaches such as SOAP and SOA.

Recent dialogues on Business Conversations and The Distributed Observer Pattern are particularly thought-provoking, but the whole growing series is definitely worth a read.

The REST Dialogues

How does Architecture fit with TDD

It’s a common conundrum once a team embraces test-driven development (TDD). What becomes of the role of architect? Some suggestions include moving the role of the architect even higher than in a typical waterfall or “over the wall” process.

Sarah Taraporewalla’s Technical Ramblings » How does Architecture fit with TDD

My take on this is a bit different. One of the toughest things when developing software using TDD is choosing which tests to write next. This drives in a very real way the capabilities and design of the resulting system. At a low level the choice of test is often relatively easy, but at a higher level it can be easy to get lost in the detail.

So here’s my suggestion for the role of the architect in TDD-based development: driving the choice of high-level test cases to implement, and moderating the discussions between developers about how such test cases are split into finer tests and eventually implemented.

The benefits of TDD (evolutionary design, scaffolding, etc.) are still there, as is the input from an individual with collected understanding of which possibilities are implemented and which are not.

Thoughts?

Classroom response systems

A while ago I wrote about th every limited way that many educators use student response “clicker” handsets. Now I read yet another article on the topic.

Classroom response systems – elearnspace

The thrust of the article is that the use of specialist handsets is limiting, and it considers alternatives such as commodity mobile phones using bluetooth, SMS and so on. But it still misses the point. Even while acknowledging that students have massive access to communication technology, its use in education is almost universally limited to answering multiple-choice quizzes.

This is “in the box” thinking. A quiz is an extremely blunt instrument for measuring student engagement and learning. The lack of a “back channel” of information flow to the teacher has been a limitation of education ever since the first students gathered at the feet of a master. This unidirectional transfer has become such a part of the educational process that it is no longer questioned. Sometimes it is even seen as a virtue, rather than an unfortunate consequence of scale. Communication from student to teacher is carefully isolated in the small bubbles of tutorials, seminars, and one-to-one chats. “Proper” education, it appears, takes place when listening to lectures and reading textbooks.

With pervasive communication technology we now have a way of breaking out of this constraint. Think of the possibilities!

  • Imagine every participant gets to indicate privately whether the pace is too fast or too slow.
  • Imagine every student is free to raise non-interrupting questions or misunderstandings, and others get to answer them or vote them up if they have a similar problem. Common problems can be addressed immediately, others can be dealt with individually later.
  • Imagine student notes, thoughts, and problems could be shared both with the teacher and the other students during a session, as well as being recorded for later use, rather than each student having his or her own “silo” of bafflement.
  • Imagine a screen with a real-time “dashboard” of student interests and concerns as the session progresses, so a teacher can adapt and drive the session with open eyes.
  • Imagine students could “log in” and “log out” of sessions without disturbing other students or the teacher, and yet still be able to track what they have missed.

All of these things are technically possible. Most are possible using commodity “clicker” hardware, let alone the power of a modern mobile phone, Wi-Fi iPod, or laptop.

Before dismissing this as a pipe dream, consider that these things routinely happen at technical conferences, where it is not uncommon for a large proportion of an audience to be twittering, blogging, messaging and commenting throughout each presentation. Strangely enough, this does not seem to result in the wisdom of the presenter being swamped by mindless chatter, rather that it is amplified, distributed, and even sometimes corrected.

Business Analysis: Can’t negotiate size… and a good thing too

In our team we have found a tendency for the time spent estimating stories to creep upward. More and more design seems to be considered as we work through the stories. While this is a very valuable way of sharing information among the team, it is not a very effective way of estimating.

Akshay Dhavle has written a brief blog post reminding that sometimes, all that is needed is a simple “small, mediun or large” estimate. Business Analysis: Can’t negotiate size… and a good thing too

Using GitHub as a blog

What a cool idea. Using GitHub as a blog.

raganwald’s homoiconic at master — GitHub

Filesystem structure of a Python project

I’ll admit that I don’t have a lot of experience with Python, but one of the things which always gets me in a tangle is project structure, modules, packages, importing and how they all play together. So far I have not found much by way of resources to help newbie Python folks get to grips with “best practice” in this area.

This post looks like it might be helpful, though.

jcalderone: Filesystem structure of a Python project

Building a successful agile team

Darn, I should have made more effort to go to XP Day this year. Gojko Adzic reports about a presentation which is very topical for our team right now. All about how to get a better return for time and effort spent doing the recruitment process.

Gojko Adzic » Building a successful agile team

Christmas is coming

From time to time people ask me what I want for Christmas or for a brirthday present. At the point that anyone asks, I immediately lose any memory of anything I might have wanted or needed during the year.
In an attempt to solve this problem this year, I am looking at on-line gift lists. I have maintained a wishlist at Amazon.co.uk for ages, but it has not usually had much on it.
This year I have decided to try out one of the many free on-line gift-list services (in this case whattogive.com), so I have created a wishlist there and I am adding a bunch of stuff there to see what happens. You never know, someone might actually find my list and buy me something ;)

The problem with Scrum

A pleasantly witty yet insightful post about how different processes and methodologies can suffer similar problems, and how this relates to the individual learning journeys of practitioners.

lizkeogh.com » The problem with Scrum

How much is really new?

I read a lot of blogs and articles about education, software, and video. It’s often interesting to observe the differences and the similarities between these largely separate fields. In education, for example, the casual use of the internet for sharing and collaborating which characterises modern software development is seen as a new and contentious area of exploration. When shown examples such as this it’s easy to become blasé and to assume that software practice is at the cutting edge of everything.

Ted Neward points out that this is surely not true, and give some examples where software teams have a lot to learn from other fields such as management, sociology and anthropology.

Interoperability Happens – The Myth of Discovery

A few JavaScript rich UI links

SmartGWT UI component library a blogged description and another one or go to the horse’s mouth and see the project page.

MochaUI is a whole desktop or content management system or something. See MochaUI in action here.

Standups and the Right Point

Just back to my desk after this mornings stand-up meeting to find an article about how to address lateness and loss of respect at such meetings. Thoughtful.

Focus on the Right Point | Agile Software Development

What’s up with Grizzly code and examples?

I was excited to read that the Grizzly Java server framework has had an update as I am currently trying to evaluate embeddable HTTP servers for several projects.

I downloaded the grizzly http server jar and clicked through to the associated “Getting Started!” page of example code.

It seemed so simple: knock together a fresh Eclipse project, and create a new test class containing the example code:

package test;
 
import java.io.IOException;
 
import junit.framework.TestCase;
 
import com.sun.grizzly.http.embed.GrizzlyWebServer;
import com.sun.grizzly.tcp.http11.GrizzlyAdapter;
import com.sun.grizzly.tcp.http11.GrizzlyRequest;
import com.sun.grizzly.tcp.http11.GrizzlyResponse;
 
public class GrizzlyHTTPTest extends TestCase {
  public void testServer() {
    GrizzlyWebServer ws = new GrizzlyWebServer("/var/www");
    try{
      ws.addGrizzlyAdapter(new GrizzlyAdapter(){  
        public void service(GrizzlyRequest request, GrizzlyResponse response){
          try {
            response.getWriter().println("Grizzly is soon cool");
          } catch (IOException ex) {            
          }
        }
      });
      ws.start();
    } catch (IOException ex){
      ex.printStackTrace();
    }
  }
}

Once I had found the right includes etc. it compiled happily. Although I was a little worried that the “addGrizzlyAdapter” method appears as deprecated. So I ran it.

It ran. Or more to the point, it ran and finished. My test gave a me a green bar, when I was expecting a hung process while it waited to serve pages. When I tested it with a browser (trying several common ports) I got no response.

I am now thoroughly puzzled, This is completely different behaviour to any server framework I have tried so far, and the “Getting Started!” page offers no help.

Does anyone know how I could start a Grizzly HTTP server and have it run for long enough to actually serve some pages?

Some links about commercialising video content

My link queue is filling up again. Here’s two links on commercialising video content.

Hey, Grandma, Let’s Put Up a Video Portal! – Bits Blog – NYTimes.com

How Google Plans to Take Over TV

Guidelines on Writing a Philosophy Paper

A bunch of useful comments, many of which apply to any academic writing task. Good to come back to each time I embark on another.

Guidelines on Writing a Philosophy Paper

Strategy is Something You Can Learn

This is an inspiring article about ways to determine and implement business strategy. Best of all it’s in the context of starting and running a software business – in this case Mike Cannon-Brookes’ Atlassian.

This is going in to my “don’t forget” collection, with
6 reasons why a VC funded startup failed

rebelutionary: Strategy is Something You Can Learn

Does More Than One Monitor Improve Productivity?

At work I have three monitors on my desk – one 20″ wide-screen and two 17″ regular monitors. At home I have just two somewhat mismatched 17″ monitors. Admittedly, in both cases all the monitors are attached to different computers, but using Synergy they respond to the same mouse and keyboard.

I do a lot of programming using Eclipse, for example, and I have found that the widescreen monitor is considerably more effective than the old 4×3 style. The extra width gives room for a variety of toolbars and navigation panels at the side of the screen. I have tried using multiple monitors on a single computer but have never found a satisfactory way to use them. Splitting a single desktop always seems to result in windows with a big opaque bar down the middle, which I hate, and makes the “full screen” window button effectively useless. So far I have not found any desktop settings which support the option of “full screen” filling the display the window is currently displayed on. Perhaps I should try harder!

It’s sometimes more difficult to justify getting a bigger monitor for home development, than for one used at work for paying customers, though.

Coding Horror: Does More Than One Monitor Improve Productivity?

Experimenting with GigaSpaces

As I was driving home from work yesterday it occurred to me that Sun seemed to somehow have missed a golden opportunity a few years ago. Their motto for ages was/is “The Network is the Computer” but the names everyone thinks of for “cloud” technology do not include Sun. What is most saddening is that several years ago Sun had some incredibly cool technology which, looking back, seems a perfect fit for the new cloud-based world. I’m referring to Jini, Sun’s auto-scaling, auto-provisioning, mobile code, service-discovering network thingamabob.

I loved the idea of Jini when it was first released (I still have half a dozen Jini books around my office), but it had some significant problems. Most important was the general fiddliness of getting anything working. Even a simple “hello world” demonstration required messing with class paths and running several picky and fragile command line scripts. A world of difference from the state of web application deployment at the time. Despite several point releases, this never really got any easier or more comprehensible. Jini certainly helped make the complex possible, but it certainly did not make the simple, simple.

When I got home after this rumination, I looked around a bit to see what had happened to Jini and if it had any relevance in the brave new world of Amazon and Google. I was pleasantly surprised.

One of the key early Jini services was JavaSpaces. Equally fiddly to set up and comprehend, but powerful and scaleable, and very much in the spirit of the grid/cloud approach. Effectively, Jini and JavaSpaces have developed to become GigaSpaces, a commercial product which attempts to solve the problems of Jini and present it as a contender in today’s world. A sure sign that the GigaSpaces folks “get it” is the way they are integrating with Amazon’s cloud offerings.

The extent of my experimentation so far has largely been limited to following their “hello world” tutorial on my local system. There were one or two hitches, such as the parts of the tutorial code which use Eclipse requiring the project directory names to start with “hello-”, but the build/run batch scripts requiring names without the prefix. Other than that, the process was pretty painless, certainly compared to my experiences with early Jini. Next steps are to try creating my own small application, then to deploy it on the “cloud” and see if the ease of use continues.

As it stands I am impressed.

Disappointed with the British Computer Society

The British Computer Society (BCS) is supposedly the professional institution in the UK which represents anyone working in the field of Information Technology (IT). I have been an associate member for many years, and most years I consider upgrading my membership to become a full member but have never actually done so. Usually the problem I face is that, despite having worked in software development for at least 15 years, I don’t actually know anyone else in the society to act as my sponsor.

This year, though, I face a different problem – my disappointment with the attitude of the society, particularly as expressed in two recent articles, published on their web site and notified to members via an email “magazine”.

The two articles in question are:

I urge you to read them and make up your own mind.

My problem with both of these articles is that they seem to express a one-sided attitude which I had hoped had been banished from the BCS many years ago.

When I first encountered the BCS (during my university time in the mid 1980s) it was seen as the bastion of IT middle management, and in particular middle management in large corporate environments. There seemed little or no representation of or for the people actually doing the work of producing and maintaining information systems, and an almost pathological ignorance of the concerns of contractors and people working for small businesses.

Over the years, my concerns waned. The society seemed to re-invent itself to become more in-line with its charter and thus more inclusive of software developers and contractors. It still struggled with the idea of small IT businesses, and of small departments or lone IT workers in other organisations, but I had hopes that this would improve, too.

But then I received these two articles, and all my concerns about the emphasis of the society came flooding back. Both articles appear riddled with the view that developers are lazy and selfish creatures who will always choose to produce rubbish unless forced by managers or testers. This is an appalling stereotypical slur, and completely at odds with the stated, inclusive, intent of the society.

I understand that both these articles were published through the society’s “blog” initiative, and thus have not had the editorial oversight that one might expect from a more formal publication. However, this does not exempt them from reflecting on the BCS. Since reading these articles a few days ago I have already had one forwarded to me by a colleague. The damage has been done.

Maybe I won’t be upgrading my membership this year, either.