The Flying Developer Dislikes Pando Media Booster

I’ve been playing League of Legends over the last month or so, and I rather like it. But that’s not what this post is about.

A couple of days after I installed the game, I noticed something strange. My network monitor gadget was showing an ongoing upload of about 1Mbit. Whaa? I don’t remember telling anything to upload large amounts of data. Time to investigate! Continue reading

Why I Don’t Obfuscate My Email

One of the longstanding ‘tricks’ that I see around the web is people obfuscating their email addresses. A quick search reveals that A List Apart talked about it in 2002 and again in 2007, so it’s been around for a hell of a long time in internet terms. We still do it on the Shopify App Store when displaying developer emails. I’m not usually one to question security decisions but seriously, why the hell are we still doing this?

Spam is a solved problem

I can’t remember the last time I got a piece of spam in my inbox. There’s a pile of spam in my spam folder, but who cares? Since 2004 when I got Gmail spam has been a non-issue for me. Even if every spammer on the globe got my email I think that my filter could probably handle it.

It’s fucking annoying

Every time I see davefp (at) gmail (dot) com, I cringe. Who wants to go around removing/replacing additional crap that has been added to an address to make it more ‘secure’? If anything, I’m less likely to want to email you if you write your email like that.

It doesn’t work

I hate email obfuscation for the same reason I dislike DRM: It only harms those without malicicious intent. The example above can be defeated with a single regular expression and about 30 seconds of editing my crawling script. Meanwhile, every single human beings that has legitimate reasons to be emailing me still has to decode my address.

So please, I beg of you: stop obfuscating your email address on Twitter, Facebook, Google+ , or wherever else you might be posting it. You’re not protecting yourself, you’re just pissing off the rest of the internet.

Productive or Responsive: Pick One

When people ask me what I do at my job, I often have a hard time explaining. ‘Developer Advocate’ isn’t exactly specific in the same way that ‘Software Engineer’, ‘Visual Designer’ or ‘Phone Support’ is. Truth be told, I’m not 100% sure what the true scope of my job is: It changes daily. I do app reviews, tech support, community management, and write blog posts. Sometimes I even write code.

Responsive

A lot of my time is spent reading, researching, and responding to emails that I get from merchants and developers. People tend to get annoyed when you don’t respond to them, so I feel a certain responsibility to reply as soon as I can. Unfortunately this is often a black hole and if I’m not careful I can spend whole days doing it which would be great, except that support is only one of my many responsibilities.

Productive

Another thing I sink time into is development. Right now I’m working on a tool for feeding merchant ideas to developers, and it’s a lot of fun. I really enjoy sitting down, getting stuck into the code and finishing the day with a new feature. Unfortunately when I do this my inbox inevitably fills up and I feel guilty about not tending to it.

Pick One

So that’s my dilemma: At any one time I can either be on top of my emails (responsive) or get ahead on my development (productive). Right now my strategy is to tackle my email in the morning, then switch to development after lunch regardless of whether I’m  ‘done’ or not (I’m beginning to suspect you can never be ‘done’ with email). This leaves me with a sense of accomplishment at the end of the day which I quite enjoy, but does result in a mountain of mail in the morning which is somewhat less fun.

 

The Flying Developer Gets Some Dodgy Solicitation

The other day I got a letter from the ‘Domain Registry of Canada’, telling me that one of my domains was expiring soon, along with a handy renewal form for me to fill out.

There are several problems with this.

First and foremost, I’m not a customer of the ‘Domain Registry of Canada’. Despite appearances, they’re not an official body either. What they’ve done is scraped my info from the whois data and generated this solicitation letter. Once you take the time to actually read the thing this becomes apparent, but I have a huge problem with the fact that they’ve dressed it up as an official document. I’ve uploaded a copy below so you can see for yourself.

Oh, and their prices SUCK.

How To Write an Android App That I’ll Use

Last week, Mark Jaquith posted an article entitled ‘How to write a WordPress plugin that I’ll use‘. It occurred to me that a similar document about Android apps would be a useful and fun thing to write. A lot of his points carry over, but there are some Android-specific points that I’d like to expand upon.

Use shared functionality, use shared data

One of my favourite things about Android is the ability to re-use functionality from other apps. Some of these are no-brainers: If you need the user to select a picture, use ACTION_PICK. Email? Use ACTION_SEND. This extends beyond the standard system intents. OpenIntents has a whole slew of intents that you can use to accomplish any number of tasks. Before you write a given feature into your app, go there and see if someone has already done it. You’ll save time, effort, and won’t have to maintain the extra code. As a concrete example, Omnivore uses Zebra Crossing’s barcode scanning intent to read barcodes.

Share your functionality, share your data

My first point wouldn’t be possible if developers didn’t make their features available for reuse in the first place. You should do this. Take a look to see if your app performs a function that has an existing intent and if there isn’t one, create it yourself. Omnivore doesn’t do this yet, but eventually I want other apps to be able to access the food list for other purposes (e.g. creating shopping lists, finding recipes).

Don’t ask for unnecessary permissions

I was once in the market for a chess clock app. The most popular one at the time asked for both internet and location permissions. Sorry, what? How are either of those going to improve the application for me, the user. Advertising doesn’t count as a valid reason for including a permission by the way. I’m fine with apps that make calls to ad-servers on the back of legitimate internet access, but including permissions for the sole purpose of showing ads isn’t on.

Use Android UI/UX conventions

When I press the menu button in an app and nothing happens, I get sad. Similarly, whenever I see an iPhone-esque back button in the top left I shake my head in disappointment. Users (myself included) expect certain things to function certain ways. Imagine installing a desktop app that didn’t use the default keyboard shortcuts for copy/paste, undo/redo or save/load. Everything still works, but it feels out of place and wrong.

Adventures in Mac-Land: My New MBP

For my new job I was given a brand new Macbook Pro. This caused both joy and trepidation. I’m always excited by new tech toys, but the last time I used a Mac was in secondary school when the iMac looked like a giant piece of neon fruit. Since then I’ve been primarily Windows-based with occasional Linux use. So how have I been dealing with this new environment?

Continue reading

Against the Android Action-Bar

I’ve noticed some interesting UI design patterns emerging in the Android app ecosystem of late1. It’s great to see apps evolving to make the best of the mobile platform, but there’s one that irks me. It’s the ‘Action-Bar’ pattern.

A lot of apps on the Android Market seem to be going for this design pattern. Not just small one-man operations, either. Twitter, Aldiko, and even Google’s own IO Conference schedule app all use it. The trouble is, it sucks.

Not So Handy

My dislike for the action-bar stems from the button placement. All the apps mentioned above have the buttons in the action bar on the right (except the Aldiko home button, but that seems to be the exception rather than the rule). This places them next to your thumb, which is really convenient provided you’re holding the device in your right hand.

I hold my phone with my left hand most of the time. When I’m out and about I keep it in my left-hand trouser pocket so naturally when I take it out it ends up in my left hand. Unfortunately for people who do this, the action-bar buttons are in the farthest corner of the screen requiring them to reach across in order to press them. If you have an app that does this, try holding the phone in either hand and try it out to see what I mean.

On The Other Hand

So what’s to be done? My first thought was to move the action-bar to the bottom of the screen. This makes it easier to press the buttons with my left hand, but is terribly cramped when using the right. It basically suffers from the opposite problem as the original.

How about moving the buttons over to the left? Same problem as before, but reversed. I have no idea what the breakdown is between left and right-handedness is when holding a smartphone but either way you end up annoying a large group of people2.

Rather than call for the action-bar pattern to be ditched altogether what I’d like to see is app developers taking better care of the needs of their users. A simple check-box in the settings that causes the buttons to be displayed on the left or right accordingly would be great. It’s really easy to do, and would make many apps easier to use for a lot of people.

  1. They’re probably present in iOS, BB and others too but I don’t use either of those platforms so I can’t comment on them. Feel free to substitute your favourite smartphone platform if you like.
  2. For the record, I’m right handed. I just hold my phone in my left.

Google Docs Is My Permanent Shopping List

Recipes Document ScreendshotMy last ‘real’ post was about how I was trying to [intlink id="307" type="post"]reduce the amount of food I was throwing away[/intlink]. This seems to be going well, I have definitely not thrown out as much food since we started keeping track of best-by dates. Success!

Since starting to use the food calendar I’ve come up with another useful method of helping organize our eating-related expenses. Neither my wife nor I own a car, so going on large grocery runs is impractical since we have to carry everything home. This often leads to us running out of food and having to eat out a lot, especially for lunch during the week. $10 for one meal five times a week each gets expensive quickly. Fortunately I work right next to a large supermarket. On an ideal day, I’ll remember to look up a recipe before I leave for work, buy all the ingredients on the way home and use the leftovers from that night’s meal as lunch for the next day. Most of the time though, I’m too out-of-it in the morning and forget. This has led to several incomplete recipes or just total abandonment of a meal when I get the wrong things. Not so good. Continue reading

The Flying Developer Hates Mouldy Food

food in a Google calendarThere is a problem in our household. My wife and I have a terrible time keeping track of what’s in our fridge and more importantly, when it will go off. On many occasions we have bought meat, fresh veg or bread with the intention of eating it ‘soon’ only to find it has passed its best-before date by the time we want to eat it. It’s frustrating, depressing, costly and results in more meals at McDonalds than I’d care to mention. Clearly a better solution is needed. Continue reading

The Flying Developer Is Not A Designer

Anyone who follows this blog will notice that I’ve changed the theme recently. This was done because I finally admitted to myself that I’m not a particularly good web designer. Whilst I understand HTML, CSS and javascript I lack the design skills to weave them together into something that looks really good. That’s ok. In matters of design I’m prepared to defer to those who have had proper training and experience.

Instead, I’m now using a free wordpress theme called LightWord. The design is far superior to my previous attempt, if somewhat generic. However, I can now tweak this theme to my own needs without worrying too much about all the little details that I would miss if starting from scratch. This approach appeals to me because it’s an example of one of the central pillars of good programming: Code reuse. There are literally thousands of existing themes out there, so starting from scratch would mean repeating the work of many, many people. Seeing as I don’t plan on making design work part of my professional portfolio any time soon, I’m perfectly happy to borrow existing works (within the terms of their license) and bend them to suit my needs.