Swan Laundry will pick up your laundry at your hotel, wash and fold it, and return it the same day for a $50 flat fee.

Wind Mobile has an unlimited 3G hotspot plan for $35 per month (they will throttle you if you exceed 10GB in a month), a better deal than any US carrier offers. They sold me a refurbished Huawei hotspot for $45 (why should the NSA have all the fun listening in?)

Urban Fare is an excellent place for breakfast and fancy groceries, specially the Shangri-La location.

I got an unexpected but quite welcome treat this morning for my birthday. A mini-flock of 6-8 red-masked parakeets, better known as the wild parrots of Telegraph Hill, descended on a hawthorn tree in my back yard and proceeded to gorge themselves on its berries for nearly an hour.

San Francisco sweeps streets twice a month in residential neighborhoods, and you will be fined if your car is parked on a street being swept. On my street, the schedule is the first and third Monday of each month, between 9am and 11am. I was trying to create reminders to myself in my calendar. Unfortunately, iCal does not have the ability to specify a recurring event with that definition.

No matter, Python to the rescue, the script below generates a year’s worth of reminders 12 hours before the event, in iCal vCalendar format. It does not correct for holidays, you will have to remove those yourself.

The single greatest feature of the iPad is the fact it cannot receive phone calls. Despite being a telecoms engineer by training, I despise phones, and it seems the millennial generation shares my disdain, as it favors less intrusive means of communication like texting.

The iPad is an essential device for me. I am on a 2-year upgrade cycle (at best) for phones, a 5-year cycle for my desktop Mac Pro, and have stopped using laptops altogether, but I will get every single iteration of the iPad. Now, even though my jacket has a pocket sized large enough to hold my full-sized iPad, the weight and bulk means I seldom did so, and kept it in my bag, which I rarely take out with me when going out for lunch. When I saw the iPad Mini and how lightweight it was, I bought one and started carrying it with me all the time.

The Mini is not a replacement for my Retina iPad, as my worsening eyesight makes it a strain for sustained reading, which is why I kept my grandfathered unlimited AT&T data plan on the full-sized iPad and got a limited Verizon plan on the Mini.

No, the device that was displaced is actually my iPhone. The iPad Mini weighs barely twice as much, is thinner, fits in my jacket pocket but has a screen 4 times the size while remaining single-hand-holdable, and is actually usable as a web browsing device or eBook reader, unlike the iPhone’s cramped screen. I don’t believe in the 5-inch phablet form factor, which combines the cramped screen of a phone with the the bulk of a tablet, i.e. the worst of both worlds. I find I never use the iPhone as anything else than a dumb phone any more. I consume less than 60 minutes of voice per month, and if my wife and my startup’s co-founder would let me, I would ditch mobile phones altogether.

Alas I am unable to cut the wireless phone tether, but there is no point in my spending $100 a month on an unlimited data plan for my Verizon iPhone 4, so now that my contract ended, I ported my number over to my old unlocked AT&T iPhone 3GS with a prepaid plan from Airvoice (a MVNO that has the cheapest rates I could find online). At $0.10 a minute without any exorbitant cellco taxes or spurious surcharges, I can expect to spend $6 a month, or 94% savings. That more than covers the $20 a month I pay extra for the iPad Mini’s data plan. The only reason I still use an iPhone instead of switching to a dumbphone is the automatic address book synchronization with my Mac and iOS devices.

Months ago I showed my father how to take screen shots on his iPad and iMac, and he routinely takes them while using FaceTime video conferencing with my 1 year-old daughter. Due to poor bandwidth at home (we live in San Francisco and are subject to the tender mercies of AT&T’s not-even-third-world-grade DSL), the image quality can be described as blurry VGA at best. Yet he is happy with the results, and even made a photo book featuring many of these screenshots, showing the wide range of fleeting expressions she displays. When printed at passport photo size, the fuzziness is surprisingly passable. He has also gotten my technophobe mother in the game.

I spend a lot of time obsessing over the finer points of camera and lens technology, and how to wring the best technical quality out of my photos, but my parents show how content trumps presentation.

Despite my hatred of all things Sony, I purchased two of their cameras in the last few months: a RX100 for my wife, and a RX1 for myself. the bragging rights of a full-frame sensor with a Zeiss 35mm f/2 prime were too much to resist.

This thing is built like a tank. It feels very dense.

The mode, AF and exposure compensation knobs, while not locking, have tight detents and are impossible to knock off their settings by accident.

The big lens means limited handholds, and the lack of a textured grip means it is quite slippery. I dropped mine on a concrete floor, entailing expensive repairs (it was still functional, but the focus ring was no longer spinning smoothly). A wrist or neck strap is a must-have with the RX1.

It is not compact by any means, comparable to the Sigma DP2 Merrill in bulk. Due to the lens protrusion, it is less pocketable than my Fuji X100.

The lens, while excellent in terms of sharpness and vignetting, has very severe barrel distortion. Lightroom can correct for that, but you lose resolution in the process.

Unfortunately it is merely a Sonnar, not a Planar or better yet a Biogon. I don’t remember the 35mm f/2.8 Sonnar in the Contax T3 having this much distortion, though.

Autofocus is only so-so.

Image quality at high ISO values is outstanding, as you would expect from a full-frame sensor from the leading manufacturer today.

The WordPress instance running this site was no longer able to automatically update plugins (and presumably not the core either) after I upgraded from a 32-bit to a sparkling fresh 64-bit PHP install at Joyent. It would start the update, and show a spinning logo and then just hang.

After much debugging, I found out the problem is that the class-pclzip.php that is responsible for unzipping was failing silently with the message:

This isn’t terribly helpful, but digging in, it turns out that class depends on the PHP zlib module, and on 64-bit operating systems (more precisely, operating systems with 64-bit large file support enabled), zlib.h #defines gzopen to be gzopen64. PHP does not protect itself adequately and thus the PHP function gzopen gets renamed gzopen64 as well, this throwing class-pclzip.php for a loop, along with a number of other systems like PEAR.

Fixing this requires recompiling PHP. Ubuntu Karmic includes a work-around, but I run Solaris and build from source, so I contributed a patch filed under bug #53829.

Automattic should probably patch class-pclzip.php to deal with gzopen/gzopen64 as there are a great many broken PHP installs out there (the PHP bug has been open for over a year and a half without what I would consider an acceptable solution), and it is surprisingly difficult to find a solution online. I guess a great many WordPress installs are still 32-bit, which is kind of sad.

Tor, the leading publisher for Science Fiction and Fantasy books, announced they would be doing away with DRM in their eBooks. The product pages for their books on iBooks now mention “At the publisher’s request, this title is being sold without Digital Rights Management software (DRM) applied”. I figured it would be a good idea to uncripple the many Tor eBooks I have in my collection.

I wrote a quick little Python script to scan my growing iBooks library for books that could be updated. The procedure is to delete the book from both iTunes and iPads, then download it anew (restarting iTunes is also needed after deleting). Apple keeps track of your purchases and will not charge you again.

Update (2013-11-06):
OS X 10.9 Mavericks and the new iBooks app changed the location of the iBooks directory, I changed my script accordingly (and made it adjust depending on which OS version you have). Also, the file names have changed and no longer embed author and title, so I am extracting them from the XML metadata files.

In the bad (good?) old days when currency’s worth was established by the amount of gold or silver in coinage, kings would cut corners by debasing currency with lead, which is almost as dense as gold or silver. In the New World, counterfeiters debased gold coins with platinum, which was first smelted by pre-columbian civilizations. Needless to say, the fakes are now worth more than the originals.

The public was not fooled, however, and found ways to test coins for purity, including folkloric ones like biting a coin to see if it is made of malleable gold, rather than harder metals. People would then hoard pure gold coins, and try to rid themselves of debased coins at the earliest opportunity. This led to Gresham’s Law: bad money drives out good money in circulation.

After a year of using Amazon Web Services’ EC2 service at scale for my company (we moved to our own servers at the end of 2011), I conjecture there is a Gresham’s Law of Amazon EC2 instances – bad instances drive out good ones. Let me elaborate:

Amazon EC2 is a good way to launch a service for a startup, without incurring heavy capital expenditures when getting started and prior to securing funding. Unfortunately, EC2 is not a quality service. Instances are unreliable (we used over 80 instances at Amazon, and there was at least one instance failure a week, and sometimes up to 4). Amazon instances have poor disk I/O performance that makes them particularly unsuitable to hosting non-trivial databases (EBS is even worse, and notoriously unreliable).

Performance is also inconsistent—I routinely observed “runt” m1.large instances that performed half as well as the others. We experienced all sorts of failure modes, including disk corruptions, disks that would block forever without timing out, sporadic losses of network connectivity, and many more. Even more puzzling, I would get 50% to 70% failure rate on new instances that would not come up cleanly after being launched.

Some of this is probably due to the fact we use an uncommon OS, OpenSolaris, that is barely supported on EC2, but I suspect a big part of this is that Amazon uses low-end commodity parts, and does not proactively retire failed or flaky hardware from service. Instances that have the bad luck of being assigned to flaky hardware are more likely to fail or perform poorly, and thus more likely to be be destroyed, released and a new one reassigned in the same slot. The inevitable consequence of this is that new instances have a higher likelihood of being runts or otherwise defective than long-running ones.

One work-around is to spin up a large number of instances, test them, and destroy the poor-performing ones. AWS runts are usually correlated with slower CPU clock speeds, as older machines would be running older versions of the Xen hypervisor Amazon uses under the hood, have less cache, slower drives and so on. Iterating through virtual machines as if you are picking melons at a supermarket is a slow and painful job, however, and even their newer machines have their share of runts. We were trying to keep only machines with 2.6 or 2.66GHz processors, but more than 70% of the instances we were getting assigned were 2.2GHz runts, and it would usually take creating 5 or 6 instances on average to get a non-runt.

In the end, we migrated to our own facility in colo, because Amazon’s costs, reliability and performance were just not acceptable, and we had long passed the threshold beyond which it is cheaper to own than rent (I estimate it at $5,000 to $10,000 per month Amazon spend, depending on your workload). It is not as if other cloud providers are any better—before Amazon we had started on Joyent, which supports OpenSolaris natively, and their MTBF was in the order of 2 weeks, apparently because they replaced their original Sun hardware with substandard Dell servers and had issues with power management C-states in the Dell server BIOS.

The dirty secret of cloud services is that there is no reliable source of information on actual performance and reliability of cloud services. This brings out another economic concept, George Akerlof’s famous paper on the market for lemons. In a market where information asymmetry exists, the market will eventually collapse in the absence of guarantees. Until Amazon and others offer SLAs with teeth, you should remain skeptical about their ability to deliver on their promises.

All of the hot new bakery's recipes were stolen over the weekend. Thefts are sadly all too common in the restaurant world, but even by that standard, the robbery that went down at the Tendernob's Mr. Holmes Bakehouseearly Friday morning was a headscratcher. The perp broke into the bakery...

Alongside its new D7200 DSLR, Nikon today also announced the ME-W1 wireless microphone set. It’s a water-resistant lavalier mic that makes it easy to capture high quality audio while capturing video. The mic allows monaural audio to be captured from subjects up to 164 feet away from the camera....

Last year, Google made headlines when it revealed that its next version of Android would require full-disk encryption on all new phones. Older versions of Android had supported optional disk encryption, but Android 5.0 Lollipop would make it a standard feature. But we're starting to see new Lollipop phones from Google's partners,...

Various brands make chalkboard and whiteboard panels that you can install around your home or shop, and there are also different types of paints you could use, such as by Rust-Oleum (chalkboard paint, whiteboard paint). Unbeknownst to me before today, there are also self-adhesive chalkboard and whiteboard tapes. I can...

Forty thousand years ago in Europe our ancestors formed a crucial and lasting alliance that enabled us to finish off our evolutionary cousins, the NeanderthalsDogs are humanity’s oldest friends, renowned for their loyalty and abilities to guard, hunt and chase. But modern humans may owe even more to them...

One of my clients is upgrading some servers. The procedure we have took some time to get to current state, and we found some potential problems, so decided to write more about it. First, what we have, and what we want to have. We have usually 3 servers: master slave...

Just recently you could read here that Meyer Optik will release the Trioplan f2,8/100mm for Fuji X-in October. Well, it seems that Meyer Optik (translation) plans to release even more X-mount lenses, and there will a super-fast Nocturnus 35mm F0.95 coming as early as May 2015! The...

Similar to other knife blocks, the LockBlock is a dedicated place for keeping your blades, so they’re not randomly strewn about, waiting to cut anyone who clumsily fumbles their way in the kitchen drawer. Unlike them, it comes with a self-locking mechanism that requires you to press a release button...

Apple has added interactive, animated objects to its 3D maps in Apple Maps. Big Ben (the clock on Elizabeth Tower at the Houses of Parliament) now shows the time on all four clock faces in real time. In addition, the London Eye attraction now rotates...

Scientists name new ‘object’ SDSS J0100+2802 and say it is 12.8bn light years from Earth and was formed just 900m years after the Big Bang A monster black hole powering “the brightest lighthouse in the distant universe” has been discovered that is 12bn times more massive than the sun, scientists...

Today we're releasing a code for a small PostgreSQL module called plan_filter that lets you stop queries from even starting if they meet certain criteria. Currently the module implements one such criterion: the estimated cost of the query.After you have built and installed it, you add a couple of...

For years, I was frustrated by stripped screw holes, particularly with wooden doors. To get a screw to stay in the stripped hole, I stuffed wood pieces, plastic anchors, basically anything I could find that would fit in the hole. Usually the fix failed, and I was again searching for...