Solving the problem of forgetting to take back library books, and having fun doing it…

Problem

With access to 4 library cards, each with 30 book capacity, that’s a whopping 120 books we can take out. The current “reminder” system from our local library involves emailing you 2 days before it’s due, and then 1 week AFTER it’s due (and you’ve picked up fines). We’re currently sitting at around $20 worth of fines and that’s not good at all.

Solution

Throw technology at the problem!

I built an end to end system using a Python, NodeJS and PushBullet. Allowing me to…

  • access a RESTful service to get info on current taken out books, per library card and…
  • send notifications as books approach due date.

Here’s how I did it:

  1. Scrape web site for data, using Python with HTMLParser to log in and extract the latest book data from the website, dumping it as a JSON string.
  2. Create a NodeJS service to wrap the Python data request and expose it as a RESTful service.

Tada… now we get notified via PushBullet (https://www.pushbullet.com/) whenever books are about to become due.

Code available on GitHub

Remember, it ain’t pretty, but it works 🙂

gSouthAfrica 2.0 Day 1

Ok, so gSouthAfrica Day 1 didn’t really grab my interest in the slightest, perhaps the coolest thing I saw was some of the features around Google+ that are either just released (Google Ripples) or planned soon (like the integration with YouTube to add music play lists and share and control these from Plus, although can’t really see a use case for a built in music player in Plus?). Anyway, so besides the funky Plus things coming the rest of Day 1 was pretty much a rehash of last year. The keynote again focused on Google’s plans for expanding into Africa revolving around solving some of the key problems to introducing wide scale technology to the continent. I must admit they are making some nice strides to solving this but are a far way from making Google an everyday name in the dark reaches of Africa.

All in all for me the day was boring, but then all the technologies they spoke about I know on a deeper level already so I expected that. Day 2 (Developer Day) sounds like it could be good though (at least I hope so) and I’m actually looking forward to it…

gSouthAfrica 2.0 Hackathon

Attended the 1st day of gSouthAfrica 2.0 (https://sites.google.com/site/gsouthafrica20/), the second incantation of the Google South Africa conference. The first day was a Hackathon focused on the Google+ API (https://developers.google.com/+/api/) in its current incantation. For me the day was a bit of a let down, the Plus API is severely limited with only the basic ability to read data and even that is limited. There was a bit of a competition with the Hackathon but for me it could’ve been organized better. The turnout for me was also surprisingly low, in the end I did a bit of experimentation with the API and that was ok, didn’t really get to build anything constructive, in fact I couldn’t even think of something constructive TOO build with the API, although this could be partly due to the fact that I’m knee deep in Android development.

In closing a nice idea the Hackathon, next time though, and especially if you’re going to make a competition of it, create a common goal for everyone to do, like a build a particular app that will use a lot of the API. Also, Google need pull their thumbs out of their butts and seriously ramp up the deployment of the Google+ API’s full functionality if they’re hoping to get any kind of value out of it, in fact, I’m almost thinking if they don’t then Plus is at risk of running down the same track as Blackberry… a dead horse looking for a place to fall over.

Let’s see what tomorrow holds, it’s the official Day 1 of the conference, all about Marketing and other such interesting topics 😉 Lets hope they don’t dumb it down too much.

My initial experience of the Viewsonic gtablet

I recently purchased a Viewsonic gtablet (or gtab) and I thought I’d dump some thoughts I had on it for future buyers. Firstly I’m based in South Africa so access to technology like this is, well, lacking. The only “tablet” officially available as of this post, is the Samsung Galaxy Tab (I say “tablet” because it’s more like a rather large phone). I picked up the gtab at a local online distributor and had it shipped as a grey import. The price I paid put it in at half the price of the Samsung tablet.

The specs for the gtab can be viewed on the Viewsonic Site, some of the things that stuck out were:

  • 1GHz NVIDIA Tegra 2 – Dual-core ARM Cortex-A9 CPU – dual core is cool, ready for Honeycomb release of Android. The NVIDIA Tegra 2 chipset is awesome, read up on it at NVidia (Angry Birds flies on this tablet, pardon the pun).
  • 8-10 hour battery life (confirmed), only need to charge this thing every few days.
  • USB Host, plug in your external drive and away you go, also, plug in a keyboard / mouse and it just works!
  • Unfortunately (or fortunately?) it comes with only Wireless and Bluetooth (no data or GPS) but, to be honest, I think I prefer it that way, plus you can tether your android phone to it and share it’s GPS and data connectivity (I use an app called Wireless Tether) if needed.

The gtab ships standard with a charger (US plug, luckily I had a converter), USB cable, some (very basic) instructions and a cloth, which doesn’t work so great, buy yourself a microfibre cloth if you’re anal about the screen or invest in a screen protector (I believe there are a few available), although the screen is pretty durable and a good wipe now and then is more than sufficient.

The first thing that struck me as I unboxed it was its wide format (10in x 6.5in) as opposed to the IPad (7.5in x 9.5in) which seemed strange at first but quickly grew on me. It’s designed to be a landscape device, controls at the top right corner. It’s also slightly thicker than the IPad giving the impression it’s significantly heavier (which it isn’t, weighing in at only .05 lbs more). For me the extra thickness gave it a better feeling when holding it and I could grip it better (forgive the porno connotations but maybe this site will get more hits now 😉 ).

Out of the box it requires a 3-4hr charge to full before you can use it, prepare for the annoying wait. Also, the standard ROM is a dog. It’s slow and apps crashed continuously. I strongly suggest you redo the ROM on it straight after charging, I went with the  CyanogenMod using these instructions and I was up and running within an hour with a vastly improved experience. Remember to do the Market Fix as well to give you access to the Android Market. After that go crazy and install all your favorite apps, first thing I installed was Angry Birds, simply to see the performance, and it rocked.

There are, however, one or two things I had issues with that still need to be sorted out:

  • I cannot get the onboard speakers to work (headphones work great)
  • Battling to get all the supposed supported movie formats to work, not sure why but will give feedback once sorted.
  • Occasionally the tablet gets “jerky” but I suspect it’s all the rubbish I installed.

Other than that it’s a great device, I’m enjoying using it and would highly recommend it, especially for the price.

I’d be interested to know other peoples experiences with the gtab, and if you know how to fix the sound, please let me know…

Velvet Intimidation and Thuggery

In South Africa you hear stories about people brushing against the corruption of the Police but it doesn’t sink in until you actually experience it. Today I was stopped by a pointless roadblock doing nothing more than harassing innocent citizens, checking for expired licenses, expired roadworthy certificates and the likes.

Unfortunately my car’s roadworthy certificate had expired some months ago (forgot to check it, didn’t receive an update notice) and I was pulled over. Oh crap, I thought, what have I done wrong now?! What happened next was a series of exchanges that can be summed up as velvet gloved intimidation tactic aimed at loosening my grip on the cash in my wallet.

They jokingly threatened to “moer me” (slang for beat up), threatened to impound my car and leave me on the side of the road, threatened me with a massive fine. What the hell? Luckily I had the sense of mind to “just act meek and friendly”, you know, like a beaten dog?

Here’s a (rough) playback of the conversation:

Police (smiling): “Happy New Year sir, how are you today?”

Me: “Good thanks, is there a problem?”

Police: (still smiling): “Yes, your license disc has expired, come look!”

Me (looking): “Geez, I had no idea, I never received the reminder”

Police: “Oh, we’re going to have to impound the car sir (pointing at the tow truck conveniently parked on the side of the road), we’ll have to tow it”

Me: (trying the sympathy card) “What? But I’m on my way to work, I have to work on New Years Eve, all I want to do is get it over with and get home”

Police: “You know the fine is R2500 for this infringement, and we’re going to have to tow the vehicle”

Me: “Come on, do you really have to tow the vehicle? It’s only 3 months expired”

Police (talking to his 2 buddies now, laughing): “Maybe we should moer him? You think we should moer him?”

Me: “Why do you want to moer me? I’m just going to work, want to get the day over”

Police: “Can I see your drivers license”

Me (giving license): “Sure, I think that expires 2013”

Police: “Yes, 2013, I think we should moer you”

Me (realizing what he’s actually after): “Listen, I know what you want, you know what you want, why don’t you just ask me”

Police (to his buddies again): “Maybe he’ll buy us lunch, or maybe we should just moer him…(laughing)”

Anyway, this diatribe went on and on for several minutes, eventually, realizing I think that he wasn’t getting a bribe out of me and not wanting to do the paper work, he waved me on.

So that’s my experience of the corruption in this Banana Republic I call the country I live in and I’m now more determined than ever to get the hell out of Dodge. This country has no future, not when the very people that are supposed to protect it are the same people destroying it…

Google South Africa conference (day 2)

I’m back in Joburg and I figured I better get around to writing a Day 2 post. Day 2 was, for me anyway, not as interesting as Day 1, but nevertheless worth it (it’s a fault of mine that I’m way too technical and not focused enough on “the other stuff”).

It’s focus was mostly around monetizing (Adsense / Adwords / YouTube for Business) and optimizing (Webmaster Tools), and some useful tips came out of the sessions. There was also a rehash of the first days strategy talks (what Google are doing in Africa), compressed and optimized for more business orientated people, as well as a demo on Voice, Goggles and Maps(with a monetization/marketing slant).

One of the things that stuck out for me was the YouTube talk, the stats on video usage is phenomenal, with predictions that up to 80 or so percent of internet traffic will be video within the foreseeable future. Is the internet as we know it dead? I think that as it stands now, and based on those figures, it may not be dead, but will most certainly change in a significant way. Something else I wasn’t aware of was that YouTube had a South African branch, which is awesome, means all those videos are now local traffic for us.

One more thing that stuck in my head was the somewhat corporate way in which Google dealt with the complaints from two people regarding being blocked from Adsense. I’ve personally experienced the automated messages warning against “unsavory behavior” and realize the frustration of trying to find out exactly what the Google checking algorithms consider as “unsavory”, and not being able to communicate with a “human” on the other side, so I know how the must feel. I think people need to realize that Google is a listed company with shareholders, they need to protect their interests and with large volume obviously there’s no feasible way they can treat everyone equally, so they give special treatment to large account holders, it’s just a fact of business. One thing I don’t agree with is the lack of information when you do query a threatening letter, not sure what the Google strategy is here but it’s not really very, well, “warm”.

The conference closed (for me anyway) with a “website clinic” where Google went through some guest websites giving suggestions on what was and wasn’t good practice, an interesting exercise and I got some interesting tips from the session. Unfortunately I had to leave for the airport at that point so missed the last few sessions and, other than dodging a few thunderstorms, had an uneventful flight back.

All in all the 2 days were worth it, connected to a few people, got to meet some Googlers and hear them talk about the interesting technologies I’ve been using. The food was nice, the venue was awesome and Cape Town is still beautiful (wouldn’t mind moving back there). Hopefully they will be back next year, although I think then it should be up in Johannesburg so that they guys up here can experience it as well.

Interestingly enough, the word “cool” was not used at all in this post…

Google South Africa conference (day 1)

Geeks, coffee, sweets and cool music, add that to a lineup of interesting speakers talking about cool technology and you have a recipe for an awesome event. Day 1 of the Google South Africa (g|southafrica) Conference finished a couple of hours ago and it was a pretty cool day. I’ve worked with most of the Google technologies before but still found the conference a wealth of knowledge. It’s always refreshing to see a group of dedicated people speak about something they’re passionate about, and the Googlers are quite passionate about their products.

Day 1 of the conference made it quite clear that Google has big plans for Africa. They’re on a mission to bring the Internet to everyone, making it an integral part of every African’s life, and I think they have a good grasp of the potential pitfalls and problems of dealing with this continent; things like the multitude of languages, lack of Internet access and decent localized content.

What are they doing about it? Lots of cool stuff it seems, like Google Voice, a speech to text recognition tied in with Googles’ search engine, now you can just say what you want and it delivers it to your device and, believe me, what they’ve done with voice recognition technology is awesome. Oh, did I mention it’s in Afrikaans and Zulu as well? Then of course there’s the heavy focus on us (the developers of cool apps), trying to get us entrenched in all the cool API’s they have available, building relevant content for local customers. What’s refreshing is that they recognize that they’re not the specialists on localized content, they’re merely the tool providers, WE’RE the specialists.

Some other cool things at the conference (for me anyway) was Google Goggles (still in beta I believe), let’s you scan just about anything and recognizes and returns information on it (except pet’s and accessories, but they promise they’re hard at work getting that sorted 😉 ), pretty awesome technology (it’s not often you get a room full of techies to applaud spontaneously during a demo!). Another cool technology was the entire Map / Location base suite of API’s ; I’m working on a project currently using these technologies so I am biased towards it’s coolness but what they showed was mind altering to say the least, lots of cool technology to play with.

All in all the conference was awesome, lots of useful tips from the Googlers on getting the technology out there (especially in the mobile arena) and using it in an optimal way (like search optimization), together with lots of cool demo’s of cool technologies.

Looking forward to Day 2 tomorrow… more coffee, more sweets, more awesome…

Oh, in case you’re wondering, I used the word “cool” 12 times in this post…

Conference Fun: Blackberry Developer Days

Having just returned from what was an eye opening Blackberry Developer Days conference in Johannesburg, I thought I’d write a few of my thoughts on it, and Blackberry itself (or rather the direction I see it going).

Firstly, thanks to the presenters, they showed both a good knowledge as well as a passion for the subject, both ingredients that kept me interested. Secondly let me state categorically that I am an Android Fanboy, love it, enjoy it, code it, and dare I say, worship it? Also, I’ve never touched or been close to developing anything for a Blackberry so this was something I went to with an open, yet somewhat skeptical, mind.

I’ve always thought of Blackberry as a device aimed at the corporate / business market, but after this conference I have to say I’m pleasantly surprised. Their consumer drive is impressive to say the least. In a nutshell with their 5.0 release of their OS, they’ve played a lot of catchup (to the other smart phone brands) of features they needed to add, and added some nifty things that make them really cool.

Here are some of the good things that stuck out for me:

  • The WebWorks Framework (widget building), particularly the ability to create an HTML / JavaScript app that can access phone functions directly – nice.
  • The Theme Studio, customize your own theme (even animated) for your Blackberry, cool idea.
  • Geolocation based services, not much to say here, pretty much on par with all the other manufacturers, although I think their model to handle loss of signal and use of best available service is better than others.
  • Changes to graphics, introduction of 3D OpenGL (think gaming) and an Animation API.
  • The ability and level to which you can integrate between applications on your device (both custom and built in), and outside via networking, was impressive, reminded me a lot of the android model, but different in many ways.
  • The Blackberry Alliance Program with cool incentives like loaner devices.
  • They actually showed us South African developers some love! With the ability to do paid apps and receive revenue it puts them ahead of Google (1/2 credit for the Google Africa conference next month, but give us paid apps already!), and WAY ahead of Apple (who I doubt even know we exist).

This is what was not so great for me:

  • Lack of support of the Eclipse plugin in Linux (Mac and Windows supported). Although there are workarounds but still… professing to be open and not supporting THE open source OS ?
  • The 70/30 cut on profits from sales of your app, seems a bit steep, but that’s just me.

All in all it was a good experience, an eye opener of sorts, I’ll definitely be getting into the Blackberry development arena.

One last thing I want to say is that, although Android is growing so rapidly and iPhone is, well, iPhone; here in South Africa Blackberry is still very much the leading brand (by far) in the bulk of the market (with their Blackberry Curve mostly). People don’t know “Android” and most don’t care to know “iPhone”, being priced way out of their pocket. Blackberry is what people use for a smart phone here, and it’s pretty dumb not to be targeting that market, if you’re serious about mobile development that is.

Next Up: Google Africa Conference, let’s see what THEY have to say…

Disclaimer: I am not nor have I ever been a Blackberry Developer, I speak here purely from personal experience so feel free to correct me if I have been inaccurate in any way

My first of many Android apps

In my spare time I do what I love (how sad, I should do what I love all the time), and what I love is coding, and the android platform…

I’ve created my first android application available here: http://torrentfunnel.ricktonoli.com, read up on it at the site. If anyone wants to give it a whirl I’d appreciate feedback. It’s still in beta, so no promises…