How To Restart Ubuntu Audio

Sometimes I have issues with audio on my Ubuntu installation, usually after some rogue Flash applet destroys it (don’t ask me why.) What works for me is the following:

$ pulseaudio -k

After I do that pulseaudio restarts itself, but in case there is no audio you can try to followup with:

$ pulseaudio

Use at your own risk (I guess the worst that can happen is that you’ll have to reboot)

Google App Engine Shortcomings

I’ve been writing some Google App Engine code lately and while the framework is very compelling and has many great features (e.g. task queues) it also has its shortcomings. The ones that bother me most are:

  1. No shared memory among instances. I even wrote a StackOverflow question about it to see whether I was missing something. The only way to emulate memory that will last for the entire lifetime of your instances is to purchase a backend instance for a minimum of 58$/month.

    Why is this so important to me? Because I want to store a cryptographic key safely and in a way that even if someone has access to my computer, my Google account or my code, they will still need another piece of data that is either in my head or stored safely someplace else (think bank vault.) I do not want to persist the key in a data store.

  2. No https for custom domains. If you’re writing a website that requires a secure https connection, then essentially you are limited to https://yourapp.appspot.com. You can’t use your own domain name. I read somewhere that it’s on Google’s todo list for App Engine, but Google never states when they’re going to actually implement things, which is a shame.

    UPDATE: SSL for custom domains is available now. Make sure you consider the pricing if you’re going to use this option.

  3. Outgoing emails cannot be signed. This practically prevents use of App Engine’s outgoing email feature, since emails that are not signed with DKIM these days will probably go into the spam folder of major email providers. To circumvent this I use task queues (for rate control) and Amazon SES, which works OK but requires a lot of code to be written instead of the few lines it would have taken if Google provided proper facilities for signing emails.

    UPDATE (29-Feb-2012): Signing with DKIM seems to be enabled now. I haven’t tested it myself. The issue was opened nearly 2 years ago. I’m surprised it took so long as I consider sending emails from a web service a pretty basic thing.

Happy Birthday To Me. I’m 35

Wow. 35. This age comes with some serious what-am-I-doing-with-my-life kind of thoughts. Being unemployed, single and living with a cat at that age is hardly normative (at least in Israel) and despite being very content with the current situation it’s hard not to ponder other life choices.

In any case, it’s time for the yearly look back:

A year ago I left my job to start a new venture with a friend. We since grew to a 3-person team and by now we have a very early version of our product, while we’re still tweaking the requirements for the first release. Hopefully in a few months we’ll have something to show for. This is probably the year in which we’ll know for sure whether this project is destined to take off or not.

Being unemployed (and having no income) for so long is my biggest worry for the upcoming year. I was very willing to spend some of my savings on this project, but I was hoping it will be in a better place by now. Other than that, I don’t think there’s a lot to say about entrepreneurship that hasn’t been said before. The joys and sorrows of this road are well documented in countless articles. I’m otherwise happy with my life, something I wished myself a year ago on my birthday post.

Travelling: I was abroad twice – France/Germany and Switzerland. Both trips were great. Having already booked one trip for this year – to The Prodigy’s 3rd Warrior’s Dance Festival – I already made sure that I’ll keep “exploring the world” this year as well. Travelling has become one of my favorite things.

Side projects: I updated Dindy a few times in the past couple of weeks, hoping to address issues users have been experiencing for a while. I don’t plan to add any new features to Dindy – this was just to prevent it from rotting in the Android market. Unfortunately it hadn’t gained any new users for a long time now, yet it remains with a relatively high user score (4.2 out of 5.)

Another side project is my online will idea from nearly 3 years ago. I already have an almost fully functional version of it running on Google App Engine, but there’s still a long way to go as it lacks visual design (if you’d like to help me with that – let me know) and there’s still quite a lot of code to write.

Workouts: Having suffered some injuries I’m working out (running) only twice a week now. I’m not happy about it, but I’m still in pretty good shape so it’s not that bad. I hope my injuries will subside and that I’ll be able to get back to my 3-workouts-a-week routine at some point.

That’s about it, I guess. I hope you’re happy too.

Followup Dindy Update

A week after the previous update, I started getting crash reports on the Android developer dashboard. The core reason for the crashes was that I started building Dindy against a newer Android platform version. As a result, a compatibility hack related to how services are started stopped doing its work and Dindy started crashing.

To those of you who are interested, the difference is that Service.startService() started returning START_STICKY instead of START_STICKY_COMPATIBILITY.

I consider this very poor backward compatibility support on Android’s side. It also forced me to deal with Dindy’s service being killed by the Android platform at any given time. The solution wasn’t a trivial one – I had to add a new table to the database to save Dindy’s runtime state.

At least now hopefully (and excluding other bugs) Dindy will work on most phones, even those where the service is being killed for no reason.

Dindy Got An Update

After a year of not updating Dindy and mainly apologizing to users from time to time because Dindy doesn’t work on their phones, I finally updated Dindy. The trigger was a change made in Locale, which Dindy supports. Sadly enough, I’m pretty sure it will still won’t work on many phones.

I still haven’t managed to get my hands on a phone, on which Dindy doesn’t work, long enough to hook it up to my computer and figure out what the problem is. But since it works well on all base (“Nexus”) versions of Android and also on many other devices – I blame the changes made to the OS by phone manufacturers.

Hopefully I’ll figure it out. While Dindy is pretty much a finished and abandoned project, I would still like to know that it works well for whoever is using it.

Thomson Cable Modem Drivers And Manuals

Here are USB drivers and manuals for Thomson’s cable modem and gateway products.

The manuals and driver in the zip file are for the following models:

  • DCM325
  • DCM425
  • DCW725
  • DHG520
  • DHG525
  • TCM420
  • TCM425
  • TCW710

The manuals are in these languages:

  • English
  • French
  • Swedish
  • German
  • Hebrew
  • Dutch (the file name is Netherlands)
  • Polish
  • Portuguese
  • Spanish

These are all from an original old CD I got around 2005 with my TCM425.

WARNINGS:

  1. Use at your own risk. I recommend first looking for official drivers for the product online or contacting your Internet service provider before trying these drivers.
  2. Since you probably don’t know me – don’t trust me and check the files for viruses first.

Idea: Online Identity Score

A friend of mine wanted to start using eBay, both as a buyer and as a seller. After just a few days her account was permanently suspended, with no option to ever return to eBay. The reason appears to be some mix-up with PayPal. I’m saying “appears to be” because eBay doesn’t tell you why your account is permanently suspended. Calls to the live person support don’t help – the support people just recite a pre-written message and do not say anything else. Apparently the PayPal mix-up made someone in eBay think my friend was a criminal and that’s why she got this harsh treatment.

(On a side note: I witnessed one of these calls. It makes you feel really uncomfortable. If you want to see how criminals are treated, get your eBay account suspended and then call them to ask why. Just know that you will never be able to be an eBay user again)

My idea revolves around verifying that the person is real and “innocent.” Much like the American system of financial credit score, using a person’s email address, one service will be able to trigger an “online identity score” check with other services that user is registered to.

For example, let’s say I’m registering to eBay. During the registration process I give my Gmail address, which I also use for Facebook. With my consent, eBay will be able to query Google and Facebook and ask them about how genuine my account is, so as to verify both that I’m a real person and that my account hasn’t been hacked (both Gmail and Facebook already have fake account and anti-hacking protections.)