Needz launches
September 11, 2012 | CommentsI'm tapping this out from the gloriously sunny front patio of my uncle's home in Alicante. Just before we departed last week, a little birdie with the face of Ed Moore dropped me an email to let me know that Needz has gone live.
I've been following Needz for a little while, ever since seeing a demonstration of Agora, an early version of the product which they built in collaboration with Vodafone R&D. Needz is an interesting product, I think: Ed and his team have been looking at what a marketplace looks like when it's designed with mobile in mind, as opposed to being transplanted from the desktop web. I like the analogy of classifieds for this: location and convenience might be more important than getting the best price in some situations.
They're not the only people working on this problem, but they have an interesting take around building federated services which let providers run their own versions, which all appear to be the same service to end users.
Superoptimisation at Brighton Java
September 05, 2012 | CommentsIf you're one of the 8 people in the world interested in superoptimisation, I'll be doing a short talk on it, and what I've found at the Brighton Java meetup tonight.
Output from the Master's
August 29, 2012 | CommentsLast week I promised to put my work from the last year at Sussex University online, in case anyone's interested in it. Here you go, course by course:
- Adaptive Systems: Modelling contextual feedback. I found Bret Victor's "Magic Ink" paper deeply inspiring, and managed to crowbar it into this course by modelling and investigating the feedback mechanisms necessary to provide a contextual UI. Whilst I was chuffed to find myself inadvertently referencing a 1998 paper by Marko Balabanovic, a former client at FP, ultimately I was less happy with this project than any other throughout the last year. I didn't feel I had learned much about the problem domain or adaptivity;
- Advanced Software Engineering: NearMe, a location-based social app for Android. This was an assigned, rather than chosen, project from the first term: a gift, given how many similar things I'd been involved with at FP. I was the team leader for this one and rather enjoyed the shift from being an authority figure at FP to managing without authority; hopefully team-mates Mariana de Rojas-Marao and Alan Donohoe didn't find it too painful. It also gave me a chance to play with an idea I'd had a while back: using hashes of MSISDNs in uploaded address books to find friendships automatically, without raising privacy issues. This was before Path got into trouble for not using such an approach. Source code is here, and a reflective essay here;
- Business and Project Management: a concept note, intended to be used to present a project proposal internally at a large company. I chose to suggest Google do something interesting with sensor data; it is not a suggestion I have any intention of pursuing. I started the course intending to get very involved with a project in this area, but a few things I learned put me off that idea;
- Human-Computer Interaction, for which we did a team presentation and report evaluating an Android game, X-Construction Lite; and an individual design project, in which I attempted to improve the alarm clock. I was a bit disappointed with this one: I played with some ideas, but didn't get to a final design and instead struggled with prototyping complex multi-touch interactions, despite able help from a load of commenters on my blog;
- Pervasive Computing: a literature review following the influence of a classic paper, "Instrumenting the city: developing methods for observing and understanding the digital cityscape", followed by an individual project where I went low-level with sensors, and examined some LEDs and light sensors - with a view to improving the performance of transmission of Morse Code across them. I really enjoyed this, never having played with anything so close to atoms before. Source code for the project lives here;
- Topics in Computer Science introduced us to a series of pet subjects by lecturers, and was where I first came across superoptimisation, the topic of my dissertation. I wrote a literature review of the subject, and then a research plan (which I ended up carrying out);
- Web applications and services (which was really distributed computing under a new name) had us building a fairly dull-as-dishwater J2EE application for managing a stock portfolio. Not exciting, but I can now more vividly empathise with the pain of people who do this sort of thing as a day job I guess;
- Finally, the biggie: my dissertation, Is superoptimisation a viable technique for virtual machines? I'll ruin the surprise for you and shatter Betteridge's Law by revealing that, yes, it is. I am very happy with this: I think I've showed that the approach delivers useful results, by finding versions of several core math functions which are more efficient than those which ship with the JVM, or are produced by the Java compiler. Source code for my implementation lives here, and I'll be doing a talk about the project at the Brighton Java night next week.
Missing from the above is Limits of Computation, and enjoyable (and, I found, challenging) course covering computability and complexity theory, taught by the memorable Bernhard Reus but featuring little in the way of reports or generated source code that I can share.
Other stuff: after about 5 years of Not Getting Around To It, I finally bit the bullet and learned a functional programming language, Clojure - practicing it in the Adaptive Systems project and using it again for the dissertation. It's good fun, and I'll probably turn to it for future noodlings. I can recommend it if you'd like to learn a functional language based on the JVM.
So, that's that; I handed in my dissertation today, and my academic career comes to a close tomorrow in the East Slope bar on Falmer campus.
What Tom Did Next
August 24, 2012 | CommentsNext month I'm joining Google, where I'll be working as a Product Manager in the London office. I'm super-chuffed; can't wait to start.
It's going to be quite a change. I'll have a boss for the first time in a dozen years, and be working inside in a far larger company than ever before. I'm looking forward to both those things, along with the other classic attractions of Google: a large group of extremely talented colleagues, the opportunity to work at a global scale, and an ambitious breadth of purpose.
Between now and then, I'll be handing in my dissertation and finishing what's been a fantastic year at the Sussex University. I've really enjoyed the Master's, even more than I expected to: it's been a chance to refresh and put in some practice in a few familiar places (software engineering, HCI, web apps and services, and business and project management), spend some time revisiting a theoretical side to CS which I've long lacked (computability and complexity theory), and think about a few completely new subjects (adaptive systems and pervasive computing). Plus, working on a brace of (mostly) self-selected projects has been extremely liberating; I've scratched plenty of itches. At some point I plan to post all my project work here, on the off-chance that you're interested or might find it useful.
Green Goose
August 20, 2012 | CommentsHave you seen Green Goose? They're doing some beautiful stuff with sensors for consumers: turning everyday activities into games. I love the mundanity of it all: keeping the toilet seat up, brushing your teeth, walking the dog. One of their apps is called "BrushMonkey". It doesn't get any better than this.
They've been around for a little while - there's a story on RWW about them from early 2010, but they seem to have changed tack since then, away from financial monitoring and towards fun'n'games. Here's an interview with their founder from December last year. Green Goose seem to be spreading themselves thinly across many applications: "We’ve got about 50 or so other sensors in development right now that we will fairly quickly release over time".
Their hardware seems similar to Little Printer, in that they have their own gateway (the "station egg") which plugs into the spare port of a hub.