Printable templates for designing iPhone interfaces, in PDF form. The screens have 20-pixel grids, as well as guide lines for the status bar, nav bar, toolbar, tab bar, wet bar, and picker or keyboard.
1 phone/page
2 phones/page
6 phones/page
And it's not even your birthday.
Posted on January 30, 2009 7:17 PM | Permalink | Comments (1)
One minor annoyance about iPhone development, especially with someone already versed in Mac development, is that the classes are mostly the same, but every once in a while, there's a land-mine, pothole, or other surprise when what works for the Mac doesn't work the same for the iPhone.
Bindings have been a part of the MacOS since 10.3, and are a very useful and valuable feature. And they're missing on the iPhone. I've tried a few techniques to make up for the lack, but none of them are as elegant as I'd like. And then, in the shower, I came across a brilliant idea, involving a way to keep track. It'd involve making an NSObject subclass, and using +poseAsClass:, but it'd work!
It's now 4:30 am, and having the class not exactly work has led me to discover that not only has 10.5 depreciated +poseAsClass:, and has it missing from the 64-bit version, it's gone outright from the iPhone. And now I'm updating for no other reasons than to vent. Core Data and bindings have made me soft, but I like soft.
Posted on January 14, 2009 4:24 AM | Permalink | Comments (0)
There are a few words or phrases that rub me the wrong way. One is to 'go viral'. A virus is something that latches onto a host and uses the host. The results are for the benefit of the virus and not the host. In short, it implies to me that the general public, the host, will actively do something for a company, the virus, with little or no benefit to the hosting public. And it means that the average person will somehow be compelled to spend time, money, and effort to advertise or otherwise add more value to an item then he gets back out.
Who works this way? What mental model makes this possible? If our fictional user is selfish, they would only do what is necessary for themselves, and not bother with working or a company without pay. If our fictional user is caring and charitable, they would focus on charities and causes they care about, and working or a company without pay is not one of them. And in reality, it's not a case of being selfish, it's a case of being busy. I have a limited amount of time on my hands, and if something isn't for the good of myself, my friends and family, or the general good, well, someone else has to do it.
However, even if I had a time machine, I wouldn't be helping random companies owned by strangers. No, the first thing I'd do is to show off. I'd take a modern laptop, or iPhone, or even a gameboy, travel back to the 50s, or even seek out Babbage in 19th century London and go, "Look what I've got! In the future, we get cool stuff like this!" I would travel to the 70s and 80s, find a company with a supercomputer, and show off a handheld consumer device that crunches more numbers than their multimillion-dollar behemoths. And! And I'd inform them that future computing power is so cheap, we toss the CPU cycles away rendering Mario in realtime.
This is why I am fortunate to not have a time machine. I'd end up with a broken nose.
Posted on December 23, 2008 9:29 AM | Permalink | Comments (0)
I was at a meeting of various javascript developers. I do not know javascript enough to claim proficiency. I don't want to know javascript; my biases are for Objective C and the desktop environment. It's a long story as to why I was there in the first place, and I left early.
However, one thing stood out to me was one of the presentations, done by some Yahoo employees. In it, they are talking about the myriad of frameworks, collectively known as YUI, built for the site. And I don't mean to demean it, because it is impressive. And lets them do some fancy things with their front page, showing all sorts of news and information. But that's where they didn't get it.
In full disclosure, I know people who work at Yahoo, and I know people who work at Google. They're all great and brilliant people. I mean this only as an example, although it's one I feel Yahoo could learn from.
Posted on December 22, 2008 10:18 PM | Permalink | Comments (0)
The iPhone API is new. It has yet to mature. Yes, it does use a very mature 20-year-old foundation steeped in the NeXTSTEP heritage as its foundation, there's a lot that was removed or didn't make the translation from AppKit/Cocoa (The Mac OS X API) to UIKit/Cocoa Touch (The iPhone OS API). This even includes things like the tools, where Interface Builder is limited in what it can do for iPhone files as opposed to Mac files. It's a matter of time before things improve, and they are improving. But it's frustrating, despite there being very good reasons for it.
Sometimes it's simply a case of the code not being there, that iPhone controls resemble Mac controls in function and name, but are instead cousins, with a mismatch of abilities and feature support. Other times, it's classes and code that are outright missing because they have no use in the new OS. An obvious example would be Applescript. Sometimes, it's a case that code is depreciated on the MacOS, and rather than adding depreciated code, it's missing outright on the iPhone. Then there is the code that is in the private frameworks, undocumented but with names that provide more than just a hint that promises cool features and abilities that would solve things.
Because we can see them, on the other side of the fence, that makes them all the more tantalizing. Honestly, it's not even a fence, more a line in the sand, because none of the reasons to not use them are technical in nature. It's simply a case of Apple hanging a "Do not touch" sign on them. But it's best to respect this. This is part of the contract between the API and our code.
Continue reading "In Defense of the IPhone API Limitations; the Compatibility Contract" >>
Posted on November 14, 2008 12:57 PM | Permalink | Comments (0)
Continue reading "No maps of the forest, only pictures of trees" >>
Posted on September 25, 2008 12:57 PM | Permalink | Comments (0)
It's interesting, this iPhone rush. People that have never before touched a Mac suddenly are jumping into this fray because of the buzz of the iPhone. As a Cocoa developer, it's a wonderful feeling of "Our time has come!" For years, everyone focused on Java, or .Net. Because of Apple's decision to use only Cocoa or native app development, the vast majority of the industry is ill-prepared. It's as if Objective C was this ugly girl in school, the one who shows up at the reunion and her success has suddenly made her the center of attention.
I keep joking that someone should make an iPhone app that simulates a pan of water, so people can actually pan for gold with the iPhone.
Posted on September 11, 2008 12:56 PM | Permalink | Comments (0)
Posted on September 11, 2008 12:55 PM | Permalink | Comments (0)
This morning, while driving, the radio was playing. The station that was on not only had the paid advertising of pre-recorded clips, but also where the DJ will evangelize a product, in that they use it, etc. etc. I don't exactly consider it astroturfing because there is no attempt to hide that it's a paid product announcement. Instead, it harkens back to the older commercials, when whole shows were sponsored by one company. It's rather quaint in a way. Only, this time around, it was for the Microsoft Zune.
It's no secret that I ally myself with Apple and their products; I have several macs, an iPod, and am looking into making programs for the iPhone. So it's easy to write off that I would not be amenable to this specific product placement. Perhaps I was inserting my own biases in that the DJ sounded awkward, forcing themselves to hit all the right paid buzzwords, trying to turn the adjective "Social" into a noun. But regardless of how well or poorly the advertising went, one thing stuck in my mind. I couldn't recall any iPod advertisements on the radio.
Posted on May 20, 2008 12:41 PM | Permalink | Comments (0)
Posted on May 11, 2008 12:41 PM | Permalink | Comments (0)