The minimum specs they announced for Android One are surprisingly good. I think this effort will do for phones what the Raspberry Pi did for embedded systems: In the blink of an eye, the mobile industry will have to deliver much more capability for much less cost, or they’ll lose business to the low-cost offerings. This has already happened in the embedded system industry, in that any “PC board” that costs more than the Pi must set itself apart somehow, either in terms of performance or capability.
They’ve also done a great service for developers. While it’s always been possible to start developing Android apps using just the emulators (as I did in early 2009), some things are easier to test on real hardware. Well, the cost of real hardware just dropped from $350 (Nexus line) to $105.
It’s been years since I’ve used a laptop that actually had a middle mouse button, and it can be tricky getting the timing right to press the left and right touchpad buttons simultaneously to fake a middle button press. Happily, there’s a really simple way to turn a two-finger tap on the touchpad into a middle button click. This guide assumes that you are familiar with command line and scripting basics. Continue reading →
I’m not in the medical research field, but here’s a recent talk that I gave about some breakthroughs in gene therapy. As a software engineer, I’m fascinated by how analogous the process is to patching software.
My Android Wear app, Resistor Decoder, takes voice input from the user. I wanted to support several ways that users could say the “same” thing while maintaining architectural support for multiple languages. Continue reading →
Here’s a quick internationalization tip for managing your Play Store assets for Android Wear apps:
1) Run your app in a Wear emulator paired with a physical Android device.
2) One by one, go to each “screen” in your Wear app that you want to show in the Play Store entry, and perform step 3 for it.
3) For each supported language, change the input language on your Android device (via Setup -> Language & Input)
4) Take a screenshot of the emulator window, and save it with an appropriate name.
5) Repeat #3 until all languages are represented for the given screen, and repeat #4 until all screens are represented.
The magic of this technique is that the Wear emulator will switch languages along with the Android device, so you only need to navigate through your Wear app once to get screenshots for all supported languages.
I wrote an Android Wear app called Resistor Decoder. It lets you speak the color bands of a resistor into your Wear watch to get the resistance and tolerance value. The usage scenario is for someone who does electronics tinkering and ends up with a bunch of resistors lying on the table.
Amazon just announced the Fire Phone, a mostly average phone running their broken version of Android. There isn’t much it offers that other phones couldn’t do with some third-party software installed, but here’s what I’m excited about.
As you can see, it has four front-facing cameras. Forget about why they put those cameras there, since it’s a gimmick, but here comes the cool part. If you’ve made video calls, you know that you can either choose to make eye contact with the other person by looking in the camera (which is nice for them), or you can look into the eyes of the person on your screen (which is nice for you), making it seem to them as if you’re looking at their throat. You have to make this choice because you can’t put a camera where the person’s eyes are without drilling a hole in your screen.
However, with four cameras, you can derive a virtual camera that is where the person’s eyes appear on your screen, meaning you can look into a person’s eyes on your screen and they see this happening, too. The only unknown is whether or not the CPU or GPU in a phone would have the power do to this.
I should do laundry… Nah, I’ll write an unnecessary software application instead.
The latest unnecessary software application is my Smart Doorbell program. Consisting of a python program and libraries, Smart Doorbell solves the age-old problem of how to replace cheap things with expensive things that have a few more features.
Summary from the project README:
This program turns your Raspberry Pi into a doorbell. It can replace a traditional hardware doorbell, and it integrates with openHAB and has a number of customization features.
You’ve gone to the local county fair. You want to play the game where you throw darts at a balloon to win a prize.
First, however, you have to tell the vendor your phone number and give him the contact info of everyone you know. You also agree that the vendor can find out precisely where you are in the future, whether or not you’re playing the game.
Of course, this sounds so very reasonable, so you agree.
When you’re done playing, you walk away from the booth, but the vendor still has your phone number and the full contact info for you and everyone you know. If you decide never to go back, he won’t be able to know where you are anymore, so there’s that.