Play Store, Android Wear, and Internationalization

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.

Amazon Fire Phone

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.

Smart Doorbell

This is how cognitive surplus works:

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.

App Permissions in Real Life

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.

bitcoins, tulip bulbs, and houses

Bitcoins have been gaining in popularity. Recently, the news was that they had surpassed a value of USD$1000 per bitcoin. (Of course, bitcoin proponents might instead say that the USD is valued at 0.001 bitcoin.)

I’m not an economist, but I thought I’d share some graphs of the value over time of items that seem to appreciate in value beyond their utility. Can anyone spot any similarities to bitcoins?

Tulip bulbs (price information is spotty, but nobody contests the overall trend):

Tulip bulb prices over time

House prices:

House prices over time

And now, bitcoin prices:

bitcoin prices over time

Time Machine Alternatives for Linux

I recently gave a short talk about what I discovered while looking for Linux alternatives to OSX’s Time Machine. There are a few solutions in there, from DIY shell commands all the way up to full GUIs with scheduling and housekeeping functions.

Addendum: I had been doing mirror-style rsync backups of user accounts previously, sometimes while the user was logged in. This had never presented a problem. When I switched to doing incremental backups, users reported being unable to start an X session. (Ok, they reported “my password doesn’t work,” but I was able to log in remotely via ssh; the basic login action was working fine.) It turns out that the .Xauthority file was becoming corrupt if I did an incremental backup while the user was in a active X session. The safest way around this is to only do incremental backups of user accounts while the users are logged out. This is probably the safest policy for other reasons as well, but when your users are on machines that are often only turned on while they’re in use, it’s less convenient to do it this way.

I try to figure things out. Sometimes this leads to a thought. Sometimes I write it down.

Bad Behavior has blocked 204 access attempts in the last 7 days.