I retired an iPhone app

Almost two years ago, in January 2013, I made an iPhone app. It took me about two weeks from start to finish. I ported my Access database reading library from OS X to iOS. Then I added some drawing code that I made for an app I never released, and assembled a simple app for viewing Access databases on the iPhone. I named the product “Access View” and uploaded it to the App Store.

It was initially rejected. Since I was pretty busy, I didn’t really care about that. I only bothered to respond to the trivial rejection reason about a month later. After some tiring back and forth with app review, it was finally accepted and available for sale at a price of €1,79.

Initially I got nice feedback, and a bunch of feature requests. I made around 5 sales a week, so I decided to wait with implementing new features. I said to myself, if sales ever pick up, I’d start improving the app. But sales never picked up. Then iOS 7 arrived, and my app looked really outdated all of a sudden. I thought to myself, well, if I have some spare time, I’ll update it to iOS 7. I never had any spare time to update it.

So now I had an outdated app in the App store, making very little revenue, and no plans to improve it. At some point I decided that I might as well make the app free. Even if I don’t make any profits from it, maybe some people find it useful. It was also a sort of experiment: How many more people would download my app if it was free?

The first day that the app was free, 1000 people downloaded it. I was thrilled! I was excited to see the number on the next day, and was a bit disappointed when only 350 people downloaded it. The peak was quickly gone, and stabilized at around 10 to 20 downloads per day.

I got an occasional email suggesting new features, and I always replied that I didn’t have time to implement them. I figured, it would be better to have a not very good free Access reader on the store rather than none at all. And it felt good to give something away for free!

Then iOS 8 arrived. A feature in Access View broke, and users started emailing me about crashes in my app on the new iPhone. That was when I decided it was time to retire my app. I have no time to work on it, it’s not generating any revenue, and it’s broken. I logged into iTunes Connect, removed the app from sale, removed it from my homepage, and started writing this blog post.

Access View was downloaded by 2500 people and generated a revenue of 700€. It was my first attempt at selling an iPhone app, and for the time being it will also be my last.

I learned that even if an app takes only two weeks to develop, there’s a lot of additional effort connected with distributing it on the App Store. Dealing with App review, making a website, handling customer support… all these things required more of my time than actually programming the app.

It’s important to focus. I’m good at making Mac apps, and discontinuing my iPhone app leaves more time to work on MDB Viewer,  PG Commander and Postgres.app.

Leaving Academia

I recently left academia. I was a graduate student, and I had just passed my qualification exam. I should have started to work on my grand project that would lead to my thesis. But instead I decided to leave. I decided that I’ve spent enough time being educated.

Being in grad school just started to feel weird. I started thinking about all the things I’ve accomplished in my life. I’ve participated in the “physics olympics”. I’ve graduated from high school. I’ve graduated from university after studying physics for 6 years. I’ve worked on multiple archaeological web databases on the side. And yet, I was still going to school, and I still had to write one exam after another, proving that I was worthy to continue. After my qualifying exam, I just got sick of it. Sick of having to prove to other people whether I’m worthy or not. I know what I can do, and that’s enough.

I started thinking about why I was going to grad school. Was it to get a better job? I was pursuing a PhD in computer graphics. With that degree, I would have two main options: attempt a career in academia, or look for a job in the entertainment industry. A career in academia would just require even more proving my worthiness. As a postdoc I wouldn’t take literal exams, but I would submit lots of papers, hoping that they would be accepted, or apply for grants, or interview for better positions. I’d constantly be evaluated. That’s not what I was looking for. So I’d have to look for a job in the entertainment industry. But it turns out that this is a hard business. It’s extremely competitive, and people work extreme hours. There’s constant pressure to finish a project on a looming deadline, only to start with the next stressful project.

If I’m not going to grad school because of job opportunities, what other reasons are there? Pursuing my interests? As a PhD student you get to choose some interesting problem and work on that, right? That’s what I naively imagined before I started at the institute. Some day at lunch I told my supervisor about this idea I had. We could take his fluid simulation method from computer graphics and apply it to a problem related to molten polymers. There was this experiment by a group of applied physicists that would fit nicely. He asked me how many people would be interested in the problem. Maybe a handful, I said. And then I realized that there was no way I could work on that problem. Success in academia is measured in the number of citations your paper receives. What point is there in writing a paper that is only interesting to such a small audience? To be successful you need to target a large audience, and not just pursue whatever obscure problem takes your fancy.

There seemed to be only one reason to continue: If I’d finish grad school, I could introduce myself as “Dr. Egger”. I’d have a really prestigious degree! But is that really worth four years of my life? I myself tend to not think very highly of people who care only about degrees. Most people I care about don’t care about degrees. It seems that going to grad school just for the sake of having a degree is not a very good reason for me.

Why was I continuing with this? I had applied to the institute because I didn’t want to stay at my previous university, and I saw a poster advertising a really nice graduate program. Applying seemed to be the natural thing to do. Was I just working here because I was accepted when I applied?

So I left academia. I decided it’s time to stop educating myself, and put all that education to some use.

Realistic textures in user interfaces

There’s been a lot of discussion about the realistic style of user interfaces that is so popular right now. Many of the design-conscious crowd advocate simpler, flat interfaces, with clean typography. But there are reasons why textures in general are so popular, and realistic textures in particular.

Why are user interfaces textured?

Textures hide imperfections of the physical display. Even though displays are getting better and better, they are far from perfect. Maybe the backlight illumination isn’t completely constant. Maybe the difference in the viewing angle leads to subtle color variations from top to bottom of the screen. If a user interface contains a lot of solid colors, these imperfections will stick out. The more visible those imperfections are, the more you will be aware of the physical device you are using. But modern user interfaces try to immerse the user. You should have the feeling of touching the app you are using, not a screen. A texture can help. It hides dust and fingerprints. The more details are displayed on the screen, the less visible all the physical imperfections become.

But there’s an even more important reason to use textures; it has to do with the way our eyes work. Our eyes do not simply transmit an image from the retina to the brain. On the contrary, the cells in our retina already perform moderately complex computations before transmitting information over the optic nerve. One of these computations is motion detection. That’s why we can spot moving objects instantly. But this motion detection depends on tiny details in the texture of the moving object. If we observe a moving object with no texture, it doesn’t feel like it is moving. Now if we see a featureless colored rectangle move across the screen, those motion detection cells won’t fire. Even worse, they might respond to the subtle texture of the display itself. Our brain will still use other clues to determine the rectangle is moving, but the retina will say it’s standing still. The conflicting signals will break the immersion; and we will become aware we are looking at a screen. But if the moving rectangle is textured, it will appear as a real, solid, moving object.

Now textures aren’t totally necessary for immersion. You can become totally immersed in an 8 bit video game just like you can become totally immersed in a book when the story is good; but immersion is a lot faster and easier when you don’t have contradicting input from your senses. That’s why user interfaces are textured.

Why do user interfaces use realistic textures?

A lot of the discussion about skeuomorphic design centered on the use of textures resembling materials in the real world, like leather or paper. I’ve explained why textures are important, but my arguments would allow for any texture. And indeed, any texture can be used for the described effects. For example, Apple uses a subtle noise texture in OS X window title bars that doesn’t resemble a real world texture. But why do so many apps use fake leather, or wood, or paper?

One reason is that materials from the real world carry a meaning. Paper in the real world is printed on, or meant for writing on. This makes a paper texture perfectly suited for a content area in a digital user interface. Leather on the other hand is not usually written on, so a leather texture is more fitting for decorative elements. By using appropriate textures, designers can give subtle clues to the user.

But a much simpler explanation for the use of real world textures is that we are used to them. People like familiar textures. Take a look at the furniture people buy. Most of it is made from chipboard now, covered with a printed texture. By far the most popular texture is some variation of wood grain. Why? When you could print any conceivable pattern on furniture? It’s because an artificial pattern would stick out. When you see it you would stop to inspect it more closely. People don’t want a piece of furniture to attract attention, they want it to be part of the room. It’s the same in a digital user interface. The designer wants to use some kind of texture, and decides to go with a natural texture. The natural texture will not distract, because everyone knows this texture already. Nobody will pay attention to inspect a simple wood texture more closely, because we are already familiar with wood grain.


Modern user interfaces, especially on touch screens, aim to immerse the user; to let you feel as if you were manipulating objects in an app directly. Textures facilitate this immersion. While arbitrary artificial textures could be used, realistic textures are less obtrusive. A completely flat user interface might be considered more pleasing from an aesthetic point of view, but it can never feel as natural as an interface with realistic textures.

Paid Software Upgrades

Dear Developer,

when I see there’s a paid upgrade for an app I bought, I feel ripped off. I already paid for it. I’m perfectly happy with the app the way it is. Why should I pay you again?

Obviously, I don’t actually need to buy the upgrade. I can just keep using the old version. But at some point in time you will decide to no longer support my seemingly ancient version. It could be that an OS update breaks my version of the app. In practice, at some point in time I will have to upgrade, and then I will have to pay again.

You don’t expect me to pay money just to continue using your app. You know that I hate recurring license fees. That’s why you didn’t only fix bugs, but you improved your app. You give me more value for my money. You finally added that new social networking thing. And a convenient new menu bar icon. Even a full screen mode for less distractions! You convinced me, the upgrade is totally worth it, here’s my money. Sorry I was a bit grumpy at first.

But before you know it, the affordable little app I bought a few years ago turns into an abomination of modes and choices and unique features for every specialist. Over time, I’ve paid several times the original price for upgrades, and I barely recognize the simple and effective app I fell in love with. Chronic feature creep turned your sleek app into an obese application.

I understand that things have changed. You have to consider the needs of a wider range of customers now. You’re a mature company now. You outgrew that youthful naivety. A business can’t delight customers without earning money. I really understand. I will even continue using your app. But I’ll have to find some other piece of software to admire.