VirtualBox 3.2.0 Beta 1 released

Just yesterday I was discussing with colleagues about what might happen to Sun’s VirtualBox virtualization software. I use it a lot, and have become somewhat worried about its future now that Sun has been acquired by Oracle.

If this email announcement is anything to go by, then the future looks pretty good:

[vbox-announce] Announcement: VirtualBox 3.2.0 Beta 1 released.

Building a Twitter Filter With Sinatra, Redis, and TweetStream

I’m still collecting resources for a potential Sinatra/Redis project and this looks like a useful tutorial:

Building a Twitter Filter With Sinatra, Redis, and TweetStream @ DigitalHobbit.

How to Write a WordPress Plugin

This blog runs on WordPress, and makes use of several plugins from the WordPress plugin repository. However, the time has come for me to look at writing my own WordPress plugin.  Here’s some links I have found

How to Write a WordPress Plugin | Devlounge.

WordPress Codex: Writing a Plugin

HookPress for WordPress

WorkSnug – is Augmented Reality really the best way to find a desk?

The web is full of location-based startups at the moment, struggling to stand out in an increasingly crowded marketplace. WorkSnug seems to be one of them, pitching itself as a way for the modern “urban nomad” to find places to work. I have been in this situation myself a few times – time to kill in an unfamiliar location and looking for somewhere to plop down with a laptop and a decent coffee (and ideally a network connection) so I guess the basic idea has value.

However, the approach taken by WorkSnug seems odd, and somewhat flawed. They make a big deal of the Augmented Reality nature of their service – the ability to “look through” an iPhone screen and see labels on nearby buildings indicating the location of likely workplaces. This is just a crazy way to approach the problem. Think about it. To successfully find this sort of location using this sort of interface will only work when all of the following things are true:

  • the mobile device knows the current location
  • the mobile device knows the current direction (in 3D space, it seems!) of view
  • workplaces in the local area are registered with the system
  • the user is looking in a direction where there are registered workplaces
  • the user is near enough to registered workplaces that they can be projected on nearby architecture

Arguably the hardware and infrastructure may be able to provide the first two of those conditions, and in the (unlikely?) case that the service takes off then we might achieve the third point. But the last two are the killers. Are the WorkSnug folks really imagining streets filled with laptop-carrying execs twirling like dancers while holding their iPhones aloft just on the off-chance that they might catch a glimpse of an office with a spare desk?

Fundamentally it’s a problem with data density. In areas so densely packed with eligible workspaces that they might be visible using such an AR approach, finding one is not really a problem and the solution is not very valuable. It’s in the areas where working space is harder to find (suburbs, small towns, rural areas, industral areas, …) that this kind of service has value, but these situations are exactly the ones where Augmented Reality makes no sense.

By all means run a registry of workplaces, and show them on a map with details of how to get there, but give up on the AR, please.

Oh, and also give up on the pretending that the service is busy by scrolling a bunch of pregenerated activity messages on the home page. It’s been many times before and just makes the creators of the service look like liars and charlatans.

My pet’s name is too short

A nice little article pointing out flaws in so may of those website “security questions”.

My pet’s name is too short

In addition to the points raised in the article, I always get cross at sites which offer a set of “security” questions all of which are either (a) obvious from a bit of searching such as place of birth or first school, or (b) very likely to change such as favourite pet or sports team.

Sinatra Turns 1.0

I’m not really an eager version-watcher, but I do have a soft spot for the ruby web framework Sinatra. It’s nice to see that the Sinatra team are confident enough to give it a “1.0″.

Deceptive Simplicity: Sinatra Turns 1.0

Kent Beck on Agile and Lean for startups. A must-watch video

Kent Beck, rightly well-known for Extreme programming, Test-Driven Development and jUnit gave a really thought-provoking talk at the Startup Lessons Learned Conference in San Francisco on April 23, 2010.


Watch live video from Startup Lessons Learned on Justin.tv

If you are at all interested in software and/or startups, this is well worth a viewing.

Via Energized Work.

The Opposite of Waterfall is Pond – A Metaphor for Agile

You have to love a good analogy. Here’s one which takes the notion of a “waterfall” development process literally, and contrasts it with a pleasant day out on a serene pond.

The Opposite of Waterfall is Pond – A Metaphor for Agile | Agile Blog: Scaling Software Agility

My favourite snippet:

Eventually, we find a place that everyone agrees looks nice and we pull the boat up on shore. Our project is complete in a way that we couldn’t have predicted exactly because we’ve never been on this particular pond before. We’re ready to set out again just as soon as we’re done with the picnic. In Pond, you always have a picnic at the end of the project.

All of which makes me smile. Back when I was working on an agile project where releases were named after ducks and other wildfowl, I proposed at one point a component named “pond” (standing for “provider of necessary data”) shared by all the deployed ducks.

Ah nostalgia.

JSONView add on for Firefox

Dynamically-generated JSON is bread-and-butter to modern AJAX development, but it can be irritating and slow to pick through a compressed lump to try and work out what’s really going on. Finally, I got annoyed enough to install a Firefox plugin to “pretty print” JSON (with expand-contract handles) in a browser window.

JSONView :: Add-ons for Firefox.

In general it’s good at what it does. It would be nice to have a few more options, such as a way to tell it what mime-type(s) to consider as representing JSON, and enough intelligence to ignore common “wrapping” JavaScript such as a variable assignment.

Useful.

Time to opt out of facebook sharing your details

Looks like facebook is moving to a model where by default it shares your information with thrird party sites and applications unless you explicitly say “no”

Privacy issues? Google engineers leaving Facebook in droves.

From the comments on that page:

Go to Account > Privacy Settings > Applications and Websites and uncheck “Allow”

ecoder – an in-browser programmers’ editor

This is a neat idea, and certainly more friendly than “keyhole surgery” with ssh and vi if you need to edit files on a remote server over the web. Does not seem to have had a lot of development recently, but seems pretty usable as it is.

ecoder | home

Need a typeface? Here’s a flowchart to help you choose

Julian Hansen has a witty flowchart for choosing from a set of well-known typefaces:

infographiclarge_v2.png (PNG Image, 1983×1402 pixels).

X Server on Windows using Xming

I have been exploring the use of virtual machine images for web applications recently, and found a tension between easy development (which realistically requires a GUI these days) and small, efficient deployment.

So, after years of separation, I find myself back at the point of using X Windows to run “remote” applications using the display, keyboard and mouse on my workstation. After a look around I have found and installed XMing on my Windows boxes and am having great fun with much lighter machine images.

Xming X Server for Windows | Get Xming X Server for Windows at SourceForge.net.

Configuration was a bit tricky to start with. For several hours I was unable to get evan a simple X application such as xterm or xeyes working. Error messages included “No protocol specified” and “Can’t open display”.

Some things I needed to do included:

  • Choose the right VM network option. For VirtualBox this meant using “bridged” rather than “NAT” mode.
  • Add the name or ip address of the server as a new line in X0.hosts (by default, this file is located in C:\Program Files\Xming)
  • Open port 6000 in Windows Firewall, if you use it
  • add export DISPLAY=workstation_ip_address:0 to your .bashrc on the server

When you get it working this allows such fun tricks as:


nautilus --no-desktop dir1 dir2 ...

to allow moving files on the virtiual system by simply dragging and dropping icons between separate workstation directory windows, or:


sudo apt-get install aisleriot
sol

to hugely increase the range of time-wasting solitaire games available on your Windows PC :)

Assembla now offers free private svn and git repos

Just when I thought private project hosting choices had settled down in favour of Unfuddle, along comes a potentially game-changing announcement from Assembla.

My big problem with Assembla has been that they equated one project (“space”) with one source repository, and charged extra for extra spaces. Each extra space gives extra issue tracking, documentation storage and so on. This might make sense in a traditional centralised subversion model, but it’s completely alien to git, where a project is commonly represented by a network of repositories.

As of 14 April, Assembla now offers unlimited repositories with each space, allowing a single project to share issue tracking, documentation, activity notifications etc. across multiple repositories. If you don’t need the rest of the features, they also now offer basic private source repositories for free, presumably with the idea of up-selling the other services.

Assembla seem to have slightly better tools than Unfuddle, but its hard to tell as they still don’t offer a real, private, non-expiring, “try before you buy” like Unfuddle does. With Assembla you get a month’s usage before you have to start paying, and their cheapest plan is $24 per month, considerably more than Unfuddle’s “micro” plan of $9 per month.

Both services are free for open-source projects, but then so are plenty of others (sourceforge, github, and so on.)

For the moment, I am still happy with Unfuddle, but I’m keeping an eye on Assembla.

Dynamically provision virtual machines from ruby with Vagrant

I have been doing a lot of work with virtual machines recently. It’s a great way to sidestep machine-specific issues (Windows, I’m looking at you) and set up a consistent development/deployment environment.

However, downloading, installing, updating and setting up each new image has been increasingly tedious. Vagrant looks like a brilliant idea to enable automation of the whole process. I would try this out immediately, except that most of my Ruby development environments are already running inside a Virtualbox VM, and it’s not very likely that one will fit inside another :(

Maker’s Schedule, Manager’s Schedule

It’s an article from July 2009, but I just saw it. A pretty lucid description of the problems faced when mixing a “manager” view of time and a “maker” view of time.

Maker’s Schedule, Manager’s Schedule.

I face this every time I step away from single-client work to develop other business projects. The business side of my responsibilities wants a day split into little chunks in order to make progress on a wide range of tasks, most of which involve meeting or co-ordinating with other people. The software development side of my responsibilities wants a working period with the longest contiguous periods I can manage. Concentrating on either way of working always seems to be at the expense of the other.

Sinatra on Java

I originally chose to work in Ruby for its ease of deployment to low-cost shared hosting services, but as time has progressed I have become more comfortable with the language and a selection of tools and libraries. One that I like a lot is the Sinatra web framework. Interestingly it now appears that if I wanted, I could run Sinatra applications in a Java web container such as Tomcat, Resin, or Jetty using Warbler, which bundles JRuby and an application into a standard war file for drop-in deployment.

This is an interesting challenge to my own pure-Java Mojasef framework, which offers several similarities with the approach taken by Sinatra. Sinatra wins on documentation, though :)

A good guide to getting started with Sinatra and Warbler can be found at Sinatra on Java | Coreguardian.

Monk – Quickstart Sinatra Projects

I’m currently on my fourth or fifth project using the Sinatra web framework. Each project has taught me more about Sinatra, and Ruby, and all the other little things that go into making a web application using these tools. One thing which has been puzzling me, though, is how best to structure the directories and files which comprise each project.

I have been developing Java web applications for so long that I have a familiar and generally useful project structure which I can quickly build from memory. With these new tools I’m not so confident that I would not be storing up problems if I attempt to create my own structure.

So I was intrigued to encounter Monk recently. A system for generating project starting points for projects using a lot of the tools I have come to enjoy. It’s presumably aimed at the simplicity of starting a Rails project, but for a different set of tools.

On my Ubuntu system it was a bit tricky to get going. The documentation just recommends “sudo gem install monk” but this required some extra installations and some general fiddling around. Once installed it happily generated a project structure, which (after a few more installs) would run its tests using rake and start up a server serving “Hello, World” if asked.

I’ll give it a try on my next project, and see if it helps. I might even use the recommended No-SQL storage engine Redis instead of Sqlite or PStore which I have used in the past.

Read some more at » Monk – Quickstart Sinatra Projects Gittr.