Filed under: Activism — jon @ 19:09

If you asked a bunch of congressmen to perform open-heart surgery on someone, how do you think their patient would fare? An operation on an immensely-important technically-complicated system should be done by people who are experts in medicine. SOPA and PIPA are bills that, in attempting to solve a relatively small problem on the Internet, will break huge chunks of how the Internet works. These two bills have so many technical problems that they’re painful to list: we’d throw out DNS security entirely, we’d surrender immense censorship power to private companies, we’d put sites in danger of being taken entirely offline by the actions of a single commenter, and, the real icing on the cake, is that neither bill will actually do anything to stop piracy.

Yes, that’s the real insult here: the bills would penalize law-abiding citizens while doing virtually nothing to pirates. All the bill’s facets can be entirely circumvented by a browser plugin and moving your payment processing and hosting overseas. Yes, this will surely do a great deal to stop the pirates and other ne’er-do-wells of the world.

So imagine a world without YouTube. With a censored Google. Imagine a world where a private company is allowed to effectively take your website or Facebook off-line because someone posted a link to a recording of a TV show or a lip-sync of a favorite song.

Please, write and call your representatives and tell them that you oppose SOPA and PIPA in any form, and that any future Internet regulations should 1. be carefully considered by experts on Internet technologies, 2. carefully examine if the problems can actually be solved by technical means, and 3. weighed against the costs they will impose on law-abiding citizens’ lives. Thank you.

Filed under: Programming — jon @ 19:19

I decided to install Cyanogenmod 7.1 on a microSD card that my Nook Color can boot. I get a nice tablet to play with and none of the original firmware gets touched. Win-win! Much has been written about how to do this, but there are a few scattered things which will make your life easier.

  • If using Linux, you’ll want to write the image file to the block device (/dev/sdb, etc.) and not the partition (/dev/sdb0, etc.).
  • If using a procedure documented for 7.0.x, the boot partition will not be big enough to hold your 7.1 installation and ZIP file. Expanding the (only) partition to 200 MB works fine. Note the current version of GNU PartEd tools won’t be able to do this (they don’t like something about the particulars of the FAT32 image). Use the Windows7 disk manager or the free version of EaseUS.
  • To get the boot menu up (if ever you need it), hold down the “n” nook button while powering on.
  • Slow microSD cards will make your Android run very sluggishly and cause a lot of force closes due to timeouts. Check the spreadsheet and buy something that has a high “Random Write 4KB QD=32″ value. I first tried on a PNY class 4 card (0.029 MB/sec on that spreadsheet) and it was neigh-unusable. Note that a lot of class 10 (fast sequential write) cards have absolutely horrid random write performance.
  • Once you have Cyanogenmod booting into the setup wizard, you’ll need to follow a few steps to turn on WiFi before you actually run the Google account sync.
Filed under: Personal,Programming — jon @ 17:02

I’ve had my Android Dev Phone 1 (T-Mobile G1) for a year now, and figured I should update my previous post about what applications I recommend:

  • Google Listen: it isn’t the perfect podcast listener, but, as with most Google products, the difference between it and perfect is small enough to tolerate.
  • Astrid Task/Todo List: a great to-do list with a nice, simple widget. I’ve recently starting using its synchronization with Remember the Milk and it works well. My list is in the cloud and available to me from anywhere.
  • ConnectBot: still the best ssh client I’ve found.
  • RealCalc Scientific Calculator: I know, there’s one installed, but it doesn’t do RPN or binary/hexadecimal; this one does.
  • RingDroid: my favorite application for getting audio files (or parts of them) to ringtones.
  • Google Voice: now everyone can afford the power of a software PBX.
  • My Tracks: fun for mapping favorite bike routes and sharing them via Google Maps
  • Google Sky Map: simple, amazing, and tons of fun for people who are new to the power of a smartphone
  • Voice Recorder or Droid Record: turns your phone into a basic audio recorder. Handy for meetings, notes in the car, etc. Both work very well, just with different interfaces.
  • Google Goggles: I used to recommend Barcode Scanner (which is still handy), but this is a bit more sophisticated; awfully handy when shopping and making notes. Take a picture of a price tag (barcode), object, building, text in a foreign language, etc., and Google will work its magic.
  • Contact Owner, by Paranoid Android: changes your lock / wake-up screen to include a little message on how to contact you (in case you lose your phone).
  • Astro File Manager: a decent file manager (think Dolphin / Nautilus / Explorer) that also has a process manager.
  • Pintail: if you ever lose your phone, you can send a specially-formatted SMS (with a PIN) to it and it will respond with its GPS location
  • BeamReader PDF Viewer: It’s the only PDF viewer I’ve found that can reliably (and quickly) handle very large PDFs, like data sheets for electronic parts. There’s a free version with limited capabilities and then a “key” version you can purchase which will unlock the remaining features. The only pay-for application I have installed at the moment.
  • KeePassDroid: a password manager based on the open-source KeePass. Does what it says.
  • Google Buzz widget: if you use Buzz, it does what you expect it to do.
  • Android Terminal Emulator: rarely used, but fun for poking around or the occasional hack.
  • Compass: again, does what you’d expect. Works with GPS off, which is nice for battery savings.

And the games / silly applications:

  • Jewels: a Bejeweled clone.
  • Magic 8-Ball: “the outlook is amusing.”
  • Coin Flip: I almost never carry change; this helps settle who drives to lunch.
  • Ethereal Dialpad: a neat little “touch to make music” app, good for demonstrating the interface to others. I wish it supported multi-touch.
  • Tricorder: silly fun watching the raw accelerometer data, etc.
  • Barrage Lite: a Scorched Earth clone.
Filed under: Personal,Programming — jon @ 19:20

I ordered three hard drives from Amazon, Western Digital Caviar Green 1.5TB models (WD15EADS). They were inexpensive and I talked to people who used them in their desktop setups. It turns out that Western Digital, at some point, changed the drives they were making so that they no longer work under a RAID setup. The drives routinely fault out of the array because you can’t turn on TLER. Also, they make a horrible loud clicking noise every ten seconds as the heads are parked and un-parked due to routine disk access under Linux. Nowhere on Western Digital’s page about the drive does it say “do not use in a RAID setup” or “do not use in Linux.” Oops.

From scouring the web, it turns out that the “sub”-model number and build date are important. My three drives were WD15EADS-00P8B0, built Nov 2009, firmware 01.00A01. There are reports that older build-date drives can be made to work; true or not, mine could not. Western Digital’s customer service is of zero help, blaming the problem on everything but the drive.

No more Western Digital drives for me. I’m returning these three as defective. I’ve put WD drives in my last three builds because they’re inexpensive and reliable. No longer. Back to Seagate drives (yes, even after their ST31500341AS firmware debacle).

Filed under: Programming — jon @ 17:51

Since most of what I found on the web was either wrong or more complicated than needed, here is what worked for me. (My drive image file was old.vdi and I wanted a new copy of that disk, new.vdi, which was 24 gigabytes (give or take).

  1. cd ~/.VirtualBox/HardDisks
  2. vboxmanage createhd –filename new.vdi –size 24000
  3. vboxmanage clonehd old.vdi new.vdi –existing
  4. Open VirtualBox, select the virtual machine, and click on Hard Disks.
  5. In the Attachments section, click on the existing image file name (old.vdi) and click the Select Hard Disk button to its right. This will open the Virtual Media Manager dialog.
  6. Select the old image file and click Release. Remove the old image file (old.vdi).
  7. Click Add and browse to the new image file (new.vdi). It will now appear in the Hard Disks list.
  8. Click the Select button at the bottom of the Virtual Media Manager dialog.
  9. Go download a gparted LiveCD .iso file. Click on the virtual machine’s CD/DVD-ROM settings. Make sure “Mount CD/DVD Drive” is checked, pick “ISO Image File”, and browse to the gparted ISO file you just downloaded.
  10. Click the OK button at the bottom of the Settings dialog to close it.
  11. Start up your virtual machine. Click in the window and press F12 to bring up the boot devices menu. Pick “c” for CD/DVD-ROM.
  12. Run gparted, click on your partition, and resize it to occupy the whole disk.
  13. Shut down gparted, reboot, and wait for Windows to check your new hard disk.
  14. Celebrate!
Filed under: Uncategorized — jon @ 22:10

Thanks to Casey for the phone call tipping me off about the weather conditions. Click to embiggen.

moon, casting a rainbow in a circle around it, viewed through the silhouettes of leafless trees

Filed under: Kubuntu,Programming — jon @ 15:21

A quick note for anything trying to get Gears to work with Firefox 3.5 and 64-bit Linux: follow the steps in this post. The post is for gcc 4.3.3, but it worked just fine with my gcc 4.4.1. Beware: the svn checkout step will take many many minutes.

sudo apt-get install build-essential subversion m4
svn checkout http://gears.googlecode.com/svn/trunk gears-trunk
cd gears-trunk
wget http://gkovacs.xvm.mit.edu/google-gears/gears-gcc433.diff
patch -p0 -i gears-gcc433.diff
chmod +x third_party/gecko_1.9/linux/gecko_sdk/bin/xpidl
cd gears
make -s

The installable file will end up in ./bin-dbg/installers/ (that is, something like /home/foo/gears-trunk/gears/bin-dbg/installers), with a name like gears-linux-x86_64-dbg- In Firefox, pick “Open File” from the File menu and browse to that directory; pick the XPI file and you should be good to go. I’ve only tested it with offline gmail, but that seems to work fine.

Filed under: Images,Personal — jon @ 20:17

Diann and I spent a lovely Memorial Day weekend up in Kinsale, VA. Paul referred to the event as “Medium-Sized Dog Fest”:

Filed under: Review — jon @ 20:01

Since my new job will have me working from different places, I needed to bite the bullet, buy a mobile phone, and move into the 21st century. I bought an Android Dev Phone 1, an HTC Dream (a.k.a. a fully-unlocked T-Mobile G1). Getting it on T-Mobile service proved a little tricky, as they sent me a SIM card provisioned for Sidekick service, which simply doesn’t work on the G1. It took a while to find someone at T-Mobile who could help me, but once I got on the phone with Lindsay, she got me all fixed up.

The good:

  • Nice case, display, keypad, and slider (if you want to call it that). Thicker than an iPhone, but about the same mass. HTC has a reputation among my peers for building phones that don’t last very long; we’ll see.
  • Very nice UI. It only took a half hour of use before the interface became second nature and I stopped noticing it. The notification system (you have a message, weather alerts, etc.) is unobtrusive but useful.
  • After upgrading to Android 1.5 (a.k.a. Cupcake), the interface is as nice as any phone I’ve used. The on-screen keyboard is very usable, the camera is snappier, and the UI got a bit glossier.
  • Absolutely fantastic integration with Google services. (Big surprise, I know.) All your email contacts are in your phone book. Upcoming Calendar items can show up on your “home” screen as a widget. Google Talk IM sessions work seamlessly like texting but with your contact icons and such. You get the idea.
  • The web browser feels snappier than the one on the other phone’s I’ve used (better panning and scrolling).
  • Market has a ton of useful apps (a good ssh client, ConnectBot; a passable Google Reader client, Greed; etc.). The vast majority of them are free.
  • Respectable battery life for a tiny computer. I don’t use the voice part much, but use the browser/email/etc. over WiFi a lot; I can go two days between charges.

The bad:

  • The default browser can’t run Adblock Plus. Sigh.
  • Marketplace interface could use some love: only two sort options, and there must be a better way of browsing a thousand apps.
  • Turning on/off WiFi or GPS (to save battery) is cumbersome, requiring navigating several menus. Thankfully, the free Market apps “ToggleWiFi” and “Toggle GPS” make them one-touch.
  • Built-in camera is pretty poor; though not atypical for a phone. Lots of haloing, fairly slow focus, low ISO, lousy automatic while balance, etc.
  • The lack of multi-touch zoom is a slight hindrance on documents and some web pages.
  • Developer’s kit can be tricky to install. Some pages haven’t been moved from the old Google code site, so I found broken links and out-of-date instructions.
  • There doesn’t yet appear to be any easy way to run apps from the SD card. The phone will store your data there, but there’s limited space for installing applications. There’s are a few tutorials on doing it via command line, but I’ve not yet tried them.

Must-have applications:

  • ToggleWifi: one-touch toggling of the WiFi radio; great battery-saver.
  • Toggle GPS: one-touch toggling of the GPS receiver; great battery-saver.
  • Ring Toggle: one-touch switching between ring, vibrate, silent. Faster than tapping the volume button many times.
  • Greed (not free): RSS reader that ties in to Google Reader. It’s not a fantastic RSS reader, but if you use Reader already, the integration is well worth it.
  • WiFi Tether for Root Users: only for unlocked phones, but makes your phone act like a WiFi access point (well, an ad-hoc peer, to be precise). Essentially allows tethering your phone to your laptop.
  • ConnectBot: ssh and telnet client
  • DroidRecord: use your phone as a voice recorder
  • RingDroid: convert your audio files into ring tones; has basic editing like cropping.
  • WeatherBug: a little slow and bloated, but the best weather app I’ve found. The weather alert notifications are nice.
  • Magic 8-ball: shake and wait for your answer

All in all, a strong smartphone. If you’re already using Google services (gmail, calendar, etc.), this phone will very likely knock your socks off. If you aren’t, it’s still a good phone, but a harder sell.

Filed under: Entertainment — jon @ 10:40

Continuing with Jono’s meme:

  • Grab the nearest book.
  • Open it to page 56.
  • Find the fifth sentence.
  • Post the text of the sentence in your journal along with these instructions.
  • Don’t dig for your favorite book, the cool book, or the intellectual one: pick the closest.

My result (while at work): DeviceRect must compute these values from those supplied.” — Design Patterns, Gamma, Helm, Johnson, Vlissides

Filed under: Personal — jon @ 15:45

To folks who are wondering if I’ve dropped off the face of the earth, a quick note:

Sorry for the lack of interesting updates, but a few things have gone down in the past couple months that have kept me from keeping in touch. My company is closing down our office and moving the product elsewhere, so we’ve all been doing two jobs (our normal schedule work and trying to get everything transitioned to the new development team). Add in little things like doctor’s visits, a water heater cracking open, and some travel for work, and you have one busy and tired me.

It looks like things aren’t going to calm down here until Thanksgiving week, so until then: be well, do good work, and keep in touch.

Filed under: Programming — jon @ 14:28

Trivial but handy utility/function to give you a subversion diff with paging and syntax coloring:

svndiff ()
  svn diff $* | colordiff | less -r

Pass it anything you’d pass to “svn diff”: e.g., “.” for the current directory, a list of filenames, or options like –no-diff-deleted.

Filed under: Kubuntu,Programming — jon @ 18:24

Here in the underground bunker we have computers named after fruits:

  • lime
  • lemon
  • mango
  • cherry
  • indigo – not a fruit, but replaced “indulgence”
  • oreo – my wife has convinced me that Oreos are definitely a fruit

All machines run Ubuntu server or Kubuntu, and several dual-boot and/or virtualize XP.

Filed under: Programming — jon @ 18:07

The WordPress RSS widget has two little flaws, in my opinion. Here are my fixes, in case they help anyone:

  1. For an article the widget will provide a “title” attribute that contains the whole content from the article. Since this site implements a tooltip-like hover box for links with a title element, that can get really ugly. The fix is trivial, and involves truncating post content at 500 characters.
  2. When given a feed from my Google Reader “shared items” list, the title of the blog is mashed against the end of the article title. I’ll get things like “Cat Stuck Up TreeRoanoke Times”, which is also really ugly. The fix is somewhat more complicated, and involves not including the “source” element in the article title.

WordPress 2.6 also finally integrated the ability to log in and administer your blog over HTTPS, so that’s one less patch/plugin I need to track.

Happy hacking!

Filed under: Images,Personal — jon @ 23:23

My mother leans over an ice cream churn, the top edge just visible, and looks down in anticipation

A golden retriever / spaniel mix sits in shaggy grass, shaded by trees growing below a red outbuilding

Close-up of a branch with a moss-like growth, barely-visible spider web strands leading away from it, and a very de-focused image of a dog in the background

(Click through the last image to see it in a bigger size, in which I think it looks considerably better.)

Filed under: Activism — jon @ 23:34

John Adams continues: “The only maxim of a free government ought to be to trust no man living with power to endanger the public liberty.”

This was going to be the first year I donated money to a political candidate. The movement of this country’s national politics has become more frightening by the week, and I thought that adding campaign money to my advocacy might be another method for changing that. I was going to contribute to my national Congressional races and to that for the Presidency.

Today’s FISA capitulation, to be frank, knocked me on my tail and made me reconsider. Over the last several months I’ve called, written, and persuaded several friends to do the same. I watched politicians who had stated they would support blocking retroactive immunity for law-breaking companies turn tail and vote for this bill, a bill better for the Executive than the previous FISA bill. I’ve heard some say that voting for the bill was politically wise, a CYA move to show strength against “the terrorists” for the upcoming elections. I do not disagree; I do believe, though, that civil liberties and national security are not at odds with one another, and that true leadership should demonstrate this.

I’ve now spent much of the day reconsidering my upcoming donations. Where is the leadership standing up for constitutional protections? Where is the leadership standing in opposition to torture, kidnapping, and undermining our image worldwide? There were voices leading in the Senate and House, but they had too few friends to prevent this travesty of a bill from passing. So, I’ve decided that I’m still going to donate money, but not to whom I had planned. I’m going to see if I can get Dodd and his like some more friends.

To every Senator and Presidential candidate who failed to support the three amendments today, to every Representative who voted for H.R. 6304: you’ve made yourself an opponent. Here’s what I will do:

  • I will not donate any money to your campaigns.
  • I will donate money to your opponents in primaries and, if you generally vote in ways I don’t like, general elections.
  • I will lobby my friends and associates to do the same; given that they generally have a limited budget, I’m willing to bet that means less money for you, too.
  • Provided you’re an otherwise reasonable politician, I will not speak ill of you, but I will refrain from speaking of you. You’ve just lost a persuasive advocate.
Filed under: Activism — jon @ 9:17

Stop the Spying logo

Please call your representative right now and implore them to not pass the false-compromise FISA bill, H.R. 6304. The vote comes up this afternoon, so please hurry!

Passing H.R. 6304 would amount to a Congressional seal of approval on illegal surveillance. Even if the President and the telecoms knowingly and brazenly broke the law, the provision in the bill seeks to prevent the courts from holding them accountable. Yet, the suits against the telecoms may be our last hopes for a judicial ruling on whether the President can break the law with impunity.

Filed under: Personal — jon @ 0:01

This project would have fizzled at several points had Diann not been there to teach and encourage. (I can be stubborn on rare occasions.) The interior is recycled graph paper and the exterior is wallpaper from an old sample book. It was great fun and will be used as my next work notebook; one wonderful feature of this type of binding (and why Diann suggested it, despite 30-odd tiny knots) is that it lays flat when opened. Highly recommended if you have someone to teach you the stitch!

Half-A4-size hand-made book laying face up, showing the stitched binding and curved needle used.

Close-up of the above hand-made book's spine, showing the Coptic stitching style.

Filed under: Images — jon @ 21:40

Movie at the Lyric tonight, so nothing complicated:

Black and white portrait of a medium-sized dog, looking at the camera in front of a blank wall

Filed under: Personal — jon @ 22:43

I made a freezer paper stencil shirt!

The instructions elsewhere are as clear as anything I’d write, but what I learned today:

  • For multiple color prints, don’t paint the under layers where the top layers will go; you build up too much ink if you have layer on top of layer. A bit of overlap to make registration easier would probably be fine.
  • Iron a piece of freezer paper on the inside of the shirt before ironing any pattern on the outside; it will keep the outside fabric surface from wrinkling from the paint, stretching, etc.
  • If you’ve a short or long torso, adjust the height of the stencil appropriately. (Duh, but see image below.)
  • Shun the frumious bandersnatch!

Design copied (with permission) from Quadro’s fabric work:

Brown shirt with a cartoon piece of toast smiling, hugging a pat of butter, also smiling.

Next Page »
  • dreamhost.com logo
    Happily hosted by dreamhost.com
  • This site is green.
  • Bike Month
    miles biked47.50
    gallons saved1.36
    dollars saved$5.22
    pounds CO2 saved26.60
    calories burned1677