Multiple Processor Computing Challenges go Beyond Purely Technical Issues

A relatively simple, but still interesting, article about the issues faced by distributed architectures .

InfoQ: Opinion: Multiple Processor Computing Challenges go Beyond Purely Technical Issues

The Website Is Down: Sales Guy vs. Web Dude

I don’t usually link to youtube videos, but this one is just very funny (and worryingly true to life).

YouTube – The Website Is Down: Sales Guy vs. Web Dude

Google’s Open Source Android OS Will Free the Wireless Web

A fairly comprehensive Wired article about Google Android

Google’s Open Source Android OS Will Free the Wireless Web

Javascript code prettifier

Here’s a neat little thing which I heard about on the Stackoverflow podcast. I can already think of plenty of uses for it. A general purpose code “prettifier” which detects, lays out and highlights the syntax of a range of programming languages. Looks simple to include in the JavaScript of any page which might be displaying code.

Javascript code prettifier

Tools for Agility

A potentially interesting white paper from XP and TDD “though leader” Kent Beck. I can’t work out if this is just the warm-up act for some sort of Microsoft product announcement, though …

Download details: Tools for Agility

Agile Made Us Better, but We Signed Up for Great

Following a mildly rambling discussion this morning, I was intrigued to see the following article which talks about the problems of losing impetus for change after a few bad practices are removed and a few benefits are seen.

How far should we be pushing for real end-to-end agility?

The Agile Manager: Agile Made Us Better, but We Signed Up for Great

Using the new subversion integration in Eclipse Ganymede

Like many other developers I was keen to try out the recent Eclipse Ganymede release. In particular I wanted to try the new subversion integration (“subversive”) to see if it is any better than the old (“subclipse”) plugin I used to use with Europa.

Getting the new subversion working was surprisingly tricky. Obvious choices simply do not work, and the error messages do not give quite enough information to solve the problem. Add to this that some of the names of locations and updates can easily be misconstrued and you have a recipe for confusion.

For example, the error message presented if you try to use the subversive plugin without installing any third-party connectors is the only-partially-helpful:

SVN: ’0×00400006: Validate Repository Location’ operation finished with error: Selected SVN connector library is not available or cannot be loaded.
If you selected native JavaHL connector, please check if binaries are available or install and select pure Java Subversion connector from the plug-in connectors update site.
If connectors already installed then you can change the selected one at: Window->Preferences->Team->SVN->SVN Client.
Selected SVN connector library is not available or cannot be loaded.
If you selected native JavaHL connector, please check if binaries are available or install and select pure Java Subversion connector from the plug-in connectors update site.
If connectors already installed then you can change the selected one at: Window->Preferences->Team->SVN->SVN Client.

I think the Eclipse folks have potentially missed something important here – checking out a project or three from subversion is almost always the way I start when I want to evaluate an IDE.

Anyway, here are a set of steps which should result in a working Eclipse Ganymede with the new subversion:

Get the basic subversion integration plugin from the eclipse download site

  1. Select Help::Software Updates from the menu bar
  2. Unfold Ganymede::Collaboration Tools
  3. Select SVN Team Provider (Incubation)
  4. Click install… and follow the instructions, including a restart of Eclipse

Resist the temptation to try and use the plugin at this point. It won’t work and you will get the above confusing message about connectors.

Get the third party SVN connectors from a different update site

  1. Select Help::Software Updates from the menu bar
  2. Click Add Site…
  3. Enter http://www.polarion.org/projects/subversive/download/eclipse/2.0/update-site/ and Click OK
  4. Unfold the new site :: Subversive SVN Connectors
  5. Select appropriate connectors. In my case I selected Subversive SVN Connectors, SVNKit 1.1.7, and SVNKit 1.2.0
  6. Click install… and follow the instructions, including a restart of Eclipse

You should now be able to either Window::Show View::Other…::SVN Repositories or Window::Open Perspective::Other…::SVN Repository Exploring and add repositories to your hearts’s content.

Please let me know if your process differs from this, or if you have any corrections or suggestions.

Cleanly Migrate Your Subversion Repository To a GIT Repository

Regular readers (are there any?) should have guessed by now that I am investigating distributed version control (specifically git). I also have a significant investment of code and history in subversion repositories. A way to migrate from svn to git, keeping all the commit histories sounds great…

Simplistic Complexity » Cleanly Migrate Your Subversion Repository To a GIT Repository

Also An introduction to git-svn for Subversion/SVK users and deserters or Git Guides – Import from Subversion

Eclipse Git plugin installation

I found a blog entry which goes through the steps of downloading, building and installing the eclipse git plugin, so I thought I’d give it a go. It’s a bit complicated – involving building the plugin from source, but It seems to work!

Chris Cruft » Blog Archive » Eclipse Git plugin installation

Fun with Git

Recently I decided that it was time to stop just reading about distributed version control and give it a go. I had already run through a variety of git tutorials, but all of them concentrated on use of local repositories and/or starting with a clone of an existing remote repository.

My main need is something slightly different, though. I want to set up my own remote repositories for my large and rambling collection of projects, so that I can access them wherever and whenever I am working.

I was tempted to use Github but decided that the learning process of doing it myself would be valuable. Eventually, I think it was, but I still might go to Github for some of my projects.

My first step was to install Git on my main development machines. On the Ubuntu box it was easy using the Synaptic package manager. On a Windows box it’s not quite so straightforward, involving a choice between a Git based on Cygwin and a Git based on direct use of Windows libraries. I eventually chose the second option, but I might change my mind later if it doesn’t work out. For the moment it does the job.

My next step was to set up the remote repository. I decided to host my repositories on some space I rent from Dreamhost, as they seem generally pretty supportive of new stuff, and already include subversion hosting.

I started by following the steps in the DreamHost Wiki entry on Git, but could not make that work. Something went wrong at the step of pushing a local repository over WebDAV. Determined to continue, I instead tried the (somewhat more complex) steps at Autopragmatic » Blog Archive » Hosting a git repository on dreamhost. Even though this involved rebuilding a slightly non-standard version of Git on the server this now works very well.

I now have a small green-field project in a remote repository at Dreamhost. My next plan is to investigate using git-svn or some other form of git/subversion bridge.

Free Spanish Lessons and Spanish Language Courses

My eldest wants to try learning Spanish, and suggested that I look for some audio study materials for her MP3 player. I had a quick look around the internet for free stuff. Here are some that I found

Free Spanish Lessons and Spanish Language Courses

Spanish Lessons – A to Z Home’s Cool Homeschooling Foreign Languages

Free Foreign Language Courses (Download to MP3 Player, iPod or Computer) | Open Culture

She’s starting with the episodes of the Coffee Break Spanish podcast

Update: Coffee Break Spanish have just announced that they are stopping the series after episode 80 and starting again from the beginning. In one way it is sad to see it end, but in another way it can give my daughter renewed hope that she will get to the end. She’s currently still squeezing the juice out of the first few episodes!

Running Windows Pidgin From a USB Drive (Portable Mode)

I have just spent an hour or so evaluating a selection of XMPP (Jabber) clients, including Pidgin, Miranda, Trillian and Pandion. After some playing I have settled on Pidgin for the moment. It is a multi-protocol client which supports a whole range of services. I currently have it set up for AIM, Yahoo, Google Talk, and my own Jabber server. What I would really like is one which also supports Skype IM – I use that a lot for work.

For now I have fully installed Pidgin, but I am very interested in the possibility of creating a portable version which runs from a USB drive.

Using Running Windows Pidgin From a USB Drive (Portable Mode)

InfoQ: TDD Opinion: Quality Is a Function of Thought and Reflection, Not Bug Prevention

An interesting article considering potentially conflicting results about how to improve software quality, and drawing some general conclusions.

InfoQ: TDD Opinion: Quality Is a Function of Thought and Reflection, Not Bug Prevention

I find this an interesting contrast to another InfoQ article:

InfoQ: JSR-305: Annotations for Software Defect Detection

For me this is heading toward madness – annotations already have the potential to form a crazy, fragile and mutually incompatible mess around code, and now another proposal to dollop a load more syntactic noise on otherwise simple Java. This seems mostly like a strange, ugly and potentially incomplete attempt at implementing design by contract.

Voting Someone Off the Island on an Agile Team

All teams have their ups and downs, and sometimes it seems as if a team would just be better without a particular person. A recent article from InfoQ discusses this situation in the context of the Survivor TV show, popular in the USA, where contestants repeatedly get the opportunity to “vote someone off the island”.

InfoQ: Voting Someone Off the Island on an Agile Team

While I can see that in some situations the ability of a team to decide together that it’s just not working for some team member is useful and valuable. However, I can’t help worrying that there is a hidden dark-side to this.

As well as making rational consensual decisions, groups also exhibit other, less desirable, characteristics. It’s easy to imagine someone being “voted off” because their ideas challenge the status quo, because they threaten the complacent assumptions of the rest of team, or simply because they are different.

A mob, even a small mob, can be a dangerous thing. “Reality TV” such as the above-mentioned Survivor, Big Brother, The Weakest Link, and many more have shown us this again and again. Do we really want to encourage the mentality of conspiring to “vote off” the most challenging competitors in software development?

XSS (Cross Site Scripting) Cheat Sheet

A fascinating collection of possible cross-site-scripting vulnerabilities. Potentially very valuable for anyone developing a web application which allows text input.

XSS (Cross Site Scripting) Cheat Sheet

Git tip: set your identification and colours

A small tip for setting some global configs for Git. Note that in my installation it needed a double dash (–global) instead of a single dash (-global).

lixo.org :: Git tip: set your identification and colours

Integrating Testers on to the Agile Team

I just found this link in my drafts. Still worth looking at if you are interested in a holistic view of agile development.

InfoQ: Integrating Testers on to the Agile Team

The Simplest Thing That Could Possibly Work

A continual source of discussion is the XP/agile admonition to do “the simplest thing that could possibly work”. What is simple? How do you know it could work until it is done? What if part-way through you spot a “simpler” solution? “simpler” for who? And what does “simple” mean, anyway!!

Here’s an article which looks at this old chestnut from the point of emphasis – is it the “simplest” or the “possibly” which should carry the most weight?

Jay Fields’ Thoughts: The Simplest Thing That Could Possibly Work

Another commentary on the same article from Ian Robinson can be found at The Simplest Thing That Could Possibly Work :: iansrobinson.com

Cola: Real-Time Shared Editing on Vimeo

This is such a great idea – it really is getting close to real pair programming environment. Best of all it runs with the familiar Eclipse IDE.

Cola: Real-Time Shared Editing on Vimeo

The ultimate thin client

I like this. halfway between the complex and largely unsolvable world of natural language processing, and the currently trendy area of domain-specific languages (DSL) lies the more constrained and useful area of domain-specific-language processing.

Why not use a structured subset/dialect of a natural language as a control interface – it’s a natural fit for mobile interfaces, and hands-free interfaces generally.

Interoperability Happens – The ultimate thin client