buy your iphone 4s from Apple: here’s why

TL;DR “What consumers need to understand is that there are actually four different versions of the iPhone 4S: Verizon, Sprint, AT&T, and Apple. Only the Apple phone, available from their stores or on-line, is fully unlocked and can be used on any carrier. The other phones are permanently locked and cannot ever be used on another carrier in the U.S. Even if you spend $800 for an unlocked phone as I did and dedicate it to a single U.S. carrier, you are locked into that carrier forever if you want to keep using the iPhone. Neither Apple or the other carriers will fully unlock your carrier phone.” – How U.S. Carriers Fool You Into Thinking Your iPhone 4S Is Unlocked

Marc Weber Tobias tells a chilling story about how the major cell carriers are deliberately crippling iPhone 4S handsets bought directly from them so that the handsets can never be unlocked and used on any other carrier. Short-term solution? Buy your handset directly from Apple, however, the carriers have policies in place to prevent customers from doing just that, which Tobias also discusses. Long-term solution? The situation is simply one more symptom of our current crisis with mega-corporations run amuck. Only a return to collectively assuming responsibility and engaging in governing will address the crisis, nothing less will do.

Posted in design | Leave a comment

taming OS X lion

herding cats

I have been fighting with Lion ever since I upgraded from Snow Leopard, an all too common experience. I have made significant progress in my campaign which I gather is rather less common. What I find most interesting, however, is that the emerging configuration is cleaner and leaner than any I have previously had.

I thought I would share what I have sorted out.

lion: a painful transition with a purpose

“Apple appears tired of dragging people kicking and screaming into the future; with Lion, it has simply decided to leave without us.”
John Siracusa Mac OS X 10.7 Lion: the Ars Technica review

With Lion, Apple ended support for PowerPC applications as well as 32-bit processors. The transition enabled Apple to focus on the future, not on supporting companies who continue to think of Apple as an also-ran. Given Apple’s ongoing dominance in the tech sector, refusing to develop for Macs as a niche platform is a nonsensical stance at best. Even though, as a long-time Quicken user, I got caught in the crunch, I was glad to see Apple take the step. Side-note: Quicken Essentials for Mac is ghastly, just don’t do it.

tools you will need

(Don’t worry if you aren’t familiar with these tools. I am planning a separate article about them.)

  • Terminal
  • Console
  • nano
  • Activity Monitor


OS X is beginning to suffer from what we might call kitchen-sink syndrome:

  • engineer 1: “Do you think our users might need X?”
  • engineer 2: “Probably not, but we better include it just in case. Besides, since it [will be running as a background process / will just be sitting there on disk] it won’t hurt to include it. Better safe than sorry.”

Lather, rinse, repeat fifty, sixty times… Taken one at a time, each of these oh-so-helpful extras is low impact, but taken as a whole they are little short of disaster. The Center for Internet Security is clear about the presence of software you don’t use on your computer being a bad thing. Looking back over what I did, disabling and deleting unwanted software was the largest part of it. As I did it became possible to diagnose and solve the problems associated with the software that was important to me.

switch from iStat Menus to atMonitor

iStat Menus is a popular OS X system monitor which went from freeware to shareware ($16) as of version 3. Developers have to eat, too, and $16 is a perfectly reasonable price for a useful piece of code, so I bought a license back in the day. On the other hand, when a developer decides to take a package commercial they are making a certain level of commitment to quality. System monitoring software really needs to follow the old maxim of first: do no harm. In the case of iStat Menus, it turned out to be what was flooding my windowserver log with Core Graphic engine errors. So out it went.

I looked around a bit at alternatives and came across atMonitor: which does not flood the logs with errors, actually provides better monitoring information that iStat does and is free! Score!

switch to Homebrew

If you are using MacPorts or Fink, convert to Homebrew. I kept careful notes on the process and have an article on that experience in the works.

candidates for disabling

Disable the open window animation. It does not add anything and is a potential drag on the system. Open terminal and enter:

defaults write NSGlobalDomain NSAutomaticWindowAnimationsEnabled -bool NO

Disable the netbios protocol daemon if you are running Lion on a laptop and connect from coffee shops, etc. Open terminal and enter:

sudo nano /System/Library/LaunchDaemons/

close to the top you should see:


change the second and fourth lines (the ones in red) to read:


save your changes and exit. The netbios protocol daemon will be disabled on your next reboot. If you are feeling impatient you can stop it immediately (without rebooting) by opening terminal and entering

sudo launchctl unload -w /System/Library/LaunchDaemons/

only enable Cloud print on demand

If you are running Google’s Chrome web browser, disable Google Cloud Print except for those times when you are actually using the printer.

take active control of Dropbox

Dropbox is an invaluable tool, however the way that Dropbox thinks you should interact with their service presumes a very particular use case that did not fit my situation at all and was a huge drag on my resources. Fortunately, Dropbox provides a rich set of options for managing their service, you just need to sort out what it looks like when you don’t fit in to their expected scenario.

and more…

…to come

but what about?

I have steadily updated this post as I have sorted through Lion, to provide a useful tool for readers. This section is for questions that came up along the way and aren’t in the main stream of the current version. It can be safely skipped 🙂

A tool I found very useful as a temporary solution to gain some control was to disable virtual memory in Lion. I have 8 Gb of RAM, so had the option. As noted by a number of others, this step resulted in a noticeable speed-up; a speed-up I would not have expected to see in a healthy system. Once my system was running reasonably cleanly I re-enabled virtual memory, resulting in another speed-up; what one would expect to see when enabling virtual memory in a healthy system.


Posted in how to | Tagged , , , | Leave a comment

Google’s Toolsmith blog

In the midst of the (richly deserved) negative publicity Google is getting at present, I’d like to focus on a recent Google initiative that is responsive and helpful. The Google Engineering Tools blog affords Google’s toolsmiths a long needed channel for richer dialog with their colleagues than ever more expensive free / open source software conferences and trade shows. At the same time, it may go some distance to addressing the frequent description of Google as being ‘secretive’ about their engineering internals; a description that frankly mystifies me.

Toolsmith resources are rare, offline as well as online, which makes Google’s contribution yet more remarkable. Sorting through my own resources while writing this post, I was struck yet again by how hard toolsmith materials are to find. My toolsmith nature is a big part of what has kept me with Emacs through all these years; the layers of understanding available via EmacsWiki is breathtaking. Some first-rate toolsmiths maintain individual blogs as well, Andy Lester’s Tech Work Love being among the best.

The  role of toolsmith is inherently collaborative and interdisciplinary, so I have found collaborative, interdisciplinary toolsmith materials most valuable. For years now, A List Apart has been a fundamental resource for me. The Google Engineering Tools blog may turn out to be another.

What are your favorite toolsmith resources?

Posted in design | Tagged , | Leave a comment

bootstrapping wordpress

Update: Tuesday, July 19th, 2011

Wow. Talk about a fascinating process. I started with Automattic’s Thematic because it is one of the most widely recommended WordPress themes. The Thematic team has contributed extensively in terms of documentation, which is sadly lacking in many of the more mature Open Source communities. For a longtime developer of the interplay of languages and technologies that is the DOM, however, Thematic is not a particularly good choice. Why? Because it uses hacks to get past the WordPress theme review process.

I want to be absolutely clear that I do not mean that statement as a criticism of Thematic. Most users of the theme will never be directly affected by that choice. I was not involved with WordPress when Thematic came out, so I cannot assess the pressures and resources in the community at the time. As a devotee of agile methods, I believe in working code above perfect code! I am just looking at themes from a viewpoint that seems to have been left out of the many excellent reviews of WordPress themes that exist. If jumping into WordPress as an experienced developer from another area (say, TWiki in my case), where to start?

I have solved many of my most major frustrations with Thematic through Aaron T Grogg’s HTML5 Boilerplate plugin. And I am living with the live version of the site not validating until I finish the new version, built on Aaron’s Boilerplate: Starkers theme with a design inspired by Vatuma’s Clear Line theme. I am not rushing to finish as I want to track what I am learning and contribute much-needed documentation as well as some infrastructure.

Although I have my down days like anyone else, one need look no further than the PHP manual to see how far we have come. Our challenge is to apply those skills to ourselves. Larry Wall does a pretty good job of outlining that challenge in Diligence, Patience and Humility. I highly recommend it.

Original Post

Hi. My name is Hilary. I am a web-standardista and this page does not validate.

Nine hours. I can’t decide if that is pitiful, a sign of excellence or plain old-fashioned cussedness. Even then I’m cheating, as I did not announce the original version of this post. I published it to have a live post to speed up development.

In the end, though this blog barely exists I could not take it. Validation should be a minimum quality standard, not some pinnacle we might eventually try to reach. My inner curmudgeon is showing, a sure sign that I need sleep. I am astonished at what it took to get valid customized WordPress.

Valid XHTML 1.0 TransitionalValid CSS!

Hi. My name is Hilary. I am addicted to web standards and this page now validates:

thanks for listening,


Posted in design, methods | Tagged , | 5 Responses

Should I install that cool plugin / extension / addon?

GooglePlus denizens (Google+rs? gplusies? gah…) learned yesterday that the Google+Facebook and Google+Twitter extensions are malicious. Days earlier, I had decided not to install Google+Facebook when I first heard about it on Susan Mernit’s stream. I shared my concerns on Susan’s post. Susan sent out an additional post specifically to warn folks. Between us we helped at least some folks avoid the onerous process involved in eradicating all traces of the extensions once installed.

I want to share with you what I wrote in that comment. My goal is skills development: to help folks learn how to choose wisely about when to install a plugin / extension / add-on. (A note on terminology: Developers have secret meetings to come up with more words for what is essentially the same thing! Then we laugh ourselves silly at the thought of everyone else trying to understand the differences and go out for snacks. In this post I use the terms interchangeably to advance our master plan.)

I am concerned about privacy / security issues with this extension. As with any extension from a provider I do not know, I checked to see if it was listed through the browser’s own interface. For those who might not already understand the significance of this step: extensions go through a vetting process to get listed. I could not find Google+Facebook on the Chrome repository.

When I went through the first few steps on Chrome to see what the installation interface would tell me, I got:

Install this extension? It can access:

  • your data on all websites
  • your tabs and browsing activity
  • your list of installed apps, extensions, and themes

In order of reasonableness:

  • Tabs and browsing activity is a must for what it does.
  • It does not need access to all websites. It is possible to restrict that access to (and subdomains) and (and subdomains) and many well written extensions these days do just that. What’s more, because restricting scope is not uncommon, the code is not hard to get.
  • I could hypothesize reasons for the third, but in light of the rest of the information, I decided that this extension was way over the line.

I would rather they took a week to code something solid and respect my privacy and security needs.

A few comments about my comment (sorry, could not resist):

  • It is not always the case that you should avoid an extension that is not listed on your browser’s official repository, nor is being listed on the official repository enough for you to just trust an extension. If an extension is not listed in the official repository for every browser it is released on, however, don’t install it until:
    • you have researched it, or
    • you check with a trusted tech savvy friend.
  • The second point I just made is very, very important. Just because an add-on is listed in the browsers official list of add-ons does not mean it is safe! In addition, acceptable behavior for add-ons changes over time. In a collaborative coding environment, problems get solved and the solutions become available. Anyone who continues to treat the problem as unsolved becomes questionable. Either they don’t know very much, in which case you should not trust them with your safety, or they are hoping you don’t know very much, in which case you should not trust them with your safety. In this case, the code to restrict chrome extension’s access to select domains is out there, so granting an extension access to all domains is not reasonable for the vast majority of extensions. Again, don’t install until:
    • you have researched it, or
    • you have that tech savvy friend to hand or on call.

So, how do you research these things? You say it is a swamp out there and you are not a security geek? Neither am I! Geek, yes, security, no. You don’t have to be either. Sophos’s nakedsecurity is a terrific place to start researching this sort of thing. Research until you run of out time, energy, brain cells, or you figure it out… and remember that you will eventually make a bad call whether you decide for yourself or take an expert’s recommendations, so if you don’t have an automated backup system, get one now. What, do you run with scissors, too?

thanks for listening,


Posted in how to, methods, security | Tagged , | Leave a comment

it’s so cute, it’s almost like a real blog…

sceenshot of test site

configuring Clear Line, a modern WP theme

integrating design has a test site!

I started the bootstrapping process without one, following my current practice of developing in the wild (note to self, must write post on that topic). I was pretty sure that I would end up with one, although I confess that I did not expect to set one up so soon.

I have started on a page on test sites: why you want one, setting one up, best practices for using one, links to resources, that sort of thing. As a first step I went back to resources for integrating design and followed my roadmap (gasp!) I’ve done a first pass on development and testing resources in addition to organizing and expanding the rest of the materials and revising the roadmap.

What an odd and interesting week it’s been….

thanks for listening,


Posted in methods | Tagged | Leave a comment

petard 1, hilary 0

The good news

I have met my self-imposed goal of at least one post a day. And that was without having discovered the ‘full-screen mode’ for the editor until just now. (I heard that! For your information, I am being gentle on myself and counting new pages as posts for the moment.)

The bad news

I am counting new pages as posts for the moment. I am seriously lagging behind in simply chronicling what I have done to date.


Simple black and white graphicYears ago, I was reading a book that I still think of as being about recovering from perfectionism. In the book, the author recounts a story about her boss making her write a sign and stick it on the wall of her office. To the right is my attempt to recreate that sign. Over the years I have come to an ever deeper appreciation of that wisdom. The first prerequisite to doing something is to do it.

At present this blog is driving me nuts.

  • It does not fully validate under the W3C Web Content Accessibility Guidelines, something that is very near and dear to my heart.
  • It is way, way too vertical, something that I find makes web pages hard to read.
  • I am not happy with the look-and-feel of the comments.
  • Wordbooker is double posting.
  • I have the barest skeleton of a testing protocol in place.

But that is rather the point, isn’t it? The stores, blogosphere, etc., are full of excellent texts that will talk you through how to install a specific version of WordPress on a specific platform and create an example blog using a specific version of WordPress, a specific theme and specific plugins. Which would be far more helpful if there were also a slew of wonderful resources where you could learn how to generalize that information. Coached Learning is the only way I know to acquire that generalization skill.

Learning: it isn’t always a pretty sight, gentle reader. For the moment:

  • I am running the testing protocol by hand until I get it integrated with Selenium
  • I have turned off Wordbooker and will announce new posts by hand for the moment. I am not happy about that as it means comments are not cross-fertilized, but so be it.
  • I will cope with the layout until I have testing and accessibility sorted out
  • I will consult with my social networks for any wisdom they might have about WP comments
  • Once I have Selenium up and running and have caught up with chronicling and documenting the blog to date, I will generate patches as needed to the theme, plugins and if necessary WordPress itself so that my blog validates under current WAI thinking.

In the meantime, I have accomplished all sorts of stuff which I have paid scant attention to being so focused on what was bugging me. Hoist with my own petard. Time to fix that!

thanks for listening,


Posted in design | Tagged | Leave a comment