SimonHildebrandt.com

Navigation

Feeds

News

The latest news, project announcements, etc.

Tip of the day: QR codes for the Android Market

posted Dec 11, 2009 3:44 AM by Simon Hildebrandt   [ updated Dec 11, 2009 4:12 AM ]

There's instructions for generating QR codes; there's online generators and even the Google Charts API will render them. And although it took a while to find them, there's also instructions on how to link to apps (technically app searches) in a way that an Android device will launch the Market app.

But despite QR codes being a handy and popular way to collect and install Android apps, it took me hours to find this article tying the two together, and it's not exactly thorough. So to spread the knowledge a little wider, here's how I generate the QR code I use on the SofaStream page:

The link

As described over here, the Market app registers to manage any 'market://' URLs that turn up. So the URL we'll be using is:

market://search?q=sofastream


It's also possible to use filters like 'pname:' in front of the search value - this limits the search to application package names. In this case we'd use pname:com.twilight.sofastream (the package name for SofaStream.)

The code

Google's Charts API is the easiest way to create the image we need - here's the resulting URL:

http://chart.apis.google.com/chart?cht=qr&chs=230x230&chl=market://search?q=sofastream

'cht=qr' sets the chart type, 'chs' sets the chart size, and 'ch1' is the search string listed above.

And the result is show on the right...


Bonus tip: this article has some really useful information on creating and decoding QR codes on Android devices.

Arduino Workshop - The good, the bad and the cosmetically challenged

posted Nov 26, 2009 7:01 AM by Simon Hildebrandt

This week I was lucky enough to participate in Mediamatic Bank's Arduino Workshop - the second held recently, after the first was booked solid just a few hours after being announced - and I thought I'd jot down a few notes for anyone curious about the hardware or the event.

Arduino

As a strictly software geek, hardware hacking has always held a weird fascination for me. Looking at projects like André LaMothe's XGameStation (kit-build your own game console and write games for it) I was simultaneously thrilled and intimidated by the prospect of digging into the real nitty-gritty of digital electronics.

Enter Arduino. What Ruby on Rails has done for web programming, this hacking-friendly platform has done for hardware hobbyists. Step-by-step tutorials, thorough documentation, a smart and approachable community - it's all there. Starting at the main Arduino site you can quickly find hardware suppliers, reference info, a handy-dandy cross-platform IDE (stocked with integrated examples) and some great ideas for projects. All this adds up to a smooth and virtually painless learning curve taking you as far into digital electronics as you care to go.

The Course

So with resources like this a one day introductory workshop practically runs itself, right? Not exactly, and the Rails comparison above might point to the source of some of our problems.

Ruby on Rails makes web development look easy - like anyone could do it. But no matter how much the framework does for you, web development (and similarly Arduino development) still requires decent programming chops. Our group had a very diverse mix of programming knowledge - from zero to 'lots' - so while the inexperienced third of the group drowned in the code side of things, the experienced third got bored and restless. Personally I spent most of the coding part of the course either trying to help others, or installing and experimenting with the excellent Python module, pySerial.

After lunch we pulled out our bread boards and got more seriously into the hardware side of things, but the group continued to have problems. The presenter made a few elementary mistakes - taking down slides while people were still trying to work from them, being impatient with students struggling to keep up, pounding through some very complex ideas with very brief explanations - and several people actually gave up trying to follow the action. As someone who has made all of these mistakes myself while running training events, I quickly picked them up and was able to work around them - but the less confident among us got very frustrated, very quickly.

Don't get me wrong, I learned a heap. PWM, voltage dividers, pulldown/pullup resisters - we plowed through a ton of useful stuff and I managed to get every bit of it working on my own board on the day. And I love my new hardware - it's sitting on my desk as I type, blinking invitingly. I've got a shopping list of projects I can't wait to jump into, and I finally have the confidence to get my hands dirty (or possibly burned with a soldering iron). But the most timely lesson for me (before I run a workshop of my own in a week or so) was how not to train people.

Announcing StarShipSofa Stories: Volume 1

posted Sep 11, 2009 4:27 AM by Simon Hildebrandt   [ updated Oct 8, 2009 5:02 AM ]

My favourite podcast has announced something exciting to celebrate reaching a landmark one hundred episodes: an anthology!

In a few weeks when StarShipSofa reaches one hundred episodes of it's Aural Delights show, a compilation of some of the great stories broadcast so far on the show will be made available as both a free e-book (PDF) and also as a print-on-demand (via Lulu) paperback.

I'm looking forward to picking up a copy - for the new artwork, to support a great show and as a way to easily return to some terrific stories.

Check out episode 98 for the official announcement, and take a look at the cover art preview.

UPDATE: My copies have arrived, but instead of Lulu mine come from here, the alternate PoD publisher Blurb. Behold the unboxing.

SofaStream beta launch

posted Aug 17, 2009 1:56 AM by Simon Hildebrandt

SofaStream beta is finally out on the Android Market! Load up the market app, search for 'SofaStream', download it and take it for a spin - I'm looking forward to all the feedback. :)

Notes:
  • This is beta. I've been hammering it over the last week or so and I think it's pretty stable, but I (like all of my kind) suffer from Developer Syndrome - I don't use my software the same as someone who doesn't know how it works under the hood. If it breaks, or even just does something unexpected, I'd appreciate knowing about it.
  • This is a work in progress. And I mean from both sides - I'm working with everyone over at the StarShipSofa to make the RSS data I'm drawing from as rich as possible, so SofaStream is as appealing as possible. The file sizes on the Sanatorium feed are an example of things we hope to improve in the future. If you have ideas for new features, again, let me know.
  • The icon. The default icon on this SofaStream release is no accident - we're running a competition over at the StarShipSofa to create one. If you can build something in a 48 by 48 pixel PNG that you think captures SSS and SofaStream, send it over to Tony via starshipsofa@gmail.com - you might win some tasty fiction.
Thanks to Tony at SSS for the help and encouragement, and to my lovely fiance Mandy for her support and patience during "the project that ate my weekends".

Tip of the Day: Fixing a "broken" Eclipse project

posted Jul 17, 2009 1:33 AM by Simon Hildebrandt   [ updated Aug 17, 2009 1:14 AM ]

Starting with a new IDE, a new SDK and a new language is in intimidating project, and despite having done some mobile, Eclipse and Java development before there's still lots for me to trip over. Case in point: I tried to clean up SofaStream's codebase to check it into source control on it's Google Code project, and somehow upset my Eclipse project. I seem to do this once every few months using Eclipse - making some code or configuration change gets the project into an unusable, irrecoverable state and hours of research offers no solution for correcting it. In my case nuking some of the generated directories - 'gen', or possibly 'bin' - caused the 'src' directory to be marked as having errors, but with no source code was highlighted as being the cause of the errors. I was also seeing 'no classfiles specified' errors in the console, but couldn't see any clear way to correct this either.

Extensive Googling revealed a lot of similarly frustrated people, but no solution that worked for me - refreshing, double-checking the SDK path, I still couldn't build 'cause my source code was "broken". So I did what seems to be a recurring solution - I nuked (leaving source intact) and reconstructed the Eclipse project. This worked like a charm, even though I actually re-imported the same project files from the "broken" project - strongly suggesting that there was nothing wrong with my project at all, Eclipse was just having a deranged moment.

So if you see something similar in your own project (or you're using Eclipse regularly) - get comfortable with separating your codebase from your Eclipse project... and remember that throwing away the later is an option, if it seems irrecoverably broken.

New project - SofaStream

posted Jun 29, 2009 6:49 AM by Simon Hildebrandt

While discussing volunteering as a narrator on the excellent StarShipSofa podcast, I happened to mention my enthusiasm for my new G1 and the Android platform. SSS editor Tony C. Smith is apparently also a G1 owner and we were soon throwing around ideas for a SSS-specific app - long story short, I have a new project.

After a weekend or so of hacking I have a rough mockup of the interface. I've also drawn inspiration some very handy RSS parsing code and am now exploring Android's Handler class to spin the hard work off into a separate thread. The learning curve has been steep (I'm learning a lot of Java at the same time as learning a lot of Android concepts) but Google's documentation is pretty strong and the ApiDemos package is also a great place to see this stuff in action.

Mostly it feels quite like the GTK development I've previously done (particularly for my N800) - nice background adapter classes to map from data sources to list views, etc. I was particularly impressed with 'linkify', though - it's a flag on the basic text view widget that automagically converts all URLs in the text into clickable, browser-launching links. For more control you can always break out the embedded webkit view, but for basic marked-up text (like the summary text from an RSS feed) this was awesome.

More information coming as this moves into beta - stay tuned.

Connection tethering with the G1

posted Jun 2, 2009 3:09 AM by Simon Hildebrandt

Seems like a simple request, doesn't it? "How can I share my phone's internet connection with my computer?" Well for G1 users it's a little more complicated than it seems...
  1. T-Mobile US doesn't permit it. According to developers creating tethering apps, the Open Handset Alliance is removing apps from the Android App Market, arguing that said apps breach T-Mobile's US terms of service.
  2. Many tethering solutions require root access. Tools like tether Blu require non-trivial modification of the device, something that can cause problems with updates later, as users of jail-broken iPhones can attest.
Luckily the European T-Mobile TOS don't aren't similarly crippled, and I found some solutions that don't require root access - but I spent quite a few hours wrestling with this, so I thought I'd post a few notes about my experiences.

PDANet looked nicest, initially - a simple client on the PC side that could install and then connect to a little phone-side app. Problems cropped up pretty fast, though - I had trouble finding help on their site, and once I was up and running, well, I wasn't up and running very long... the connection dropped regularly. Also they only provide clients for different versions of Windows, leaving Mac and Linux users out in the cold.

Tetherbot turned out to be the best solution for me. It involved a little more tweaking, but as a developer working on multiple OSes it delivered what I needed - reliable connectivity. it works by providing a SOCKS proxy on your machine, connecting via the Android debugging tools to an app on the phone. That might sound complicated, but if you've already got the Android SDK installed (as I have) the remaining steps are simple. (And if you don't, you can get just the bits you need from a link on the Tetherbot site.) From that point on my real stumbling block turned out to be Firefox - SOCKS proxying just wouldn't work for me. Safari was quite happy to connect, though, and current advice is that the FoxyProxy Firefox add-on is all things to all SOCKS users. :)

Mucking around with SOCKS settings and dealing with T-Mobile's uneven connectivity in my area means that this isn't a permanent solution. But hopefully it'll get me through the 4 to 6 week lead time currently suffered by those of us in the Netherlands trying to get ADSL...

Climbing off the fence: My new G1

posted Jun 2, 2009 1:35 AM by Simon Hildebrandt

There's always something new around the corner - you can wait forever for the perfect gadget to be released. But sometimes you just have to throw your economic support behind the best thing available now - take a risk on whoever is going in the direction that excites you.

For me the best compromise was HTC's G1. Sure (as previously noted) the chassis is a little dinky and plasticy, and the touch screen isn't all it could be - and the lack of a regular earphone jack is frustrating. But I think Android as a platform is pointed in the right direction, and I needed a phone sooner rather than later - the G1 was my only choice when it actually came time to choose.

The purchasing process was typically awful - the staff in my local T-Mobile store (Leiden) actually didn't know how to dial a number on one of their own display phones. My ignorance of European phone configurations also led to me locking myself out of my handset until the store staff explained the PUK system (something not used in Australia) to me. Between ignorance of the rules relating to internet connection tethering (something I'll write more about soon) overcrowded stores and trying to pressure me into upping my connection speed, I can't recommend T-Mobile's stores less.

On the plus side, though, the phone is actually quite nice to use. The pluggable 'intent' system makes getting stuff done really easy - snap a photo and send it via gmail with just a few easy commands, for instance. And while the initial set of applications is a little minimalist, the developer community has really stepped up with some great games and tools. For instance:
  • InfiniMusic - slick music and podcatcher. short a few features and a little processor intensive, but clear and very usable. 
  • NewsRob - Full-featured Google Reader client. Undergoing continuous improvement, Mariano Kamp makes taking your feeds with you easy.
  • Battle For Mars - Larva Labs' pixel-art-style turn-based strategy game wowed me with the free version - can't wait to grab the full one.
The battery life, unfortunately, sucks - mainly because I use it like a PDA instead of a phone. I download podcasts, fiddle with maps and do a heap of 'net traffic - all of which meaning that the radio, CPU, GPS and screen are active for long periods. As a result I have to charge it everywhere - home and work - everyday. There's bigger batteries available, apparently - something I'd look into if charging everywhere wasn't viable.

Ultimately, though, I bought this device to hack on it. So with the SDK plugged into Eclipse I'm ready to get started - stay tuned for news of my hacking experiences.

Visualise your life, part 1: concept and tools

posted Feb 23, 2009 5:41 AM by Simon Hildebrandt

I've been thinking recently about creating a timeline of my life, a visualisation of people, places and events that have been significant to me. I decided to try and feed it using the data I have sprinkled around in various systems - events from Google Calendar, contacts from Gmail, pictures from Google Web Albums - and started searching for tools to tie them all together with.

MIT's Timeline immediately caught my eye. Part of their SIMILE visualisation project, Timeline provides a very slick data-driven DHTML toolkit for smoothly scrolling timelines - provide it a DIV and some JSON-formatted data and Timeline does the rest. (SIMILE also has some other great visualisation tools - check out Timeplot or Exhibit for more examples.)

jsViz is also pertinent, although I'm less certain how I'll use it. This last.fm mashup certainly grabbed my interest, though.

This is an ongoing experiment, so I'll be updating as I explore the possibilities. Ultimately, I'd love for this to end up as a web service - feed it your syndicated life data and scroll through a visualisation of your life...

Palm announces the Pre, and WebOS

posted Jan 11, 2009 11:09 PM by Simon Hildebrandt

This Slashdot article gives a good run-down on Palm's new iPhone (and G1) 'killer' - the Pre. Like the G1 it's a smartphone with a slide that reveals a QWERTY keyboard - the main differences are that it's a vertical slide, and seems more nicely built (brighter screen, etc.)

The 'completely new OS' is Linux with a Webkit-based browser in front of it - apparently regular developers will write their apps in HTML, CSS and JavaScript (and only 'special Palm partners' will be allowed access to the underlying system.) In a former life I was a Palm OS developer - it would be a little like time travel to return to this context with my current web developer skillset.

This is yet another 'new OS' which is actually a VM running on Linux - Android has Java, WebOS has JS, even the iPhone SDK forces you to write some objC. This is what frustrates me about these phones - each is still just a little too restrictive for me to really lust after one. At least with Nokia's Maemo (which I've had great fun developing Python/GTK apps for on my N800) you get a proper Linux stack and can write applications in anything, including C - but unfortunately none of Nokia's phones run Maemo, only their internet tablets. So out of the three platforms, I'd have to go for the Pre - the UI looks incredible, and I like JavaScript a lot more than Java or objC.

‹ Prev    1-10 of 18    Next ›