I won first place at BattleHack Austin – PayPal’s hackathon for developers. BattleHack is a series of competitions all over the world, in places like London, Berlin, and New York. Austin’s was held at TechShop, a great maker space up in Round Rock.
I ended up building a screen scraper in Ruby, an iPhone app, and a Windows Phone 8 app. Because I made the only Windows Phone 8 app at the hackathon, I also won the Nokia app developer competition. Instead of building a server, I used Windows Azure Mobile Client Services as the backend for the app, as they were one of the sponsors, so I knew I could bug Microsoft’s developer evangelist whenever I got stuck. This worked out really well for what I was doing, especially with the cross-platform support.
The PayPup iOS app is open sourced on GitHub at (https://github.com/jefflinwood/PayPupAppForIOS) – you’ll need to set up your own PayPal and Windows Azure Mobile Client Services accounts and use the corresponding client IDs in the app.
Earlier this month, I spoke at the Dallas Drupal Camp about Drupal and mobile video. I’ve worked on a couple of projects for clients this year and last year that involved uploading and displaying videos from a mobile app on iOS and Android. Some of them have used Drupal for the server, others haven’t used Drupal at all. Mobile video can only be done through a native app (or PhoneGap), as HTML5 hasn’t provided support for uploading video through input types yet.
One of the obstacles to using Drupal as a video platform is getting everything set up – even though there are plenty of video modules, it can be tough to set up the Video module with Zencoder as a transcoding solution and Amazon S3 for storage and content distribution. Making this a lot easier if you are either starting from scratch or building out a proof of concept/minimum viable product is Octopus Video (http://octopusvideo.org/), a Drupal 7 distribution developed by Heidi Software and Symphony Themes. In effect, it’s a private YouTube distribution, which you can then extend using normal Drupal 7 modules and views to become a corporate training video archive, the back-end for a consumer-facing mobile app for cat videos, or whatever you want.
I gave a lightning talk about Octopus Video to the Austin Drupal User’s Group, and everyone there seemed pretty enthusiastic about the topic, so I decided to take it a step further and give a talk on it at the Dallas Drupal Camp this year.
In addition to sharing a lot of tips and tricks I learned from using Octopus Video as the server for a video-based mobile app prototype, I also created an open source iPhone app (Apache-style license) to show off some of the things you can easily do – upload video, display a list of videos from a Drupal video, and then play back videos stored on Amazon S3.
The GitHub repository for the open source iPhone app is here:
This was a quick demonstration project for the Dallas Drupal camp, not extracted from a commercial project, so it’s missing a lot of the extras that would make it a polished app. I’ve added a few of them as issues to the GitHub project, and if I can find some more free time, I’d like to keep moving forward with it.
Sometimes it’s fun to just work on a video game. Especially if it’s one for cats.
We downloaded and bought all of the cat apps for the iPad, and our picky feline, Mango, got bored with all of them. The game he did go nuts over – Cut the Rope! So I decided to make game for Mango, and bring in some of the Cut the Rope style game play, like swiping and “swooshes”.
Turns out, after some “beta testing” with my friend’s kids, that toddlers really like the game too. You know who didn’t like the game? Apple. The first pass at the game got sent back to me for not having levels or scores…..well, it’s an app for cats, and they don’t know anything about game scores.
Arguing with them was basically unlikely to get me anywhere, so I’ve revamped the game to have levels, scores, and GameCenter integration for a leaderboard. Of course, this adds some useless complexity for the cats, so there’s a mode where the cats can just play with no levels and no scoring.
The app is currently out in beta testing, and should be in the Apple App Store in time for the Christmas holiday season. Goes great with an iPad mini!
I recently teamed up with Level Ten to create an iPad app for the Kimbell Art Museum in Fort Worth, Texas. The Kimbell is one of my favorite art museums, so I’m pretty excited about this app! You’ll have to go to the museum to check out the app, because it’s installed on their iPads.
From a techie perspective, the app connects to a Drupal server and downloads all of its content locally, so it can be used in the museum in areas without wifi. Also, some of the images are very large – the focus is on art conservation, so you can see before and after images of many of the exhibit pieces.
It’s a 100% native Objective-C app, which meant that I was able to develop it very quickly.
Mashery makes it easy for developers to find interesting APIs – they handle all of the details that make an API great – signing up as a developer, documentation, test API calls, etc.
They also sponsor API Hack Days, which are 8 hour hackathons that usually feature Mashery, SendGrid, and Twilio, along with a few other API companies. This is a great way to reach developers, and actually get them hands on with your product – I probably would never be building cool telephony apps if it wasn’t for hearing about Twilio from all of the developer contests they sponsor.
I had a great time up in Dallas on July 1 for API Hack Day. For those of you who don’t know what API Hack Day is, a bunch of great companies (Twilio, Mashery, and SendGrid) that provide APIs for developers throw an 8-hour hackathon. Improving Enterprises provided an awesome space for us to work out of – their training lab.
On this trip, I wasn’t sure exactly what to build, but Mashery has a huge collection of APIs, so I thought I could find something interesting in there. Digging around, I found out that Active.com has a camping API, where you can get lists of campgrounds (with photos!) and then reserve them online. On the web, this service is called ReserveAmerica, and it’s actually something I’ve used before for reserving state park campground sites.
What I thought I would do is mash together the campground API with an iPad map, so that you could keep a trip log of the campgrounds you’ve been to on your trip. And then, using SendGrid, go ahead and share that out as an HTML email to your friends and family.
My little RV Trip Log app won the Mashery API prize, and because this was the third time that I’ve won that prize, instead of another JamBox (a very cool Bluetooth speaker system that I now have two of), they sent me a pair of Etymotic ER-4PT MicroPro Headphones!
I’ve done a couple of hackathon type events over the past year (three API Hack Days, XHack 2012 in San Francisco, Austin Startup Weekend, DrupalCon Denver Twilio contest), and I think 8 hours is a great time for a “hack”. No one expects to see something super polished, and if you don’t get anywhere on the project, it’s definitely not the end of the world. The last few that I’ve entered, I’ve actually been trying to focus on iPad development and UX – how to create an iPad app to make really complicated things simple.
XHack 2012 was 24 hours, and I think I actually spent about 4 hours on ViaMeme, my iPad meme generator app. Startup Weekend was 48 hours, but that competition isn’t really a development/execution contest – it’s more about the business model and convincing the judges that you can make money. The biggest problem with that is that most of your potential B2B customers don’t work on the weekends, so it’s tough to validate an idea on a Saturday!
I decided to do Austin Startup Weekend this weekend, which was my first Startup Weekend. It’s an interesting format – you come in and pitch your ideas, then form teams around those ideas and execute over the weekend. The idea I pitched attracted some interest, but I don’t think I explained it very well – you get 60 seconds to state your problem, who you are, how you plan to solve it, and who you need – that’s really hard! I only decided to pitch on Wednesday, but actually thought I was going to do a pretty good job. In any case, it’s great preparation for when I actually have to pitch a real product or startup.
I joined up with a smaller team, because I knew one of the team members from a previous Austin API Hack Day, so I knew he could do a good job – we found an interesting niche, solving the no-show problem in the hair salon/spa industry, but it’s pretty hard to do customer development there. I built a push-notification driven trending daily deals app on the iPhone, and an availability management app for the iPad on Saturday, and then spent most of Sunday on polishing the app. I used Urban Airship for the first time as a push notification provider, because I figured that was easier to set up than to set up push notifications coming out of the server.
API vendors like Twilio and Parse really spoil me – comparing Urban Airship’s API directions for a mature product they have had for years to Twilio’s brand new iOS client documentation really shows that investment in quality developer documentation just makes sense.
Anyway, I have a pretty decent iPhone app out of this – some screenshots:
I won 2nd place (and a Kindle Fire) in the Twilio DrupalCon 2012 Developer Contest with an Ubercart customer support iPad app. The idea is that a e-commerce site customer support representative could use an iPad that not only handled customer support calls, but also showed the customer’s most recent order information as soon as they call.
I’ve been to a couple of dev days/hackathons sponsored by Twilio, but I’ve never had a chance to actually use Twilio in an app or project. Twilio is a voice-over-IP provider that lets you add voice capabilities to your web application or iOS mobile app. It also handles SMS sending and receiving, if you’re doing text messaging.
Twilio just came out with an iOS SDK, which I thought could be pretty interesting for their DrupalCon Developer Contest up in Denver. The first step I took was to research different ways to use Twilio in Drupal, and I ran across the voip modules – unfortunately, they were only released for Drupal 6 (beta 9), and when I tried out the Twilio integration, I ran into lots of little errors, and Twilio couldn’t connect to my Drupal 6 site. I need to go back and file some issues in the issue queue. I dropped the VOIP Drupal modules, and simply followed Twilio’s directions for integrating the iOS SDK with a standard PHP app, and then rolled that into a Drupal 6 module and dropped it on the server. This actually worked really well, and pretty quickly, I had a phone number I could call from my iPhone that would ring my iPad, and then my iPad could answer the call and I could have a nice, illuminating conversation with myself. Luckily no one walked in on me talking to myself and a few Apple devices. From what I understand, the Twilio SDK is coming to Android pretty soon, and I would imagine the Drupal integration would be exactly the same.
So I had a great little app thrown together for calling someone on an iPad through a telephone number, but that’s not the most exciting thing. Luckily Twilio had one of their developer evangelists stationed in a room at DrupalCon, so I picked his brain about what to add – he suggested CiviCRM, but I’d used that before and didn’t think I could get that integrated in 6 hours. I liked the idea, though, so I went with Ubercart, even though I’d never used it before. Ubercart was actually super easy to set up, so no real issues there. The only catch was trying to figure out how to integrate Ubercart with the iPad app – I ended up rolling my own integration with JSON, because I needed to search Ubercart orders by phone number, and I needed to pull the products that the order contained as well.
On the iPad side, I used the AFNetworking library, which makes asynchronous network calls extremely easy. I also created a user interface in the Apple’s XCode Interface Builder, which is more or less drag-and-drop for positioning UI elements.
That actually took a decent amount of time, simply to get all of the UI elements into place that a customer service rep might need from someone’s order. I wrote some Objective-C to set the properties on each of those UI elements from the JSON returned by my Drupal/Ubercart integration module, and the app now could show order information!
I read the email saying I was selected as a finalist for the Developer Contest around 8am on Wednesday, and I would need to do a 10 minute demo at 5pm – that was great, but I was giving a presentation on PhoneGap and Drupal at DrupalCon at 1pm, so I couldn’t really worry about the Developer contest demo until after that 🙂
There were two other great entrants at the Developer Contest – VuzzBox and Drupal SMS Server – so that was cool to see that there was such a wide variety of things you could do with Twilio and Drupal.
I came in second place, which I’m really happy with – I basically entered the contest so I would have something to keep me from going nuts worrying about my PhoneGap presentation before DrupalCon started! Now my plans are to figure out if there is an actual need or desire for this app with some of the e-commerce/shopping cart packages out there – if this sounds interesting to you, let me know!