People have started to notice that Rails is adding a snowman to their URLs. There even is now a website devoted to this.
These types of social implications of technical decisions fascinate me. Here’s some further background that I have pieced together. I may have some details wrong, corrections welcome.
For starters, Rails by default standardizes on utf-8 for web pages. As with pretty much everything in Rails, you can change the default, but virtually nobody does. Utf-8 is a good choice here, and certainly is better than iso-8859-1 or win-1252.
Rails provides the encoding information on the Content-Type header, and on the accept-charset attribute. Under normal circumstances, this will cause all responses to be encoded as utf-8, across all commonly used browsers. Yes, including IE.
Most pages in Rails are produced using templates, and generally these templates are not the problem. Data in those templates typically come from databases, and sometimes data can get into databases that isn’t 100% pure and clean. In particular, sometimes this data may have encoding errors. Such errors can easily become visible when that data is displayed in a form.
User behavior varies in the presence of such errors, but a common reaction is to switchtheencoding.
The trouble starts when the user then proceeds to submit the form. The net result, with some browsers, is that the data is sent respecting the user’s choice. In other cases, browsers send the data using the application’s choice.
How Rails will react to encoding other than utf-8 being used depends on the version of Rails, the version of Ruby and a number of other factors. In some cases, the result is an HTTP 400 response code (Bad Request). In others, a 500 (Server Error). In others, a 404 (Not found). In others, even more misencoded data will make it all the way to the database.
As I said, sometimes the browser will chose to respect the user’s choice. This is generally only done if it is possible to do so. As not every character can be encoded using Western ISO Latin1, including such a character in a hidden field has been found to be an effective strategy of forcing the browser’s hand.
In most cases, this is simply invisible metadata that solves a real problem that is otherwise hard to describe and debug.
Unfortunately, it isn’t always so invisible. Try a query on this page and observe the resulting URI. This page opted to use HTTP GET in order to make the URI meaningful. Unfortunately the URIs with the latest version of Rails now have a bit of exposed cruft.
The fact that people care about such things to complain indicates that socialization of the concept of that URIs are to be meaningful is working. The unfair perception that this is (yet another) workaround for IE has also entered into the debate.
This is a very real problem. One without clean and comprehensive solutions. The Rails team is aware of the _charset_ hidden value, but that opens up a different set of problems.
Solutions being discussed to date include renaming the form field, choosing a different character, moving the field to the end of the query, and providing a mechanism to opt out.
Many things have changed since Rails 2.3.x. Few changes (except for those affecting views and mail) affect existing projects beyond the normal cycle of deprecation. Lots affect books, and the way you learn Rails.
If you are the type that prefers to learn from a book, there are lots of good Rails books out there. In all, I would say that the most important criteria is picking a book that matches the version of Rails you plan to be working with on. Agile Web Development with Rails is available for Rails version 2.x and for Rails version 3.x.
Noah Slater: Joining the ASF was an interesting experience for me. I had come from a free software background, and proudly wielded my gnu.org email address around. At some point along this journey, I gave up on my publishing software. There was no other reason for my continued involvement with the project, beyond the fact that I loved being a part of the community. It was, and remains, so vibrant and positive. All of the aggression, and trolling, and arguments I had become used to on the free software lists just didn’t exist. It was comparatively idyllic! It slowly occurred to me that free software misses the point, and so does open source. It isn’t about enforcing freedoms and political agendas. It isn’t about more eyes for shallow bugs. It’s about community. Without a throng of decent, friendly people who are open to new ideas, discussion, and who enjoy collaborating and helping each other, a project like this is nothing. A good community can make up for poor documentation, and lack of features. A good community can make up for anything!
I love CouchDB, but I love the CouchDB community even more.
Allen Wirfs-Brock: Web standards are complex software artifacts and like all software, they contain bugs. Sometimes the best way to find and fix compatibility bugs is to implement and deploy the standard on widely used browsers. This generally takes place in the context of early releases such as the IE9 platform preview builds. So, when you as a web developer are providing feedback on such releases you aren’t just providing feedback on a specific browser you are also providing feedback on the new and emerging standards that it implements. Of course, for this feedback to be worthwhile, browser implementers and standards authors need to be able and willing to quickly respond to feedback that identifies significant problems. The rapid response to the ES5 jQuery toString problem and other issues on es5-discuss show how browser implementers and other TC39 members can and do work closely together to create a more compatible and interoperable Web. But it all starts with your feedback, so please keep it coming.
Just got back from a 9 day cruise, with no email, internet, or cell phone. Recommendations for future preparations:
Pack a watch. I’ve stopped wearing one as I’m typically near my house, my car, or my cell phone, each of which will readily provide me the time. On the cruise, I wasn’t near any of these three.
Purchase inexpensive water shoes. The shore and water were gorgeous, but once you got to the waterline, sand was replaced by rocks. My sister-in-law tipped me off on this one, and this recommendation is worth passing along.
Bring a waterproof card case with lanyard. You will need to carry your pass key and driver’s license with you whenever you get off.
Check out a towel the night before any excursion. The cruise line will loan you towels, it simply is best to avoid the morning when there may be a run on them.
Expensive lanyards and watches are available; oddly water shoes and card cases were hard to find.
Stephen Shankland: One possibility is a growing rift between two camps that are both deeply involved in the standard. But given the players' commitment and their continuing work together, a rosier scenario is perhaps more likely: oversight of the future Web isn’t collapsing, it’s just rebalancing.
Balanced piece that neither sweeps under the rug nor sensationalizes the differences that we are working through.
Brian Hogan: I am getting really, really tired of Mozilla screwing up the HTML5 specification. First it’s video, and now "we’re never supporting Web SQL"
By video, I’m assuming that Brian is referring to the fact that Mozilla does not plan to implement H.264. With respect to Web SQL, what would be needed is for somebody to define an interoperable dialect of SQL which would be support multiple interoperable implementations.
Rich Cannings: Every now and then, we remove applications from Android Market due to violations of our Android Market Developer Distribution Agreement or Content Policy. In cases where users may have installed a malicious application that poses a threat, we’ve also developed technologies and processes to remotely remove an installed application from devices. If an application is removed in this way, users will receive a notification on their phone.
The upgrade is complete, and yesterday the temperatures hovered around the 100-degree mark. In total, the air conditioners ran 3:14, 5:52, and 5:49 on the first, second, and third floors respectively, and at all times each and every part of the house was comfortable. I don’t have a baseline to compare it to, but I do recall that in prior years the air conditioner on the third floor was unable to keep up, and therefore ran continuously.
The company that did the work is ProActive Energy Systems. They were courteous, cleaned up after themselves, and addressed other problems that they noted along the way, such as sealing the air conditioning unit for the second floor. If others in the area are considering taking similar measures, I would recommend this company.
Running Linux and Firefox, I’m pretty safe from most viruses, but worms are another story, and I was fooled into propagating one earlier this evening. I haven’t pieced together all the details yet, but as near as I can tell Facebook doesn’t care to police such things despite many people reporting the issue.
Looking deeper into the worm itself, it appears that Google is hosting key portions. I’ve reported the abuse to Google; meanwhile I’m hoping that somebody at Google who reads this could expedite the taking down of this blog.
Dean Hachamovitch: Our continued ask, is that you download the latest preview, try the samples on the test drive site, and try your own sites. Send IE9 the same markup that you give to other browsers.
Much improvement (in particular, SVG width, height, and clipPath seem to be supported now). One issue, which is rather glaringly obvious.
Paul Irish: Because HTML5 and its related technologies cover so much ground, it can be a real a challenge to get up to speed on them. That’s why today we’re sharing HTML5 Rocks, a great new resource for developers and teams looking to put HTML5 to use today, including more information on specific features and when to use them in your apps.
I encourage advocacy sites to validate their content, and either conform or submit bug reports on intentional differences.
Note: Google is not unique here, see also Apple, and Microsoft.
Dave Winer: Chris Janton pointed out that some of my OPML isn’t properly handled by another OPML-processing application, and that my own validator rejects it as invalid.
Yesterday, a Minneapolis Blower Door was used to depressurize our house, in order to detect leaks. Overall, the house fared fairly well.
Today started the installation of the aluminum foil energy barricade, starting with the area over the FROG. I’ve not taken any formal measurements, but on a day like today (92°F) that area generally would be considered unbearable. I wouldn’t say that it was exactly comfortable, but it was bearable — roughly equivalent to sitting in the shade on a 100°F with no breeze. By contrast, the foil itself is definitely hot. This barrier alone has to make a difference.
Slides from the presentation that will start in just a few minutes.
The live dashboard snapshot referred to in the presentation is showing a number of NO OUTPUT failures due to the recent change to 1.9.x breaking my usage of test/unit.
Brad Neuberg: Do they really care that things like Local and SQL Storage were broken out of the main HTML5 spec? Do they care that the Web Socket protocol actually lives with the IETF now rather than being inside the HTML5 spec itself, as it originally was? Do they care about the “how many angels fit on the head of a pin” battles between HTML5 Microdata, RDFa, and Microformats? They don’t. They just want to come up to speed on the newest developments and apply them to their jobs.
DeWitt Clinton: what is important is how a company licenses a particular technology, regardless of their patent holdings. As Brett points out in the comments, PSHB is covered under the OWFa, which was signed by all the many contributors.