Oct 142013
 

I’m on my third Android phone now, and appar­ently there is no way to delete the pre­vi­ous phone(s) from my Google Account. The Android Device Man­ager sup­port page tells you how to find the phone and wipe it, but I wiped them before passing them on to new homes. And I don’t care about their cur­rent loc­a­tions. You can hide a device from the list, but not delete it, and I’m puzzled as to why. Do they need a list of all pre­vi­ous own­ers of any device? Why?

And, the page to revoke access to Google accounts from these old devices still looks some­thing like this:

Google account revoke access page

and does­n’t tell you which device or account is meant by ‘Android Login Ser­vice — Full Account Access’. I guess I could turn off each one in turn and see which I need to turn back on, but it should be pos­sible for Google to put some identi­fy­ing inform­a­tion there to help with the pro­cess, even if it’s only the date on which access was requested. 

Oct 092013
 

One of my web­site cli­ents has a Drupal site, and it was time to upgrade from Drupal 6 to 7. Drupal is one of those vastly com­plic­ated, able-to-do-any­thing plat­forms that is part blog­ging soft­ware, part CMS, and part play­ground for PHP developers, with the inev­it­able res­ult that Drupal 7 is a worth­while upgrade over Drupal 6, but requires more than a little time to fig­ure out what needs doing. Thanks to Shane at Left Right Minds who poin­ted me in the right dir­ec­tion on sev­er­al occa­sions. With power comes com­plex­ity and there are many ways to get things wrong.

As always, the basics are clear: use a devel­op­ment site for the upgrade to get all the issues out of the way while not affect­ing the pro­duc­tion site. Allow more time than you think you will need. Ensure an adequate sup­ply of chocol­ate and/or cof­fee. Take breaks as needed.

Copy the files on the pro­duc­tion site to the devel­op­ment site (which I’m call­ing {yourdevweb­site}). Cre­ate a backup and restore that on the devel­op­ment site. Next time: turn off cach­ing and clear the cache before mak­ing the backup. Make sure cach­ing is turned off while developing.

List all the mod­ules on the cur­rent site, see if they have Drupal 7 equi­val­ents. Spend some time fig­ur­ing out wheth­er the new ver­sions are worth­while, or if there’s a bet­ter way to add func­tion X in Drupal 7 (ask­ing an expert, like Shane, is really help­ful at this stage).

Upgrade the core by installing Drupal 7, solve any issues. If the pre­vi­ous sysad­min changed the defaults so none of the menus appear to work, go to {yourdevwebsite}/admin/structure/menu to reset them to the defaults.

Drupal 7 allows upgrad­ing mod­ules from a URL, yay! So the pro­cess of upgrad­ing mod­ules turns into a fairly simple one , if no errors crop up. The first step is to determ­ine the order in which to upgrade the mod­ules — Backup and Migrate should be the first, Con­tent Con­struc­tion Kit (CCK) second since it requires some field con­ver­sion. Then Date, Token, and Views (nev­er under­es­tim­ate the power of a View). Once you have those basics done, upgrade the oth­er mod­ules in whatever order makes sense. I like to order things so I fix what’s on the front page of the web site first, then the oth­er pages.

  1. Go to {yourdevwebsite}/admin/modules/install, add the link for the latest stable Drupal 7 ver­sion, and install. 
  2. Enable the mod­ule, then run {yourdevwebsite}/update.php
  3. Fix any errors.
  4. Run the backup to back up the changes.
  5. Con­fig­ure the mod­ule, adjust menus, etc, until the mod­ule more or less does what you need. Final tweak­ing can wait until all the mod­ules are installed, but get the main func­tion­al­ity in place for each mod­ule as you upgrade it.
  6. Repeat for your list of modules

Be aware, some mod­ules just don’t work in Drupal 7 and for those you need to find anoth­er way to get that func­tion­al­ity. Some mod­ules (e.g., Cal­en­dar) changed the way they work between Drupal 6 and Drupal 7. Some mod­ules use the stand­ard con­fig­ur­a­tion meth­ods, oth­ers (Cal­en­dar again) are con­figured using dif­fer­ent methods.

Drupal 7 lets you split lib­rar­ies and the mod­ule. For example, a good way to install the CK edit­or is to get the down­load from the web site and put in /sites/all/libraries. Then install the CKed­it­or mod­ule, which will use that lib­rary via the lib­rar­ies API.

IMCE is a nice image and file browser/uploader.

When it comes to updat­ing themes, be aware that even if the theme has the same name as one in Drupal 6, it will prob­ably have sig­ni­fic­ant changes. Respons­ive design tech­niques and the avail­ab­il­ity of more base themes con­trib­uted to this, as well as the changes due to the actu­al plat­form. Expect to spend more time than you expec­ted to tweak the theme back to some­thing approach­ing the ori­gin­al look and feel (assum­ing that’s what the cli­ent wants).

Allow time for train­ing people on the new fea­tures. Even an hour or two helps.

Aug 272013
 

For the XML Sum­mer School this year, I’m teach­ing about HTML5, CSS3 and ePub in the Hands-on Web Pub­lish­ing course. The basic premise of the course is to show what tech­no­lo­gies are involved in tak­ing a bunch of Word doc­u­ments or XML files and turn­ing them into a decent-look­ing web­site or ePub. The course includes les­sons on rel­ev­ant bits of XSLT trans­form­a­tion (since Word is XML under the cov­ers, if you dig deeply enough), script­ing in Ruby to auto­mate as much as pos­sible, and, of course, enough inform­a­tion about HTML and CSS that people can make a decent-look­ing web­site in class in the hands-on part.

As a start­ing point for the exer­cises, we’ll use a gen­er­ated tem­plate from HTML5 boil­er­plate, since, if you pick the right options, it is rel­at­ively clean and simple to under­stand. Look­ing at the cur­rent com­mon design prac­tices used across a num­ber of options (HTML5 boil­er­plate, Boot­strap, Word­Press tem­plates for example) coupled with web com­pon­ents and the sheer size and num­ber of HTM­L5-related spe­cific­a­tions from WHATWG and the W3C, I’m won­der­ing just how much more com­plic­ated it can all get before the pen­du­lum starts swinging back again towards sim­pli­city and sep­ar­a­tion of con­tent from pro­cessing. Even a bare-bones tem­plate has a num­ber of lines in it to deal with older ver­sions of IE, or to load some JavaS­cript or (mostly) jQuery lib­rary. It’s no won­der we’re start­ing to see so many frame­works that try to cov­er up all of that com­plex­ity (Boot­strap again, or Ember, for example). 

In the mean­time, at least I have a reas­on­ably con­strained use case to help me decide which of the myri­ad pos­sib­il­it­ies are worth spend­ing time teach­ing, and which are best left for the del­eg­ates to read up on after the class. 

Jun 042013
 

Not long ago, after a tir­ing busi­ness trip, I left my knit­ting bag with my Nex­us 7″ tab­let on the plane. I real­ised it was gone before my con­nect­ing flight left, and thanks to some help­ful United Air­lines people, got it back in time to make that flight home. I did have a few pan­icked minutes though, won­der­ing where it was, wheth­er someone had it, and what to do about the data on it. Since then I’ve imple­men­ted more secur­ity meas­ures, espe­cially when travelling.

Of course, the first thing to do is make sure there’s a PIN or pat­tern or oth­er lock on the screen. I don’t usu­ally both­er with this at home, but when I travel I do.

Top of my list for the sec­ond­ary lay­er, after the pass­word for the entire device, are passcodes for both Drop­box and Ever­note; I keep per­son­al inform­a­tion in one and cli­ent inform­a­tion in the oth­er. You can unlink a giv­en device from Drop­box and revoke access to Ever­note from anoth­er machine, but that won’t neces­sar­ily stop someone read­ing the inform­a­tion already on the device. Secur­ity or passcodes solve the idle curi­os­ity prob­lem, at least to some extent (this is a premi­um, i.e. pay-for fea­ture on Ever­note). Drop­box also gives you the option of two-factor authen­tic­a­tion, and of course you can encrypt the files that you store.

For actu­al pass­words and smal­ler items of inform­a­tion, I use LinkeSoft Secret!, although I may move away from it since it does­n’t sync the Android pass­word store to the Mac. I’m para­noid enough that I don’t do online bank­ing on my phone or tab­let; I have my bank’s app on my phone but only to find the nearest loc­a­tion of a cash machine or branch.

I already have a PIN required for any­one to buy an app on the device; this also stops my daugh­ter buy­ing games or in-app pur­chases. (In the Google PlayStore, under Set­tings, it’s the ‘Use pass­word to restrict pur­chases’ setting.)

I have Lookout installed, which has options to find your phone, then lock it, and even remotely wipe your phone’s data; for­tu­nately I did­n’t need to try it out but there is a cer­tain peace of mind in know­ing that nuc­le­ar option is available.

What all of these apps have in com­mon is the assump­tion that you may have more than one device run­ning Android, which is more than I can say for Google accounts. If you go into your account set­tings, secur­ity, man­age access, you are con­fron­ted with some­thing that looks like this: 

Google access to sites and apps

Google access to sites and apps

which does­n’t give me any clues as to which of the many ‘revoke access’ but­tons I should push to revoke access to a spe­cif­ic device. Surely Google could have figured out that some people might have more than one Android device, or more than one applic­a­tion or web site want­ing access?

May 202013
 

Jan Wong is a well-known journ­al­ist and author in Canada. I’d read some of her oth­er books, and then a friend sug­ges­ted I read her mem­oir about depres­sion, “Out of the Blue” (amazon.com link, amazon.ca link). For a sum­mary, read Globe’s Reac­tion to Jan Wong Depres­sion Put Journ­al­ism in a Sad Place .

Jan Wong’s book details not only how a per­son in a high-stress job can hit a wall when some­thing goes wrong, but also how the com­pany that per­son is work­ing for can help, or make it all worse. In her case, it was all much worse than it needed to be. I admit, over here in Van­couver, the entire ker­fuffle that star­ted her spir­al into depres­sion evaded my atten­tion (and, I sus­pect, the atten­tion of most people who aren’t avid Quebec/Ontario watchers).

This book is more than a mem­oir of one woman deal­ing with depres­sion; it also makes it clear how many people suf­fer or have suffered from depres­sion, wheth­er they’ve been form­ally dia­gnosed or not. There’s a stigma attached to depres­sion that makes it hard for people to admit they might have it and so they battle on and through. I sus­pect, for example, that my moth­er suffered from depres­sion after my par­ents divorced, but it isn’t some­thing she would have ever admit­ted to her­self, let alone any­one else. Some pas­sages in the mem­oir are hard to read (espe­cially, for me, the effects on her fam­ily), but in the end it’s a pos­it­ive book. I’m glad I read it, I learned a lot about the med­ic­al aspects (e.g., that depres­sion can be triggered by extern­al factors, or can be due to an intern­al pre­dis­pos­i­tion, or a com­bin­a­tion of the two). Neither the trig­gers (often stress and/or insom­nia) nor the reac­tions (fight or flight, anhe­do­nia) are widely under­stood. I did­n’t know, for example, that depres­sion is often a short-term con­di­tion, that med­ic­a­tions take so long to take effect, that so many fam­ous people suf­fer from chron­ic depression.

Recom­men­ded for any­one who works in the cor­por­ate world, or has more than a few friends and rela­tions. You may be lucky enough to nev­er work with or be close to someone who has or has had depres­sion, but even so, it’s worth get­ting an appre­ci­ation for what it’s like. Chances are, someone you know has it, had it, or will have it in the future.

May 012013
 

I just bought some­thing on the Cana­dian Lowes site and it struck me how much time and thought they obvi­ously put into the UX. The item pages con­tained the usu­al recom­men­ded oth­er items, reviews, etc, that you can see every­where. It was the oth­er inform­a­tion on the item page that caught my attention.

I found the item through online search, but it was easy, with obvi­ous bread­crumbs, to find related items. The ‘ship­ping included’ was prom­in­ent but not over­power­ing (for a large item, I prefer it to be shipped to me but don’t want to pay a for­tune for ship­ping). The page included links, near the ‘Add to Cart’ but­ton, to both the ship­ping and return policies, and the estim­ated ship­ping date was easy to see, even before adding the item to the shop­ping cart.

The big changes that I noticed came next. Where so many shop­ping sites ask you to cre­ate an account, login, etc, this one simply re-con­figured the check­out work­flow. After the usu­al steps (fill out ship­ping address, pay through paypal/credit cards) there were two things I noticed. First, the return page gave the option of adding anoth­er email address to have the noti­fic­a­tion sent there as well, sug­gest­ing I not close the page until the email noti­fic­a­tion arrived (which it did, promptly). And second, it was only after the trans­ac­tion was com­pleted that the site asked me if I wanted to add a pass­word so I could track the status of the ship­ment. I can track the status using a link in the noti­fic­a­tion email but I added a pass­word any­way. So now I also have a Lowes account, cre­ated with very little friction.

This seems a sens­ible time to encour­age the site vis­it­or to cre­ate an account. I’d already bought some­thing, it’s quite likely I’ll buy oth­er large items in the same way, and it did­n’t take much time or decision-mak­ing. Kudos to Lowes for listen­ing to their UX people.

/* ]]> */