First, here's my setup on the home PC (aka 'the Milennium Falcon' - so-called because it looks rubbish, but goes fast):
Ubuntu 10.04 TLS aka 'the Lucid Lynx'
This Java version (output from java -version on the commandline
java java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) Client VM (build 16.3-b01, mixed mode, sharing)
I don't want to repeat the excellent work done elsewhere, so I'm just going to list the links that got me up and running and comment any place where it's possible trip up. Note: you may trip up different places but hopefully I saved you some
First, I set up the Red5 server on my local machine following this excellent tutorial. When you follow this, make sure you update the references to Ubuntu and Java versions and location information. For me, running Lucid Lynx in jolly old Britain, I needed to change deb http://za.archive.ubuntu.com/ubuntu/ jaunty multiverse to deb http://gb.archive.ubuntu.com/ubuntu/ lucid multiverse
Likewise, my java version caused me to change: export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.13/ to export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.20/
Next, I opened up Eclipse and installed the Red5 Eclipse Plugin following these instructions.
Whoo! We're nearly there! So then I followed the Creating Red5 Projects tutorial. This misses a useful step in the current version of the plugin that basically sets up all the directories and files Red5 expects. At Step 2 of those instructions, make sure you click the 'Modify' option in the configure section and once you get the panel, select 'Red5 Application Generation' as below:
To actually 'build' my audio recorder, I customised/ bodged/ hacked around the scripts from Sziebert's Red5 tutorial
Lastly, you can use the test instance here (scroll to bottom of the page) on Dennie Hoopingarner's most excellent page to test your Red5 application.
Regrettably I can't share a link to a live example or source as it's locked behind a password for business reasons I can't give out here. But the Sziebert and Dennie Hoopingarner sites have source available.
Disclaimer: I tinker to make things work so I can rapidly proof content ideas before I get a grown-up Software Engineer in to build a live service, so this is not intended as a guide to setting up a live instance of Red5 - I don't deal with security, monitoring, logging or performance but anything you put live should.
When pitching your idea or looking for work, the answer: "I don't know" isn't always wrong. The trouble with "I don't know" is that too often you only know it's wrong after its wrongness is out there for all to see. Here's one way (maybe one-and-a-half ways) to help stop it happening to you.
Lets follow some guys pitching an idea to a panel that could be the first of many products they build for a large website. It's their first time pitching a product for the interactive market, and the initial presentation has gone well. We pick up the action in the unscripted question and answer session:
Me: "So, you don't mention saving the game data so children can continue next time from where they left off - is that something you considered?"
Agency: <pause> "er no, we don't really know how you'd do that... maybe leave the computer on?"
Ouch! But we've all been there. I bet in their mind, they've replayed that moment and come up with at least the following responses:
The Accommodating Response:
"...<thoughtfully>that wasn't part of our original idea, we'd need to think about how we would accommodate that into the experience but we're happy to look at that."
Dramatic Desperate Distraction:
"...<adopts worried expression>oh, er hang on, looks like the computer's about to crash, might be about to lose you - call you back when it's fixed <manually cuts Skype connection offstage>"
The we-regularly-pitch-this-kind-of-thing response
"...we wondered about that... do you have a preferred method for data storage?"
My favourite answer is obviously the last one, delivered with enough panache it turns ignorance into a question that displays awareness of how your product needs to fit into the whole alongside existing products and services. Plus even if you don't get the pitch, you'll get some information that could help any future pitch. And the last advantage is of course that it makes them do the talking whilst you mentally regroup.
This is a true story, that's the way it actually happened in Real Life™. I have witnesses, but if you're looking for me to name and shame, sorry but you'll have to wait for my posthumous tell-all autobiography (a racy read, guarateed).
Browser-based augmented reality (AR) using a webcam has got problems.
Using the Flash plugin plus a webcam means at the point of consumption (aka the user's computer), you have no control over the following factors and these need to be managed properly to ensure delighted users:
the lighting
the webcam
the surface
the reproduction of the QR code media
At about 1 minute 10 seconds in, you can see how this chap has managed all of the above:
Lighting
he's demonstrating this in a well-lit white studio with the cam mounted directly over the gameboard. No reflections and light 'noise' from external sources is minimal.
Webcam
Targeting computers and laptops, you have no idea what kind of webcam your users have. One thing you can be sure of though, it's unlikely to be a mounted in a robust and stable fashion as in the video above. It might be a fixed webcam on a laptop, angling it down to pick up markers on a desktop means you also angle the monitor away from any kind of comfortable viewing experience as the lid half closes and the viewer is reduced to crouching down with eyes level with the surface trying to peek in.Always provide an alternative means of accessing the content.
Surface:
Eye of Judgement's white gameboard allows maximum contrast with QR code. Also the gameboard requires a table, no cluttered desk in an office or unloved corner of your home and certainly no lap. A flat plane is another essential component in successful (read 'rapid') recognition of QR media. Which brings me neatly to:
QR code media
In bought and paid-for games like Eye of Judgement, you get the external perhipherals (board, cards) designed and printed in a way engineered to reduce all these risks. Your browser-based game/experience that folks come to because someone sent them a link is more Do It Yourself and requires users have a printer to print out the QR codes and markers.
You'll need to ask them to cut them out and mount them on a piece of card ideally in order to get the benefit of the experience. Unlike the buyers of Eye of Judgement, your users have no investment, they haven't paid a bean to click that link and many of them are going to drop out right here when they see they have to do something in the Real World. They came to be amazed and get maximum return for minimum effort, and now you're asking them to do elementary arts and crafts.
And what?
Let alone the very real practical considerations above, what are you offering the users through AR? This stuff isn't new anymore, you can forget the one-shot novelty carrying enough of a payoff to offset the effort of setting up an environment sympathetic to Augmented Reality around whatever has a browser on it. For this much work, AR has to really add value for the user. You don't want users setting down their cards and markers and exhaling disappointedly before throwing the card into the recycler and wondering if they've still got enough time to play Farmville whilst making a mental note never to come back to your site.
So don't make a move until you can answer the question: what has AR got for my users?
Everyone involved in this should give themselves a pat on the back. Very inventive incorporation of 8bit game icons to a real-life setting in Pixel Stars invade NY
Recently I watched Adora Svitak: What adults can learn from kids, most resonant with me was that adults should learn not to get hung up on past failures or restrictions brought about because "that's just the way things are". As La Svitak says in her talk:
"We kids still dream about perfection"
Do you still dream about perfection? If not, why not?
Previously on the eve of a holiday off work, I'd already have a to-do list that would read something like:
learn {INSERT PROGRAMMING LANGUAGE HERE}
fix annoying video bug
start entirely new programming project
finish the programming project I started last holiday
The sharper-eyed among you will have noticed that doesn't sound much like a holiday.
And after several holidays of achieving precisely 0, none, zero of the above, this time I have no to-do list¹.
And my inner teen is taking advice from this guy:
But the 24/7 Internet professional that I like to tell people I am these days just desperately wants to take a break from this kind of behaviour:
"We walk the streets with our heads down staring into 3-inch screens while the world whisks by doing the same." Howard Mann Your Business Backyard
Because all that activity doesn't seem to be getting me anywhere. Who knows, if I get a space to think, maybe do some wondering around, I might come up with an idea I could finish.
Bonus Round. For me, this piece of advice on taking a break has a great punchline:
"EASE UP. Pump the brakes. Take a step back. Seriously. Take two steps back. Turn off all your electronics and surrender over all your aspirations and do absolutely nothing for a spell. I know, I know – we all need to save the world. But trust me: the world will still need saving tomorrow. In the meantime, you’re going to have a stroke soon (or cause a stroke in somebody else) if you don’t calm the hell down. So go take a walk. Or don’t. Consider actually exhaling. Find a body of water and float. Hit a tennis ball against a wall. Tell your colleagues that you’re off meditating (people take meditation seriously, so you’ll be absolved from guilt) and then actually, secretly, nap." Elizabeth Gilbert. Author "eat pray love"
disclaimer: Simon Cobb is not responsible for loss of employment after following any advice here.
¹ Though I might take some time to update some cultural references (aka listen to music, watch a film) as several posts reference the 1980s, younger readers, go ask your dad what these things were about and watch him go misty-eyed with Nostalgia™