Conductor v1.5.7

Author: Jeremy Friesen

Incremental improvements.  That is what v1.5.7 of Conductor is about.  If you are using Google Analytics with your Conductor site, and we hope you are, we have added a link in the Admin Dashboard.

Dashboard with Google Analytics Link

We've made some behind the scenes updates that allow us to better monitor Conductor usage; Perhaps this isn't very exciting for you, but in order to improve and verify we need to have something to measure against. We've also updated the underlying programming framework for Conductor; In keeping current with the framework, we can provide better security, performance and feature options. 

And last but not least, our favorite bug of them all. The seemingly bizarre behavior of in which on the first viewing of a page, "Über" was displayed correctly, but on refresh it became "Ãœber" (see the below images).

Before first page view

After after refresh

Needless to say, with some sleuthing, we were able to fix the problem.  Read on for more of the technical details.

Hey buddy, I'm ISO_8859-1 (you may also know me as Latin-1)

This was certainly a strange bug.  Fortunately, there are wonderful developer tools available to modern browsers (i.e. Chrome, Safari, and Firefox).  With these tools, we were able to track down the following: In the first request, the HTML was declared as UTF-8 encoding, which was correctly assigned by the underlying programming framework (Ruby on Rails); On the second page request things changed; After the page loaded the first time, the information was cached on the web server; thus enabling faster response times for future requests.  With the second page request, the server said "I know the answer to your request" and sent the cached page back, skipping the Ruby on Rails framework.  But, what it "failed" to do was send back the UTF-8 character set information. So, the browser, on the second request was forced to guess what the encoding was.  And as it turns out, the page said, in its HTML header "Hey buddy, I'm ISO_8859-1 (you may also know me as Latin-1)".  The browser then rendered the page using the ISO_8859-1 encoding, and thus what once was  "Über" was became "Ãœber".  The thing was, the page "lied"; Its content was UTF-8 encoded, but we had accidentally said it was ISO_8859-1 encoded.

The solution was two-fold: First, I updated the web server to say that all HTML from the application will be UTF-8 encoded.  That alone would solve the problem, but there was still the fact that the page said it was ISO_8859-1.  In the page, we of Agency ND had inadvertently declared that the character set was ISO_8859-1, when in fact it should've been declared as UTF-8 (our preferred character encoding).  So with a quick update in the page, it now said "Hey buddy, I'm UTF-8" if asked.