The new Apple TV and it’s App Store has launched and my binary clock is there on day 0. C10CK is now a universal purchase on iOS and tvOS platforms; this makes it available on iPhone, iPad and now Apple TV. It looks pretty nice as a wall clock on a big TV.
I think it’s the first binary clock on Apple TV.
It’s been nice to share the excitement with other developers who have been preparing their apps for launch day. I’ve missed the launches of iOS (nee iPhone OS) and watchOS, so it’s nice to be ready for tvOS.
Looking forward to seeing where the platform goes.
It’s been a long time in the works. I’ve wanted to add modes to my binary clock app since the initial planning. Figuring out the interaction design for changing modes and setting the time while honoring the simple UI took some work. I’m not sure if I’ve got the mode switching quite right, but I’m really happy with being able to tap the bits directly to tinker with the time. It also becomes an additional learning aid when the bit labels are displayed; toggle the bits and check the value.
Maybe a demo is in order.
Stopwatch mode is simply the opposite; it counts up from zero. Much less interaction to deal with but still a nice addition to the clock. I’ve been using these additional modes for over a year and am really excited to get these released.
Fusion Tables is neat. Google describes it as ‘an experimental data visualization web application to gather, visualize, and share larger data tables’. Last year I tried out their API which was mostly based on sending SQL statements to create and manipulate tables. Recently, I looked at Fusion Tables again as part of an imminent upgrade to Mobile Logger. The API has been upgraded to “v1”, is now much more RESTful and enforces OAuth 2.0 authentication.
Once again, fired up Titanium Appcelerator to dig into the Mobile Logger source code. Every time I look at Appcerelator I’m reminded why I have opted to focus on Objective-C. Not going to get into a religious war…it just feels cumbersome. That could just as easily be attributed to my general unfamiliarity with the Titanium Studio and toolchain, since I’m otherwise using Xcode and Objective-C daily. Still, it’s much better now than when I first started Mobile Logger in 2009—using vim because Titanium did not have an IDE (or documentation, for that matter).
Back to Fusion Tables…it’s fairly easy to create a new table and import all the data from logs. Two authenticated calls: one to create the table and receive it’s ID, and another to use that ID with CSV data in a batch import. Once in Google Drive it’s trivial to map the data and play in various ways to chart the data. Nothing special, but here is a quick result from a walk in the park.
For now, I’ve only gotten a one way trip going. Haven’t tried to reconcile changes bidirectionally, or enabled updates to existing tables…but it seems like a promising start. Beta testing the next release of Mobile Logger now. Release likely just after the new year when iTunes Connect reopens. In the meantime, the code is up on github.
My second (personal) iPhone app, C10CK, is now available in the App Store. It is a clock which displays time using binary notation – the same way everything is (eventually) stored in a digital computer. I’ve been using a binary clock since a staff member of ITP passed this past year and several alumni recalled stories of the binary clock she kept on her desk and would happily explain to anyone who asked. I now keep a binary clock on my desk and think of her when people ask me what it is. Read the rest of this entry »
Update: New version built around a native Cocoa port of ShairPort, MacShairport: ShairPort-v0.2.1.zip)
Recently an open source emulator for AirPort Express / AirTunes was released by James Laird. I’ve been waiting for something like this for a long while to enable remote music playback on my media center from my laptop and iPhone. However, I lack the hardware skills to extract the necessary firmware from the AirPort Express ROM chip. Thanks to James for doing the work and putting out his perl script / c utility. It’s pretty simple to build and run, and the source includes a nice OS X launcher script, but I’m looking for a little GUI widget to easily control it lest someone ‘inadvertently’ decides to send audio to my computer.
I’ve been lately transitioning my iPhone-specific Cocoa knowledge to the desktop; this was a nice opportunity to wrap up the ShairPort scripts in an OS X menu bar widget. The source is available on Github, and you can get the bundled app below. This was made for my specific system, so YMMV.
For this year’s Philadelphia Fun-A-Day project I decided to write “Hello World” programs. “Hello World” is a traditional programming tradition where a programmer encountering a new language writes a trivial program which displays the phrase “Hello World”.
This introduces the programmer to the basic syntax of the language and demonstrates that their development environment is set up properly to work with that language.
Much of our current environment runs on software, which is generally invisible to us, except when a failure impacts our lives. However, software generally starts as human-readable written text, albeit in a highly defined form using specific vocabulary.
This project attempts to make software visible, in at least a trivial way. The words and structure may differ between languages, but each program is a series of instructions to achieve some end – here to issue a friendly “Hello Fun-A-Day 7!”. Hopefully this can serve to demystify software to some degree, and remind us that software, at some point, has been written by a person.
The programs here demonstrate a Fun-A-Day variant on Hello World in several languages. I made an effort to explore historical and modern languages, compiled and interpreted languages, console and graphical programs, but avoided esoteric languages which are often difficult to understand by design. Read the rest of this entry »
Update 2: Before using the script, ensure that you can build tesseract for your host system normally. Also, I only tested the script with the v3 release of tesseract, not svn HEAD. If you get build errors, please try with rev 498.
Update: The script has been updated, thanks mostly to the prompting of fopen2003 in the comments below. I’ve successfully tested the resulting libs in both Simulator and an iPhone 4 (both at iOS4.x) using the PocketOCR project.
After many requests, I finally got around to looking into updating the build script to cross-compile tesseract ocr v3 for use with iPhone. Here’s the script. It seems to build the static, fat library without error. I haven’t tried to update my app to use it yet, so I really don’t know if it even works. Let me know in the comments if it actually does indeed work.
Check out the svn source of tesseract: http://code.google.com/p/tesseract-ocr/source/checkout
Copy this script into the source directory and run from there
I’ve been working sporadically on the app, trying to get the next release out the door.
Currently, the last feature holding up release is the post log upload…there are intermittent timeouts occurring and I’d like to determine if there is a lightweight way to mitigate them.
This upcoming release will likely change the “real-time” uploading to opt-in. There are two primary reasons: conserve significant battery life and to alleviate the server load from new data.
The battery savings are great…I’ve gone from close to 20% to less than 10% use over a 35 minute ride.
I’m getting low on space on the server, with about 550 hours of data logged – which is awesome – thanks to everyone who has shared their log data. However, I haven’t yet had an opportunity to visualize it and am feeling a bit overwhelmed by it. Hopefully this will throttle that a bit.
Got two new features rolled into Mobile Logger at once…raw database export and zip compression. This sounds exciting, right?!
Actually, it’s pretty cool and useful. Some of these new export formats (GC and GPX, I’m looking at you) are XML-based and thus quite verbose. What was a manageably small CSV file or JSON string has become inflated much larger from all the tagging in these formats. Exporting a log in one of these formats means having send a doubly large file (approx. 300kB -> 600kB). However, all the repeated tags makes them great candidates for zip compression. Those logs are about 70kB afterwards. So there’s that. Read the rest of this entry »