On March 7th, 2012, I announced the launch of Pushover, a simple mobile notification service with device clients available for Android and iOS. I kept some notes during the development process, which mostly occurred in the evenings and weekends around my other work.
I had been using Notifo for a year or so to receive push notifications on my phone from my custom network monitor, but last year the free service announced it was shutting down. When I switched back to my Android phone a few months ago, I was unable to download Notifo's Android app which never made it out of beta.
The source code to Android 4.0, nicknamed Ice Cream Sandwich, was made available last Monday. For developers of Android ROMs like my Blandroid project, these source code releases enable us to release our own modified versions of Android to users that prefer to use our software on their phones. The source code to the previous major version, Android 3.0, was not made available and was only given to certain tablet manufacturers like Motorola. While many complained about the lack of source code to a supposedly open source project, Google's "excuse" was that the code was not suitable for release. They rushed and hacked together version 3.0 to add a tablet-compatible interface to its then-current version, 2.3, nicknamed Gingerbread, so that tablet manufacturers could push out rushed and hacked-together tablets to compete with the iPad. Google told everyone to wait for Android 4.0 which would combine the tablet interface changes of 3.0 but still work on smaller screens like phones.
I put "excuse" in scare quotes because Google doesn't really need to justify their decision to anyone. Android is their product, they are free to do whatever they want with it, and any source code they release to anyone that isn't a partnering hardware vendor is a gift. That's not how they would like it to appear, though, and to most it would seem that anyone can just download and compile the code like any other open source project. To many people familiar with the term, "open source" is used for a project that is developed in the open, releasing changes as they are made, taking in patches and input from the community along the way before releases are finalized. Developers participate in the project, contributing code and project direction, releases are made, and developers and users use the software. Users sometimes become developers by fixing bugs in the software, which get merged in and pushed back out in future releases.
I've had an Ecobee thermostat in my house and now in my apartment for a number of years. It's a touchscreen thermostat equipped with 802.11 wireless that can be remotely adjusted and monitored from Ecobee's website as well as iPhone and Android applications. While the expected use case might be monitoring the temperature of one's home while at work, I often lazily use the phone applications while at home when I'm too cold to get out of bed to turn the heat up. Also, while Ecobee's website touts its "green" features and energy savings, working from home has always meant being unable to use automated work/home schedules and instead having to hold the same temperature all day. With some Ruby code and SNMP, I am now able to automatically detect when I am home and when I leave the apartment, and adjust the temperature automatically.
Last night I tried to visit one of the websites that I host on one of my dedicated servers, and to my surprise, I saw this instead of the usual content:
Since 10.5, Mac OS X has had integrated keychain support in OpenSSH that lets one store one's SSH private key passphrase in the keychain. This makes it easy to securely store the passphrase permanently, instead of just per-session or per-boot as ssh-agent(1) does (unless the "Remember password in my keychain" option is not selected, in which case the passphrase is only stored in the memory of the running
Some time in 2010, Google, Adobe, and "dozens of other high-profile companies" were hacked by the Chinese government. The attack was done through a previously unknown vulnerability in Internet Explorer and considered to be highly sophisticated. The attackers copied intellectual property of these companies and accessed Gmail accounts of human rights activists.
Rather than directly hack into the accounts of those activists, the entire e-mail provider was compromised.
Lauren didn't race, so Dave, Eric and I did 3 races on track 7. The first race, I had a best lap of 15.455, the second, Eric and I both had a best of 15.385, and on the third race I did a 15.443. Dave set the best lap time of the week with a 15.306 in the last race and Eric and I both tied for 2nd with our previous 15.385. Though as the girl at the counter said, the week started a day ago. Dave is currently 13th for the month and Eric and I are both 16th. Not bad for never even seeing the track before.
Back when I used OpenBSD on my laptop and Pidgin for instant messaging, I wrote a D-Bus script to watch incoming messages and forward any to my cell phone that were received while my screen was locked. The script forwarded messages to Prowl's web API, which would forward them to my iPhone using push notifications.
The last time I switched back to a Mac desktop, I had to switch back to Adium and lost the ability to selectively forward messages. While Adium does have an event action to run an AppleScript, there's no way of passing the actual event text to the script, so it has to talk back to Adium and try to find the newest message. The only option was to generate Growl notifications for all messages and then configure Growl to forward them to Prowl. I got fed up with that pretty quickly, so I modified Adium to create a new event type for "messages received while away". That way I could have the Growl notification only on that event, so I would only get messages forwarded while away. That worked better, but it prevented me from being able to go away while still at my computer without getting a bunch of messages queued up on my phone.
I keep reading stories about these new Android tablets that are destined for failure because they're too big or too small or too expensive. I owned an iPad and sold it after a couple months because I didn't use it enough to justify the cost. While its large screen was nice for viewing webpages or playing games on the couch, it was also one more device that I had to sync, charge, carry around, and possibly pay for another data connection for. With that in mind, I had an idea the other week: why doesn't someone make an Android tablet that just acts like a docking station (or "shell") for an Android phone?
The tablet would essentially be a big screen with no guts. An Android phone would plug into the back of it like the battery of a laptop does (think aluminum Powerbook but without the need for a coin), so that when it was installed, the tablet would be flush on the underside and have the same form factor as an iPad or other tablet. Once the phone was connected, the tablet would provide a larger display for the phone, just like plugging an external monitor into a laptop. The tablet would have no CPU, storage, or memory of its own, and wouldn't even need its own battery (though perhaps it could include an internal one for additional run time). Since the phone is still powering everything, it would still be able to use its WiFi and 3G connections.
At about 9am yesterday morning, I noticed on the monitor that the CPU utilization of one of my servers was abnormally high, in addition to a sustained 1mbit/sec of inbound traffic and 2mbits/sec of outbound traffic. syslog messages from Asterisk showed it to be a SIP brute force attack, so I dropped the offending IP (an Amazon EC2 instance IP) into
/etc/idiots to block it and went back to my work.
A while later, I noticed the traffic still hadn't died down, so I reported the incident to Amazon and my server's network provider. No luck on either front; Amazon just sent back a form reply stating the incident was forwarded to the EC2 instance's owner (yeah, seriously) and the network provider said they wouldn't bother adding an ACL to their border equipment unless it was needed to protect their entire network. With the IP blocked on my server, the CPU utilization had died down and it was no longer sending out reply traffic, but I was worried about the inbound garbage traffic counting towards the server's monthly bandwidth cap.
update: this behavior is now supported natively in git with subtree merging.
for a project i'm working on, i need to host a local copy of a remote git repository inside of my project's git tree, but rooted in a subdirectory. it wasn't as straightforward as i was hoping, so i'm writing this so someone else can find it.
i've always formatted my mac os partitions with case sensitivity enabled, which usually means formatting a new system and re-installing mac os x as soon as i get it. after installing the 10.6.2 update, i lost my system menu bar icons and was forced to restore from a 10.6.1 backup made the day before.
following apple's instructions, i booted to the snow leopard installation dvd, chose the "restore system from backup" option and thought i was on my way. about 50% into the recovery, the recovery application crashed: