Image Optimization on iOS
Posted on
Recently in IncrediBooth, I greatly decreased the size of the IPA we send to Apple. We were around 70MB before everything and ended up at 31MB. It was honestly really easy to shave that much off the app.
IncrediBooth is a universal iPad/iPhone app. With the last update, we added support for the new iPad's retina display. This made our bundle huge. IncrediBooth has a ton of full screen textures to help illustrate the physical metaphor. These images as 2048 x 1536 PNGs are just massive. Converting some of these to JPEGs saved a ton of space. It's unfortunate they don't load as quickly, but some PNGs that were 10MB+ were ~200Kb. This was a good first step.
Even after converting as much of the big textures as I could to JPEGs, I was still over the 50MB limit. My goal was to be under 20MB so older devices could download it without WiFi. I turned to my Twitter friends and found ImageOptim.
Hello Internet: Selling My Stuff
Posted on
So, I'm selling all of my stuff.
I'm a big fan of minimalism. Every so often I get the urge to drastically simplify my life. This time around I have a good reason. It's exciting. I don't need really anything I have. It's definitely nice to have nice stuff, but I don't need it. I'm excited to simplify.
There's a list of stuff I'm selling on Yardsale. If you're in San Francisco and want to buy something, hit me up on Yardsale. If you're not in San Francisco and want to buy something, hit me up via email.
Here We Go Again
Posted on
If you've kept up with me at all the last couple of years, you already know what this post is about. April 5th will be my last day at Synthetic. It has been absolutely fantastic working here. I have had an amazing time with everyone. I got to be a part of some really great stuff in my time at Synthetic. Everyone I got the privilege of working with will definitely be missed.
I'll be dedicating all of my time now to some products I can't wait to show you. My goal is to stay on my own for as long as possible. Hopefully some of the products I'll be releasing will make enough money to pay my bills so I can continue to keep doing this.
When I run out of money, I'll figure something out. Contract work will probably be a temporary means of building back up my cash buffer (or cash cache if you will) so I can get back to my own stuff. (That said, I'm not looking for work.)
Constantly Changing
Posted on
I recently installed gaug.es on my site (which is totally awesome). I noticed most of my traffic goes to blog posts that are decently old. At the time they were accurate and the stuff I mentioned was, at the time, the best practice.
It's funny how quickly things change in the software world. A blog post less can be super horrible advice less than a year later. That's why I never recommend a book to someone wanting to learn Rails. That stuff changes constantly. I still think Aaron's books on iOS programming or Mac programming are really fantastic. I learned with his book on Mac programming before iOS came out. (He has a book on Objective-C too. I haven't read it, but I'm sure it's fantastic.)
Objective-C doesn't change nearly as much as the Ruby world does. Recently we've gotten Objective-C 2.0 (plus the advancements in the Apple LLVM compiler) and ARC. Everything is always backwards compatible without making things too crufty. It's really amazing how well it's held up. More on all of this later though.
Automatic Reference Counting
Posted on
Automatic Reference Counting (or ARC) is a new advancement in Objective-C with the LLVM compiler. There is a lot of debate in the community about its place. I've worked with people who completely despise it and people that think it's the best thing since sliced bread (which by the way, is pretty great). I have some thoughts on ARC too.
I tried it on a Mac app and an iOS app. At first it was really hard to let go of retain
, release
, and controlling the details of an objects lifetime. After awhile, it was really nice to not write dealloc
and just release every ivar.
When I switched back to work on a non-ARC app, I realized how annoying it is to write memory management code. Now, we're switching all of our apps at work to be ARC. Here's are my two biggest reasons: