Author Archives: Mike Conley

Toronto DemoCamp20 – Presentations, Humour, and Porn

Today, at the Imperial Pub in downtown Toronto, was DemoCamp.

The last DemoCamp was in March.  It was my very first time attending DemoCamp,  and I live-blogged the whole night.

I didn’t live-blog tonight.  I took notes.  And now I’m going to do my best to relate what happened tonight.  What worked, and what didn’t; what impressed, and what didn’t.  You get the idea.

So here we go:

FreshBooks

http://www.freshbooks.com

Presenter:  Mike McDerment

In their own words, Freshbooks is an “online invoicing, time tracking and expense service”.  According to them, they have 800, 000+ users, and they’re hiring.

Today, they were pleased to announce a “top secret reveal“.  I, personally, was intrigued – learning something top secret is awesome:  it makes me feel like part of a special group of trusted people.

So, imagine my disappointment when the presenter tells me flat out that this “top secret” information was announced on their blog more than two weeks ago.  Not two minutes into their presentation, and I’ve already been lied to.  Bad start.

I’m going to bypass talking about the laptop problems, the poor presentation pacing, or the repeated calls for “who ordered the chicken fingers?” from the kitchen.  I want to talk about this not-so-top-secret thing that Freshbooks was revealing.

Basically, they were revealing that as well as being able to bill clients outside of the Freshbooks network with their service, they are going to allow Freshbooks users to bill other Freshbooks users…

Then they showed a 1 minute video, where a bunch of blue nodes were displayed, with some connections here and there.  As the video progressed, more nodes were added, more networks were formed….ahhh, I see what you did there.  You showed me that by allowing networks to form on Freshbooks, networks…will form.

If you Freshbooks guys are reading this, I’m really not trying to be a dick here – I’m sure your service is awesome, and who knows: I might use it someday.  But your presentation tonight didn’t really tell me anything compelling, and the fact that it was initially wrapped in this awesome package of “top secret reveal” didn’t help your case.

It’s a bit like unwrapping a big present labelled “awesome secret gift!”, only to find a tiny note in bad handwriting inside, telling you something you already know.  Plus, you find out that everybody else already knew what was inside the box anyways.  Maybe I’m being picky.  Who knows.

My main beef, was that I didn’t get a demo.  I came to DemoCamp to see demos.

I want to see things like this:

Not this:

Both videos were on the Freshbooks blog post.  One video rapidly gives me lots of information that entices me to investigate their service.  The other awkwardly tells me almost nothing.

Bottom line:  interesting service.  Failure to deliver top secret reveal.  Weak demo.

Employment.nil?

http://www.rubyjobfair.ca

This wasn’t really a presentation – more of a time filler while technical glitches were ironed out on presentation laptops.  Basically, it was an announcement that a Ruby job fair was coming up in Toronto.

See the poster here.  It says it all.

What was interesting, was the notion that the job fair would follow the model of classic “science fair” poster board presentations.  There would be booths, with poster boards up, and people to talk to.  No laptops.  No iPhones.  Just people talking about Ruby, what they like to do with it, and why they’re passionate about it.

Sounds like it’s worth a look.

Reportage

http://www.wherecloud.com/

Presenter:  Martin Dufort

WhereCloud presents Reportage, a Twitter client for the iPhone.

A good presentation from Dufort.  He kept it light, and brisk, and showed off the application instead of talking about it.  That’s key.

According to Dufort, Reportage is “a radical way of browsing Twitter”.  He mentioned how most Twitter clients fall into the trap of porting the user experience of Twitter to their clients.

What is interesting, is that Reportage introduces a new metaphor on top of Twitter:  channels, or radio stations.  At the bottom of the client is a “tuner”, which displays the pictures of who you’re following on Twitter horizontally.  There is a red needle in the center of the tuner that shows you who you currently have selected.  Simply flick your finger, a la iPhone style, and you can change channels to whomever you want to get Tweets from.  Cool, novel metaphor, if not exactly radical.

Instead of dealing with the massive stream of updates of who you’re following, Reportage simply shows the display pictures on the main screen, in the order that they were last updated.

Beyond the interface, what was most compelling was two features:

  1. the ability to add Twitter users to a “favourites” list, that are distinct from the main stream.
  2. the ability to temporarily mute users, to avoid embaressing temporary un-follows.

These are two excellent features that the Twitter web-interface sorely lacks.  Sure, there might be other clients who implement the same features, but Reportage seems to do it very intuitively and gracefully.

Bottom line:  I liked the app, I liked the presentation.  If I had an iPhone, I might buy it.  Why the hell not – it’s apparently going to have an intro price of $2.99 when it goes up on the App Store in a couple of days.

Flash Based 3D FPS

Presenter:  Greg Thomson

This was a tech demo for a 3d multiplayer first person shooter, which looked a bit like the Interplay classic, Descent.

Written entirely in Flash.

My mind was boggling when I saw this go – Flash, Flash, was cranking out 45 frames per second as it rendered the textured polygons in the demo map.  It was fast, it was smooth, it was impressive.

Unfortunately, then it got a little boring for me.  Once the initial shock/novelty of seeing Flash do something like this wore off, there really wasn’t much more to the presentation.  I got to watch Thomson navigate around the screen for a while, and fire some lasers/missles, but that was it.  There wasn’t anyone there to play against.  The map was kind of bare.

The demo picked up again when Thomson zoomed out the camera so that it was directly over the player, and we could see in real-time how the program was intelligently choosing what to render, in order to save as many cycles as possible.

There was also talk about the multiplayer client, and how they had to write their own in order to deal with 20 updates per second.  That was cool, but it would have been nice to see it in action.

Granted, the presenter told us that the technology had recently been sold to someone else, and that he was demoing it on their behalf.  Also, he wasn’t there for investment, wasn’t hiring, or looking for contributers/users.  He was doing a tech demo, and that’s what he delivered.

Bottom line:  AMAZING product – never thought I’d see Flash do that.  It would have been nice to see some multiplayer action, but you can’t always get what you want.

WineAlign

http://www.winealign.com/

Presenter:  Bryan McCaw

WineAlign is a “community based service for reviewing, sharing, and discovering wine”.  It promises to help users find “the right wine for the right price” based on user and professional reviews.

An interesting concept.

Growing up in Grimsby, I was surrounded by vineyards and wineries everywhere.  Wine tours are arguably one of the primary tourist attractions of the Niagara region (along with that waterfall thing).  In a wine tour, people drive from winery to winery, taste testing various wines, trying to find one that suits their palette/mood/occasion.

So right off the bat, I’m a bit skeptical of WineAlign – the people I know who are into wine go by taste.  How can that be conveyed through a web application?

It seems that WineAlign is hoping you can discover the perfect wine based on user submitted reviews, along with professional reviews, and make up your own mind based on that information, plus on its local availability and price.  OK, that’s fair.  I really don’t expect a web app to waft the aromatic bouquet of a 1984 Merlot through the screen.

What was most interesting about the presentation wasn’t actually the service (I don’t really drink wine, or alcohol for that matter).  What interested me the most was his experience that “1 blog entry was greater than $10,000 of public relations”.  Traditional PR didn’t work for them – they had to rely on advertising their service through the ether of the social web to get where they are, and it really paid off.

Bottom line:  cool service, nice design.  I probably won’t be a customer anytime soon, but that’s because wine isn’t really my bag.  Relatively decent presentation despite technical glitches (being unable to see half of the screen was kind of a bummer), though the use of the phrase “critical mass” became so frequent that I started to forget what the term actually meant.

The Legend of Zealot, Anarchist, Robot

http://adam.goucher.ca/

Presenter:  Adam Goucher

This ignite presentation was essentially a rushed retelling of this story from Adam Goucher’s blog.  I’ve got to hand it to him – it’s not easy to tell a story in front of an audience when you’re constrained by the 15-second auto-advancing slides that define an ignite presentation.  So, big kudos.

Anyhow, if you read his original story, you’ll get the gist of his presentation.

The bottom line is that he tried to deliver a good message:  there are many ways of doing things, and there is not necessarily one right way.  Or, in his words, “everyone is good in their own way!”.

According to Joey DeVilla, Goucher’s presentation “pulled down the pants of [his] mind”.

Pizza Break

Dinner was served.  Again, strangely, the DemoCamp audience was served highly eclectic pizzas:  feta cheese, mushrooms, fried onions on dough, with a massive slice of ham on top.  Anyhow, no complaints – I dug the pizza.

Killing Time

Through various microphone noises, the audience was signaled to sit back down again for the next round of demos and ignite presentations.

This effort was sabotaged almost immediately with network problems.  So the audience was held in rapt attention as MC’s Jay Goldman, David Crow, and Joey DeVilla attempted to kill time.  Some relatively pornographic jokes were rapidly fired off by DeVilla, while Crow and Goldman bravely grimaced and glanced towards their lawyer.

Toronto WebTV Meeting

While network problems were being solved, there were some announcements put out, including a “Toronto WebTV Meeting” for people who are interested in internet broadcasting, or web video.  The meeting is at 7PM-10PM tomorrow (May 26, 2009) at 692 Yonge St at a restaurant called the Arrabiata.

ExtremeU

Another announcement was about “ExtremeU”, a 12 week startup school that was looking for people to enroll.  We were told to visit http://www.extremevp.com for more information, but that website doesn’t seem to contain much more than a logo and an email address.  How disappointing.

Sausage Party

DeVilla took advantage of the ensuing lapse of announcements to propose an idea for an iPhone app:  Sausage Party.  The application would attempt to gauge the current male/female ratios of the clubs nearest to you.  Believe it or not, in time, that idea might sell.  As of yet, I don’t think enough GPS smartphones are out there to make such an application that accurate, but in a few years…who knows.

TicketTrunk

http://www.tickettrunk.com

Presenter:  Adil Dhalla

In a nutshell:  TicketTrunk wants to be the TicketMaster of the little guy.  It wants to make ticketing super easy, so that your grandmother could set up an event, and sell tickets, without too much of a hassle.  TicketTrunk also wants to stop charging ticket buyers for service fees, and instead place flat fees per sold ticket on the ticket seller.

Ok, cool idea.  I know some theatre people who might be interested in becoming users.

The only problem with the presentation:  it wasn’t a demo.  It wasn’t an ignite.  It was a talk.  5 minutes crawled by for me as Dhalla described how his application worked.  A single slide showing the TicketTrunk home page was all we got.

Yikes.

Anyhow, TicketTrunk might be something I recommend to my theatre friends.  Their $1 flat fee to ticket sellers per ticket sold might be a bit of a problem for non-profits trying to keep ticket prices down, while recouping costs…

Bottom line:  a service worth investigating, if anything just to see what Dhalla was talking about.  Non-existent demo.  Weak presentation.

digiTweet

http://digitweet.com/

Presenter:  Mano Kulasingam

An open-source Twitter client for Windows, built on top of the Microsoft Presentation Framework.  They’re looking for contributers and feedback.

Unfortunately, this demo’s thunder was stolen almost completely by Reportage.  In comparison, digiTweet’s interface looked a bit cluttered.  There was an interesting UI concept of adding people you’re following to different categories, and then having those categories be colour coded when viewing your stream of Tweets.  Not exactly groundbreaking, but it distinguished it from Reportage.

Another distinguishing feature was that digiTweet is an open source project.  Kulasingam was very open and inviting to everyone to come and contribute, and give feedback.  That’s always good to see.  Kudos.

Bottom line:  product needs some polish (though granted, it’s only a month old!), but it’s got some interesting ideas.  Pretty good presentation.

Rypple

http://www.rypple.com

Presenter:  David Priemer

Rypple, to put it in their own words, lets users get “quick, specific and private feedback from trusted advisers and co-workers.”  It’s an anonymous feedback system, with some pretty sophisticated metrics.  It’s used by average home users, as well as large companies such as Cisco Systems, Rogers, and General Electric.  Rypple was also recently featured in The Economist magazine.

So, Toronto startup-wise, Rypple is doing pretty well for itself.

Presentation-wise, these guys know what they’re doing.  They jump right to it, and show off their app like pros.  They’ve clearly done this a bunch of times (and they’ve probably gotten tons of Rypple feedback on their presentations!).

I don’t know what else to say about Rypple.  It was a solid presentation for a solid service.  What was most surprising to me, was finding out that Rypple is developed using GWT.  That caught me by surprise.

They’re also hiring.

Bottom line:  a solid service, and a solid presentation by pros.  No wonder they’re doing so well.

The Social Real-Time Web

Presenter:  Ilya Grigorik

Grigorik gave a good talk on how content published on the web has a half-life of about 50 minutes.  He said that this is driving publishers insane, because the social web produces “more content in a day than a major publisher produces in a year”.

He also said there is data to show that social networking is a more popular Internet pastime than pornography.  You can imagine the gasps, snickers, and muttered jokes.

Besides StumbleUpon, time is a critical element for social web content.  What’s on Digg right now, won’t necessarily be there an hour.  Probably less.

Grigorik stressed that since time is such an important factor in getting your content out there in the social web, it is necessary to have real-time metrics to give you feedback on how your content is doing.  He said that the old model, of looking at metrics for past posts, is not good enough – in order to boost the popularity of content, you must engage with your audience.

So, for example, if I finish this blog post, it might get mentioned here or there on Twitter, other blogs, etc.  My WordPress analytics might not tell me much about that.  But that information, what other people are saying about my article, is important.  A service is needed to help find where other people are talking about you, so that you can engage with them, and keep your content relevent.

Makes sense to me.

Anyhow, I believe the service that he’s talking about is in development, and is looking for beta testers.  See here for more information.

Startups:  How to Get Press

Presenter:  Ali Asaria

Interesting presentation from this guy.  It was rapid fire, and I couldn’t always tell when he was joking or not.  He was self-deprecating the entire time, which was sort of endearing, but it clouded his overall message.

Which was this: in his experience, good things happen when you stop trying to get press.  Fire your public relations team.  Just go through the social media ether!  Twitter is the key!  One day, he put up a Twitter post about his company, and 6 hours later he was on TV.  Go figure.

Other tips included “find a style of converation that works for you”, and “talk to the community, and let the press listen”.

Anyhow, it was a pretty good presentation.

Surprise Guest:  BumpTop

http://www.bumptop.com

Presenter:  Anand Agarawala

BumpTop is a new take on the desktop metaphor of modern operating systems.  Basically, it makes your desktop more like a real desktop.  Items can be stacked.  They have weight.  They can be thrown around.  You can navigate around in your desktop, and look closely at things.  It’s actually really cool.

What’s also really cool, is that this guy showed this thing off at DemoCamp a while back.  Push came to shove, and eventually, he did a TED talk about it.  Wow.  Talk about snowball effect.

While it’s a cool idea, I don’t think I’ll be installing it anytime soon.  I like my desktop just the way it is for now.  Still, I always like seeing new, wild ideas.

Also, this guy didn’t know he was demoing until a few moments before he went up.  Remarkably, the demo/presentation went really smoothly.

Bottom line:  neat idea, neat product, but not something I’ll rush out and install right away.  Great presentation.  This guy is clearly going places.

It’s Over!

All in all, an entertaining night.  Good people, good food, and some pretty interesting presentations.

Feel free to post comments, complaints, corrections, support, corroborations, etc.

And now….time for sleep.

Last Post Focused on Summer Work. Operation: Party Mansion Update!

Some good work this week.  Nelle, Severin and I have been hacking away at OLM, and little by little, it’s starting to shape up.

But I’ve decided something – I’m not going to post anything else about OLM on this blog.  That stuff will go on the official OLM blog, that all of us developers have access to.

You can view that blog, and my latest post on it, here.

So, I guess that more or less finishes my “summer work” posts.  I’ll use this blog to post about other stuff going on with me.

Stuff like Operation: Party Mansion.

Remember Operation: Party Mansion?  I mentioned it a while back, but I’ll recap for those of you who don’t know.

I’ve got two friends:  Julian Rabideau, and Joel Beck.  These two friends of mine are looking to buy a house in downtown Toronto.  They’re going to renovate, and improve the house, and I (with a few other friends) will rent under them while it’s going on.

Sounds ambitious, doesn’t it?

I know what you’re thinking – “Big talk!  Good luck!”  But hold your horses:  there’s been a flurry of progress over the last week.  Joel and Julian have already managed to secure a sizable mortgage from the bank, and already have their eyes set on a property that meets/exceeds their requirements.

In terms of renovation, Julian is a certified Red Seal carpenter, and he’d been flipping houses for years in St. Catharines before coming to Toronto.  Renovation-wise, he knows what he’s doing.

Both have solid jobs, and already have tenants waiting to rent under them.

Did you pull a stunt like that when you were only 23?  I can’t think of anyone else I know our age who’s even remotely close to trying it.  Kudos to these two – it’s a big project, with big numbers, but so far it seems to be working their way.

Anyhow, the open house on the property was this weekend.  Photos were taken, and schematics were photocopied. All interested parties seem to be digging the proposed house.

Bids go in later this week.  Will they land the house?

I’ll let you know.

Summer Work: Week 1

For this summer, the Computer Science Department at UofT has hired me to continue my work on the OLM project.  Click on that link, or check out my other post about OLM to see what it’s all about.

I just finished my first week of work, and it finished with a long weekend.  Not bad.

And I’ve got a great team – I’m working with Severin Gehwolf and Nelle Varoquaux, both excellent thinkers, programmers, and collaborators.  Severin is a UofT student like myself, and Nelle has flown in specially from France (!) to work with us.  They’re great, and we’re going to get a lot done.

So what have we to show for our first week of work?

Well for starters, we’ve gutted the entire database schema of OLM.  We started right from the bottom, and worked our way through every component of the database, trying to figure out what we could cut, trim, expand, and refactor.

And there was plenty to do.  This version of OLM has been in the works for a while now, and there have been plenty of awesome people working on it – but there’s been a variety of Ruby/Rails/JavaScript experience, and the cracks show.

I, myself, came into this project with no Rails experience whatsoever, and while I think I now more or less get the drift, I’m still by no means an expert.  Anyhow,  I’m looking at my old code too, and kind of grimacing.

But the ideas are all there.  It’s like a big hunk of marble that a whole lot of people gnawed and chiseled at for a little bit, trying to make a sculpture.  After the big DB schema refactor, I think the whole team can sort of see the rough form of what this thing is trying to become, and now we just need to carve it out.  Luckily, instead of a few hours per week like the last few semesters, we get a full summer to focus on it.

So, with the DB refactor done, the first thing has been to redesign the models/controllers to play nice with our new database tables.  It was scary, because after the refactor, everything broke – but we’re working on it, and it’s slowly starting to come back.

We’ve also decided to switch the file storage back-end.  Up until now, we were using Ruby to organize a file system back-end to do simple versioning of submitted files.  One of our goals this summer, is to build an abstraction layer that will allow us to choose different options for this versioned storage back-end.  In particular, we aim to support Subversion.  That’s right – a web-based Subversion front-end that supports commits, and catches (but doesn’t resolve) conflicts.  It’s a fun thought.

I have a feeling this is going to be a very interesting part of our project, and I’ll probably report on it more as it develops – but as it stands, it’s still being conceived on wipe-boards and scrap paper.

Anyhow, I’ll try to keep this blog up to date with what we’re doing.  Or maybe I’ll keep this blog up to date.  I’m conflicted.

Who knows, maybe this will be my last blog post of the summer.  I won’t lie – after working 8 hours on a computer, the last thing I want to do is come home and write a blog post.  If anything, my posts will probably wait until the weekends.

But we’ll see.

wordCount.xpi – Part 1

So, if you recall, I was asked to write a Firefox extension that would do word counting on websites.

Originally, when I started this project, I set a goal for myself:  I copied the text from Project Gutenberg’s First Folio version of Shakespeare’s Hamlet into OpenOffice Writer, recorded the word/line/character count statistics, and set that as my projected goal for my first iteration of my extension.

But there’s a problem with this approach:  I’m supposed to be copying the behaviour of Unix’s wc, not OpenOffice Writer’s word count.  Normally, this wouldn’t be a problem – a word count is a word count, a line count is a line count, and Writer should pump out the same numbers as wc.

Not so.

In my last post, I wrote:

According to OpenOffice Writer, this text has 32230 words, 173543 characters, and 4257 lines.

However, upon passing the same text (saved in the textfile “count.txt”) through wc, I got the following output:

5302 32230 178845 count.txt

Writer and wc agree on the number of words, but disagree on the number of lines – 5302 (wc) vs 4257 (Writer).  It’s a disagreement of about a thousand lines.

Brutal.

Anyhow, I’m going to focus on wc’s approach to line counting – simply returning the number of newline characters in the file.

And guess what…it works.  For Hamlet, my extension pumps out:

Document statistics:

Word Count:  32230
Line Count:  5302
Character Count:  178845
Character Count (no spaces):  142368

Nice.

Hamlet’s just the simple case though.  There are plenty of other cases to consider, but this is a start.

Anyhow, download here.

In this version, I’m using Mozilla’s TreeWalker implementation to stitch together the page text.  So far it seems to be working alright, but if it somehow ends up falling through, I might end up using something like Andrew Trusty’s code with the jQuery library to do the text stitching.

So there it is.  Maybe I’ll keep working on this, pretty it up a bit, etc.  However, work starts on Monday, and that’ll probably take up most of my technical attention.

We’ll see though.

For my next trick…

It didn’t take long for another Firefox extension idea to come along.

Prof. Greg Wilson recently sent me an email, saying the following:

I’d like a Firefox plugin that does ‘wc’, i.e., counts characters, words, and lines on the current web page, and displays the results in the status bar.

Cool, I thought.  No problem.  That doesn’t sound too hard.

But I’ve been mulling and chewing this around in my head, and it’s actually a harder problem than it first sounds.

wc“, short for word-count, is a small, simple, yet extraordinarily useful Unix utility that reads in some file, and spits out the number of words, characters, and lines for that file.

So what’s the problem?  What’s so hard about coding something like this for web pages?

Well, for starters, users of this proposed extension are probably only interested in the visible, readable text on a web page.  That means filtering out all of the HTML tags, all of the JavaScript, etc.  Also, many modern web pages make use of IFRAME’s, hidden DIV’s, etc.  Not to mention, most browsers do automatic word-wrapping, which could throw off the “line” counting.  How should I treat these cases?

I certainly don’t think this is an impossible task, just harder than it first sounded.

So here’s what I’m going to do:

First, I’m going to take care of the base case.  I’m going to take care of the case where users are viewing a page of all text, with almost zero HTML.

My test page will be an “etext” copy of Shakespeare’s Hamlet (first folio), hosted by Project Gutenberg.

According to OpenOffice Writer, this text has 32230 words, 173543 characters, and 4257 lines.

So that’s my target.  I’m going to create an extension that sits as a button on the status bar.  When the button is clicked, an alert will pop up with the statistics.  If all goes well, the numbers will match.

Sure, it’s not the most elegant interface, but it’ll do for now.

I’ll post more as it comes.