A few weeks ago, the interview I did with Stephen Hui was published in the Georgia Straight — Vancouver’s main entertainment weekly newspaper. It was the geekiest article I think you will ever see in the mainstream press ever. Great stuff.
The next week, I was invited by Mack Flavelle to give a talk on the Vancouver Base at Why in the Web at BCIT. The slides I used are roughly the same as my previous talk at VanDev, but I spent more time this time surfing through some live examples. I think that worked a bit better. There was a awful lot of information for anybody to absorb — I hope the students found something there to inspire them to learn more about the semantic web.
Keeping things rolling, I approached Boris Mann with the idea of doing a mashup using Drupal’s cool new semweb features with the data from the Vancouver Base. We had a kickoff breakfast meeting on Thursday, and OpenRestaurants.org was born! It’s all about bacon, patios and beer. Should be fun.
Finally, Melanie Courtot has started up a new Vancouver Semantic Web Meetup Group. The first meeting is this coming Thursday at Waves on Broadway at 6pm. I’ll be there. Unfortunately, I had to back out of talking about #vanbase at the local Drupal meetup, which is at the same time.
I updated the RDF Vancouver pages to point people to the new meetup. I wasn’t quite ready to organize another RDF Vancouver meetup yet, and now I don’t have to. :-)
Please, please, please come to the meetup if you are interested in doing any semantic web stuff in Vancouver. I know firsthand how difficult it is to organize a new semweb event — we need people to show up in order to build a community.
With all this happening in the past few weeks, we have a good foothold and some momentum building. Vancouver is going to be the template that the rest of the world can follow for putting a city on the semantic web.
I have needed some business cards for a while. I wanted a nice distinctive design — but I’m a programmer, not a designer. I spent a few days over the last week exploring options and struggling to come up with a nice design.
Several friends suggest that I give Moo Cards a try. The nifty thing about Moo Cards is that every one can be different. So this gave me an idea: Why not generate the graphics for each one algorithmically?
I was already doing this for backgrounds on my Mac using Google Top Draw – an open source program that uses Javascript and Apple’s Core Image to generate some very nice random images. The scripts can be easily customized and there is good documentation. It’s very fun to play with.
Here is my Top Draw script for generating Moo Card images. It outputs a new PNG file sized 1040×696 pixels (roughly 300dpi) in the user’s Library/Application Support/Google/TopDraw directory everytime it is run. Here’s an example of the output:
Just change the desired ‘name’ and ‘fontName’ at the top of the file. Run it a bunch of times, delete the images that aren’t the best, and upload the rest to the moo.com website to start an order. If you want to get creative, read the docs and examples, and customize the Javascript.
It’s a bit of a hack, since Top Draw is only designed for generating desktop backgrounds. To export to a file, I had to render everything into a single layer and export that to disk.
I think it went better than some of my past “semantic web” presentations. As the format was 20 minutes of presentation plus 20 minutes of questions, my strategy was to just give a very high-level overview of what Freebase is and what I want to accomplish with the Vancouver Base. I attempted to tone down the “semantic web” jargon as much as I could, and I hoped to describe the problems using more “layman’s language”, but I still ended up using too much of the jargon anyways. Standing at the front of the room, it’s pretty clear that using the jargon tends to lose a lot of people.
For the Question and Answer section, I showed a few web pages from the site, and tried my best to help the audience understand what they were seeing. I spent time answering questions, so I didn’t step up the pace enough to adequately describe things like Acre. And there wasn’t any time to show any mashups or get into some of the more developer oriented features of the platform. Reading the feedback, I guess I should have tailored the talk a bit more towards a developer crowd.
Now I’m going to rewind back in time two weeks, as I haven’t yet blogged about Northern Voice and the Freebase meetup. Kirrily Robert (aka skud) — Freebase’s awesome community director — wanted to come up to Vancouver to meet some of the local users and developers. I talked her into coming to Northern Voice to meet some of our local social media people, and we even gave a short presentation during the unconference (Kirrily made some slides, but unfortunately there was no projector).
Then on the Sunday after Northern Voice, Kirrily organized a Vancouver Freebase Meetup at the Irish Heather in Gastown. It was great to get all the local Freebase people in one place (plus Scott Blomquist who drove up from Portland! Dale McGladdery wrote up an excellent summary of the meetup and even made a video!
Last summer, I discovered a unique software packaging and build system called Nix from Utrecht University in the Netherlands.
Building and packaging software has been my primary work activity for the past 10 years. I have maintained hundreds of RPMs and Debian packages, and have managed some very large code repositories, toolchains and build farms. It’s been fun, but I do have to admit that being a “package monkey” is not the most glamourous of software development activities.
With all that experience, I feel that I have a developed a strong appreciation for nice software plumbing. The Nix project really excites me. There are two things it does differently that make it stand out:
Strange filesystem layout using cryptographic hashes
In Nix, each software package is stored in it’s own directory, under /nix/store/<cryptographic-hash>-<name>, instead of in the conventional Unix locations such as /usr/bin, /usr/lib, /usr/include, etc.
With this scheme, it becomes possible to simultaneously install and run multiple variations of the same piece of software, including dependencies. In fact, it would even be possible to have every computer in the world share the same filesystem, even though if they were all running different software!
Completely functional / declarative description of complete software systems
Nix has a language that enables you to completely describe the running state of an entire set of software in a declarative way. You just tell it what you want — then it takes care of building it, distributing it and even starting it up and running it!
It can be used as a companion software management system on Mac OS X (similar to MacPorts or Fink), Windows (using Cygwin), or on any Linux distribution. There is also a companion project called NixOS which is a full Linux distribution built entirely using Nix.
I highly recommend looking at it. Keep in mind that it is definitely not mainstream, and there are not a lot of users yet. It is not a friendly system for traditional Unix system administrators, who are accustomed to finding their files in predictable locations in the filesystem. Systems are managed by writing expressions in the Nix language, which only has a small amount of documentation and not a lot of friendly examples.
I have done a bit of work adapting NixOS so I could get it to run inside a Xen session on my server. I am also using Nix successfully on OS X, as well as with VirtualBox, and on Debian on Amazon’s EC2.
Currently, I am working on some Nix expressions to make it easy to deploy software based on Ruby Gems (such as Rails, Merb, Rack and Sinatra) on top of Nix. You can read about my initial experiments in this post to the nix-dev mailing list. So far, I’m pleased with the results. I expect to package up a few more gems soon, and I will be using this system in production for some upcoming demos I am planning.
Within a day, over 180 people had used the form to add their names to the spreadsheet. Very cool!
This is the same type of information I’m collected for the Vancouver Freebase site. So naturally, I would like to synchronize the data. Instead of copying and pasting the data out of Google Docs, I was wondering if there was a programmatic way to access the data. As it turns out, there is GData API for accessing Spreadsheet data.
You can test drive the API using Google’s OAuth Playground. I put together a short HOWTO with an example of how to extract some sample data.
I am a freelance software developer based in Vancouver, BC, Canada. I have over 24 years of software development experience. I am currently specializing in "Open Web" feature development and related backend infrastructure.
Right now, I have space available in my schedule for short-term contract work. If you would like to discuss a project, please get in touch.