Need to know why your favourite phone/car/band is better than everyone else’s? Use this handy code:
What’s the frst thing that comes to mind when you think of UX?
Interface Design? User Stories? Emotions? You can maximize those things through good design and programming but what about the design and programming of the services your app consumes?
What if you built and deployed a fantastic web app that users just loved but the cloud provider you picked started to cut corners and was randomly losing files? Or you built a social media app with push notifications that worked great for people in certain countries but not others? These are both definitely potential UX problems.
So what makes one API better than others? Three factors stick out the most to me:
Documentation – It has to be clear to the developers what the API can and can’t do. (Good, working, tested) code examples & debugging functionality really help too.
Robustness – If the API goes down all the time, doesn’t work in certain areas, doesn’t use common standards & protocols, doesn’t adhere to any sort of SLA,, this will impact your users in a very negative way.
Clear roadmap – New Feature’s are great and all but old ones should be deprecated well. Facebook was famous in the past for knee-jerk changes that constantly provided developers (read: users) headaches.
So what’s an example of an API that is delivering great UX? I’d say Twilio is one of them and I’ll use Airbnb‘s implimentation as an examle. Airbnb uses Twilio to anonymously connect hosts and guests during the reservation process. Not only does this provide for a great experiences in terms of privacy,but it’s easy, you’re connected faster than dialing it yourself, and the call quality is always excellent. Every time. That to me us good UX delivered through an API. (See their documentation and status board for additional proof as well)
When developing your next app remember that UX isn’t just limited your software and design. It’s also the APIs, vendors, and services that you work with.
What are some examples of APIs with Good UX? Bad UX?
I was really excied to see that Path includes the ability to push checkins to FourSquare. I don’t know about you but I’ve been going through “Social Media burnout” so its nice when they become more integrated.
However, I found one small issue with the Path Foursquare checkins and that is they won’t show up for anyone querying Foursquare via the API. This seems to be due to the fact that Path sends the check-ins without any geo-location data so FourSquare considers them a ‘record keeping’ check-ins rather than ‘full’ ones.
It’s something to consider if you have any sort of app that consumes user checkins (like we have at the co+Lab). I’ve confirmed this behaviour on the Path app on both Android and iOS
This is the cost to backup all sites from my VPS to S3 (6.2GB).
Storage is cheap. Downtime & lost data is expensive.
Setting it up is easy. There really is no excuse not to.
It only took me about an hour to get ICS installed on my Nexus S. Although I am on the Bell network, my phone was actually originally from Rogers (They were the first to get the Nexus S in Kelowna) I *think* that all of the Nexus S from Bell/Rogers/Telus are the same (9020A). Getting ICS onto the phone was the easy part, it was getting the radio to work that took a while. I’m not sure exaclty what I did because it just started working about 2 minutes into one of the reboots. Maybe let it sit for a while after you get the radio installed..FYI, the first time ICS boots up it takes about 5 minutes to get past the startup animation. Its a bit stressful.
I roughly followed the guide below. It’s probably best to factory reset your gingerbread install before even beginning. After resetting, I unlocked the bootloader, then installed ClockworkMod. I used the Clockwork mod to flash the ICS ROm but used fastboot to install the radio. I found that after installing ICS, I was no longer abel to see the phone from fastboot so I had to actually boot the phone into ICS and turn USB Debugging on. I was then able to flash the radio.
Also if you can’t get access to the phone through fastboot/ADB, don’t even bother trying to install. It is sential that you can shell into the phone when something goes wrong.
The detailed guide:
The ROM I used:
The radio I used:
On the weekend I came across the newly released Any.DO app. Now before you say “ANOTHER to-do app??”, let me tell you this one is different. Any.DO sets a new UI bar way above anything else I’ve seen on Android. It looks beautiful and is amazingly intuitive. Drag and drop tasks, swipe to mark as complete, auto setting of call-backs everything is dead easy. Even if you don’t use task-manage on your phone, check it out for the sheer beauty of the interface.
I was looking for an off-site backup for my WHM VPS a while back and figured I’d use S3. A few minutes of research found that it wasn’t all that hard to do. I essentially followed the link above but added a step to encrypt the backup files with AES256 before sending them to S3.
This is a really nice way to cut down on the amount of files in your SVN repo AND make it easy to stay up to date on your current version of WordPress. Thanks to Adrian Schneider for sending this link me way!
I finally got around to creating some sample code to demonstrate how to do Rijndael (AES-256) encryption between PHP and .NET servers.
They key probelm I found was that mcrypt pads the key with zeroes, where the default behaviour in .NET is PKCS7 padding. Use this line in your/net project to mimic the PHP behaviour.
symmetricKey.Padding = PaddingMode.Zeros;
You also have to remove the padded nulls from the end of string after you do the decryption:
The complete working C# and PHP projects are here: