Blog

Posts from the category "Code"

Here at Scout Labs, we know there are some big corporations out there that are still standardized on IE6. We work with some of them, which is why to date we’ve supported IE6. We didn’t want to cut off IE6 users or subject them to a substandard application experience. We know most of them are stuck on IE6 because of IT admins who overinvested in proprietary apps that ONLY work on IE6, have NEVER been updated and never will be, are purposefully holding them back.
Picture 7.png

But the time has come: Support for IE6 is officially over. Not only is IE6 subpar with respect to speed, stability, and security, it limits the options we have in developing new functionality that relies on more modern, standards based browsers, specifically Javascript dependent interactions. As of our Feb 2010 release, we will finally have hit the wall with IE6: IE6 just doesn’t support the Javascript dependent interactions that our new Assignments functionality, and to a lesser extent upgrades to our graphing and collaboration features, require.

This is a decision point that old skool internet companies like Yahoo and Web 2.0 companies like Facebook and bellwethers in the SAAS space like Salesforce have already gone past. Hell, 37signals phased out IE6 support in October of 2008, which is the Internet equivalent of the Nixon era. Even Europe is following suit. But for those of you still using IE6, here are some options:
Picture 8.png


  • If you have the necessary permissions on your computer, install and use any browser more modern than Internet Explorer 6. You can download Firefox or Chrome for free. As of Feb 2010 Scout Labs officially supports IE7, IE8, Firefox, Safari and Chrome.

  • Upgrade to Internet Explorer 7 or 8. Even IE 7 is faster, more reliable, and better supported by Microsoft than IE 6. Though we’d pick IE8 over IE7 any day.

  • If you don’t have the necessary permissions on your computer, find the person who does. If they wont help you, send them this link: http://www.ie6nomore.com/ Or this one: http://www.stoplivinginthepast.com/ Or this one, from a Microsoft employee: http://www.hanselman.com/blog/IE6WarningStopLivingInThePastGetOffOfIE6.aspx Or….you get the picture.

  • If you are denied permission to upgrade past IE6, go find a company executive who believes in the future. This is a great way for some up-and-comer to make everyone in the company more productive via upgraded internet tools and experiences, and themselves wildly popular (with all non-IT personnel) in the process.

The cool part is, now we get to support Chrome- which is a fun browser, and great news for users of Microsoft OS products of a more recent vintage. And for all you network admins who just can’t seem to get everyone off IE6 and Win2000? Better hurry up, before every SAAS app your workforce relies on becomes standard equipment on the corporate smartphone- and no one gives a hoot about that big old box with a ten year old browser on it, anyway.

We heard a tweet on the wire about Raphaël.js back in October. An open-source javascript library that abstracts vector drawing and animation across web browsers. The demoes show beautiful, fast, interactive graphics. Support for more computer platforms than Flash. Inspiring!

So, we began an experiment here at the labs to replace our static image graphs with dynamic, clickable visualizations, built on open internet standards (and Microsoft’s proprietary VML).

Could it work? Would it explode IE6?

Blog volume: San Francisco Bay Bridge


Those peaks in volume are Cracked I-beam Discovered on Bay Bridge and then Bay Bridge Closed After Crack Repair Fails.

Blog volume comparison: SF coffee scene

Blue Bottle Coffee, Ritual Coffee, Four Barrel Coffee, Sightglass Coffee


Hot browser abstraction action

Raphaël exposes simple Javascript constructs of circles, rectangles, paths with bezier control points, and text, along with ways to animate movement, color, opacity… With these ingredients, painting a picture through code, Raphaël generates open/free/standard SVG markup for Firefox and Safari, switching to VML output for Windows Internet Explorer.

Elder Firefox 2 is our only real casualty; the SVG support is nonexistant in that faithful dog. We fondly scoot along the three of you still on Firefox 2, toward Firefox 3.5.

So, yes, they’re here. All Scout Labs workspaces now have these interactive graphs.

We always enjoy a good data visualization, especially when it’s elucidating what we are doing here at Scout Labs! On Wired Magazine this weekend was a infographic of what happens after you hit “Publish” on your blog page. It’s called “The Life Cycle of a Blog Post, From Servers to Spiders to Suits - to You”. If you can figure out how to click and hold your mouse down to zoom it and scan around, you’ll see a category called “Data Miners” and I guess that’s partly us — the ones who analyze the blogosphere (and social networks and image-sharing sites and video sharing sites and user reviews) to make sense of it for clients overwhelmed by the sheer volume of it all. But we are also the “Corporations” (yes, “the Suits”), because real people at real companies are using our service to Scout what people love, hate, want, think and feel about their products, brands and services. What we are NOT: an ad network or aggregator trying to sell ads. We figure there are plenty of those out there desperately trying to get ads in front of eyeballs. Inspiring people to build better products and to build stronger relationships with customers sounds much more fun to us.

Rails Tip: Inverse of #url_for

· 1 comment

Rails provides a highly functional URL-to-action routing system. The core method used by #redirect_to and #link_to when generating URL’s is #url_for.

So, the question eventually pops up:
What is the opposite of #url_for?

The answer is built-in to Rails, used at the beginning of every request in dispatcher.rb to generate a route from the URL. It’s stashed inside a :nodoc: section of Rails’ source:

ActionController::Routing::Routes.recognize_path

Depending on context, your call to #recognize_path may need to be prefixed by the top-level class prefix “::”.

#recognize_path only works on the path part of the URL. Passing a full URL with the protocol, hostname or query string will cause throw ActionController::RoutingError. Make sure you cleanse the path of those URL components.

In my case, usage looks like:

return_to_hash = ::ActionController::Routing::Routes.recognize_path url.gsub(/\?.*$/,'')