If you haven’t heard about Stanford’s iPhone development course (coral), then I’m not sure where you’ve been. It’s certainly had enough publicity that it needs no more introduction from me, but I figure that I might as well lavish it with my praises too.
I may use this blog to post mainly iPhone or software related articles, but I am an electrical engineering student, and as an EE, I love me some good, clean hardware. Therefore, when my favorite pair of earbuds kicked the bucket the other day, my first thought went to the in-box iPhone headset and, more importantly, how much those earbuds suck. My favorite bang-for-the-buck earbuds EVER are Skullcandy Full Metal Jackets, primarily because I got them at TJ Maxx for $25. In general though, they have silicone pads that seal out sound, instead of the hyper uncomfortable iPod earbuds that fall out and sound like crap. I was super bummed when my FMJs broke, but luckily, the part that broke was on the plug end of the earphones. That is, both earbuds themselves still work fine, only the plug is dead. My thought was to cut the crappy iPhone buds off their cable (which includes a microphone and remote button) and graft on my beloved FMJs.
If you’re beginning to learn Objective-C like I am, things like this aren’t immediately obvious. I was trying to fool around with creating my own class, and I kept getting this warning
warning: no '-blah blah blah' method found along with an accompanying
warning: 'ClassName' may not respond to '-blah blah blah'
The really annoying part was that, despite these warnings, the code still worked just fine. Turns out, my issue was that I had this method in my class implementation (PolygonShape.m):
Cute puppy!My brother was just trying to embed a cute dog video in his tumblr blog yesterday but couldn’t figure out how to do it. The video was already in flash format, so it really isn’t too hard, but 99.99% of mere mortals have no idea that it’s easy. If you’re tech savvy, save yourself reading anymore and just go to any youtube video, copy the embed code, and replace the URLs with your own. Done. Otherwise, here’s how to do all that in just a few easy steps.
Ok, lame title, I admit it. That doesn’t change the annoyingness of the error though. Here’s the story: I sit down last night to watch the Oscars and get my feet wet developing for the first time in maybe a month or two. I go to debug an app on the device, you know, to see if I’ve still got it, and lo and behold a big hairy error pops up:
Here’s a goodie for all of you who don’t want to jailbreak your phone. Not that I know why you’d want that, and not that anyone like that reads this blog, but hey. it’s totally cool regardless. If you have an iPhone, and you use Twitter, you flat out owe it to yourself to try out TwitterFon (coral). First of all, it’s free. Better than that, it’s open source. Rock on! Second, it’s very well featured, even having a companion bookmarklet for Safari to send the current URL to a new tweet. It can post pictures to TwitPic, as well as update your current Twitter location with your coordinates. More impressive, however, is how it handles the basic functionalities of Twitter. In your main feed, you can click a post on an arrow appearing if it has links, getting a menu of those links (webpages viewable in-app, or you can click a button to open in Safari, # and @ links also clickable in-app). If you click a post on the body, you get a menu specific to that post – you can view the author’s feed/profile, retweet the post, mark it as favorite for later viewing, and so on.
6 days ago: “So Ustream just released their viewer application in time to live stream the innauguration tomorrow at 10AM. The problem is that it only works on a WIFI connection, I’ll assume for now because of ATT no-streaming-video-over-3g restrictions. If that’s possible, never fear, VoIPover3G to the rescue! The only hurdle is figuring out Ustream Player’s bundle identifier to feed to the hack. The whole process, including the less-than-trivial bundle identifier location, is detailed here.”
I know I promised a technical article on how to find arbitrary bundle identifiers, but the news moves fast, and I’m already behind the times on this one. There’s a new Copy/Paste mechanism out for the iPhone, hClipboard, but there’s way more to it than that, and a LOT of new possibilities come with it. Most people have been reporting on how cool hClipboard is, and it’s no lie that it’s super cool, but even cooler is the work that went into its backend. Over at networkpx (coral), KennyTM has been hard at work cracking the entire keyboard system of the iPhone WIDE open. Basically, the kingpin of the system is iKeyEx, which is a library based on mobilesubstrate to write new keyboards or keyboard extensions for the phone. It essentially allows developers to produce new keyboards that can be turned on and off in the normal keyboard settings of settings.app.
I was half asleep, but I had to wake up for this one. At long last, a REAL implementation of copy/paste on the iPhone. It works in every text field. It’s stupid that I’m actually saying this, you’d think copy and paste was a brand new invention, but I’m actually dumbfounded, wallowing in my own joy. It’s called “Clippy” (Yes, like the dreaded MS Office character) and it’s brought to us by iSpazio and Ryan Petrich. It’s jailbreak only, as all good things are, but here’s the procedure: Open Cydia, install “Clippy-Beta.” It couldn’t be easier. It’s somewhat buggy – for example, in sms, you can’t actually SEE what you’re copying/pasting, and the button to return to the main view doesn’t work properly (you have to aim for the bottom left, or the button press does’t work). And it gums up your number keypad. But for copy/paste, I’d do all sorts of things far less desirable than those.
This just changed the “Reasons to jailbreak your iPhone” column into “Reasons you’re dumb as bricks if you don’t jailbreak your iPhone.”
UPDATE 6:30am 1/20/09: Lets make a list of bugs, shall we? Add any you notice in the comments and I’ll include them. Here’s my list after the break: