Pono Rez WordPress Plugin

Together with Commerce Collective,1 we have built a WordPress plugin to allow Activities & Attractions Association of Hawaii (A3H) to quickly and easily integrate activity bookings and sales into their WordPress websites.

We still have more features to add to the plugin, but it’s a solid start that will save A3H members a lot of time. It is written in PHP2 and JavaScript, and uses the Pono Rez SOAP interface to integrate activity data into a WordPress page.

Check out the plugin page here!


  1. I started working with them last year, remember

  2. Like all WordPress plugins, of course. 

CenturyLink AppFog Tutorial

Recently I wrote a tutorial with Word Lions for CenturyLink Cloud that teaches how to build and deploy a Node.js application to CenturyLink AppFog. The tutorial and application were really fun to build and write. It was my first Node.js project, and my first experience with CloudFoundry. The tutorial uses the following CenturyLink Cloud products:

AppFog is CenturyLink Cloud’s CloudFoundry system. It is really powerful, and it appears to be more flexible than Google App Engine.

Read the Tutorial

The tutorial walks you through building a document storage system with a built-in PDF reader and comment storage. It also includes user authentication and some other neat Node.js tricks. You can follow the tutorial from the following links, which will include all of the information needed to get you up and running on AppFog with Node.js. Enjoy!

  1. Deploy an App With User Login
  2. Using CenturyLink Cloud for Object Storage
  3. Add Search Capabilities with Orchestrate
  4. Building a PDF Viewer and Comment System

Link Rodeo: Go Package Management and Boring Technology

Here are a number of interesting topics for you to think about this week.

I’ve been learning the Go programming language recently, and in the process I’ve been having conversations about it with friends and colleagues. Go has a unique package management system that has already caused me a number of headaches. The recommended method for taking care of package dependencies is lacking, at best. Over at Nerdbucket, my buddy Nerdmaster has written a thoughtful piece about it.

While I’m talking about new technology, I’d also like to contradict myself by agreeing with Dan McKinley’s great piece, “Choose Boring Technology.” He argues that a project should be careful about adopting lots of new tools and technologies. It reminds me of a time recently when I was looking for a Node.js programmer, and one of the replies I got back was, “For us, Node.js is glue. Its ecosystem is still too young to support anything long-term. Libraries and packages move too fast to build a product that will need actual maintenance.” I’ve had the same feeling about many technologies I’ve wanted to try, such as Ocsigen for OCaml, which has a build system and API that is always several steps ahead of its documentation.

This post’s featured photo is courtesy of Flickr user MunicipioPinas.

Don’t Modify the Clipboard with JavaScript

3429454121_9a93f53855_oRecently, I was reading an article about a newly published book that I’m interested in. However, the article didn’t include a link to the book, so I copied the title by highlighting it with the mouse and hitting ‘Ctrl-C’, and opened a new browser tab to do a search. However, upon pasting, I saw the book title along with an annoying addition: “To read more, visit our website at [redacted].”

This sort of website behavior is not okay.
Read more

Pansophie Online Color Test

The Pansophie PC testing interface.

The Pansophie PC testing interface.

Pansophie Personality and Color is focused on mapping personalities to colors. Alexandra Hall wanted an online testing platform with flexible questions, testing mechanisms, and report generation. I built a full-featured web application to meet Pansophie PC’s requirements. This was one of my early Zend Framework projects, but it ended up with some neat features.

  • A private administrative interface
  • Seamless jQuery-backed test interface with few pageloads
  • Custom PDF reports, generated on the fly
  • A customer database with contact information
  • API endpoints for test generation
  • Integration with 3rd party e-commerce system

Pansopie PC isn’t currently doing business.

How to Enable XPath in Internet Explorer

Yesterday, I shared a little bit about using a virtual machine to test frontend code under Internet Explorer (IE). My goal was to use Wicked Good XPath to add the proper XPath features to IE so that EPUB.js would work correctly, thus making the Philalethes E-Bulletin Online Reader work on all major browsers.

Well, I’d been thinking about this problem for a while, but had delayed working on it because I just didn’t want to fiddle with IE. While I’d been thinking about it, the EPUB.js instructions were updated with IE-specific steps. I didn’t have to look far.

After loading wgxpath.install.js in the header, I just had to add this bit of JavaScript before anything important happened:

1
2
3
4
5
6
7
8
9
// Internet Explorer workaround.
if (!window.XPathResult) {
    EPUBJS.Hooks.register("beforeChapterDisplay").wgxpath = function(callback, renderer){
       wgxpath.install(renderer.render.window);
 
       if (callback) callback();
    };
    wgxpath.install(window);
}

You can see on line 2 that I test for window.XPathResult instead of looking for a user agent or anything like that. That’s because it’s not really IE I’m interested in detecting. I want to find out if XPath is both available and somewhat standard. User agents are unreliable. Always test for feature availability instead!

Recent web browser usageThe results are good enough for now: the Online Reader works in IE, but it’s not perfect. The cover image doesn’t load full-size and fonts don’t seem to be loading correctly. IE users account for only 10% of the traffic on the website, so obviously I need to work on the EPUB.js cross-browser support. For now, though, it works. And it looks great on Chrome, Safari, and Firefox.

How to Test Your Frontend Against Internet Explorer Without Booting Windows

Internet Explorer (IE) has been frustrating me. I want to use stronger words than that, but it would be unprofessional.

I recently launched the Philalethes E-Bulletin Online Reader, which uses EPUB.js and an implementation of XPath that, for some strange reason, isn’t available in IE. I found a few solutions which would work, but all of them require testing in IE. Of course.

This seems like it wouldn’t be a problem, except that I run Linux all the time. All of my work happens on the Linux side of things, so booting into Windows just to run IE for one tiny bug fix is an inconvenience and a chore.
Read more

Hypothes.is Web Annotation Tool

Hypothes.is LogoWhile working on the Philalethes E-Bulletin Online Reader, I came across a useful web-based annotation tool called Hypothes.is. It’s worth checking out. The tool uses a browser plugin to provide a number of cool features.

  • Annotation
  • Discussion
  • Tagging
  • Sharing
  • Privacy Control

It also provides an annotation stream that allows you to view public annotations as they’re being made all over the web.

I’ve installed the Hypothes.is WordPress plugin so you can experiment with Hypothes.is on this website. Please try it out!

Philalethes E-Bulletin Online Reader

Philalethes Society SealI began working on the Philalethes E-Bulletin in the Fall of 2013, and published the first issue in January of 2014. The E-Bulletin is published quarterly in EPUB and MOBI formats.

It’s been a great learning experience. Not only have I learned a lot about editing, but I’ve really had to dive into how electronic publishing works. The intricacies of electronic book formats have become well-known to me.

The Philalethes Society isn’t entirely comfortable with modern technology, however. Most complaints about the E-Bulletin came from those who didn’t have e-book readers and weren’t comfortable installing software on their PC to handle a new file format. Because of this, I built an online e-book reader specifically for the E-Bulletin.

The online e-book reader is based around the excellent EPUB.js library, with additional backend code written in PHP.

Click here to visit the Philalethes E-Bulletin Online Reader.