Erich’s Levels of Cooking Effort

Posted January 14th, 2013 in Food, Rant by erich

0) Picking up the phone
1) Removing the plastic wrap
2) Adding one ingredient; water counts
3) Thawing frozen leftovers from a month ago
4) Starting with ground beef
5) Having two pans going at once
6) Using cutting board for vegetables
7) Using cutting board for meat
8) Above, plus stove top and oven going at the same time
9) Starting a dough first thing in the morning
10) Simmering a homemade sauce all day

What’s your average level?  Weekly graphs also acceptable.

True Universal iOS 3/4/5/6 Apps: iPhone + iPad + Retina + iPhone 5

Posted September 26th, 2012 in Hardware, iPhone, Rant, Software by erich

During development of Word Jewels 2 I found myself swapping between iOS5 and iOS6 on my devices for testing.  I had downloaded the official ipsw restore files for each device/OS combo, and it was simple enough to just do a restore in iTunes while holding down the option key.  Until iOS6 shipped that is, and Apple stopped signing the iOS5 restore files.  Um what?  That’s right, Apple can remotely stop letting you load any particular OS version (usually old) onto your devices, so I’ve got an iPod that is now stuck at iOS6.  Apparently the jailbreaking community knows about this and does all sorts of crazy things to save the signing responses so they can downgrade at will, but for legit developers, we’re stuck.

Even so, Apple has pretty good forwards compatibility, in that you can run old apps on new hardware and/or operating systems.  For example, you can take an iPhone app that hasn’t been updated in two years and it will still run on a Retina display iPhone 5 with the new taller screen.  But Apple doesn’t really care much about building new apps to support old hardware with current tools, since they want people to keep buying shiny new devices.

The older XCode 4.4 can build apps that run on any iOS, but they can’t use any new iOS6 features (without serious hoop jumping).  Oh, but you can’t actually test your apps on iOS6 devices so you’re flying blind and just hoping they’ll work.  In other words, my iOS6 iPod was now useless as a testing device.

XCode 4.5 is the new version that came out with iOS6 and has a simulator to let you test your apps on the iPhone 5’s new screen, BUT if you build your apps with XCode 4.5, they won’t run on original iPhone 2G or iPhone 3G models which require older armv6 binaries.  No backwards compatibility, indeed.

What to do?  There are a few options…

Option 1 – you can hack the older XCode 4.4 to be able to deploy your apps onto iOS6 and/or iPhone 5 devices for testing (no iPhone 5 simulator though).  Here are some instructions, though in my experience I don’t think you need the SDK as it makes devices show up twice in the target list.  Then again maybe no SDK is what causes debugging to be so slow with this option…  Your mileage may vary.

Option 2 – you can hack the newer XCode 4.5 to build older armv6 binaries.  It’s basically the same end result as above, but you have the iPhone 5 simulator available as well.  I will admit that my confidence in this option is lower, as messing with compilers feels more dangerous than just adding a way to load a compiled app onto an iOS6 iPhone 5 for testing…

And once you’ve got your chosen Option in place, now you can start updating your code to look for the new iPhone 5 screen (#define TALL_IPHONE_MODE ([UIScreen mainScreen].bounds.size.height == 568) and just add a new Default-568h@2x.png splash screen to tell the iPhone 5 to use the full screen height.  Your code already handles iPad screen layouts and Retina vs non-Retina displays, right?

If all goes well, this will mean that I can update Word Jewels 2 and other Boy Howdy apps to use all of the screen real estate iPhone 5 gives us, as well as still supporting the original iPhone 2G!  Winner!

UPDATE 10/4/2012 – To fix the “slow loading” option when using XCode 4.4, you need to fix a symlink that doesn’t copy correctly. Well it copies, but the symlink for “Symbols” under DeviceSupport/6.0 points at “../..” which used to be over under the 4.5 XCode.  So to fix it, you need to go into Terminal and do something like this, from inside the DeviceSupport/6.0 directory of XCode 4.4:

ln -sf “/Users/erich/Desktop/Apple Developer Tools/Xcode (10A403)/Symbols” Symbols

Boosh!  Symbols are found and debugging is fast again!

The Blessing and The Curse of Being a Solo App Developer

Posted December 16th, 2011 in Business, iPhone by erich

I love my job.  For the past year I’ve been building iOS apps, and doing reasonably well with it.  Every day I get to have breakfast with my kids, walk them to school, then come home and work upstairs in my office.  Put in some good hours of work and then walk back to school to get the kids when they’re done for the day, another hour or so and then I’m down for dinner, with time to play and read with the kids before they go to sleep.

Life is good.  :-)

As a solo developer, I get to make all the choices about the apps I make.  The flip side is, I have to make a lot of choices.  What apps to build, what devices to support, what languages, what should the interface be, what sounds to use, what graphics to use, on and on.  And after the decisions are made, then I have to actually do it.  All of it.  Sometimes it’s overwhelming and I have to push myself to get all the pieces in place to get an app out the door.  But when I do, it feels great.  Granted, I have apps that have been total flops.  Several.  But I also have some that have been well received and are making lots of people happy.  And that makes me happy.

Even when I was building web apps in the days of yore, I lived for watching how people used what I built, to see if they enjoyed it, to see if the energy that I put in to making something intuitive and easy to use would be worth it, instead of building it in a way that was easier to build or copied some other known design but was not easy and seamless and intuitive.

It’s no accident that my old boss, John Kruper, who was also a fanatic about building next-generation better-than-anything-else-has-ever-been user experiences, was also quite enamored with Apple products.  Setting aside the occasional misstep Apple has made, overall they still set the bar for how to build good experiences.  But more I think of it as they set the goal of what we should be striving for.

Sometimes, though, I still trip and fall flat on my face.  Like when I pushed out an update to Bubble Jewels XL this week that tried to improve things a little bit for everyone, and it had a horrible bug that made it crash on launch for 99% of the people that updated to the new version.  Ouch.  I put up messages that we knew there was a problem and would have a fix out as soon as Apple approved it, but still the 1-star reviews flooded in.  Ugh.  It sucks that Apple doesn’t have a system to roll back to the previous version of an app when this happens.  Now THAT would certainly improve the end-user experience of the AppStore…  (feature request has been filed, for what it’s worth)

And so for the few days it took for the fix to be approved, I beat myself up a bit, added a few new items to the release test plan that I don’t always follow 100% but boy howdy I sure mean to, and I stopped looking at the AppStore review carnage so I wouldn’t lose my mind.  And then yesterday the fix went out, and we got some nice thank you emails in from our dedicated players.  Thank you all!

While I struggle with how I could possibly have let a bug like that slip through (mental note – always do a full clean in XCode before testing final builds) I need to remind myself that these kinds of crash bugs happen to more than just me, and happen to bigger dev shops than me.  Just yesterday I saw that Carcassonne had some kind of crash bug with their long-awaited update.  They’ll fix it soon, just like I did, and all will be well again.

As for me, even with the occasional bumps in the road I’ve had so far, the blessings far outweigh the curses.  I’ll keep doing this as long as I can, and do my best to relish every day that I get to walk my kids to school.

Now if you’ll excuse me, I’ve got some apps to write :-)

Chrome vs Firefox – Memory Usage (Firefox wins)

Posted November 18th, 2011 in Rant, Software by erich

I had given up on Firefox a while back due to crashing issues, as well as because I got tired of manually having to check for updates to the security-hole-filled Flash plugin, and I had moved to Chrome for all my web browsing needs.  Chrome rocks!  It’s looks good, it’s fast, stable (at least in the stable version stream, dev was not so reliable with weird bugs cropping up) and it auto-updates Flash – yay!

Having lived in Chrome land for almost a year now, it’s been good, except for memory usage.  Chrome gobbles up LOTS of memory.  But I made excuses and stuck with it.  It needs more memory because it’s so fast!  When it says waiting for cache it’s really Windows having a problem, not Chrome!  I even upgraded my tired WinXP box from 3G to 4G just to browse the web.  Really.  Okay I have Thunderbird open also, but that’s it!  4 gig of memory just to browse the web…

But hey, you say – I’ve seen how you browse the web and you have WAY TOO MUCH STUFF OPEN!  How much is too much?  Right now, I’ve got 73 tabs open.  Is that a lot?  I don’t think so, and anecdotally, I’ve seen other people have that much open, too.

So I had this nagging suspicion that I should try Firefox again, to see if version 8 is any better than version 4 was when I last used it.  I saved off all my open tabs in Chrome and imported them into FF8.  Fire up the Fox with all those tabs and FF used about 1G of memory.  Quit the Fox and try Chrome with the same exact tabs and windows – Chrome used 2.5G!  Seriously?  Wow.  Double-check and yep both my FF and Chrome have no plugins except for AdBlockPlus and FlashBlock, so they’re basically identical.

I can’t justify the memory usage of Chrome anymore, so I’m back with the Fox.  Time for me to start working on an auto-update checker for Firefox Flash…

Upgrading a Unibody Macbook Hard Drive

Posted July 14th, 2011 in Hardware, OSX by erich

I’ve been trying to keep my 160GB original drive relatively clean, but after a while, the music and 4GB XCode beta downloads just ate up all the space and I got the dreaded “your startup drive is running low on space” message with about 200MB left.

Alrighty!  Time to order a new drive!  I considered an SSD for speed, but I’m not rich enough to buy a big SSD drive, nor do Macs have TRIM support which SSDs need or they degrade over time, unless you get an OWC auto-balancing drive but again those are big bucks.

I looked into the Seagate Momentus XT hybrid drives that have some flash in them to give you a partial SSD-like boost, but they seem to have some firmware issues.  Yes some people have found a firmware update that works for them, but I don’t want to deal with it – I want a drive that just works.

Western Digital is my go-to drive of choice these days for both laptops and desktops.  I’ve got a 1TB black and a 1TB green in my Windows machine that sync nightly (yes I run both OSX and Winders), and I started looking at the 500GB WD Black laptop drives, but too many people talked about vibration and noise from them.  The WD Blue 500GB, however, has glowing reviews all around, aside from the odd DOA report but that happens for all drives and Amazon has a great return policy so I just ignore that.  Also order this enclosure (or something similar), assuming you’ve got a spare mini USB cable lying around as the one that comes with it is garbage.

To transfer the data from your old hard drive to the new one when it arrives, pop open the enclosure, pull out the little interface board which is likely not even glued down, and throw away the enclosure case.  Okay you could keep it, but you don’t need it.  Plug the interface board onto your shiny new hard drive and attach it to your Mac with a good mini USB cable (directly to the Macbook, not through a hub, so it gets enough power).  Follow these nifty instructions to format the drive and clone your data.  I recommend disabling wifi, pulling your ethernet cable, and shutting down all apps including DropBox and such while doing the sync, to avoid much of any new data being written to your old hard drive while the sync is going.

Now once it’s down, you need to remove your old drive and put in the new one.  The hard drive is right under the battery hatch which opens easily, but the screws in there are easy to strip.  Get thee to Harbor Freight and spend $8 to get this nifty screwdriver kit with a whole bunch of tiny bits for all the stuff you’re likely to find in your computers.  Use a PH0 bit to take out the drive retaining bracket, and then a T6 to move the drive studs from the old drive to the new drive.  Put it all back in, fire up your Mac, and bask in the glory of your awesome skillz!

UPDATE – you may need to load up “hdapm” which is a tiny background program that sets your shiny new drive to _not_ spin down all the time, in order to get rid of a clicking sound that happens every few seconds while OSX and/or the drive decide to take a siesta and spin down, only to spin up a few microseconds later.  Save wear and tear on your drive as well as reduce noise – go get the nice new hdapm installer package and run it – no config necessary!

Clearing iOS Email Autocomplete Suggestions

Posted June 13th, 2011 in iPhone, Rant by erich

Apparently there is no official way to clear or fix the suggestions that come up in the iOS Mail app when you start typing the name of someone to send email to.  And it’s not clear how it’s sorted, because when typing a single character, the most commonly used addresses are not at the top, nor is the list in alphabetical order.

If you want to clear out this auto-suggest database, and want to take your iOS life into your own hands (if this doesn’t work you could lose data, because we’ll be doing a restore) then here’s what you can try:

  • Back up your iThing using iTunes
  • No really, back it up – Sync is useful, but to be sure right-click on your device and select Back Up
  • Go into your home directory in the Finder, then Library, Application Support, MobileSync, Backup
  • Change to the list view and sort by Date Modified
  • The most recent date should have a timestamp of just now, and is the backup you just made
  • Look inside there and find the file that starts with 31bb  (31bb7ba8914766d4ba40d6dfb6113c8b614be442 to be exact)
  • Move it someplace else, like your desktop
  • In iTunes, you want to Restore your device and then reload it with the backup you just made
  • There will be an error saying that a file is missing and it won’t work – just click okay and let everything finish
  • When this is all done, you will have no email auto-complete suggestions at all!  Which is better than nothing, but kind of sucks that this is the only way to fix problems that come up

Remember – this process nukes your phone and restores from a backup!  If you’re not comfortable with that, don’t do it!  I’m not sure how you’ve got your iTunes/iThing set up and so 100% of your stuff may not back up and be restored.  Good luck!  :-)

Jewel Farm XL for iPads

Posted April 26th, 2011 in iPhone by erich


I wasn’t sure if I should make an iPad-sized version of Jewel Farm, since Julie was enjoying playing iPhone Jewel Farm in double-size mode, but I went ahead and did it anyway.  Give it a try!  It’s free and fun and looks great embiggened.

Minor update coming soon to fix the timer bar being cut off, btw.

Try Jewel Farm XL


Jewel Farm is out!

Posted March 21st, 2011 in iPhone by erich

Jewel Farm for iPhones just rolled into the AppStore.  It kind of took a while, not sure what the hang-up was with the review process…

Jewel Farm is an interesting variation on Jewel Beach, in that you have to make matches on all the “dirt” spaces (which makes grass grow) in order to clear a level.  As the game progresses, there are more dirt spaces to clear, and more types of gems to make it harder.

It can be pretty tricky to figure out how to make a match in one of the corners, because you have to try to kind of “push” gems in the direction of the dirt spaces, in hopes of eventually getting a match on top of them.  I was torn about whether or not to include the corners as possible spaces, because they are quite tricky, but I found that solving them felt quite satisfying which is the whole point!

Go get Jewel Farm now (it’s free!) and enjoy!

Database GUI for Mac OSX

Posted February 16th, 2011 in Java, OSX, Software by erich

Need a basic GUI for playing with databases on OSX?  Version 4.7.2 of Aqua Data Studio is the last version that was free, and can use any JDBC driver as well as it comes bundled with a whole bunch ready to go.  The trick is that it is almost impossible to find it.

Google to the rescue!  Search for and look for a reputable-looking source, such as a linux or darwin distro site such as this one.  Unzip it and edit, replacing line 4 with “ADS_HOME=../../..”.  Then use Platypus to make a double-clickable app for it, opening up advanced options and unchecking “Remains running after initial execution” and check “Runs in background” if you want to not have the Platypus app cluttering up your open apps list.

Don’t get me wrong, this is not as good as something like Oracle SQL Developer, but it’s another option to have around.

Jewel Beach for OSX

Posted January 6th, 2011 in Uncategorized by erich

Speaking of the Mac App Store, Jewel Beach for OSX is out!  Since there is no real ad network support right now for Mac apps, it costs all of 99 cents.  I have no idea if it will sell at all, but 99 cents for a basic jewel game, compared with $19.99 for Bejeweled (yikes!) well I’m hopeful it will get some action.

It was a fairly easy port from the iPad version of Jewel Beach XL, thanks to the heavy lifting already having been done by Ricardo Quesada on Cocos2d.  Thanks, Riq!  I’m proud to have donated to the excellent cocos2d open source project!