I received an email from Velocity rewards notifying me of a free upgrade to Gold membership. It was quickly followed up by another email containing the following.
Was it a human data input error or programming error?
Sunday, November 15, 2009
Upgraded to Velocity Gold, not
Friday, November 13, 2009
Just say No!
Most software projects produce a mess and are a mess to manage. Projects that make it to production generally go on to a have a lifetime measured in years. While they are alive new projects are started, accumulating more mess. If the internal IT budget/group increases there is capacity to create an even bigger mess.
An obvious way to reduce the total mess, is for each project to be less messy. Unfortunately, there is little hope to do this at present due to the inherent nature of (current) organisations and the immaturity of software development in general. Another way is to do less software projects and make those smaller.
The business orientated technical managers I know seem to understand this at some level and are dealing with it by purchasing more off-the-shelf or outsourcing. This makes some of the costs of the mess more visible and attributable to (hopeful) benefits. However, it doesn't really address how poor we are at actually figuring out requirements, transforming them into usable, executable software and adapting to new requirements over time. With outsourcing, the mess is now less visible, but as a business relies on the systems and data, it will still experience similar effects from the mess over time.
From a purely technical perspective, does the world really need another bloated Java, Spring, Hibernate, Oracle, JUnit abomination application? Feel free to substitute other languages and libraries, such as Ruby and Rails, Groovy, etc.
Reduce the software mess. Do less software projects. Just say no!
Saturday, October 17, 2009
Mac Flickr client
I am looking for a native mac application that provides an easy interface to my Flickr account. Requirements:
- Uploading - need to easily filter out the good photos from the camera, upload and add metadata.
- Browse photos in photostream, or by sets, tags, etc
- Edit metadata
- Save photos locally
From what I have briefly read, iPhoto 09 integration with Flickr is very limited. I use Flickr as the primary repository for my photos and iPhoto isn't intended to be a passive Flickr client. I found the following other candidates:
- Photonic Really nice app. Demo is free but expires after 14 days. Registration is US$25. Can browse photostream and sets, no coverflow view. Can search by tags, but you need to know the tag names. Double-click a photo to view a larger version. Doesn't show descriptions and no metadata editing or slideshow. However, there is a convenient link to a photo's Flickr page to do these. Apart from assistance with tags, the other major missing feature is the ability to download a photo or set for use as a desktop background or with the screen saver.
- FlickrEdit Java app that looks horrible with a clunky UI. However you can backup and download photos and sets. Apparently it saves some metadata in the IPTC header of downloaded files, but I can't see it with the mdls command.
- DeskLickr Set the Desktop background to a Flickr photo. You can point it to your own account, but it only uses your public photos.
- Cooliris Firefox add-on A 3D wall for viewing images. Works with Flickr, so if you open it on the first page of your photostream or on a Set page, you can view all those photos. My head is spinning from the animation, so it would be nice to turn that right down. More keyboard keyboard control (photo selection and paging) would make this really good.
- Picture Sync Essentially just an uploader. Didn't seem very intuitive to me.
- FotoViewr Webapp that provides 3D viewing of Flickr photos (like coverflow). Only works with public photos.
- Fotobounce Windows only now, with a mac version due this year.
- 1001 Didn't try this out.
- Flickr Finder A very simple Finder-like column view. Content layout seems to be broken on Snow Leopard.
- Photo Grabbr Didn't try it. Suspect it is public photos only.
None of the apps did uploading really well. I am using the standard mac Image Capture application to get photos off the camera. Finder Quick Look in Snow Leopard provides an easy way to look through photos and delete unwanted ones. The Flickr web site uploader and metadata editing work well enough.
Photonic is the easy winner for viewing photos. If it had better tag support and desktop/screensaver integration or the ability to download original images, then the license fee would be more easily justified.
I have made a Flickr set of my favourite photos for use in my screen saver. FlickrEdit is clunky, but I can use it to quickly download the whole set. This is all I use it for. It also includes an incremental backup feature (I need a backup solution too), but I haven't investigated that yet.
Saturday, September 26, 2009
QOTD
Teaching for understanding didn't offset the destructive effects of telling them how to get the answer. Any step-by-step instruction in how to solve such problems put learners at a disadvantage; the absence of such instruction was required for them to understand.From: Education's Rotten Apples
-- Alfie Kohn
Friday, September 25, 2009
Thursday, September 24, 2009
R Resources
Been learning to use R for a stats subject. These links were useful.
Other things I have stumbled across along the way.
- R - Resources
- Rattle GUI for data mining in R
- SNA in R Talk, Updated with [Better] Video
- Revolutions blog
Update 1/11/2009
For completeness I should also have included An Introduction to R that comes bundled with R, as well as the official R Wiki. Also discovered RSeek.org as well as this MATLAB / R Reference.
FsCheck xUnit integration
I am using xUnit.net at work on an F# project. I wanted to incorporate FsCheck and check properties via xUnit.net, but there is no built-in integration. I tried this from Matthew Podwysocki, but it is out of date with respect to the versions I am using (xUnit.net 1.5, FsCheck 0.6.1).
EDIT 28/09/2009: Here is the new and improved version based on Kurt's comment.
module FsCheckXunit
open FsCheck
open FsCheck.Runner
open Xunit
let xUnitRunner =
{ new IRunner with
member x.OnArguments(_,_,_) = ()
member x.OnShrink(_,_) = ()
member x.OnFinished(name, result) =
match result with
| True data -> Assert.True(true)
| _ -> Assert.True(false, testFinishedToString name result)
}
let config = {quick with Runner = xUnitRunner}
Below is the first version I adapted from Matthew's post and the FsCheck source code.
module FsCheckXunit
open FsCheck
open FsCheck.Runner
open Xunit
let xUnitRunner =
{ new IRunner with
member x.OnArguments(_,_,_) = ()
member x.OnShrink(_,_) = ()
member x.OnFinished(name, result) =
match result with
| True data ->
Assert.True(true)
data.Stamps |> Seq.iter (fun x -> printfn "%d - %A" (fst x) (snd x))
| False (data,_,args,Exception e,_) ->
Assert.True(false, sprintf "%s - Falsifiable after %i tests (%i shrinks): %A with exception %O"
name data.NumberOfTests data.NumberOfShrinks args e)
| False (data,_,args,Timeout i,_) ->
Assert.True(false, sprintf "%s - Timeout of %i milliseconds exceeded after %i tests (%i shrinks): %A"
name i data.NumberOfTests data.NumberOfShrinks args)
| False (data,_,args,_,_) ->
Assert.True(false, sprintf "%s - Falsifiable after %i tests (%i shrinks): %A"
name data.NumberOfTests data.NumberOfShrinks args)
| Exhausted data -> Assert.True(false, sprintf "Exhausted after %d tests" (data.NumberOfTests) )
}
let config = {quick with Runner = xUnitRunner}
