Journalism Hackathon 2015

The University of Texas at Austin School of Journalism and the Austin American Statesman both sponsored the first Journalism Hackathon, which was a success, especially for a first year event.

This was my first time organizing a hackathon – as part of a team including Robert Quigley and R.B. Brenner from the School of Journalism, and Christian McDonald and Andrew Chavez from the Statesman (they both also teach at the University of Texas in the School of Journalism as well). I’d like to thank Mashery, Microsoft, and Clarify for coming to the hackathon to show everyone what their technology does, and how it could apply to the changing world of journalism.

Many of the participants had never been to a hackathon before, and in fact were kind of intimidated – maybe the combination of “hacking” and “marathon” really doesn’t sound that friendly! From the beginning, we wanted to organize a friendly hackathon, where the focus was on learning something new, getting to know the other participants, and accomplishing something!

The highlight of the hackathon was the tour of the Statesman’s newspaper printing presses, led by Christian McDonald – the presses were busy churning out the next day’s paper. One of the most interesting facts we learned is that the Statesman prints many other newspapers as well – it’s just cheaper for these other papers to get rid of their printing presses, and run their paper copies off on the Statesman’s presses.

Using Javascript links with Turbolinks for Ruby on Rails 4.x

This was hard to find by Googling it, so I’ll put it into a blog post here. Turbolinks is a great page speed optimization technology that is built into Rails 4.

With Turbolinks, every page load simply replaces the HTML body tag with the contents of the next page, which means that your CSS and Javascript don’t have to be loaded again (even from cache) and then parsed.

Rails does some magic to your HTML links (basically by installing a jQuery event handler for opening links) so that this works. But what if you’re just using standard Javascript? For instance, I’m using Bootstrap Table for my admin interface, with rows of data. Clicking on a row will take me to that detail page. With, that forces a full refresh.

Instead, use Turbolinks.visit() with the URL you need to open, and your Rails 4 app will feel a lot quicker to your users.

Twilio Client PhoneGap plugin updated to support Twilio Client SDK 1.2 for Android and iOS

I just updated the Twilio Client for PhoneGap plugin: to support the latest version of Twilio’s client SDKs for both iOS and Android.

For those of you who wonder why you might need these, the native browsers for iOS and Android don’t support the technology used in the Twilio Client SDK for JavaScript, so if you want to build voice-enabled mobile applications, you will need to create native applications. You could develop these in Objective-C or Swift for iOS, or in Java for Android, or go with a cross-platform solution like Xamarin or Cordova/PhoneGap.

Cordova/PhoneGap lets you use HTML5/CSS/Javascript to build your mobile applications, and while it’s not the right choice for every application, it’s certainly one solution. The Twilio Plugin for PhoneGap lets you use the native Twilio Client SDK’s from JavaScript, with a syntax that is very close to the Twilio Client for JavaScript syntax.


App allows tourists to experience ‘12 Years a Slave’

Here’s a nice write-up from the Baton Rouge Advocate on an app for Android and iOS that I worked on with Frank Eakin and Justine Boyer. I did the software development for both apps, in Java and Objective-C.


App allows tourists to experience ‘12 Years a Slave’

The app officially launches at noon on Saturday, November 1, 2014 at the Louisiana Book Fair on the grounds of the State Capitol in Baton Rouge. Steve McQueen, the director of the movie “Twelve Years a Slave”, and Louis Gossett, Jr., actor and the narrator of the audiobook, are helping to kick off the app launch. On Sunday, November 2, 2014 Frank Eakin and the descendants of many of the characters in the book will take a tour of the app sites, followed by a celebration in Marksville, Louisiana.

I had a great time working on these apps, as they combined my love of history with a great design, great content, and a very interesting story. Many were introduced to the story of Solomon Northup through the movie, Twelve Years a Slave, and I hope they can now easily visit the historical sites associated with his story of being kidnapped as a free man in New York and brought to slavery in Louisiana.

Purchase the Twelve Years a Slave Tour Guide app for the iPhone and the Twelve Years a Slave Tour Guide app for Android.

HTML5 Video Autoplay on iOS Sample App

Link to my HTML5 Video Autoplay on iOS Sample App GitHub repo

As part of a current project building a large hybrid native/web iPad app, some issues came up regarding iOS 7 and 8 and HTML5 content in a UIWebView with an autoplaying video.

This is an area where Mobile Safari differs from the UIWebView that iOS developers can embed into their own apps. Mobile Safari doesn’t allow video to autoplay, ostensibly to protect users on cellular data plans from large data charges. As far as I can tell, its behavior doesn’t change if the device is on a wifi network, so there may be other reasons.

There are many StackOverflow issues about this, some of which appear to be outdated, so the easiest thing for me to do was to build a quick, simple app to test out HTML5 autoplay. The key setting to know is that you must change the UIWebView to allow media playback without user interaction – you can set this in the Storyboard, or you can set it via code:

self.webView.mediaPlaybackRequiresUserAction = NO;

You don’t need any kind of Javascript to let the HTML5 video autoplay – simply set the autoplay attribute on the video tag, and you’ll be able to run the video as soon as the HTML loads.