Caboose is an app that loads notifications from the Boxcar service. It provides a reusable class for interacting with the Boxcar service for receiving push notifications. Currently it loads notifications for one account and dumps them to a Growl feed, but a full UI is planned.

Status:

In development.

 

A great app for viewing non-native video on the iPad.

 

This is hilariously effective. It scrapes a few online lyrics databases and does some analysis to determine the quality of a rhyme. Be sure to check the bottom of the whitepaper for some sample output. Direct PDF link.

  h2622412711.jpg
   Tags
 

For a little less than a year, I've been writing code built atop Twitter, specifically Matt Gemmell's MGTwitterEngine. I've got a few things running on this code, which I've not talked about publicly (other than minor hints on Twitter), but have been well-received by the few people who have seen it. Still, these projects have needed to extend both MGTwitterEngine and related libraries to add functionality or fix bugs. I'll spend this blog post documenting some of those changes across the different projects.

MGTwitterEngine

Most of these changes were made to make the engine's behavior a bit more extensible. Here's the GitHub repository.

  • MGTwitterEngineID is a typedef for unsigned long long values. Everywhere a user ID or tweet ID is returned, it will return one of these. You will want to check your existing Twitter code to make sure there are no potential Twitpocalypse-related problems, updating old data types to the new MGTwitterEngineID.
  • Subclasses of MGTwitterEngine can now override a new method, -_sendRequest:withRequestType:responseType:, if they want to use custom networking code (such as with an NSURLRequest queue class). I use this to implement both Twitter's password authentication and OAuth, and decide at runtime which to use.
  • Added a -connectionStarted: method to MGTwitterEngineDelegate, which can be used to update your UI.
  • Fixed a few bugs in the YAJL parser which crashed or parsed incorrectly.

Things I still need to do:

  • In my custom subclass of MGTwitterEngine, I use a class I wrote called TCDownload, which I'll talk about below. There are still a few references to it in my MGTwitterEngine class; those should be fairly straightforward to remove. Update: Thanks to Uli Kusterer, the dependency on TCDownload has been removed. The changes have been merged from his fork into mine.
  • Add full support for Twitter lists. I have some basic Twitter list functionality working in a private subclass, but far from all of it. There are some problems with the YAJL parser that don't appear easily fixable with the stock MGTwitterEngine (specifically, the API key for the list description is the same as the key for the user's bio, and these are overwriting each other internally). I'm going to look into replacing the manual parsers
  • Add full support for new-style retweets. Haven't started this yet.
  • Add support for geolocation in incoming and outgoing tweets. Haven't started this yet.

yajl

I've forked yajl to support 64-bit tweet IDs, mainly by changing the callback methods and the string parser from strtol to strtoull. Here is the GitHub repository.

SSCore

This is a repository of scattered classes which serve various purposes. There are two classes which are relevant for our discussion, TCDownload and TCOAuthDownload. You will need the TCDownload class if you use the vanilla MGTwitterEngine fork, although I'll be removing those dependencies. Here is the GitHub repository

  • TCDownload is a generic wrapper that encapsulates an HTTP request to the interwebs. It wraps NSURLRequest and NSURLConnection under the hood. It automatically queues request and gets callbacks on a background thread (although you can change either of these). I use it a few places inside my MGTwitterEngine fork, but removed most of those changes and put them in a subclass.
  • TCOAuthDownload is a subclass of TCDownload which accepts OAuth tokens and sends out requests with the correct headers. It relies on the OAuthConsumer framework, which I'll talk about below.

OAuthConsumer

This framework deals with OAuth. Twitter has officially announced that basic auth will be dead in June 2010, so getting on the OAuth bandwagon now is a good idea. Here's my fork of the OAuthConsumer framework on GitHub.

  • Changed the signature code to use Common Crypto instead of the C libraries' HMAC APIs. This seems to work more consistently on both Mac and iPhone.
  • Added a -parseHTTPKey:value: method which is used to parse extended attributes in OAuth access tokens. Twitter uses this to pass some special metadata, like the username of the logged-in user. Subclasses of OAToken can extend this to parse those tokens.

OAuthery

This isn't strictly a tool for doing Twitter development, but it can be handy when learning how to implement the OAuth login flow. I posted about it more back in January, and you can find the code and a prebuilt app over at GitHub.

Status:
 

Technical details of the upcoming Flash Player for Mac, wherein the Adobe team is switching to using Core Animation to do faster rendering of non-video Flash files. It's worth noting that the performance will only initially be seen in Safari on Mac OS X 10.6, as the plugin is fully Cocoa-ized now.

Also interesting to note is that Flash is still using the ancient QuickDraw APIs which have been deprecated for years.

 

iPhone had the first two store UIs; the iTunes Store for content like music and movies, and the App Store for software. The iPad will add a third, the iBookstore, for buying eBooks. These stores all provide content for users to extend the utility of their device. But each has a pretty different user interaction model for accessing, purchasing, and consuming that content.

  • The iTunes Store is a separate app that is completely distinct from the iPod app. When you find something to buy, prompting you for your iTunes account password. It then adds the purchase to the app's Downloads tab. Once you have purchased the content, you must then switch back to the iPod app to listen to or watch it.
  • The App Store is a separate app. When you purchase something, it prompts you for your iTunes password, and then exits to the home screen, switching to the screen where the app will live. The state of the download is reflected in the app icon. When the download is complete, you tap the icon on the home screen to use it.
  • The iBookstore (the one word is the official name as used by Apple) is not a separate app, but lives within the iBooks app on the iPad. Purchasing content prompts for the iTunes password and downloads in-app, which can be directly accessed after it has finished downloading.

Each type of content follows a different workflow when going from access to purchase to use. If a goal of the iPad's low price is to drive content sales through the three stores, as some speculate is the case, then the purchase model should be as streamlined for the different types of content. Forcing different workflows will only confuse users who can't remember which type of content comes from where.

 

We've all got our thoughts on what the Jesus Tablet will be, so here are my guesses. I fully expect to be completely wrong on all of this, as many of these answers are completely blind shots and that Apple will blow my expectations out of the water.

Hardware

  • 8"-10" touch screen, running at 1280x720
  • Very thin; less than 1/2" thick (the iPhone 3GS is 0.48" thick)
  • About 1lb heavy, light enough to hold in one hand
  • 8 hours of battery life
  • 32 or 64 GB SSD
  • WiFi
  • 3G over GSM, and Apple's US 3G partner will continue to be AT&T
  • There will be some way to pair your Tablet cell connection with your iPhone's cell connection; either with an official announcement of AT&T tethering, or by adding your Tablet to the 3G account
  • Front-mounted camera
  • Some kind of collapsible stand in the frame, so the device can sit on a table

Input/Output

  • Multi-touch on the display, exactly like the iPhone
  • Multi-touch on the back of the device, similar to the surface of the Magic Mouse
  • Photos and video via front-mounted camera
  • Audio via front-mounted microphone and speakers, wired headphones, or Bluetooth
  • Dock connector
  • Expanded voice recognition
  • Software keyboard, no Bluetooth keyboards available

Software

  • It will run the iPhone OS 4.0; or rather, the iPhone OS will become a "Mobile OS X", consisting of the heavyweight Tablet and the smaller iPhone.
  • It will allow multiple apps to run at the same time, with some UI for viewing multiple apps alongside each other. This may not be possible on the iPhone.
  • It meant to replace a full PC for most common day-to-day needs
  • iPhone applications will not run "automatically", but will need to be resubmitted through the App Store approval process. Most applications will run without much modifications. Icons will need to be higher resolution.
  • A system-wide Dock for documents, applications, and small widgets will be onscreen at all times
  • The home screen will be significantly revamped, and renamed to the Dashboard. App icons, web clippings, and widgets will be freely arrangeable.
  • Handwriting recognition will be available for text input, with an optional stylus, or with a gesture such as two closed fingers drawing as if you had a pen.
  • Some gestures will be used on the back of the device, such as scrolling and zooming.

Apps

  • Standard kind of iPod and Internet communications apps the iPhone OS comes with. iTunes video, iTunes LP content, Maps, and Safari web content will look phenomenal.
  • Sketchbook, an unlimited workspace to sketch and write notes, with collaboration features.
  • iWork, a full port of the iWork application suite, tied to the Internet (and expansion of the iWork.com web application), with collaboration features.
  • iChat, a port of the Mac app, with a heavy emphasis on video conferencing

SDK

  • The SDK will be available immediately, with a simulator.
  • There will be an emphasis on application interoperability.
  • Applications will be able to register plugins with view controllers and UTIs. When an application wants to expose an object (say, an image) to other apps, it will look for app plugins which respond to the "public.image" UTI, load one which matches the UTI, and present the view without leaving the application.
  • Applications will be able to expose services, similar to how they work on Mac OS X. Services will be integrated into the voice control system.

Product

  • 32 GB model will be available for $899
  • 64 GB model will be available for $999
  • Available in US in March, major countries by summer
  • There will not be a WiFi-only model at launch.

Other Predictions

  • Updated MacBook Pros and MacBook Airs, with the mobile Core i5 "Arrandale" processors from Intel.
  • There will be no mention of Verizon
  • There will be no updates to the iPod or the Apple TV
  • There will be no announcements of the iPhone 4G
 

"Luckily I speak l33t." This is painfully bad.

, ,    Tags
 

Open donations, so if you're a Redditor, give them a hand. Their goal is to make it to $314,159.26 in donations (100,000 * pi).

Page 3 of 29