Jul
03
2008
In response to 37Signals announcing that they will stop supporting IE 6, I checked my Google Analytics and discovered something surprising: 7% of EnfranchisedMind readers still use IE 6.
To them, I say — PLEASE UPGRADE. And let me know why you’re still using it — I’m really, genuinely curious.
So, why should you upgrade? I’ll quote 37 Signals:
The Internet Explorer 6 browser was released back in 2001, and Internet Explorer 7, the replacement, was released nearly two years ago in 2006. Modern web browsers such as IE 7, Firefox, and Safari provide significantly better online experiences. Since IE 6 usage has finally dipped below a small minority threshold of our customers, it’s time to finally move beyond IE 6.
[...]
IE 6 is a last-generation browser. This means that IE 6 can’t provide the same web experience that modern browsers can. Continued support of IE 6 means that we can’t optimize our interfaces or provide an enhanced customer experience in our apps. Supporting IE 6 means slower progress, less progress, and, in some places, no progress. We want to make sure the experience is the best it can be for the vast majority of our customers, and continuing to support IE 6 holds us back.
More information can be found at the Stop IE6 Campaign. Specifically, see the Top 10 Reasons (there are actually 12 of them…).
As Internet Explorer 8 cruises into being, can we please agree to put to death this ancient, buggy, insecure piece of code?
Popularity: 1% [?]
Jul
01
2008
From Otaku, Cedric’s weblog:
Here is an interesting coding challenge: write a counter function that counts from 1 to max but only returns numbers whose digits don’t repeat.
For example, part of the output would be:
* 8, 9, 10, 12 (11 is not valid)
* 98, 102, 103 (99, 100 and 101 are not valid)
* 5432, 5436, 5437 (5433, 5434 and 5435 are not valid)
Here’s an OCaml solution. Not terribly optimized, but good enough for free work. The solution is trivially changed into any base you’d like (even into calculating words with unique characters or whatever), and it calculates all the values from 1 to max_int in 27 seconds on my 2.16 GHz MacBook Pro.
Continue Reading »
Popularity: 2% [?]
Jun
29
2008
From Citizen Astronomy, ScienceNews:
From a scientific standpoint, Galaxy Zoo started paying dividends almost from day one. “This is not something we expected,” notes Chris Lintott, an Oxford University scientist and “zookeeper.” The hope was that hundreds of people would log on. To date, almost 150,000 have.
And the idea that many of the images might one day be categorized illustrates how low the zookeepers’ expectations had been. On average, each of the images on the site has already been seen and characterized by 50 people. Those 50 million photo evaluations “is simply fantastic,” Lintott says, “and illustrates for us one of the huge advantages of getting the public involved. It gives us an error bar on the classifications.”
Popularity: 1% [?]
Jun
26
2008
Those Groovy adepts who want to skip to the punchline can check out my best-seller JIRA ticket: “ExpandoMetaClass sometimes, but sometimes MetaClassImpl“.
For the rest of us, check out some odd behavior in Groovy.
class A {}
def a = new A()
a.metaClass.greet << { println "Hello, World!" }
a.greet()
Looks great. Looks like a classic “Metaprogramming in Groovy” example, right down to including “Hello, World!”. So, I’m off to run it…
Exception thrown: groovy.lang.MissingPropertyException:
No such property: greet for class: groovy.lang.MetaClassImpl
groovy.lang.MissingPropertyException:
No such property: greet for class: groovy.lang.MetaClassImpl
at Script0.run(Script0:4)
WTF? Weird…where’s that “MetaClassImpl” come from? Where’d my ExpandoMetaClass go?
So, right after executing the first line, and I check out the metaClass attached to the class.
class A {}
println A.metaClass.class.simpleName
// prints "ExpandoMetaClass"
Okay, good, so I’ve got it. The awesome part is what comes next.
def a = new A()
a.metaClass.greet << { println "Hello, World!" }
a.greet()
// prints "Hello, World!"
Hey, whaddyaknow? Now it works out great.
Turns out that you only get the ExpandoMetaClass if your class statically calls “.metaClass” before the variable is instantiated. Either that, or you need to call ExpandoMetaClass.enableGlobally().
Popularity: 3% [?]
Jun
25
2008
Edit: BTW, the title of this post is a reference to “Music to Make Love to Your Old Lady By“.
Almost every developer I know puts on their headphones when they’re really getting into coding. Now, I’m assuming that everyone is listening to
something, and I’m curious to know what it is.
Here’s my list. Continue Reading »
Popularity: 2% [?]