Archive | Technology

Lost scrolls

This blog has been so long-lived, it reminds me of the joke about the little country museum that had a hatchet on display labeled ‘George Washington’s Axe.” When queried, the owner admitted the handle had worn out and been replaced a few times, and the head replaced when it had broken, but the rest was original. (see Ship of Theseus for the original original. Supposedly.)
Today, I restored a set of essays that predate the WordPress blog. They predate the Manila/Radio Userland blog. They were around long before the short-lived Blogger experiment. In fact, they may even predate the original Twiki blog-on–wiki. These started as sketches of essays that never had a place to be published. I added them to the Manila blog as ‘stories’ rather than posts, and that’s why I missed them when I ported the Manila blog, 31-January-2007.
You can find those essays starting here:

Hurray for the border-box!

Paul Irish blogs here: that a CSS3 feature promises to end the foolish layout war between those who think box boundaries should be measured to the borders and those who think a box’s boundaries are the size of its content. This has been a headache for anyone trying to get a set of boxes to line up properly and to work across all browsers, especially Internet Explorer.

Vijay Sharma shares his insights here:

Credit to: (now merged into Front End Focus

Notes from WordPress Seacoast meeting, 6-November-2013

The November meetup of the Seacoast WordPress Developers group had nine attendees. The discussions were far-ranging, with a lot of very useful information!

Before we got started, there was a discussion about creating custom archives, and Amanda brought up the codex page on archives: to point out the different templates that can build on archives.

WordCamp Boston 2013 was the main topic of the evening, and three regulars — Amanda, Laurel and Tina — shared a ride down to the Saturday sessions. New member Jim also attended and all were impressed with the organization of the event and the variety and professionalism of the presentations. Amanda noted that the meetings were recorded and should eventually appear on although this is likely a volunteer operation and may take some time.

We did a round of introductions: Amanda, Chris, the other Chris, Jim S. me, Jacqui (acdczone,com), Laurel, Phil, David. First meetups for Jim, Jacqui, and Phil. Welcome!

I mentioned there was a proposal for a meetup in Manchester to discuss collaborative teamwork. Tentative discussions. Caution we don’t want to step over the line and commit price fixing. But open to discussions on pricing, clients, functionality. Client engagements. Fixed-price v. time-and-materials.

Meanwhile, back at WordCamp: @beep – Ethan Marcotte keynote. Responsive Web Design. I mentioned that Ethan presented at many conferences, including my favorite An Event Apart and also wrote a book on responsive design with the affiliated group A Book Apart.

Laurel mentioned that one session on backups had a number of people enthused about VaultPress for WP backups. It’s written by the folks at Automattic, who also manage Akismet and It’s commercial, starting at $5 a month, but may make sense for some people. (Later on, someone asked about how the profile pictures for WordCamp Boston were made. That’s Gravatar, yup, also an Automattic property.)

Chris Cochran made WordCamp presentation, – focused on content, web designer, bottom-up, content-out, Customizing to the user.

Amanda walked us through the excellent slides for Wicked Fast WordPress by Chris Ferdnandi

Jetpack for Developers – George Stephanis — is a dev for JetPack and was pretty focused on writing JetPack.

jQuery and WordPress Together, Again — This was a bit of a suprise, based on the title. If you were expecting to learn about how to use jQuery inside WordPress. It was the inverse: how the jQuery team uses WordPress inside jQuery multiple websites.

PHP Unit Testing

Evolving your JavaScript with Backbone.js

Off on another tangent — I’m not complaining, just giving context — for a discussion about useful plugins: manage.wp for managing many sites, wordfence for security and akismet to block comment spam.

Questions on good books, tutorials, videos. Lots of suggestions. Me: Start at

Question on managing booking time: Appointments Plus

Another on good, fast, efficient multi-faceted search, a term I hadn’t heard before: example given was to filter a large listing of homes by number of bedrooms. So the engine is not just full-text search, but name-value pairs out of custom posts.

Question on commerce sites: wpmu, WooCommerce, others.

Q on snaking columns, Woo Dojo and short columns.

Quick demo of Visual Composer. lets the end users do more layout.

And there was more! Tips, tricks, the solutions to your WordPress questions. But you have to attend, because I can’t possibly transcribe all that happened at the meeting. Great stuff.

Thanks to Josh Cyr, owner of AlphaLoft for providing the space for the meeting, and to Amanda Giles for organizing the meeting. Hope to see you all next month.

rbenv on Fedora 19: for want of a nail,…

… a kingdom was lost.

Fortunately, I don’t have a kingdom at stake. My tale is more like the House That Jack Built. I had to spend a little time building the tools to build the code to build the language upon which I build solutions for clients. And the path was strewn with gotchas, but I persevered. Since I’ll likely need to do it again some day, I’ll record it here in hopes I can retrace my patch, er, path.

I’ve installed Fedora 19 on my main development laptop, replacing an older Mint 12 install that had gotten too old to maintain easily. I’ve spent some time updating and configuring the machine in my spare time. With FireFox already installed, Chromium was an early addition. Thanks to syncing, these browsers retain the history and passwords of the sites I spent all day on. I moved over my ssh keys and configurations and vim configurations and installed git and the basic development setup is ready to go: most of my coding occurs on remote systems. Next came Apache and PHP in order to develop locally. Finally, I started on Ruby and Rails. Here, I took a tangent from past installs and installed rbenv rather than RVM, the Ruby Versions Manager. I have seen problems with RVM and the 2.0 version is coming along slowly. In the meantime, Bundler has come along and solved a number of problems with gems, gemsets and disk clutter, but in a different and incompatible way with RVM. I thought that this was a good opportunity to inform myself of a new tool, should I run across it on a new gig. Also, I had seen a Drew Neil videocast in his VimCasts series recently where he showed some very useful tools, but rbenv was a pre-requisite. Due to the way RVM works, rbenv can’t be installed side-by-side, so I had to remove RVM. No time like the present!

However, there’s a catch. Isn’t there always? Fedora 19 uses a version of OpenSSL which is configured differently than what used to be typical. I am no crypto expert, but I understand they disallowed some form of elliptical curve (EC) encryption. Ruby, as part of its build process, tests for that specific functionality, so builds will break on Fedora 19 (and recent Red Hat, too). There is a fix in the pipeline:, which changes the behavior from requiring this specific form of encryption, which wasn’t really required, just a poorly chosen hard-coded test) and instead tests to confirm that there are some algorithms for encryption by iterating through them. So. Now, I knew there was a fix, I just had to figure out how to wedge it into my system. Thank goodness for internet search engines! Here was a similar enough situation that I could interpret the process for my system, with different version numbers, of course, and a few tweaks. After a few false starts, I had my own custom patched versions of Ruby 2.0 and 1.9 installed a ready to go.

It may not be clear why I didn’t just install the version of Ruby that comes with Fedora 19. At the moment, that version is the same (p247) as the current version, but as a developer, I don’t want to have to count on the distribution to keep their versions up to date in order to have the most recent version on my systems. Since I’ll be deploying systems into production, and therefore exposed to potential attack from the internet, I need to have the ability to build from the latest source code and to apply patches as needed. This provides the best possible security to my clients for this app. I also need to support older versions, so having worked out the recipe for 2.0, I was able to backport the same changes into Ruby 1.9.3 and install that on the system as well. At the moment, I don’t have any need for Ruby 1.8.7, but now that I’ve worked out the build routine, I’m confident I could deploy that if needed.

Under New Management

Under Construction

The ubiquitous figure with a shovel full of…

I snicker at the sight of a web page with a big “Under Construction” banner or the ubiquitous figure with a shovel. Of course the site is under construction. If a web page isn’t growing and changing, it’s a historical artifact and not a Living Web page.
I’m working at bringing my blog up to speed, after a year of benign neglect. While I’ve kept the software up-to-date, the postings have been infrequent, the template is showing its age, and the information has a good case of Internet bit-rot. I installed the Broken Link Checker plugin to assist with cleaning up the blog posts that point to nowhere, or worse, wrong-ware, and it’s a pretty Cool Tool. It plowed through a lot of posts and ferreted out missing (404) links, bad server responses, missing servers, redirects and more, and provided statistics that let me appreciate the scope of the work to do: in round numbers, there are 5000 links in 3000 posts, and 1000 of them are broken. Wow.
The Broken Link Checker lets you sort and triage the links: filter a set by urls, search-and-replace using regular expressions, update with the Web Archive link (it searches for it automatically, if you select ‘Update Link’). I found several of my favorite bloggers moved or re-mapped their blogs over the past decade (no surprise, there really), but didn’t leave redirects in place, so all my links to David Weinberger’s Hyperorg or Doc Searl’s blogs or Robert X. Cringely’s material on ended in broken links. With the Broken Link Checker, I was able to pull up a list of all the broken links for one site, then work through the list while trolling the site in another window, and cutting-and-pasting updated links.
It wasn’t just the individual bloggers, though. Many (most?) of the media sites I cite —— ZDNet, Washington Post, etc. —— have also reworked their content URLs, leaving the blog orphaned.
There’s lots of one-off, one-hit wonders, too: the usual cool stuff that took the web by storm for 36 hours and then vanished back into the noise. Pretty much anyone I cited at their company’s “Who Are We” page has moved on and gotten a new job, or the company’s been absorbed by BigNamelessAmalgamates, Inc. The link is broken, but the history remains. Broken Link Checker has some nice options to remove the broken link while leaving the anchor text in place, with strike-through style showing there’s a change, and a title visible on mouse-over that shows the orphaned link. This seems like an ideal tool to curate old material.
There’s also a lesson to be learned in what’s useful blogging. A number of posts that were closer to bookmarks of “Look what Bob’s doing over there! Awesome!” are far less awesome, now that Bob’s site is long gone, and can’t even be found in the Wayback Machine. That’s a post with a value of zero or perhaps even null. So, in the future, we (that’s you and I, dear reader) should resolve to make our posts a little more useful should they be standing alone on a reinvented Internet in another ten years.

Linux printing on a Lexmark E312L via IOGear GPSU01 print server

Just updated the Lenovo ThinkPad T61 to Fedora 19, and it went pretty smoothly. I alternate between two distros on separate partitions, so one can act as the recovery partition for the other, and as a general fall-back. I can pretty much bulk-copy most of my home partition from one to the other and the fresh install will update what’s changed, while I can still retain much of the customization I’ve done.
In this case, I was updating from Linux Mint 12, which had gotten too old to keep up to date. I was replacing an even older Fedora 16 install. The initial versions of Fedora with GNOME3 had just proven too unstable to rely on as my primary development workstation. This new Fedora 19 install put most of the daily tools on the machine, and I’ve been installing utilities —— vim, vim-X11, GIMP, ack —— as I found the need for them.
One of the things that’s better to just redo from scratch is the printing configurations, as the Ubuntu-based Mint and RedHat-related Fedora part ways in this and several other aspects of running an OS. Both are running CUPS, but that’s about as far as it goes.
My laser is an old Lexmark E312L which has its own interesting story: the ‘L’ model was supposed to be Lightweight or Lame or something, sold cheaply in office supply stores, a weaker sibling of the 312 model, with a half-filled toner cartridge and limited to HP-PCL with no PostScript, but it seems that Lenovo had some issues and just slip-streamed the full 312 engine, PostScript and all, into the L models. The only clue are the internal diagnostics you can run by holding down the reset button on startup. Finding the PPD to run that was a bit tricky, but here’s the one that worked for me: PPD page at OpenPrinting.Org. Lesson learned: don’t judge a printer by its cover.

IOGear GPSU01 print server

IOGear GPSU01 print server, decade-old and humming along.

The print server is another thing. The Lexmark only came with parallel and USB ports, so to host it on a network, I bought a IOGear GPSU01 print server over a decade ago. That wild $60 extravagance doesn’t seem so crazy now, after a decade of nearly flawless printing. It serves up nearly every protocol under the sun from Apple File Sharing to Novell (remember them?) to its own HTTP and CUPS servers. The trick with this one was to remember which of the myriad protocols and settings to choose. I found a blog post that set me on the right track, and learned that the optimal settings for my use was to address the printer using the Internet Printing Protocol and the CUPS port as ipp:// With those clues in hand, a couple of tweaks to my localhost:631 (my local CUPS server admin interface) and I was printing flawlessly.

Notes from Manchester WordPress Meetup, 16-Oct-2013

The Manchester WordPress Meetup met at The Farm restaurant (Elm Street, Manchester) on Wednesday October 16th. Their regular meeting night is the 2nd Monday of the month, which they’ll resume November 11th.) A smaller crowd that usual made it to the event, but it just gave us each more time to talk, get our questions answered, and quiz the speaker.

Craig Fifield ( was the featured speaker, talking about Google Authorship. (A second speaker had an accident and was unable to make it. Best wishes for a speedy recovery!). Google Authorship is a means of tagging your written content on the web and linking it to your Google Plus profile. Craig has a lot of experience in the SEO space, as he’s worked with the web since 1995, “before SEO or Google existed.” Craig was very fired-up about the Google Authorship concept, and showed us how to to link our WordPress posts to our Google Profile. Like many Google processes, it’s a two-way operation: establish a Google Plus profile and point it to the publications you’ve written, and edit the publications and include a link that points back to your profile. While there are several WordPress plugins that claim to support this feature, Google Authorship is still a moving target, and none seem to follow the current guidance.

Craig also emphasized that it’s important to test your setup once you get it in place; it’s not enough to embed the links and assume everything works. He recommended using the Google Structured Data Testing Tool on several of the pages to ensure your author information was showing up correctly on individual articles, but not on streams of articles (front pages, archives, etc.) or places where a byline would be inappropriate (About Me or Contact pages, for example).

We had some time for announcements and Q&A as well. Meetup organizer Jonathan May will be teaching Advanced Topics in WordPress at the Nashua Adult Learning Center. Jeff (missed his last name) spoke about the Fossil Fuel Age Challenge Ecosite Competition: a nonprofit effort to promote sites with a green focus by holding a competition and promoting the ecological movement as well as a bit of self-promotion for the developers. Things are still coming together, but it looks like one WordPress site would be selected at random and the winner would get a dinner with Matt Mullenweg, while a winning Drupal site would get a dinner with Dries. It sounds like good fun, and a good chance to get soem promotion of your authoring skills. More details can be found at and

Also mentioned: several upcoming meetings: GNHLUG meets at The Farm on October 22, lots of good meetups like the Web-Developers group and the Seacoast WordPress group at AlphaLoft in Portsmouth. And tickets are getting scarce for WordCamp Boston, held October 25-26-27 — get yours soon!

Thanks to Craig for presenting, Jonathan for organizing the meetup, and all for attending and participating!

Seacoast WordPress notes, October 2, 2013

The October meeting of the Seacoast WordPress Meetup was held on October 2, 2013, at the AlphaLoft coworking space. Thanks to owner Josh for encouraging groups to use the space!

Of course, you never get techies together when they don’t just jump into talking about what they’re up to! We had a question on using Content Delivery Networks (CDNs) to improve responsiveness for an international site. David talked about his experience with CloudFlare. A quick Google showed that there were a number of plugins that claim to offer some CDN functionality, and that initial offers the member had gotten might have been inflated.

David also showed the Dynamik theme add-on to the Genesis theme that generates a set of media queries to support mobile devices.

We started off the more formal meeting with a round of introductions: Amanda, Chris, me, Jim, Laurel, Dylan, David, Andy, Tina, and Tom.

Off we go into questions and comments. One member did some troubleshooting of a plugin-laden site using P3, the plugin performance profiler. Others offered their opinions that excessive plugin use can be the source of a lot of compatibility and/or performance problems.

The main presentation of the evening was from Amanda Giles and the Canvas theme from Woo Themes. Wow! This theme can do a lot, lay out in a number of different ways, and has great administrative functions off the dashboard to make lots and lots of changes from within the interface, and not having to fork off a child theme and mess with the code directly. The Premium theme is $119 for developer version or $99 basic. Both include a year of support and upgrades. The Developer version includes PSD files for designers to customize the theme in PhotoShop. A yearly upgrade is obviously what Woo would like everyone to do (who wouldn’t?) but Amanda indicated it’s okay to stick with the version you buy in perpetuity or until they come out with a compelling feature you want.

The number of features were remarkable. Here are a few I remembered to record: easy file structure, lots of hooks, extensive admin functions, support for short codes. Amanda set up a website for attendees to follow along with the various pages of the dashboard and do a little experimenting. Obviously, the access can’t be made public to the entire internet. See We worked our way through many the Canvas options, for an hour! If you don’t have Photoshop, check out for an online utility that will do many of the basic functions.

Woo Themes also includes “templates” within the theme that allows more complex layouts: Magazine has a full-width slider, followed by full-width article, followed by a grid of articles. Also, a second template, Business, with a different layout.

In the header of the Woo Themes dashboard, “View Theme Documentation” takes you to the WooThemes web pages of documentation, which are extensive!

Amanda reminded us that WordCamp Boston will be happening at the NERD Center October 25-27. Well worth the effort to attend. Seacoast WordPress folks will try to get together for a birds-of-a-feather session or lunch; watch the Meetup group for details.

Three Lightning talks at Alphaloft: September 2012 Seacoast Web Dev Meetup

An excellent time as always at the Seacoast Web Developers Meetup held at AlphaLoft in Portsmouth on September 25th.

Josh Cyr presented his initial research on Google Drive. Josh worked with a client to develop a workflow process using events occurring in Google Drive to process documents. The API from Google allows you to iterate through files and folders, change properties. up- and down-load.

Paul Finn presented Vagrant, a shell around virtual machines that allows simple and easy download of pre-made images, spinning up the VM and talking to it (ssh) via Ruby scripts. Paul’s slides are here:

Ted Pennings (@thesleepyvegan) talked about cryptography: the basic concepts, aspects of concern, best practices and more! A very informative 20 minutes from a man who’s obviously deeply involved and enthused about the subject. Slides are here:

Static versus dynamic web sites

I don’t think there are any static sites on the internet. They are either growing and changing, or rotting away. Decay is a dynamic process, too. Sites need to be refreshed. I have a eleven-year-old blog (next month), and have found most of the links in the first couple of years have rotted away, and need attention. I need to update the underlying OS, web server, runtime language and site application. Vendors and the community provide updates and security patches.

If I visit a site and it’s in HTML 4.01 with marquees and animated GIFs of envelopes flying into mailboxes, I make some (pretty severe) judgments about the proprietors. If the owners hard-coded their names, addresses and contact info into all the pages, they will always, always miss one of them when they update.

So, while your content, organization and basic layout may not change THAT OFTEN, they’ll need changing, so why not use a dynamic engine that will make it easy?

Powered by WordPress. Designed by Woo Themes

This work by Ted Roche is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 United States.