Android’s Overblown Fragmentation Problem, Part 2

A couple of weeks ago I said that while Android’s fragmentation problem is real, it’s smaller than some make it out to be. That post generated a good discussion on Hacker News, and I was really glad to see that since I’ve recently had to disable comments here.

One thing that was pointed out is that fragmentation is a very real problem for game developers, and I certainly concede that. There are plenty of other legitimate reasons to complain about fragmentation.

But most of the time when I see someone complaining about Android fragmentation, it’s either because they’re struggling to get their app to look good on the many different sizes of Android displays, or they’re upset about having to support so many versions of Android.

I came to Android development after years of creating Windows software, so to me those just aren’t a big deal. I’ve always had to support multiple OS versions and a wide number of screen sizes. Web developers are in the same boat – they have to make their apps work on an almost baffling array of devices, browsers, operating systems and screen sizes.

I think part of the problem with Android is that wasn’t until relatively recently that it was deemed popular enough to develop for. That resulted in a boat load of iOS developers and designers having to create Android versions of their apps.

These folks were used to developing for a very limited number of OS versions, and most of their customers upgraded to the latest OS very quickly. They also had to design for a small number of display sizes, which often meant they simply created 1x and 2x fixed-size graphics for their apps.

Suddenly they were faced with developing an Android app, where 1x and 2x graphics just don’t cut it. And they could no longer assume that customers were using a recent version of the OS.

To these people, fragmentation must certainly be an enormous issue – especially if they continued trying to design Android apps the same way they designed iOS apps.

The obvious answer is that they should stop doing that. Just like developing for iOS had an initial adjustment period, it takes time to learn the Android way of doing things. Developers and designers who are unwilling to invest that time just end up creating crappy clones of their iPhone apps.

To those folks, I can only say: remember when you bristled at seeing second-rate Mac ports of popular Windows apps? Remember how you felt about companies that treated your choice of OS as an also-ran?

That’s how you’re making Android customers feel. It doesn’t endear you to them, so they’ll seek out alternatives. They’ll switch to competitors who treat their iOS apps and Android apps as equal citizens.

But regardless of whether you’re willing to do that, can you at least stop complaining about "Android’s fragmentation problem" just because you have to support different screen sizes and OS versions?

There are legitimate reasons to complain about fragmentation, but those two issues are something developers have faced for many years with other platforms (and continue to do so). The fact that we have to do so with Android shouldn’t be that big a deal.

Screw the Power Users

I designed HomeSite and TopStyle for power users. Only power users would want to edit HTML & CSS by hand, so I made sure to cater to them.

Those products were filled with features and tool buttons, and their settings dialogs contained dozens of geeky options. Customers liked them that way. I liked them that way, too.

But then I made FeedDemon. It’s still a pretty geeky product, but it’s not just for power users. FeedDemon users range from hardcore developers to computer newbies.

At first I built FeedDemon as though my customers were geeks like me, since that was what I was used to. Power users were happy with all the features and all the options, but the extra baggage made it harder for less technical people to use the product. It scared them away.

So with each new version I tried to simplify the user interface, and dropped features & options that complicated the product. FeedDemon became more popular as a result, but you’d never know it if you visited my online support forums.

I’d come out with new versions that I thought dramatically improved the product, only to find my forums filled with complaints from power users who wanted the return of some obscure option, or were upset that I wasn’t adding the geeky features they wanted.

Sales went up, but positive feedback went down. I had built FeedDemon with the wrong customer in mind, and I paid for it by spending a ton of time defending each release.

Sure, if you’re building a product for power users, make sure to cater to them. Give them everything they need. Despite the rude title of this post, I actually love building stuff for power users because they make great customers.

But if you’re building a mainstream consumer product, then from day one you need to tell yourself, “screw the power users.”

That’s hard to do – after all, you’re a developer, so you’re one of the power users. You want to make people like yourself happy.

But I’d argue that’s one of the biggest problems that has plagued the software industry. We’ve all built stuff for ourselves, even though the vast majority of software users aren’t like us.

We’re the ones who made computers so hard to use. And we’ve done it by catering to power users – by building software for people like us instead of for people who don’t know and don’t care about all the geeky little details.

So if you’re just starting to build something, make your mantra “screw the power users.” Unless power users are your primary customers, catering to them will only hurt your product.

Old Farts Know How to Code

I turned 45 this month. In many professions that’s the prime age to be – and in others it’s considered young –  but in my line of work, some people think middle-aged coders are old farts. That’s especially true when it comes to startups.

The startup culture is similar to professional sports in that it requires a fleet of fresh-out-of-college kids to trade their lives and their health for the potential of short-term glory.

“Old farts” are often excluded from that culture, not because we’re lousy coders but because we won’t put up with that shit. We have lives, we have families, we have other things that are important to us. We’re not about to sleep at our desks and trade watching our kids grow up for the promise of striking it rich. Especially when the people who really strike it rich aren’t the ones writing code.

So many developers my age have had plenty of chances to ditch coding and move into management, but we’ve stuck with coding because it’s what we love to do. We’d earn more in management, but writing software is in our blood. We wouldn’t stop doing it for anything.

And because of the years we’ve spent creating software, we’ve learned what works and what doesn’t, regardless of the language or the platform. Operating systems rise and fall, development tools come and go, but through it all, old farts know how to write solid code.

Young Gamer Geek Nostalgia

Earlier this week I wrote about "Moon Runner," a TRS-80 game I created when I was 18. That was my first piece of commercial software, but I’d written dozens of other games before that.

The first game I remember writing was "Possum Run," a bloody takeoff on Frogger which was published in a magazine called Hot CoCo when I was 16. Back then I was a long-haired metalhead, and I remember my friends being absolutely shocked to discover that I was a published geek.

During the remainder of my high school years I published a number of other games in Rainbow Magazine, including a goofy platformer inspired by Bloom County which featured a penguin trying to find wings that would enable him to fly.

Writing those games wasn’t just a hobby: it was my great escape from the boredom of school. I remember countless days staring at the clock in class, just waiting for the final bell so I could go home and continue coding. And during class I’d often be scribbling code in my notebook instead of taking notes.

Every now and then I toy with the idea of getting back into writing games, and I’ve even considered creating Android versions of my old games. But I’m more of a news and communication junkie these days, so writing games doesn’t interest me the way it used to.

Although I have to admit, it sure was fun coding that Easter egg in FeedDemon :)

Android’s Overblown Fragmentation Problem

It must be hard to be a developer that has to support thousands of different devices, with screen sizes ranging from tiny to enormous, running multiple OS versions on all sorts of hardware.

That’s why I’m glad I’m not a web developer.

By comparison, Android’s “fragmentation” problem is miniscule. It’s overstated in the tech press because it generates traffic.

I’ll grant you that it’s harder to support Android than it is iOS – there are obviously a lot more types of Android devices than there are iOS devices – but after a year of writing Android software, I’ve very rarely run into trouble due to fragmentation. And when I have, it usually hasn’t been a big deal.

So when you read about Android’s supposed fragmentation problem, take it with a grain of salt. Fragmentation is a problem, but it’s overblown.

Update: There’s an interesting discussion of this article over on Hacker News.

I Used to Write Video Games

Sometimes people ask me which program I enjoyed writing the most, usually expecting me to say either HomeSite or FeedDemon.

Nope.

"Moon Runner" was the software I most enjoyed creating. It was a game for the TRS-80 Color Computer that I wrote in 1986, when I was 18 years old. Back then I was hopelessly addicted to video games, so being able to write one myself was an enormous thrill.

"Moon Runner" was loosely based on the arcade game Moon Patrol which I wasted countless quarters on as a kid. It was coded entirely in 6809E assembler and took me several months to create. I still have a printout of the source code on my bookshelf, but it’s gibberish to me now.

I formed my first company ("D & N Software" – my Dad was the "D" and I was the "N") to sell the game, and had wild dreams of striking it rich. But despite receiving rave reviews in popular TRS-80 publications, "Moon Runner" was a flop. It barely earned enough to keep me stocked with peanut butter and Ramen Noodle Soup for a week.

But you know what? I didn’t care about that. I just loved the fact that I created something good enough for others to use. To this day, nothing has compared to the rush I got at age 18 when I saw "Moon Runner" reviewed alongside software written by professional software developers.

I imagine that’s similar to the thrill so many young coders feel today when they contribute to an open source project or post something that ends up on the front page of Hacker News.

That thrill is why "Moon Runner" will always be the software I most enjoyed creating.

Farty Shoes

One recent rainy morning, I stopped at the grocery store after walking my dogs in the park.

As I strode into the store I realized that my wet shoes were making farting noises with every step. I tried walking more slowly, but that just resulted in slower, deeper farts.

So I paused for a moment, too mortified to move. Then like any geek of good conscience, I asked myself, WWJCD?

"What would John Cleese do?"

Suddenly the moment was transformed from one of extreme embarrassment to one of merriment. I put on my best Cleese straight-man face and continued walking, all the while pretending I had no idea the flatulent feet were attached to me.

If an unexpectedly boisterous blast burst from my soggy sneakers, I'd look around as though someone else was to blame and I was offended by their presence.

When the shopping was done I picked up the pace, resulting in dozens of quick squeaky blats following me as I left the store.

I have no idea what anyone else's reaction was, but I certainly had a good time.

So if you ever find yourself in an awkward situation, don't worry about it. Just ask yourself, WWJCD?Everything will be fine after that.

Android Apps Shouldn’t Be Crappy Clones of iPhone Apps

I'm sure a lot of Android users have had this experience: you see your iPhone friends using some slick new app, and you wish it was available on Android. Then an Android version comes out and…

…it sucks compared to the iPhone version.

I'm not going to name names here, because some of these apps might be considered competitors to Glassboard and not even I'm that snarky (at least, not in public). But you all know what I mean.

It's like the iPhone developers finished their version of the app, and then one of them was forced at gunpoint to create the Android version.

The end result looks like an iPhone app, but it's slower. Buggier. Uglier.

It doesn't take advantage of Android's hardware buttons, nor does it use Android features like sharing and background services.

It doesn't have to be this way. Really, it's possible to create iPhone and Android versions of your apps and have them be of equal quality. Twitter did it. And I like to believe we did it.

The Android market is pretty huge, so why insult it with cheap knock-offs of iPhone apps? Treat it with some respect and it'll respect you back.

On Glassboard 2.0, Nobody Knows You’re a Dog

…but they may know you're a dog person if you join my "Dog Pics" board, which I originally created so my friends and I could share photos and videos of our canine companions on Glassboard.

If you'd like to share with us, use the invitation code "dogpics" in the app to join the board. Just follow these steps if you're not sure how to do this:

Now, you may find it odd that an app that's all about private sharing enables anyone to join a board this way. So I'll clarify that you have to explicitly create an invitation code for one to exist for a board. An invitation code provides a simple way to get people into your board quickly without having to invite them – just share the code with the people you want on your board, and when everyone's in you can disable the code so it can't be used to join the board again.

ANN: FeedDemon 4.1

This has been a busy week for me! Yesterday I announced the release of Glassboard 2.0, and today I’m announcing that a new version of FeedDemon is finally here.

The biggest change in FeedDemon 4.1 is that the social features which relied on Google Reader have been removed. Their removal was necessary because Google announced a while back that it was dropping the social features from Google Reader.

That’s the most noticeable difference in the new version, but under the hood it’s also faster than ever, and it fixes a number of problems customers have reported.  A complete list of changes can be found in the release notes, or you can skip all that and download FeedDemon 4.1 now.

Just install this new version directly on top of the previous version – there’s no need to uninstall first.


While you’re here I hope you’ll check out Glassboard, an app designed for private sharing. I write the Android version of Glassboard.