Today I found out that in order to have your OpenGL app run on all iPhones and iPod Touches, it has to be OpenGL ES 1.1. I'm not really sure why Apple is pushing OpenGL 2.0. I guess they have plans to phase out the old version and encourage developers to create games and graphics-intensive apps that only run on the newest hardware.
I've heard about Flash on the iPhone, but I remain skeptical. Business models that have the option for a third party to "flip a switch" and ban them make me nervous. And yes, I realize the irony of saying that as an iPhone developer, but I think Apple has less incentive to block a random app than to block Flash->iPhone development.
Jeff LeMarche's take on Flash on iPhone
My friend's company's app got approved today! MMA Underground (iTunes link)
Monday, November 2, 2009
MacBook Nub
I got my MacBook on Friday, and I've been enjoying learning about all its Mac-y weirdness. I've found a ton of things the Mac does better than any of the PCs I've used, here's a short list:
- The power adapter light turns green when the battery is charged
- Program installation is so easy, just drag a file to /Applications
- A reasonable amount of software comes pre-installed
- The design of the laptop is beautiful
- The screen is way, way brighter than I could ever need
- The multi-touch touchpad is extremely convenient
- The magsafe adapter is something everyone should copy
- The laptop came with OS X 10.5 preinstalled and a 10.6 disk for some reason. Why wasn't 10.6 just installed already?
- It's impossible to drag an item up very far with the touchpad because the hinge for "clicking" is at the top and quickly overwhelms your accuracy-strained finger
- I don't like the keyboard, I like the one on my Dell laptop a million times more.
- The arrow keys are squished :(
- The mouse acceleration is all goofy, it's like it was designed for people who value the ability to select a specific pixel over people who just want to click buttons
Thursday, October 29, 2009
PBRTs, the new rage?
Iconfactory just released Pickin' Time for the iPhone, another in a long line of PBRTs (plant-based reflex testers).

I'm sort of confused as to the apparently super positive reception this app has gotten, especially after all the trouble they've had with selling apps.
I don't want to be mean, but seriously, who writes a review like:

It's sort of like an inverse-bizarro YouTube where all the reviews are super coherent and all the words are spelled correctly. (or perhaps there is some shilling involved? eh?)
Convenient list of rejection reasons from the iStore: App Store Rejection Reasons
Thinking, Boxes, & What Kittens Can Do To Them - Wil Shipley's opinion on thinking outside the box -- "don't". PS I read tons of his blog today, it's great and I recommend it to any programmer.

I'm sort of confused as to the apparently super positive reception this app has gotten, especially after all the trouble they've had with selling apps.
I don't want to be mean, but seriously, who writes a review like:

It's sort of like an inverse-bizarro YouTube where all the reviews are super coherent and all the words are spelled correctly. (or perhaps there is some shilling involved? eh?)
Convenient list of rejection reasons from the iStore: App Store Rejection Reasons
Thinking, Boxes, & What Kittens Can Do To Them - Wil Shipley's opinion on thinking outside the box -- "don't". PS I read tons of his blog today, it's great and I recommend it to any programmer.
Wednesday, October 28, 2009
Piracy is good for games
I've been reading some posts about iPhone app piracy. I think a lot of developers are missing an opportunity here. Pirates represent an awesome form of price discrimination. You can sell your app for $0.99 or fifty dollars or whatever, and then get an instant userbase from people who weren't going to pay for it anyways.
Say you write a multiplayer game. Within an hour of launch you will have:
I wish more people would write about how to take advantage of these benefits instead of just lamenting the losses.
Say you write a multiplayer game. Within an hour of launch you will have:
- Instant playerbase, even if only one person has legitimately purchased your app, especially important for multiplayer "versus" apps
- Filled out highscore tables (so it doesn't look like a ghost town to those first purchasers)
- Hundreds (or more) of users to create content for you, by saving replays, creating levels, customizing characters, or whatever
- People for your legitimate buyers to chat with (even though every other word will be "fag")
- And cheap, viral PR to generate buzz about your game
I wish more people would write about how to take advantage of these benefits instead of just lamenting the losses.
Pro Strat
The iPhoneDevBlogOSphere is abuzz (probably) over the game StoneLoop's removal from the App Store.
blog post here
In summary: complain to Apple that all apps competing with you are infringing on a trademark and have Apple pull your competition for you.
blog post here
In summary: complain to Apple that all apps competing with you are infringing on a trademark and have Apple pull your competition for you.
Tuesday, October 27, 2009
Reading about failure
I spent a lot of today reading blogs about hard numbers on iPhone app sales. Initially, I was depressed, thinking I wouldn't be able to make even a reasonable amount of money with an app, but by the end I became convinced, that yes, there is room for one more good game priced even as high as $4.99.
The main difference I see between the games that did well and the games that flopped is marketing. You have to spend at least 50% of your time pushing your app hard through every form of media you can access.
How to Make Dapple in 6 Months - Owen Goss's explanation of where he spent his time when developing Dapple.
The Grand Review Site List - A review of iPhone app review sites by the makers of Up There. Good information if you want to promote your app.
The main difference I see between the games that did well and the games that flopped is marketing. You have to spend at least 50% of your time pushing your app hard through every form of media you can access.
How to Make Dapple in 6 Months - Owen Goss's explanation of where he spent his time when developing Dapple.
The Grand Review Site List - A review of iPhone app review sites by the makers of Up There. Good information if you want to promote your app.
Sunday, October 25, 2009
New iPhone Developer
I have decided to become an iPhone developer. I don't know Objective-C and I know very little about the app development process. I just bought a MacBook today, it will be my first Apple computer product ever.
Piracy and the App Store - App developer discovers his app is widely pirated, and pirates don't convert to pay users. I can't say I'm surprised, and I agree that piracy generally isn't worth fighting. I still had no idea that piracy was this rampant.
Cute:
Piracy and the App Store - App developer discovers his app is widely pirated, and pirates don't convert to pay users. I can't say I'm surprised, and I agree that piracy generally isn't worth fighting. I still had no idea that piracy was this rampant.
Cute:
Thursday, January 29, 2009
austin usability, seriously?
Welcome to austin usability, the least usable usability site I've seen in a long time. If you go to the page, you're instantly greeted with a popup that blocks you from using the site.
Nice.
When you're shopping for a usability company, what do you care about the most? I hope you answered "journalists' opinions of the company":

Here's their "what we do" page:

I like my version better:
Nice.When you're shopping for a usability company, what do you care about the most? I hope you answered "journalists' opinions of the company":

Here's their "what we do" page:

I like my version better:
Goddammit Google Reader
Monday, January 26, 2009
Google App Engine argh
I have written and hosted my latest site: PixPlz using Google App Engine. I don't really recommend GAE to anyone unless you really, really value using a free service.
Here's a list of minor limitations you might run into:
This one is pretty frustrating if you ever like to gather statistics about a single damn thing your app is storing. I would like a total of the number of times all my images have been voted on, but if I try to loop through every image (which appears to be the only way to do it) I quickly run into Google's 5 second page timeout limit.
no image handling
I know that technically, there's an image library, but it doesn't do a damn thing if you actually want to handle images. Say someone uploads an image: want to know the filetype? Read the individual bytes to determine it. Want to know the dimensions? Yeah, read the bytes. You can do a few write-only changes like resizing, but you can't read any attributes about the image you're manipulating.
hard to port
Other people have written about this, but eventually I'll want to get away from GAE, and it gets harder and harder the more code I write.
index building
Want to query some data in a new way? Cool, just write the query, test it on your dev machine and push to production. Oh, wait, you have to sit and stare at a progress indicator for an indeterminate amount of time before you can actually use that query. This took over 5 minutes for 100 photos:
bizarre errors from simple commands
When I got up to about 150 photos, I started getting timeout errors from this GQL query:
Yes, counting 150 photos is difficult for BigTable to accomplish, and results in an timeout error about 1% of the time.
must sort on inequality filter first
I wanted to make a page that showed the top rated girls, but not one that had maybe one or two "yes" votes, and were thus at 100% falsely. Simple, right? You just query for all the photos that have more than 5 votes and sort them by score. But wait, you have to sort by votes first, then score, giving you a useless top 10 board of mostly the oldest photos (because they have the most votes) thanks BigTable!
random 1000 limits
Can't return more than 1000 elements from a query, can't offset more than 1000 elements into a result set, can't handle uploads or any variables in memory bigger than 1MB. Google touts how well App Engine scales, but I can make any system scale if I just don't let you do anything with it.
Here's a list of minor limitations you might run into:
- no aggregate queries
- no image handling
- hard to port
- index building
- bizarre errors from simple commands
- must sort on inequality filter first
- random 1000 limits
This one is pretty frustrating if you ever like to gather statistics about a single damn thing your app is storing. I would like a total of the number of times all my images have been voted on, but if I try to loop through every image (which appears to be the only way to do it) I quickly run into Google's 5 second page timeout limit.
no image handling
I know that technically, there's an image library, but it doesn't do a damn thing if you actually want to handle images. Say someone uploads an image: want to know the filetype? Read the individual bytes to determine it. Want to know the dimensions? Yeah, read the bytes. You can do a few write-only changes like resizing, but you can't read any attributes about the image you're manipulating.
hard to port
Other people have written about this, but eventually I'll want to get away from GAE, and it gets harder and harder the more code I write.
index building
Want to query some data in a new way? Cool, just write the query, test it on your dev machine and push to production. Oh, wait, you have to sit and stare at a progress indicator for an indeterminate amount of time before you can actually use that query. This took over 5 minutes for 100 photos:

bizarre errors from simple commands
When I got up to about 150 photos, I started getting timeout errors from this GQL query:
photos = db.GqlQuery('SELECT * FROM Photo')
photos.count()Yes, counting 150 photos is difficult for BigTable to accomplish, and results in an timeout error about 1% of the time.
must sort on inequality filter first
I wanted to make a page that showed the top rated girls, but not one that had maybe one or two "yes" votes, and were thus at 100% falsely. Simple, right? You just query for all the photos that have more than 5 votes and sort them by score. But wait, you have to sort by votes first, then score, giving you a useless top 10 board of mostly the oldest photos (because they have the most votes) thanks BigTable!
random 1000 limits
Can't return more than 1000 elements from a query, can't offset more than 1000 elements into a result set, can't handle uploads or any variables in memory bigger than 1MB. Google touts how well App Engine scales, but I can make any system scale if I just don't let you do anything with it.
Thursday, January 8, 2009
Tuesday, December 23, 2008
Dreamhost Sucks
I had (have) an account with DreamHost. I'm currently trying to cancel it, but they are doing their best to thwart my efforts.
I present exhibit A, the "cancel your account" page.
I sent support an email and they said the terms of service clearly states blah blah blah I don't care.
I don't really care what DreamHost's excuse is for this crappy user experience, but I can give a recommendation to never use them to host anything. This is not the first annoyance I have had with them, but it should be the last.
I present exhibit A, the "cancel your account" page.
You Currently Owe: $190.80So you're saying I owe money but I don't owe money? Ok, cool, I guess.
However, if you close your account you will get a credit of $190.80 for unused services you've already been billed for.
You will have to pay for your free domain registration if you cancel your hosting account now though, meaning there will be a charge of $9.95 added to your account.Something about the phrase "pay for your free..." doesn't seem right.
You are not within our 97 day money back guarantee (it has been 732 days since 2006-12-23)!How about if you just end my hosting now and send me a bill for $9.95 instead of preventing me from cancelling?
To end your hosting now, you must submit an additional $9.95 to pay off your account.
We're sorry, but because you will owe $9.95 after closing your account, we must ask you to first go make a payment for that amount.
I sent support an email and they said the terms of service clearly states blah blah blah I don't care.
I don't really care what DreamHost's excuse is for this crappy user experience, but I can give a recommendation to never use them to host anything. This is not the first annoyance I have had with them, but it should be the last.
Friday, November 21, 2008
Updating the iPhone

(pop) I'm updating my (pop) iPhone to firmware version 2.2 for the "improved Safari" features and some of the se(pop)curity fixes and iTunes decides that disabling my fucking phone for an hour isn't enough, it has to annoy (pop) the shit out of me by putting itself on top of all my other windows every few seconds. Thanks a fucking lot, it's not like I wanted to get (pop) any WORK done on MY computer (which is now temporarily Apple's).
Who the fuck coded this? S(pop)omewhere deep in the code, there must be a delay loop that says "hey, it's been 10 seconds, time to be (pop) FUCKING ANNOYING now."
Each of these (pop)s is seriously (pop) another time the window popped up just while I was typing this.
Fucking Apple.
Friday, August 29, 2008
Be a marketing ROCK STAR
Oh marketing-speak. I love how you can talk so much when you have so little to say.
From jQuery Site Redesign - The Community Speaks
From jQuery Site Redesign - The Community Speaks
As many of you have seen by now, the jQuery Project’s site has been redesigned. It had been a long overdue task and it was important to put a fresh new spin on the main hub, and the face, of jQuery.The previous site was getting old.
One of the things about the jQuery Project is that we’ve never run with the crowd or accepted the norm. By pushing boundaries and sometimes being “in your face” we’ve not only grown tremendously in popularity but we’ve pushed most of the other JS library projects to rethink their own principles and make changes to improve their products. That’s a good thing for everyone as competition is always good.This is our excuse for a really weird site redesign.
So, it should come as no surprise by the drastic change in the jQuery website. So far, the single biggest complaint has been associated with the new banner (ie: rockstar caricature & slogan). Again, we wanted to push the boundaries and come up with something that would generate a lot of buzz.It should come as no surprise that we're making a surprising change to the site.
Overall, we’ve succeeded in that goal with plenty of positive feedback but unfortunately, with some very negative comments as well. We actually value both types of feedback and want more as it’s the only way to determine if we’re on the right track. As with any site redesign, you can’t please everyone and we understand that. But we also want everyone to realize that this is a first cut and it doesn’t mean that it can’t be tweaked.While we value your comments, we value ignoring them even more.
We’re actively reviewing all of the feedback and will certainly be looking at how to best handle some of the concerns of the community. After all, the community is what makes the jQuery Project so special and so different from other projects. In addition, the jQuery team has always listened to the needs of the community and this time is no exception. Again, I think the team is unique in that we *DO LISTEN* to the community and we’re going to work on making the site an invaluable tool for everyone. So just give us some time to go through the messages and keep an eye on this blog for updates.We still don't want to change it.
Thanks for your patience and we truly appreciate your feedback.Leave a comment, we'll ignore it.
Tuesday, July 22, 2008
You know what? Fuck your login!
I was holding off writing this post until I was calmed down about it, but you know what? This is angryinterface.
I submit Exhibit F:

Yet Another Fucking Login Prompt. I saw Shapeways on Mashable and thought "hey, I would love to fabricate some gears, and maybe some other stuff", so I go to look at their site.
But nooooooo, you have log in. Does no one understand that I (and everyone else) have a thousand fucking logins to every site in existence? Do I really need to login to BROWSE your site? That's ridiculous.
I hate your site, I hate your stupid login prompts.
I submit Exhibit F:

Yet Another Fucking Login Prompt. I saw Shapeways on Mashable and thought "hey, I would love to fabricate some gears, and maybe some other stuff", so I go to look at their site.
But nooooooo, you have log in. Does no one understand that I (and everyone else) have a thousand fucking logins to every site in existence? Do I really need to login to BROWSE your site? That's ridiculous.
I hate your site, I hate your stupid login prompts.
Thursday, April 17, 2008
I'm going back to cuneiform tablets
I must have unzipped thousands of files since I started using computers. I bet billions of files are unzipped every year by computer users.
And yet...
Not a single fucking software vendor has noticed that a lot of zip files contain just a folder with the actual files inside it.
In fact, I think that's probably the most common use case for zip files.

Instead every vendor says "oh, we'll just be flexible and give the users a choice"
"Do you want to unzip all the files in this zip file you haven't looked inside to a folder or not?"
a) Sure, I love having folder structures like \Desktop\downloaded_file\downloaded_file\setup.exe
b) Nah, randomly dump files all over my desktop

Why give users a choice when you know what they'll want and you could pick for them? This goes double for a choice where the user would have to research which option to pick (like looking inside every zip before choosing)
And yet...
Not a single fucking software vendor has noticed that a lot of zip files contain just a folder with the actual files inside it.
In fact, I think that's probably the most common use case for zip files.

Instead every vendor says "oh, we'll just be flexible and give the users a choice"
"Do you want to unzip all the files in this zip file you haven't looked inside to a folder or not?"
a) Sure, I love having folder structures like \Desktop\downloaded_file\downloaded_file\setup.exe
b) Nah, randomly dump files all over my desktop

Why give users a choice when you know what they'll want and you could pick for them? This goes double for a choice where the user would have to research which option to pick (like looking inside every zip before choosing)
Thursday, March 6, 2008
OH GOD WE ARE SO SORRY
Tuesday, February 5, 2008
Enso, why you gotta make me sad?
The guys over at Humanized just released the 2.0 prototype of their quick-launching product Enso. I'm sure they're still ironing out some bugs, (like how I crashed it by typing "1+1" in the google search field). But their help documentation made one UI mistake I really hate.

Guess what area on those previous and next links is clickable? If you guessed "just the links", sadly, you're correct.
always make your buttons as large as is reasonably possible

Guess what area on those previous and next links is clickable? If you guessed "just the links", sadly, you're correct.
always make your buttons as large as is reasonably possible
Aptana Studio disables internet, "known issue"
This may be one of the most ridiculous problems I've ever had with a piece of software. I tried to use Aptana Studio to some Rails development, but when I tried to install the Rails plugin, it would block my network adapter from doing anything. Here's the mail I sent:
So Aptana replied:
So not only is it ridiculous, but it's a known issue. Aptana currently does not have a product, but they shipped something anyways. If you have software that breaks other functional parts of a user's machine, that's unacceptable.
I will never use any of their other products and I can't recommend any of them to anyone.
never break other parts of a user's machine without warning (some exceptions to this would be a BitTorrent client that may peg your network traffic, or a defragger that blocks hard disk access)
If I attempt to install the Radrails plugin from within Aptana Studio, I lose all internet connectivity instantly, including the ability to ping or resolve a DNS entry. Naturally, this interrupts the download also, and prevents me from doing anything until I forcibly close Aptana, at which point, I regain full connectivity.
So Aptana replied:
Hi Blake,
This is a known issue with the Aptana update site for some users. Try the workarounds for manual installation described on this page:
http://update.aptana.com/install/rails/3.2/
Hope this helps,
Michelle Petersen
Aptana, Inc.
So not only is it ridiculous, but it's a known issue. Aptana currently does not have a product, but they shipped something anyways. If you have software that breaks other functional parts of a user's machine, that's unacceptable.
I will never use any of their other products and I can't recommend any of them to anyone.
never break other parts of a user's machine without warning (some exceptions to this would be a BitTorrent client that may peg your network traffic, or a defragger that blocks hard disk access)
Subscribe to:
Posts (Atom)





