IslandJohn.com
4Nov/100

Simple iOS UDID Tracking Solution

You may want to track your application's users' UDIDs for a myriad of reasons, such as checking user retention, update rate etc. However, since Apple has changed their terms and conditions regarding UDID collection, you cannot use a third party to gain access to them, so using an SDK like Flurry won't get you what you want. So, if you want to undertake certain marketing ventures, such PPA advertising, you'll need to collect them yourself.

23Oct/100

Bee Patrol for iPad and iPhone: an Action, Puzzle, and Strategy Game Combination

After my Word Quest publication, I decided to venture further into iPhone application development, and try to write something a little different. Using cocos2d, and some OpenGL, I wanted to combine line drawing games, like Flight Control and Harbor Master, with some puzzle elements and strategy components, like resource management. So I did.

9Feb/100

Word Quest iPhone Application: My Introduction to Apple Development

Exactly one month ago I decided to dive into Apple's Xcode, Objective-C and their, what I now think are, lovely APIs. I thought about this adventure before, but I just never pushed myself. It was apparently a very bored evening, so what else was I going to do. I must say Objective-C seemed strange at first, but once I went through it all, wrote a few lines of code, it seemed almost elegant. It's an extension of C, and if you think about it, you could almost implement a parser for Objective-C that would generate plain C code to do all the magic. It's a pretty abstraction layer with a mandatory runtime environment. I like it. After a few hours of playing with Xcode, it became apparent that I should just dive right in.

2Dec/090

Snow Leopard, Canon MP620, and Airport Extreme Weirdness

After hours of troubleshooting, a disconnected anomaly was all I could find. For months my Canon MP620 printer worked fine under Leopard and Snow Leopard. My wife's MacBook printed well wirelessly. But, one day her MacBook printing just stopped working. I went through the usual suspects: reboot machine, reboot printer, reinstall drivers, manually clean out drivers and reinstall etc. Nothing worked.

1Nov/090

Create a Range of Solid Colors for Desktop Backgrounds

Both Mac OS X Leopard and Snow Leopard come with a paltry set of solid colors for desktop backgrounds. This is easily remedied with ImageMagick (available for install through the MacPorts Project) and a quick hack. The script below generates all the background images for web-safe colors that should then be immediately available for use under the Solid Colors selection in the Desktop and Screen Saver System Preferences. You can copy and paste the script into Terminal, but you'll need to be a system administrator for it to succeed because it writes the images into "/Library/Desktop Pictures/Solid Colors".

14Oct/090

File Locking and Exclusive/Synchronized Execution in a Shell

Many shell scripts need to execute exclusively as a singleton, or at least carry out blocks of execution that must be run exclusively. While this sounds like an easy job for things like ps and grep, or the creation and testing of a file on the file system, these quick and dirty tricks lead only to headaches down the line. In order to create synchronized execution in a shell, one needs some task that is guaranteed by the operating system to execute atomically and provide feedback. On Unix-based system, that shell-based command is ln.

Tagged as: Continue reading
3Oct/090

Dynamic DNS Updates with BIND and an Airport Extreme

My home network has an Apple Airport Extreme as the first stop from my cable modem, which of course provides dynamic addressing, and I run my own BIND DNS server on the Internet. I wanted a way to query the Airport Extreme for its external IP address and dynamically update a host entry on my Internet DNS server so that I could access my home network while away. I used to subscribe to a service called DynDNS (there are others as well) but I prefer to be in control for this scenario. The BIND setup is easy: I just created a TSIG key and allowed the zone that contains my home network's host address to accept dynamic updates using that key. There are several examples of this on the web.

16Sep/090

Mail.app with a Self-Signed Certificate in postfix/dovecot

I thought I'd post this tidbit about getting Mail.app to work correctly with a self-signed certificate in a postfix/dovecot Linux installation; in my case under Debian Lenny. After setting this up, my Mail.app refused to connect to the outgoing server to deliver mail. In the postfix logs I would see "SSL_accept error from ...: -1" messages. The problem ended up being that postfix uses the default "snakeoil" self-signed certificate, while dovecot creates its own. If the IMAP and SMTP hosts are the same as they were in my case, when you accept the dovecot certificate upon the first IMAP connection, the SMTP connection with a different certificate will fail. This is because after the accept there is now a known certificate for that host, and the new certificate presented by postfix will not match. To correct the problem, either use different hosts (host names) for IMAP and SMTP, or use the same (perhaps the "snakeoil") certificate in both, the postfix and dovecot, configurations.

13Feb/090

Connecting to an SQLite Database via ODBC on OS X

I'm working on a modifying a PHP gallery application to support tagging using SQLite as the database back-end. I've searched for a way to edit and view the database via some graphical tool, and while there are some out there, I wanted to be able to use something generic, like SQuirreL SQL or OpenOffice; thus the need for configuring ODBC.

27Dec/080

Why Does Finder Automatically Launch smbclient?

I was sitting in a hotel room using my MacBook Pro and all of sudden I received a Little Snitch alert asking me to allow smbclient to connect to some IP address. Of course, I didn't allow it, but it peaked my interested. Why the request? I started digging.