created 18 September 2009 in links tagged development, iphone and mikeash.
I’m a Mac developer, so ultimately I compare iPhone development to Mac development. Comparisons to other phones are interesting from an abstract point of view but ultimately make no difference to me. The question is not, “Which phone shall I develop for?” It’s, “Shall I develop for a phone at all?” Answer: no
I understand and agree with the argument, but me, I want to develop for mobile. I like the mobile platform. I just still can’t decide if I want to throw in with Android or stay in the nice fuzzy world of the iPhone.
http://www.mikeash.com/?page=pyblog/the-iphone-developmen...
created 17 September 2009 in notes tagged android and iphone.
After my previous ranting about Android on the G1, I feel I should write something optimistic about it. I’ve need using it on and off for a bit now, though I haven’t (yet) managed to switch to it full-time, as it doesn’t have an Instapaper client and I’ve become rather attached to Instapaper recently. I’m musing just sitting down and writing one at this point. Nevertheless:
I didn’t initially care about the ability to run background applications, though lots of people were very enthusiastic about it, but this turns out to be billing the feature badly. ‘Background’ isn’t really the point. Perhaps ‘still there’ is a better way of putting it. It’s not that apps can perform actions in the background that is useful, instead it’s that they haven’t had to quit just because I’m doing something else.
For instance, the Activity metaphor is one thing I’m very fond of. It’s a stack, with activities being dropped on the top when you choose something to do. If my twitter client wants to open a web page, it just drops the system web browser activity on the top of the stack, with that page in it. If I navigate around, the hardware ‘back’ button will go back in the browser history to the first page, then it’ll pop the browser off the stack and go back to the still-running twitter client. This is awesome - you don’t have to embed an entire web browser into every single app that might want to open a web page without quitting. And of course the web browser example is just a minor one - apps can call other interesting apps - I could hypothetically open my twitter client’s ‘compose’ activity directly from a blogging application to twitter about it, then pop it off and return to my blogging app, which was still running. More practically, I can open locations in the Google Maps application without losing my place.
Secondly, having my most common apps already open all the time eventually makes the G1 feel almost faster than the iPhone. I still feel enormously constrained by the speed of the device, especially with respect to the keyboard. It’s slow, and there’s no getting round this fact. But switching contexts feels lots faster than on the iPhone sometimes, as it’s a matter of ‘hold home, tap the app I want, and I’m there’, compared to the slick zooming-to-home-screen animation of the iphone, followed by lengthy app startup every time. Sometimes the iPhone animations start feeling like intentional delays put in to distract you from the fact that it’s not ready to show you the thing you’re zooming to yet. Just sayin’.
Finally, we have Spotify. This is where background apps running properly in the background actually matter in the traditional sense. I can listen to my music and do something else at the same time. The iPhone version of the app is lovely, as I said, but also totally useless, as I quite like using my iPhone to read things, check mail, other internetty things, and I also like to listen to music while doing this.
Finding some nice software has helped the Android experience a little.
Annoyingly, as I have (access to) a G1 dev phone, I can’t pay money for software. In fact, I can’t even see software on the Marketplace if it costs money (or is otherwise marked as ‘copy protected’). This means that there’s a stack of supposedly-useful stuff I can’t try. Most Android users I’ve talked to strongly recommend Better Keyboard as an alternative to the built-in keyboard, but that’s not an option for me. A pity.
So, I’m aware that I presented a review of ‘Android running on the G1’ as a list of problems with Android. As I said in one of the comments later,
What I’m actually doing is comparing the 2 pieces of hardware I actually have sitting in front of me and that I can put a SIM card into. I know the Hero is better than this. I know there are things in the pipeline that will probably blow the iPhone away, when they actually arrive. But none of them are here, so I can’t play with them.
There are comments elsewhere complaining that I’m holding the shortcomings of the G1 hardware responsible for Android’s speed or unfriendliness. This is, of course, true. And I don’t consider it relevant. It’s a single thing to me. I know how it works, and where I could draw pretty arbitrary lines between ‘hardware’ and ‘software’, but I really don’t think that it matters.
This is still the case - I’ve been unable to see a Hero running anything other than a looped demo video, though I have managed to grope the hardware and I like it. I’ve very tempted. But my SIM card is still in the iPhone.
created 07 September 2009 in sets tagged android, iphone and spotify.
Some screenshots of the Spotify mobile app, both iPhone and Android versions.
Photos from this flickr set.
created 07 September 2009 in notes tagged android, iphone and spotify.
Hurrah, Spotify for the iPhone/Android is released. This makes me very happy. Especially nice is the simultaneous release of the app on both iPhone and Android - I can’t think of anyone else who’s done this, and for good reason - it’s REALLY HARD. So props to them for that.
Random first thoughts:
So far, I think it’s great. I’d like ‘run in background’ support, of course, and I’d like it to use the double-press-home play/pause controls so that I don’t have to unlock the screen to control it, and I’d like it to use all manner of other forbidden Apple APIs that they’re not allowed to use. None of this is Spotify’s fault.
I’ve also now tried the Android version:
I’d be very happy using either of these apps in the wild, I think.
I have a small collection of screenshots here.
created 28 August 2009 in links tagged iphone and marco.
There are plenty of technological markets in which there has never been a dominant open player or option, such as game consoles, non-“smart” mobile phones, and nearly every type of enterprise software, but the markets still thrive and very few people complain about the lack of openness
created 31 July 2009 in links tagged apple, hate and iphone.
stevenf, unlike me, is prepared to take the pain of using something that isn’t the iPhone, simply because of the situation with the store.
after an entire year of continuous bad decisions that are hostile to developers and consumers alike, we’ve moved on from “working out the kinks” to good old-fashioned getting fucked
He’s moving to the Palm Pre. That’s not even an option in the UK yet, and even once they appear, I won’t be able to get an unlocked one.
Here’s a thought - none of the angry screeds I’m reading are because someone wants background apps, or a hardware keyboard, or any of the stuff that people seem to think we’re missing. They’re angry at the store.
http://stevenf.tumblr.com/post/152606616/important-note-r...
created 29 July 2009 in notes tagged android, apple, hate, iphone and phone.
I don’t have a personal beef against Apple or the iPhone - I’ve never wanted to tether my computer to my phone, I can’t get a Google Voice account (Google maintain an air of smug US-centricity sometimes that Apple can’t match), and I’ve never tried to ship an app with an open webkit in it. But the reflected rage about the whole thing has me all annoyed/uncomfortable/fearful in advance.
So I’m casting around for replacements. And basically, this means Android, as it seems to suck less than everything else. Indeed, if the iPhone didn’t exist, Android phones would be easily the best phones out there for me. Maybe the Pre/WebOS would be better. But it’s not available in the UK yet, so it’s pretty much moot.
I’m trying to like Android.
I have to write down why Android annoys me. I’d really like a go at using a Hero (I’m using a G1 dev phone running cupcake here) before committing, so this is a random set of half-formed thoughts.
It’s slow. Again, probably the hardware. But the G1 is slow compared to the iPhone (original and 3G, let alone the 3GS).
I can’t listen to music on it. It won’t sync with iTunes (solvable), it doesn’t have a headphone socket (solvable), the music app is lousy (probably solvable), and I only have a 2 gig micro-SD card, so it doesn’t all fit (solvable). All solvable, all annoying.
Many fewer apps. The store is smaller, and the apps that are on it tend to be worse than the ones on the Apple store. It’s hard to find reviews of them. They don’t come with screen shots. There are already some apps that require cupcake, some that don’t work on cupcake, some that just crash on startup, etc.
The browser just isn’t up to the standard of the iPhone’s. The Mail app is awful. The web browser seems to sometimes open new windows, and sometimes reuse existing windows when following links.
The on-screen keyboard is sluggish. This is the same speed problem as above, but whereas elsewhere it’s mostly just cosmetic annoyance, here it’s causing me serious difficulty - lots of typing errors unless I slow right down.
I’m trying to port Flame to it - Flame is my normal ‘just real enough that you have to learn the platform’ app that I port to new things I’m playing with. But the emulator behaves differently from the real device, I’m not confident that any other real device running Android would behave the same, so I’d have to test everywhere. And anyway, the device seems to have a major bug around multicast that makes Flame impossible.
Any one of these I could deal with no problem. Probably more. It’s just the combination of all of them that wears you down. And then there’s all the standard little things that come with being a citizen of a second-class platform.
A tiny example - diveintomark.org has an iphone-optimized mobile view - I believe it’s a wordpress standard, I might have seen it in a few places. But he serves the normal page to the android web browser. It’s not a big deal, but a thousand things like that is like using linux in a world of windows people again. No-one bothers with the little stuff. Stuff works on the iPhone because everyone tests on the iPhone. It would work on Android if anyone bothered.
Linux vs Windows/MacOS, all over again. You gain Freedom by using an open platform, making life worse for yourself in a thousand tiny ways, any one of which can easily be dismissed, so they are. But it’s still worse.
created 24 July 2009 in links tagged development, iphone and mono.
the agreement to become an iPhone developer requires that the developer do not use any scripting engines or JIT technologies.
To satisfy these technical and legal requirements, MonoTouch is delivered as a static compiler that turns .NET executables and libraries into native applications. There is no JIT or interpreter shipped with your application, only native code.
created 22 July 2009 in photos tagged flame, iphone and screenshot.
Flame for iPhone proceeds apace. I’m onto the edge-cases and error conditions at this point. Might even get it released soon…
created 08 July 2009 in links tagged iphone, javascript, jquery and mobile.
File under ‘things to look at in my week off’, it’s another IUI-like library for doing iPhone web applications
created 25 June 2009 in stream tagged iphone.
created 19 June 2009 in stream tagged iphone.
created 17 June 2009 in links tagged compression, iphone and o2.
O2 have an image-compressing transproxy on their 3G connections. I don’t actually care about this. But it’s nice to know how I might turn it off anyway.
http://www.edandersen.com/2008/07/13/iphone-o2-fix-the-im...
created 16 June 2009 in photos tagged iphone and moosticker.
It seemed artistically appropriate. Or just sufficiently Wrong. One of those.
created 05 June 2009 in notes tagged games, iphone and peggle.
I like Peggle for the iPhone. A lot of it is that it’s a fun game. But it’s also a genuinely nice iPhone port of the thing. It’s a landscape game, but works both ways round, and flips sides properly. It has background music, but if you’re playing music off the phone already then it’ll start up with only sound effects, without asking you anything. It uses touch very nicely, as a direct ‘aim here’ interaction (backed up with a fine-tuning control) but double tapping anywhere will zoom in on that spot as you’d expect on the iPhone. And it flawlessly resumes from exactly where I last left it every time I start it up, so I’m not worried about leaving a half-finished game when the train gets to my stop.
Also, unicorns!
created 12 May 2009 in links tagged development, game and iphone.
Nice presentation on building simple game boards using CALayer and draw delegates, so you can use Core Animation and other high-level libraries to move things around. Doubt it would be useful for writing Quake, but that’s not really me anyway.
created 12 May 2009 in links tagged deveopment, games and iphone.
GeekGameBoard is a small Objective-C framework for implementing the user interface of a board or card game. Many games can be implemented in less than 150 lines of code. For my future reference - this blog entry is 12 months old, presumably the iPhone version of this might be finished now.
http://mooseyard.com/Jens/2008/03/geekgameboard-getting-c...
created 12 April 2009 in links tagged game and iphone.
Utterly sublime little iPhone game where you land planes. Cheap, and uses the touch screen of the iPhone perfectly. Also, no irritating tilt gimmicks, which annoy me.
http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSof...
created 06 April 2009 in stream tagged iphone.
created 24 March 2009 in links tagged development, iphone and three20.
one by one I’ve been redesigning and refactoring each of the components I wanted to open source, adding them to a new Xcode static library project, and then reintegrating them with the Facebook app. I just finished doing that a few days ago, and now I’m ready to start sharing the results A stack of very nice components. I’m especially interested in TTImageView, which does something that appears trivial, but that is actually annoyingly hard.
created 26 February 2009 in links tagged development, iphone and xcode.
Nice trick for de-hard-coding the developer name in the iPhone app signing process, so you can check in code that’ll build on any developer’s machine.
created 13 February 2009 in stream tagged iphone.
created 12 February 2009 in stream tagged battery life, google, iphone and sync.
created 09 February 2009 in links tagged contacts, google, iphone and sync.
What you’re seeing is artifacts of the “Preserve Address Book data” setting. Well-behaved applications shouldn’t show these characters (they’re invisible Unicode characters) but many do. Presumably the source of my contacts sync noise
http://groups.google.com/group/spanningsync/browse_thread...
created 09 February 2009 in photos tagged contacts, finsburypark, google, iphone, mobile, sync and unitedkingdom and is geotagged
Google Contact sync (http://www.google.com/mobile/default/sync.html) made my contacts ugly. (Since fixed. Spanning sync problem, documented here, and the fix works perfectly)
created 03 February 2009 in links tagged cache, development, iphone, offline, safari and web.
As of firmware 2.2, Safari can cache files for a web application on the device. Combined with the webkit HTML 5 local data store, there’s probably scope for writing entire applications that will keep working without a network connection.
https://developer.apple.com/webapps/docs/documentation/Ap...
created 27 January 2009 in stream tagged crack, curses and iphone.
created 15 December 2008 in links tagged games, iphone, junk and katamari.
This, on the other hand is junk. Sluggish right off the bat from the beginning of the first level, and gets worse as the Katamari gets bigger. The controls are weird as well - unlike Super Monkey Ball where the tilting actually affects gravity, here tilting left/right turns left and right. Slowly.
Again, a gratuitous DS comparison - just about everything on the DS that tries to do ‘real’ 3D stinks. The screen is too small and the controls too limited for it. The iPhone gets away with more, but I still much prefer a well-executed bit of 2D to this ‘depth’ thing everyone is doing.
http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSof...
created 15 December 2008 in links tagged free, games, iphone, rez and touch.
It’s a tech demo in terms of length and content. But this tiny thing is a beautifully execyuted side-scrolling shooter, and certainly the closest thing to Rez I’ve seen on the iPhone so far. It’s also a really nice use of the touch screen - sweep a finger over the enemies to target, release to fire - whereas most apps I see are tending to treat the touch as merely a way of faking traditional controls. No! Look at Zelda on the DS for how touch should work. It’s also free. Go play it.
http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSof...
created 02 December 2008 in notes tagged browser, development, flame, iphone, network, release and software.
I’ve been playing with iPhone development recently, and have ported Flame to it. Well, re-implemented, really - Flame is written in Python and there’s no PyObjC for the iPhone, and nor is there likely to ever be. But Objective-C is getting easier as I get practice, and this app even has a modicum of proper memory management.
This time, the source lives in GitHub/jerakeen as git seems like the cool kid this week and I need the practice. I’d expect it to build and run in the simulator just fine, and it runs on my device, so it’ll run on yours if you know the magic hoops to jump through. It’s possible that this app might actually make it to the App Store at some point, though it’s somewhat niche.. You never know.
Let me know if you have ideas for improvements. For a start, I’d like certain services to be linkable - HTTP servers should open their web page in Mobile Safari if clicked, for instance.
created 02 December 2008 in code tagged flame and iphone.
Flame is a browser for Bonjour (also known as ZeroConf) network services. It lists the services advertised on your wireless network and you can browse them by server or by service type. When selecting a service, its advertised details are displayed.
If an application on your iPhone or iPod touch can handle any of the advertised services, a command to open it right away is provided.
created 24 November 2008 in notes tagged apple, cheating, defaultpng, iphone and startup.
Trivial. But interesting to me - Addressbook.app no longer cheats with it’s startup image - it now uses a static default.png like everyone else. It also seems a lot readier to quit when you run something else, whereas it used to stay resident. This makes me happy. It starts very quickly, and it’s nice to pretend there’s a level playing field.
Notes and Maps still cheat with their startup images, though.
created 21 November 2008 in notes tagged iphone, podcast and video.
The iPhone iPod ‘podcast’ section used to list video podcasts, but only played their audio tracks, which was odd. Now (as of the 2.2 firmware) it’ll play video podcasts as well, which is nice. For a start, I can take the ‘video’ button off the tab bar at the bottom and free up a slot for something more important.
Weirdly, it’ll play the video in portrait mode (as well as landscape mode), whereas the video section of the application will still only play them in landscape mode.
created 18 November 2008 in links tagged development, iphone and maps.
Another slippymaps widget for the iPhone. I like the way that I’m starting to see an ecosystem of advice and spare parts arriving, finally.
created 18 November 2008 in links tagged development, iphone, maps and openstreetmap.
An iPhone widget that implements the google-maps-style slippymaps in an embeddable way. Nifty.
created 07 November 2008 in stream tagged 3g network, audience, iphone and iphones.
created 07 November 2008 in stream tagged apple iphone, deb and iphone.
created 06 November 2008 in notes tagged development, html5, iphone and webpage.
Startlingly, the webkit-based browser on the iPhone supports the HTML 5 client-side storage standard. Alas, you can’t write properly off-line apps because there’s no local HTML/file cache on the phone you can keep files in. You could use the bookmarklet trick I suppose, but I don’t like that one - it’s nasty, and makes development annoying - you have to keep re-syncing things, it’s not terribly easy to upgrade, etc.
I do, however, want to write local apps in a language that’s a little higher-level than Objective-C. It’s nice and all, but I prefer things to be more flexible. The iPhone SDK agreement means that I can’t write my code in a high-level language and ship an interpreter, alas - no iPhone pyobjc for me. But (and this is speculative, I’m not a lawyer, etc etc) as I read the iPhone SDK user agreement, I think you could probably write a pure HTML/JavaScript application, using the webkit local storage engine, and run it in an embedded webkit view as a local iPhone application.
3.3.2. [..] No interpreted code may be downloaded and used in an Application except for code that is interpreted and run by Apple’s Published APIs and built-in interpreter(s).
(emphasis mine)
This means I can have a shippable application, with local storage, but with large bits of logic written in JavaScript. I may even be able to intercept requests for urls and call API functions from Objective-C space, so I can expose location data to the application, for instance.
There are obviously huge disadvantages to writing an app in HTML, but I’d like to try it if only as both a rapid prototying environment for local apps, and a way of giving apps that are already HTML-based some local storage and the ability to be run when away from network.
Unfortunately, I feel that I can see where this could get taken. The spirit of the SDK agreement is clearly that Apple don’t want any way of distributing applications except through the App Store. This exception is in the SDK only because you can’t have an embeddable web browser widget without saying ‘stuff the web browser does is ok’. But if this loophole actually is a loophole, I don’t see what stops me writing a front-end that can download more HTML into the local storage area.
Well, no, actually, I see
3.3.3 Without Apple’s prior written approval, an Application may not provide, unlock or enable additional features or functionality through distribution mechanisms other than the App Store.
..which might cover that one. Maybe I’ll write something like this as an experiment anyway.
Here’s another thought. If I can intercept requests and call Objective-C functions, why do I need the HTML-displaying part of this at all? How introspectable is Obj-C anyway, and can I ship an Objective-JavaScript bridge in my app?
created 27 October 2008 in stream tagged apple iphone, developers, iphone and london and is geotagged
I will be attending Unofficial iPhone TechTalk after-drinks on Friday November 07
created 14 October 2008 in notes tagged byline, iphone, release and software.
There’s been a new release of Byline, my favourite iPhone app, and it’s great. It syncs my folders, so I no longer get swamped when my economist feed grows 90 items, and I can add notes from the phone, which is not something I had realised I needed till I got it. I haven’t used the new version in anger yet, but it’s making me happy already.
Apart from the look. What’s with this faux-wood effect? Ewwww.
It also no longer shells out to Safari to read news items when I tap on an URL. This seems wrong, but because the iPhone won’t multi-task, it saves me app-switching time. I’m torn on this one - while I think that web browsing should be done by the system web browser, it’s so easy to embed a web view that’s just as good as Safari that I’m not losing out on anything here. I can’t bookmark things, I guess. But I can open the page in Safari from Byline if I want to do that. So I guess ‘embedded web browser’ wins on convenience over abstract theoretical goodness. Just like the iPhone itself.
http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSof...
created 04 October 2008 in notes tagged apple, cheating, contacts, iphone, map and start.
Apps on the iPhone can ship a ‘default.png’ in their bundle. When you start the app, it’ll first show this image, then load the rest of the app. The idea is, you can ship a picture of the start state of your app, and it’ll appear to have started very quickly. This is why some apps are unresponsive just after they start - they’re not actually started, you’re just looking at a picture. Other apps misuse this feature to display a splash screen. Urgh, splash screens.
Anyway, I digress. I have noticed that both the Contacts and Maps applications can change their default.png files. On start they both show you the state of the application as it was when you last saw it, rather than a simple default start image (most apps that I’ve seen ship an image of their basic layout, with the content removed, so it looks like the content loads a second after the app).
This is easiest to see in the Maps application. Search for a business, then touch the blue chevron to see details of that business. Quit Maps back to the home screen, and run something else (unlike 3rd party apps, Maps will stay running till forced out by some other app). Run Maps again. It will start up with the same view, but be briefly unresponsive till the app proper has started up. You may see the small map in the top-left redraw.
It’s a lot harder to get Contacts.app to do this, but the effects are far more obvious. The best way is to change the contents of your address list without using the application - sync in a new contact, or remove a contact. The first time you run the app, you’ll see the old list for a moment, then the new list. I first noticed this when I synced my iPod touch to another computer, changing all the contacts. Running address book showed me the old list of contacts for a second, then switched completely to the new list.
3rd party apps can’t do this - altering bundle files will change the app, and break the signing. Another thing that Apple apps can do and 3rd party apps can’t (though not all Apple apps to it. The Clock app is a perfect example of how I’d expect apps to start up). It’s subtle, but it means that Apple apps will appear to start faster, and record state better, than my apps. It a level playing field too much to ask for?
Update, 13th October: I was rude about splash screens. Craig points out that he doesn’t have anything better he could possibly display at startup. Anything that looks like the app running will just feel like an unresponsive start state, and will be wrong anyway. A blank screen is just entirely wrong. Splash screens might be the best of a bad lot.
created 01 October 2008 in links tagged apple, development, iphone and nda.
the NDA, tis gone. Yay happy face. But only for ‘released’ software. Less happy face. Wait, what does that even mean? Released Apple software (firmware versions)? My software? I can only join the mailing lists after I ship an app?
created 16 September 2008 in stream tagged battery life and iphone.
created 13 September 2008 in stream tagged geniuses, iphone and mute switch.
created 09 September 2008 in photos tagged iphone, new, screenshot and shozu.
The stars mean ‘something new in here’. I like.
created 09 September 2008 in photos tagged iphone, screenshot and settings.
It seems that more and more apps are putting their settings in the settings app. Yay.
created 08 September 2008 in notes tagged apps, bugs, byline, fixes and iphone.
After my raving earlier I felt I should mention the new release of Byline for the iPhone. Amongst the release notes are:
Fixing the 2 most annoying things about it. Yay! On the other hand, Byline is a great way of blowing through terrifying amounts of bandwidth while on holiday. Oops.
update 14th october: they moved my screenshot link. Serves me right for deep-linking other people’s images. And they’ve changed the look-and-feel in version 2.0. Curses.
created 03 September 2008 in stream tagged byline, iphone and mute switch.
created 18 August 2008 in notes tagged apple, byline, iphone, offline, rss, software, twitter and twitterrific.
I should write up ‘things learned from taking only an iPhone to the middle of nowhere where there’s no internet access‘. One of those things was, I really want a ‘that worked’ for updating my twitter status using Twitterrific. And anything else that does a write over the network.
If a read operation fails, meh. But if I just wrote a twitter update, and it doesn’t go through, I want to know. Twitter might fail, the app might fail, the connection might fail. I want success notification, rather than 1 minute of waiting for a failure message that might not arrive. THIS IS NOT A NORMAL SITUATION. But nevertheless. Maybe the rule should be ‘avoid notifying users of success where success is expected‘.
Another useful app - Byline is great when there’s wobbly bandwidth - usable even when the only connection is a spotty non-edge GSM link. Admittedly, you have to just put the phone down somewhere with a connection for 10 minutes while it slurps. But things stay slurped. It’ll pull the associated images of RSS items too, so I can look at my Flickr feeds easily.
It’s got disadvantages - you have to switch to Google Reader to read your feeds for a start. In the absence of a local Mac GUI client to rival NetNewsWire, this is painful (Fluid helps). And Byline doesn’t do ‘folders’ (tags? what does google reader call them? I’m new to this), so you just get a big flat list of unread items, which could be annoying if you subscribe to lots of feeds. I’ve recently gone through a grand purge of all my feeds and mailing lists, so my traffic levels are pretty controllable.
Except that my Economist subscription feeds did their weekly ‘the magazine shipped’ thing, and dumped 90 unread items in the list. And these are unread items that are interesting and might need reading. Unlike with the iPhone NNW client, I can’t selectively drop subscriptions from being visible on the phone - it’s all or nothing here, and Byline loads only 25 (I think) entries at a time for off-line reading. The Economist provides only a partial feed, so I had to sit where there was bandwidth and go through them in batches, ‘starring’ the ones that looked interesting then hitting ‘fetch more’ and waiting. Once I’d done this, and it didn’t take too long, the experience was great - I had the full content of the Economist articles synched locally for convenient reading (and the Economist has a nice one-narrow-column layout that lends itself well to iPhone reading).
created 07 August 2008 in links tagged apple, beta, distribution and iphone.
Simple (ish) guide to distributing ad-hoc iPhone applications.
created 05 August 2008 in notes tagged apple, iphone, store and updates.
Is it just me, or are the updates offered by the iTunes store completely crazy? Every day I get a new crazy random set of the same apps, often with multiple updates offered for each of them. The app store application on the phone tends to offer different updates. I still can’t see release notes in iTunes, though I see them on the phone. Gah.
created 05 August 2008 in notes tagged apple, fonts, iphone and notes.
A curiosity of the notes application - it’s got a really ugly font. But it can be forced into a less ugly one on a per-note basis using an international keyboard. I assume the Market Felt font isn’t Unicode-complete, because if you insert a single (for example) Korean character into the note it’ll change its font to something more sensible that includes that glyph. And it won’t change it back if you remove the character.
This isn’t exactly convenient, and isn’t a system-wide setting. But I only have one or two notes on the phone, and I’m not willing to jailbreak it just to change the font. So I like my workaround.
created 01 August 2008 in notes tagged apple, caldav, calendar, iphone and sync.
Even if my main calendar is a synced CALDAV calendar, I can’t put things into it from the iPhone. Creating new calendar entries creates a new calendar on the local machine on the next sync, with the entry in it. To make things worse, this new calendar isn’t synced by default, so the entry disappears from the phone, where I added it. So the feature is useless to me - I like being able to create calendar entries on the phone.
created 29 July 2008 in notes tagged apple, interface and iphone.
On the iPhone home screen:
There’s a trick to replacing the 4 persistent apps in the Dock at the bottom: you cannot drag into the Dock to bump them out of the way; instead you must drag something out of the Dock to make room first, and then you can drag an app into the free space
..in comparison to the black ‘tab bar’ navigation widgets with the ‘edit’ mode buttons, which you can’t drag icons out of, but dropping new icons on overwrites whatever you dropped them on. Yay consistency.
http://www.extrapepperoni.com/2008/07/11/iphone-apps-firs...
created 22 July 2008 in notes tagged iphone, security and wordpress.
There’s a dedicated iPhone app for Wordpress blogs now. Except that it doesn’t work out the box. I’m very impressed otherwise, though. As mentioned by @mattb, it’s a pity that it doesn’t let you moderate comments as well. But the ease with which I can take a photo and get it onto a wordpress blog is impressive.
created 22 July 2008 in notes tagged iphone and itunes.
Suddenly, the iTunes Application store is awash with updates for all my apps. The App Store application on the phone is also reporting updates. For different apps. The App Store application on the phone shows me release notes. The iTunes version doesn’t seem to have any way of seeing release notes. The iTunes version keeps complaining that I’ve bought this app already when downloading updates. And the interface keeps displaying messages about ‘purchasing..’ which makes me worry that I’m spending money. And the screen shot above isn’t exactly reassuring.
And now I’ve downloaded all these ‘updates’, I still have the same version numbers of everything on the phone. All the app bundles are the same size. I’ve downloaded the exact same apps again, except that now iTunes isn’t prompting me to download updates any more.
Using the iPhone-based app store actually updates the app. Except that far fewer apps are listed in the iPhone app store than are listed in iTunes.
So, yes. Feels slightly rushed, this.
created 19 July 2008 in notes tagged interface and iphone.
The iPhone has introduced a positively bewildering array of touch-based gestures we now have to learn, and apply in the right places. So far I’ve seen:
Chris Heathcote tells me that there is also drag-and-tap - when dragging between two home screens, a tap during the drag will stop it. Not sure if this is an interface or a bug, personally..
created 19 July 2008 in notes tagged annoying, iphone and security.
I tried Twittervision on the iPhone. And it’s quite pretty, in a hypnotic way. So I gave it my twitter username/password, to try it as a twittering interface. And it’s lousy. But ok, I have a twittering interface. I delete the app.
Today, I see a tweet from @davetroy. Who? I don’t know him. Turns out that he wrote Twittervision. And now I’m following him. Which means that (a) his app must have followed him on my behalf, because I didn’t do it, and (b) he can now see all my private tweets (because my twitterstream isn’t public).
Well, fuck you, Mr Dave Troy.
created 14 July 2008 in notes tagged iphone, location and photos.
The new iPhone firmware geolocates all the photos you take. It asks your permission first, but not in a very good way - it’ll say something like ‘This app would like access to your location’. Say yes, and you’re putting your exact position into every photo you take. Put an incidental photo on flickr and everyone knows where you were and when (because there’s a timestamp in the upload as well). Sell something on eBay, using a photo you took in your house, and now everyone knows where you live.
Is this not a little creepy?
(True, Flickr don’t import geotagging information by default. But I can still get the EXIF tags from the original image if you allow me access to that)
Oh, also, an argument from the exact opposite direction. The camera app gives no indication of if it knows where you are, and how close, so if you want a geolocated photo, you never know if you’ve got a fix yet and it’s safe to take one. The camera roll doesn’t indicate which photos are geotagged. You can’t look at a photo on the iPhone (or in iPhoto for that matter) and see where you were when you took it. So to a normal user, the feature is totally unexposed, and to a power user, it’s totally unusable.
This geotagging feature is completely half-arsed.
created 14 July 2008 in notes tagged iphone and photos.
The iPhone camera geotags photos you take using it. This is a nice feature, and I like it. But if you use iPhoto to get your pictures off the camera, it breaks them. This file was pulled using Image Capture
$ md5 Desktop/IMG_0115.JPG
MD5 (Desktop/IMG_0115.JPG) = db9551d666e312dad10b01607b758bc1
$ exif Desktop/IMG_0115.JPG
EXIF tags in 'Desktop/IMG_0115.JPG' ('Motorola' byte order):
--------------------+----------------------------------------------------------
Tag |Value
--------------------+----------------------------------------------------------
Manufacturer |Apple
Model |iPhone
Orientation |right - top
x-Resolution |72.00
y-Resolution |72.00
Resolution Unit |Inch
Date and Time |2008:07:14 09:39:31
Compression |JPEG compression
Orientation |right - top
x-Resolution |72.00
y-Resolution |72.00
Resolution Unit |Inch
FNumber |f/2.8
Date and Time (origi|2008:07:14 09:39:31
Date and Time (digit|2008:07:14 09:39:31
Color Space |Uncalibrated
PixelXDimension |1600
PixelYDimension |1200
Gamma |2.20
North or South Latit|N
Latitude |51.00, 31.49, 0.00
East or West Longitu|W
Longitude |0.00, 5.25, 0.00
--------------------+----------------------------------------------------------
EXIF data contains a thumbnail (4879 bytes).
And this file is the EXACT SAME PICTURE pulled using iPhoto
$ md5 /Users/tomi/Pictures/iPhoto/Modified/2008/14\ Jul\ 2008/IMG_0115.JPG
MD5 (/Users/tomi/Pictures/iPhoto/Modified/2008/14 Jul 2008/IMG_0115.JPG) = 571f8966a47ac583026090b63d7cde2a
$ exif /Users/tomi/Pictures/iPhoto/Modified/2008/14\ Jul\ 2008/IMG_0115.JPG
EXIF tags in '/Users/tomi/Pictures/iPhoto/Modified/2008/14 Jul 2008/IMG_0115.JPG' ('Motorola' byte order):
--------------------+----------------------------------------------------------
Tag |Value
--------------------+----------------------------------------------------------
Manufacturer |Apple
Model |iPhone
Orientation |top - left
x-Resolution |72.00
y-Resolution |72.00
Resolution Unit |Inch
Software |QuickTime 7.5
Date and Time |2008:07:14 09:40:28
YCbCr Positioning |centered
Compression |JPEG compression
x-Resolution |72.00
y-Resolution |72.00
Resolution Unit |Inch
YCbCr Positioning |centered
FNumber |f/2.8
Exif Version |Exif Version 2.2
Date and Time (origi|2008:07:14 09:39:31
Date and Time (digit|2008:07:14 09:39:31
Color Space |Uncalibrated
Latitude |51.00, 31.49, 0.00
Longitude |0.00, 5.25, 0.00
--------------------+----------------------------------------------------------
EXIF data contains a thumbnail (2670 bytes).
created 13 July 2008 in notes tagged interface, iphone, volume and widgets.
The iPhone / iPod music player volume widget behaves like this - you have to start your finger drag on the little round nubbin. You then drag it left or right. Dragging your finger up or down off the slider doesn’t adjust the volume, but doesn’t cancel the adjustment either, and I’ve found this to be a nice way of adjusting the volume a tiny amount - dragging diagonally increases the distance that you have to move your finger to effect the same change in volume, so it’s more precise.
If you put your finger anywhere else on the volume widget, nothing happens. If you drag your finger onto the nubbin from somewhere else you don’t start changing the volume.
The video player and YouTube volume widgets work the same way.

The iTunes Remote volume widget works like this - the volume will snap to wherever on the slider you put your finger down. Once you’ve done this, dragging the slider works as in the local music player. It looks identical to the slider in the music player app.
A slider control put into a blank view in Interface Builder works like the remote application - the slider position snaps to where you touch the slider. But it looks different from the volume control slider - the IB slider has a matte, concave look, wheras the volume control has a shiny nubbin.
The ‘Brightness’ control in the settings app is a slider that looks and behaves like the Interface Builder slider.

On the whole, I prefer the behaviour of the remote app, with the snap. And I prefer the appearance of the Brightness slider. But it’s odd that there are already three different slider widgets on the iPhone.
created 13 July 2008 in photos tagged app, deployment, herejustnow and iphone.
Yay, I have my iPhone app running in the Real World.
created 11 July 2008 in photos tagged exposure, iphone and screenshot.
Um, interesting. Because the kitkat photo has a different comment. The comment that appears to be on that photo is on the chocolates photo. In fact, all of the comments are off by one. Update later: this bug has been since fixed, and doesn’t exhibit in the pay-for verion of exposure anyway.
created 05 July 2008 in notes tagged developement, iphone and python.
A guide to writing iPhone applications in Python. Seems to apply to the jailbreak SDK rather than the real one (though this isn’t very clear) and is undated (I hate it when people don’t put dates on things) so I have no idea if it’s still relevant. But nevertheless.created 10 June 2008 in blog tagged apple, hardware and iphone.
I guess I may as well write down my few thoughts on this iPhone thing.
To thank you for being an iPhone fan, we’re offering you an early upgrade to the brand new version when it launches on 11th July 2008. You won’t have to wait until the end of your existing contract, all you’ll need to do is agree to a new 18-month minimum term contract
Is that an additional 18 months on top of my contract now, or merely a reset of the run to 18 months from now? Because if it’s the latter, I want mine now.
An aside. When trying to tell O2 where I live, I get the exciting error [House Number must be numeric]. Um. No. Because mine isn’t. Idiots.
Interestingly, the page about the iPhone upgrade makes mention of O2’s «new iPhone Pay & Go SIM cards». Hmmm, interesting. Though if I can get me an iPhone 3G cheaply I’ll probably end up just jailbreaking it instead. Or if the iPhone 3G isn’t jailbreakable, and you can’t buy old ones any more, I wonder if it’ll have disgusting amounts of resale value…
Let’s (almost) gloss over the actual ‘3G’ feature here. The standard Steve approach was used - ‘3G simply isn’t necessary, EDGE is fine!’. Until the iPhone has 3G, at which point it’s ‘Look how much better 3G is!’. I have the iPhone 1, and I find EDGE just fine. My total web page download time is already faster than it was on the 3G phone I used to have, because my web browser doesn’t take 20 seconds to load. 3G will be nice. But meh.
Gruber has a bit on the new pricing structure, and this is the interesting bit for me. What I read here is that ‘subverting the old phone industry business model’ didn’t work. So they’ll do the same thing everyone else does instead and just sell subsidised phones through carriers. So much for changing the world. But this implies that they’ll do the other thing everyone else does, and sell unlocked versions of their phones for more money. If they’re no longer getting a cut of the carrier revenues, why would they care any more?
Oh, and Gizmodo relays the interesting point that, sans monthy revenue to book against the iPhone, Apple may start charging for feature upgrades on SOX grounds. Except that the Apple TV gets free upgrades. The ongoing revenue thing is just an accounting ‘profit from this thing is amortized over 18 months’ device, no?
created 23 January 2008 in blog tagged ajax, delicious, iphone, ipod, javascript, software and touch.
I’ve been looking for an excuse to play with IUI for a while now, and finally I found one. I wanted a way of getting at things that I and my friends have saved in del.icio.us, and the native web interface isn’t very usable on the iPod touch. So let’s implement a delicious client using IUI! Also, let’s implement it in pure client-side JavaScript, so I don’t have to run a server anywhere!
So, here’s a trivial implementation. It’s hard-coded to look at my links and friends, but that’s not hard to fix, I just don’t care. The thing I’m happiest with is the way it’s entirely client-side, and pulls in things from the delicious JSON api as it needs them. And it’s pretty small, too..
created 21 January 2008 in blog tagged apple, development, iphone, ipod, sdk and touch.
The ‘state of the art’ for iPhone apps is a single URL, serving a static page with lots of JavaScript and Ajax. Clicking (touching, whatever) things loads in fragments and changes the page. IUI works like this, Hahlo works like this, the Facebook app works like this (hence IUI‘s behaviour).
To preserve state, normal usage is to use the URL fragment to add bookmarkability and history. And sometimes, this actually works. But given that the point is to pretend to be a native iPhone application, it’s wrong. You should be storing state in cookies.
Justification: Native iPhone apps act like you never quit them. Even if they get closed by the system at some point, they’ll come back to the state you left them in. Bookmarking a rich web application should act the same - I want to bookmark the application, and have it open in the state that I left it, not the state that I bookmarked it in. So you should update the ‘current state’ in a local cookie every time to navigate somewhere, and respect that state when you next visit the application. Combine this with the 1.1.3 firmware’s webclips thing and you can almost pretend to be native.
Which is why I expect the much-anticipated iPhone SDK to be nothing more than ‘local web applications’. Give developers a little bit of local storage (you know, like webkit just got), a way of promoting a bookmark to the home screen (we have that one now) and a way of storing some HTML and JS on the phone, and Jobs can claim he’s given us an SDK. And he’ll be right.
Me? I’d be happy with that. It solves all the sandboxing, security, ‘bring down the network’, etc problems. And it will keep people from jailbreaking the phone trivially. The only alternative I can see is installation of signed apps only, with the iTunes Media Store as the single point of installation. Which would suck more. But there will be howls of outrage.
created 21 November 2007 in links tagged iphone.
one. thousand. euros.
http://news.yahoo.com/s/nm/20071121/tc_nm/tmobile_apple_i...