Critical Section

Archive: May 2007

<<< April 2007

Home

September 2007 >>>


BigTIFF + world's first terapixel image

Friday,  05/04/07  08:57 AM

I'd like to interrupt my normally scheduled content for some chest-beating.  We at Aperio have implemented BigTIFF - enhancements to the TIFF image standard to support files larger than 4GB in size.  (Press release here.)  We've created a little website at bigtiff.org which describes the enhancement in detail, provides source code and library downloads, and some sample images.  Included among the samples is the world's first terapixel image.  Yes, that image really does contain 3TB of image data, compressed into a file size of 144GB.  Whew.

And you can view it right here, in the pleasure of your own browser:

(Click the "+" to zoom in, and the "-" to zoom out)

The magic here is Aperio's technology for viewing large images in standard web browsers.  Pretty cool, eh?

(This could be another answer to "What do I do?" :)

 

1234567

Sunday,  05/06/07  09:26 AM

Today, just after noon, it will be 12:34 on 5/6/7.  This will not happen again, ever, so mark the moment carefully.

This happens to be my daughter Megan's 10th birthday, so it is a doubly auspicious occasion.  In fact, since that will be within a half hour of the arrival of twenty other 10 year olds, for a "birthday tea", I doubt I will be able to mark it peacefully.  But we will see.  Now off to buy ice cream and then, a quick bike ride.  No, that is not a non-sequitur; both are necessary for the events of the day.

I hope you have a numerically sequential day, too...

 

Sunday,  05/06/07  11:12 PM

So, we survived Megan's birthday in fine style; a great time was had by all!  And yes, we did mark 12:34 5/6/7.  But as Megan pointed out, it will happen again - in the year 2100...

So, Nicolas Sarkozy is France's new President.  This is a good thing.  And he wants France to change, also a good thing (and much overdue, in my American-view-across-the-water).  Good luck to him!

Thomas DekkerThomas Dekker won the Tour of Romandie.  I wore my Rabobank kit today on my daily ride in celebration.  Although I must admit he looks better in it than I do :)

And the Yankees have resigned Roger Clements.  Now that's just weird.

map showing where and how evolution is taught in the U.S.The other day I was reading about the Republican candidate debates, and I noticed that three of the candidates claim not to "believe in evolution".  Kind of like they don't believe in gravity, or arithmetic, or electrons, I guess.  Weird.  Anyway the map at right shows where and how evolution is taught in the U.S. (Click the map for a larger view.)  The "red states" don't teach it at all.  Now that is really weird.  Separation of church and state, eh?

This evolution idea is a bit tricky.  Why, Newsweek ran a cover story in which they got things pretty much exactly wrong.  I don't read Newsweek, but I read blogs written by people who do, and the results aren't always good.  Consider Scott Adams, author of Dilbert and an exceptionally smart and interesting blogger; after reading the article he got himself a bit wrapped around the axle.  Fortunately Pharyngula were standing by to, ahem, point out some of the difficulties.  "This is a case where the flaws in a popular science article neatly synergize with an evolution-denialist's misconceptions to produce a perfect storm of stupidity."  Indeed.

P.S. To the Republican debate; Dave Winer live-blogged it, and noted "They mention Schwarzenegger, and I realize none of these guys could even remotely win against Arnold."  That's what I think.  Who knows...

Forbes has a great special report on "networking", including a column on Mixed Media by Rupert Murdoch.  "Those of us in so-called old media have also learned the hard way what this new meaning of networking spells for our businesses."  I would have to say he's an old dog who has learned a new trick.  [ via Chris Anderson, who calls him a "longtailer" ]

Mark Pilgrim notes Silly Season: "Adobe introduced Apollo, their latest attempt to recreate the web in their own image... Meanwhile, Microsoft announced Silverlight, their latest attempt to recreate the web in their own image..."  And meanwhile, I yawn mightily.  I like Flash / Flex, don't get me wrong, but these galactic client-side development environments are too galactic.  Why can't they build on the blocks already there?  As Jeff Atwood notes, you can use Firefox as an IDE...

Want to see something amazing?  Check this out.  (If you don't want to click through, it is a color photograph; you stare at it, then without moving your eyes mouse over the picture and it turns into black and white, but it still looks like color to your eyes.  Or maybe to your brain.)  This sort of experiment gives great insight to how eyes and brains work.  It turns out the vast majority of sensors in your eyes are black and white, yet we appear to see in full color.  A great deal of "filling in" happens in the background.

Reminds me of this one: How to Stop Time.  Good night!

 

Sweet Revenge

Monday,  05/07/07  09:10 PM

I came across a great article about cancer in the latest issue of Caltech’s monthly newsletter, Engineering and Science:

Sweet Revenge

It is really well written, I learned a lot about cancer, how it is being treated, and how many of the side effects of the treatments come about.  The article describes an innovative drug developed by a Professor of Chemical Engineering at Caltech, Dr. Mark Davis, after his wife was diagnosed with breast cancer.  The drug is presently undergoing Phase I trials – the article also explains the whole FDA approval process nicely.

Electron micrograph of breast cancer cell

FYI and entertainment…

 

science vs. faith

Monday,  05/07/07  09:20 PM

This diagram seems to capture the essence of science vs. faith pretty well...

science vs. faith

I love it, thanks to Wellington Grey...

 

Monday,  05/07/07  09:29 PM

Some naval gazing; I have deleted my blogroll, refreshed my OPML file, and wired the "blog roulette" at right into the OPML.  Back in 2003 it was cool to have a blogroll, but now it just doesn't seem at all useful.  Poof.

I am happy to see my blog's traffic rising!  Yippee that means people have actually noticed that I'm posting again.  This blog is ego driven, so the feedback is great.  Thank you.

So, what's happening in the Blogosphere, shall we see?

The always invaluable Charles Johnson at LGF reminds us that France is not America: How Many Cars Torched?  The punch line is that the night after Nicholas Sarkosky's victory in the French Presidential election, 730 cars were burnt.  Hmmm...

I don't know what is worse, that 730 cars were burnt, or that the AP reported 367 instead.  The blatant bias there is incredible...

Update: LGF reports both trends continue, more violence, more cars burnt, and the mainstream media continues to underplay the situation.

Posting about science vs faith reminded me to mention a study published in the American Heart Journal: The Study of Therapeutic Effects of Intercessory Prayer.  This study of 1,800 patients concluded that praying for patients who underwent bypass surgery did not help.  You're shocked, I know.  [ via Boing Boing ]  Perhaps more shocking is the fact that actual time was spent on such a study, when more important factors than wishful thinking could have been investigated.

Cycling news: Ivan Basso has admitted his involvement in the Puerto scandal.  Wow.  He was arguably the second best stage rider at the end of the Lance Armstrong era, edging out Jan Ullrich, who retired last February under a doping cloud himself.  Bad stuff.  I wonder if the sport of cycling can honestly recover?

St. Maarten runway - proximity to beachJason Kottke: No matter how many times I see the photos, the proximity of the runway to the beach at the St. Maarten airport amazes me.  Yep, me too!

Sony ReaderSo, I love to read, and I don't love to lug books around, and I love gadgets.  I'm in the natural sweet spot for an electronic book reader, right?  Right.  But they all suck.  The screens aren't good enough, they're heavy, they're hard to use, the screens aren't good enough, they have DRM issues, battery life is iffy, and the screens aren't good enough.  Right?  Well, maybe it is time; Brad Feld reports good things about his Sony Reader...

DIGI COMP IDid you ever have a DIGI COMP I?  Yeah, me too.  And boy did I love it.  Well now you can build your very own!  If that isn't a nerds delight, I don't know what is...  [ via Engadget ]

 

 

 

almost famous design and stochastic debugging

Wednesday,  05/09/07  10:19 PM

Yeah, I know you could tell from the title, this is a

<rant type=philosophical>

Last weekend I checked in a change to the Aperio Image Library (AIL).  It was a “refactoring” change; I moved the cropping logic formerly found in one class into another.  So anyway I made this change…

… and it worked!

And that would be the end of this story and not worthy of a blog post, but I discovered a fug.  A fug is a feature which is so lame as to be indistinguishable from a bug.  I'll spare you the details, but it had to do with thumbnails, and it ended up that a thumbnail was returned, but it was too small to be usable.  A fug.

Okay, so what to do?  There was a design choice to be made, and I made the wrong one.  I spent a whole week debugging the resulting code, which broke in about four directions because of my choice.  In retrospect it was apparent immediately that my design choice was incorrect.  I should have applied W=UH, realized that U was too high, and stopped.  But I did not.

{
For those who don’t know, W=UH is the universal equation of life, which holds that:

Wrongness = Ugliness * Hardness

If something is Ugly or Hard, it is Wrong. This was first observed in relation to programming but turns out to be relevant for everything :)
}

Which brings me to “almost famous” design.

One of my favorite movies is Almost Famous, a semi-autobiographical movie by Cameron Crowe which chronicles a 15-year old kid who ends up touring with a just-about-to-make-it rock band.  If you haven't seen it, you should.  Anyway there’s this scene where Cameron is going to a concert, and his Mom drops him off, and as he’s walking away she yells after him “make good choices”, and a bunch of the other concert goers start taunting him with it.  But Mom was right, in life as in programming you have to make good choices.  The consequence of a bad choices is far-reaching and greatness will elude you after that; you will never be more than almost famous.

So, W=UH provides clues when you've made an almost famous design choice, and when this happens you must backtrack and fix the bad choice, or be forever saddled with ugliness, hardness, and wrongness.

In this situation however I ignored the wrongness and pressed on.  And immediately found myself doing “stochastic debugging”. Which is always a sure indication of a bad design choice.

{
stochastic = random, a stochastic process is one in which things are done randomly
}

What is stochastic debugging?  Well, that’s when you “try stuff” in the hope that things will “just work”.  I know you've been there, don’t tell me you haven't.  Here I am in this little thumbnail generation method, and I have all these parameters and class values, and I’m trying various combinations of things hoping to get the thumbnails to generate correctly.  Eventually it worked, for some set of test cases, but then inevitably there was a new test case and it didn't work.  Like balancing a ten legged stool.

I had an Almost Famous design, and I was desperately trying to get it to work.  I even got it to work – after a weeks’ worth of stochastic debugging – and checked it in.  Yay!  And whew.  On to the next problem!

Um, no.  Because then the next morning I made a new change to the library, and it broke the thumbnail logic.

Crud.  I had finally reached the end of a long and winding road.  It was time to backtrack all the way back to that original bad design choice.  This library cannot be almost famous, it must be robust, clean, solid.  No wrongness!

So I went back, all the way back to point zero.  I rethought the entire problem.  Everything worked before, what had I done to make everything break?  Where was the fundamental disconnect?  And I found it.  (The thumbnail is a property of the image, as modeled internally by an object, it is not a property of the view, as modeled by a different object.)  As soon as I had this insight, the clouds broke, the sun shone, and violins began to play.

Anyway I recoded everything, which this time was surprisingly easier, happily deleted about 2/3 of the new code which was no longer necessary, did a little bit of non-stochastic debugging, and now everything works.  I actually did a lot less testing than before because I knew the code was right.  And I checked in the code.  And I wrote this blog post.

So – moral of today’s rant: do not make almost famous design choices. If you find yourself doing stochastic debugging, backtrack and fix the design.

<digression>

A long time ago in the dawn of time, I had an admin (aka secretary).  Back then we didn't have our own computers, we hand-wrote memos and had them typed.  (Yes, I am that old.)  My admin did have a word processor, so she could easily edit stuff.  (No, I am not that old.)

So I wrote this memo which had tables of numbers in them.  I updated it a few times, and every time I changed the numbers, it took my admin hours to update it.  Way longer than just changing a few figures.

I walked over to see what was going on.  She had used spaces instead of tabs to line up the tables of numbers.  An almost famous design.  So every time I changed the figures, she had to screw around with the numbers of spaces between all the columns to get everything to line up.  Stochastic debugging.

I told her to use tabs.  She did, but she thought I was crazy.  From her point of view, it looked the same when it was printed, so what was the difference?  From my point of view using spaces was Wrong.  Sure, it looks the same, sure, “it works”, but it wasn’t right.

</digression>

I think of that memo often, because the same thing happens with code.  Just because code works doesn’t mean it is right.  If you use spaces instead of tabs, it is wrong.  It is almost famous.

</rant>

I have not made the cover of the Rolling Stone.  Yet.  But maybe Dr. Dobbs?

 

more BigTIFF

Wednesday,  05/09/07  10:44 PM

(Typing "more BigTIFF" reminded me of "more cowbell", and I am now laughing uncontrollably.  I don't know why that old SNL skit was so funny, but it was.)

So a week ago Aperio released the BigTIFF enhancements to libtiff, and we did a press release, and I did a blog post.  And I don't know whether it was because BigTIFF is cool, or because we made the world's first terapixel image, but somehow this became biggish news.  C|Net wrote about it, then it was dugg, and soon hundreds of bloggers were posting about it.  Very gratifying :)

It is possible that the fact the picture was of breast tissue helped the story catch hold; I think some people clicked through expecting high-resolution porn.  Sorry.

Besides being good publicity for Aperio it also provided a nice load test; we've been almost continuously saturated serving up image data since the story has caught hold:

BigTIFF bandwidth utilitization

Very cool.  I just hope we get slashdotted, that would make my day :)

 

New Yorker 5/14/2007 - the ascent of man

Thursday,  05/10/07  10:19 PM

You may know, I'm a huge fan of New Yorker covers, and for this week's "innovation" issue Bruce McCall has added to their legend with a fantasic three-cover cover:

the ascent of man
"the ascent of man"
(click for larger pic)

These covers overlap, so you can just see the edges of covers 2 and 3 peeking out from behind cover 1.  Innovative - and awesome!

 

Saturday,  05/12/07  10:19 PM

I made a few minor performance tweaks, hopefully didn't break anything.  For those of you reading via RSS, you won't notice the difference, but if you've visited the site itself, it may be faster.  Then again, it may be broken.

Got a few links for you, right here...

Sometimes the news just makes you scratch your head.  Like, the U.N. has named Zimbabwe to head the Commission on Sustainable Development.  This is like having Libya head up the Human Rights Commission.  Oh, yeah, they did that too.  The U.N. honestly defies parody.  And yeah, we pay for it all...

Floyd LandisThis is amazing: Floyd Landis says the US Anti-Doping Agency offered to reduce his suspension if he provided evidence which implicated Lance Armstrong.  Floyd summarized it perfectly: "It speaks to the character of the prosecution".  Indeed it does.  Nothing could help Floyd's case more...  P.S. I love the picture which accompanied the article - see it at right - but as usual the media get it wrong; the caption says "Floyd Landis is facing a two-year suspension after high levels of testosterone were found in his body during last year's Tour de France".  Well, no, he didn't have high levels of testosterone, he had a high ratio of testosterone to pretestosterone.  Very different and crucial to understanding his case.

World's most dangerous road!Check this out - billed as "the world's most dangerous road", somewhere in Bolivia.  Man.

So you think you know what's going on in the Middle East, eh?  Well, you may be surprised to find you don't even know where all the countries are located, and how they are positioned relative to each other.  This great little map game will show you and teach you.  I learned a lot in three minutes.  Perhaps this should be given to each of the Presidential candidates?

This I love - Ant Colony Algorithms - from Dr. Dobbs.  "Ant colony optimization is an example of a swarm algorithm. If you have read Michael Crichton's thriller Prey, which luridly describes swarms of semi-intelligent nanobots in competition with humans, you are familiar with some of the ideas behind this relevantly recently developed area. In a swarm algorithm, a large number of agents cooperate to achieve a global aim without requiring any central control point."  This is pretty much the way we develop code at Aperio - a swarm of programmers :)

Here's an incredibly useful site: Favicon from pics.  If you need to make a favicon - and you would know if you did - this is perfect; just upload any picture and poof! you have a corresponding favicon.  If you have no idea what this means, so be it; nothing to see here, move along...

Have you ever wondered, "Why can't I own a Canadian?"  Yeah, me too.  If you're a Bible believer you might consider this serious food for thought...

drunk man on Escher's staircaseRemember Escher for real?  Well here's a YouTube clip which is reminiscent: A drunk man on Escher's infinite staircase...  very cool.  (Thanks, Dave!  And yeah, I like the rope at the end, too :)  Amazing the stuff that show's up on YouTube, eh?

the size of our world...This is very cool: The Size of our World.  It is just really hard to put this in perspective, isn't it?

Here we have thirteen things that do not make sense, from New Scientist.  Some of these are more like unexplained mysteries than logic problems, but they're fun anyway.  My favorite is #1, the placebo effect, which is really real and which really doesn't make sense.

Finally, if you want to find more cool stuff, visit populrs.  Showing the most popular URLs from digg, del.icio.us, reddit, flickr, newsvine, metafilter, tailrank, YouTube, Google news, Yahoo news, Netscape, iFilm, Wired, slashdot, BoingBoing, etc.  So much stuff, you can't possibly read it all, so you might need me to filter it for you :)

 

Happy Mother's Day!

Sunday,  05/13/07  12:08 PM

Happy Mother's Day!

To Shirley, my Mom, her Mom, and all moms everywhere...  hope you have a wonderful day...

 

 

We plan to do nothing today, maybe sit by the pool, have a glass of wine, and read a book. 
Or post to our blog :)

 

Exporting IP

Tuesday,  05/15/07  09:11 PM

Every once in a while you read something that manages to get just about everything wrong.  And so it is with a recent column in the New Yorker entitled Exporting IP, by James Surowiecki.  You may read the article here.

<rant>

As with most New Yorker columns, the thesis is that the U.S. Government is doing something wrong.  And they are, but in keeping with the general theme of getting things wrong, the article gets the wrong part wrong. 

The article starts by observing that in recent trade negotiations, the U.S. has required trade partners to commit to rewriting their IP laws to be more like U.S. laws.  The article defines "IP" as "Intellectual Property, patents, copyrights, and so on...", without making a distinction.  Unfortunate, that, since there is a huge difference between patents and copyrights.  The article goes on to ask "why does the U.S. insist on these rules?  Quite simply, American drug, software, and media companies are furious about he pirating of their products, and eager to extent the monopolies that their patents and copyrights confer."  The link between companies and the government is not defined; this might be the only time ever that the New Yorker has assumed the U.S. Government is doing something others want, instead of having some nefarious agenda of their own.

So about these "monopolies"?  It isn't clear that strong IP laws deter piracy in any case, but while patents defend ideas, and hence do enforce monopolies (and hence have very little to do with piracy), copyrights defend works, and hence do not enforce monopolies (and have a great deal to do with piracy).  Ah, little details.

Next up is this rather astonishing statement: "Intellectual property rules are clearly necessary to spur innovation".  Clearly?  In what universe?  Far from spurring innovation, our patent laws deter innovation.  The article immediately contradicts itself by noting "too much protection can strange competition"; yeah, it can.

There is a teter-totter here, it isn't that IP law is either bad or good, but that some is bad and some is good.  Patents - giving entities ownership over ideas - are bad.  Copyrights - giving entities ownership of work products - are good.  Too much patent law = strangling, too little copyright law = piracy.

Finally the article notes "the U.S. in its negotiations insists on a one-size-fits-all approach... but accepting a diverse range of IP rules makes more sense, in light of the different economic challenges that developing countries face".  Well maybe it makes more sense to some, but not to me; consistency of property protection seems like one of the things that helps developing countries to develop.  I would not put anything in the way of ideas in any country, that would seem to encourage innovation everywhere, while ensuring protection of work products in all countries would seem to encourage entrepreneurs to do something with their ideas.

</rant>

 

dynamic page sizing

Tuesday,  05/15/07  09:29 PM

This is a nerdy exposition, for those of you creating web apps and for me to be able to find it later :)

The subject is dynamically sizing web page elements based on the size of the browser window.  Usually when you are creating a web page on a server, you don’t know the size of the user’s browser window.  At the highest level, there are three things you can do, first, you can create pages which work no matter what, second, you can have the page tell the server the size of the window, and regenerate the page accordingly, or third, you can have JavaScript in the page which dynamically reconfigures the page contents.

The first solution is the best if you can get away with it, and this is what the vast majority of websites do today.  Most web content distributes itself in a reasonable way inside a browser window, regardless of the size of the window.  However there are cases where you really want to know the size – for example, you might have an array of thumbnails and you want the number of columns in the array to correspond to the width of the browser window.

The second solution works, but it is a bit klunky.  It requires that the page be generated with a URL which gives the browser window size.  If the browser’s window size changes, then you use an “onresize” event to send a new URL to the server, which generates a new page and sends it to the browser.  The advantage is that you can have all the logic for page generation on the server.  The disadvantage is that you have uglier URLs (not really a big deal), and you have to have an interaction with the server every time the page is resized (also not really a big deal).  There is one situation where this doesn’t work at all – when there is no server!  For example you may be creating pages for a stand-alone DVD.  In this situation all the logic for dynamic sizing must be done on the client.

The third solution is cleanest and accommodates the situation where there is no server.  However there is more complexity on the client side because of the JavaScript, so it may not always be the simplest solution.  The remainder of this email describes how this works.


Okay, let’s say you have a web page, and you want to dynamically adjust the content based on the browser window size.  How do you do this?

Well, first a brief digression into some JavaScript basics.  JavaScript can be embedded into any web page with <script> tags, like this:

      <script>
      ...a bunch of JavaScript code...
      </script>

You can also embed brief sections inline, like this:

      ...HTML stuff<script>...some JavaScript code...</script>more HTML stuff...

Wherever you put the <script> tags, the JavaScript inside will be executed “immediately”.

One of the powerful things you can do with JavaScript is you can output HTML.  You do this with the document.write() function.  The output of the document.write() goes right inline where the HTML is being processed.  For example:

      ...HTML stuff<script>document.write('HTML to be inserted')</script>more HTML stuff...

In this example “HTML to be inserted” will be inserted inline into the HTML.  This HTML can include tags, text, anything.  Here’s a little more complicated example:

<script>
function setfont(color)
{
document.write('<font size=5 color='+color+'>');
}
</script>

...

...<script>setfont('red')</script>this will be red</font>...

In this example we’ve defined a JavaScript function called setfont, which outputs an HTML font tag, using a color passed in as a parameter.  In the HTML the setfont function is called with a parameter of “red”, causing “<font size=5 color=red>” to be written inline into the HTML.

Okay, so that’s a bit about JavaScript.

Next, in order to do conditional stuff based on the size of the browser window, we have to know the size of the browser window.  So, how do we know that?  Well, here’s some JavaScript which figures it out…

<script>
var   width, height;

if (navigator.appName == "Microsoft Internet Explorer") {
      width = document.body.clientWidth;
      height = document.body.clientHeight;
} else {
      width = window.innerWidth;
      height = window.innerHeight;
}
</script>

This JavaScript code sets the variables width and height to the dimensions of the browser window in pixels.  (This finds the dimensions of the inside client area of the browser window, not including menu bars, status bars, borders, etc.  If the page content grows scroll bars, the scroll bars will be inside this area.)  You will note that the logic is slightly different depending on whether you are running in Internet Explorer or anything else.  There is a simple rule that applies to browsers, all browsers behave the same except Internet Explorer.  Unfortunately about 80% of the world uses Internet Explorer, so you have deal with two cases, Internet Explorer and everything else.  Thank you Microsoft.

So now that we know the width and height, how can we do something cool?  Well as an example, consider that table of image thumbnails.  The table has a certain number of columns, but the number will depend on the width of the browser window.  So you can do something like this:

<script>
var   width, height;

if (navigator.appName == "Microsoft Internet Explorer") {
      width = document.body.clientWidth;
      height = document.body.clientHeight;
} else {
      width = window.innerWidth;
      height = window.innerHeight;
}

var   col = 0;

function chkEOL()
{
if (col % parseInt(width / 200) == 0)
      document.write('</tr><tr>');
col = col+1;
}
</script>

...

<table...>
<tr>
<script>chkEOL()</script>
<td>...HTML to create first thumbnail...</td>
<script>chkEOL()</script>
<td>...HTML to create second thumbnail...</td>
<script>chkEOL()</script>
<td>...HTML to create third thumbnail...</td>
<script>chkEOL()</script>
<td>...HTML to create fourth thumbnail...</td>
...
</tr>
</table>

Okay, here’s what’s going on.  First, at the top we figure out the width and height of the browser window as before.  Then, a little function named chkEOL is defined.  Further down is the table itself.  It consists of a whole bunch of <td>…</td> sequences to generate the cells of the table for each thumbnail.  In between each cell is a JavaScript call to chkEOL.  This function uses a global variable named col to keep track of the current column number.  On each call it checks to see if the current column is an even multiple of “width / 200”, and if so it generates a “</tr><tr>” sequence to end the current row and start the next one.  This assumes that the columns are about 200 pixels wide, so if the browser window was 850 pixels wide, there would be four columns, and if the browser window was 1080 pixels wide, there would be five columns.  You could compute the column width instead of hard-coding 200, you get the idea.

Okay, so the main idea is that wherever you might want to generate some HTML dynamically, you make a JavaScript function call, and in the function you check to see what to do, and you can output HTML with document.write().

So this is great, it takes care of the initial layout of the page.  But what happens if the window is resized?  How do we handle that?  Well, it is amazingly easy.  Do this:

<body ... onresize='location.href=location.href'>

In the <body> tag, force a refresh of the page whenever the browser window is resized.  Setting location.href to itself is a portable way to force a refresh.  This causes everything to be reevaluated, and all the JavaScript will be reexecuted again, possibly yielding different results this time because the browser window size has changed.

Happy coding!

 

Tuesday,  05/15/07  10:00 PM

Ah yes, the ol' Ole filter makes a pass...

The Floyd Landis hearings are underway not far from me, at Pepperdine Malibu.  A three-member arbitration board will decide his fate.  See Velonews for great ongoing coverage.  So far after two days, it seems both sides have landed a few punches but no knockouts (except for a French interpreter who couldn't, er, interpret French).

Hortle's whipray - one of a number of new species recently discoveredThe Smithsonian asks "what happens when you mix evolution with climate change?", and answers Species Explosion.  "Already this year researchers have announced the discovery of a bunch of new species: 6 types of bats, 15 soft corals, thousands of mollusks and 20 sharks and rays, to name a few."  (One of the newcomers is Hortle's whipray, shown at right.)  So be it.  [ via Jason Kottke ]

Apropos my rant regarding Exporting IP, ArsTechnica reports piracy rate in China down 10 percent.  Good news, shows you what a little capitalism will do, eh?

Sprint Treo 755pSo, the Treo 755p is available from Sprint.  Decisions, decisions...

Michael Arrington introduces Bringo!  "Here's how it works: 1. Find the company you'd like to call.  2. Enter your phone#.  3. Wait a few seconds while we navigate the phone tree.  4. When we call you back, pick up your phone and you're done. No more phone trees." I have no idea about the business model (is there one?) but I have no doubt about the usefulness.  Neener neener to all those companies that don't believe humans should answer their phones.

Skyscraper Page - nine tallest buildingsThis is amazing - the SkyscraperPage!  Diagrams of all the biggest buildings in the world, with all kinds of architectural detail.  The nine tallest skyscrapers in the world are shown at right; click for larger pic.  The website is nearly as amazing as the drawings, which are nearly as amazing as the buildings themselves...  Proof that you can find everything on the Internet, and everything is so much more than you ever thought.

The World Atlas has the highest lowest smallest tallest deepest oldest youngest Continents Countries Cities etc.  Really excellent information.  Remember when you were a kid, and you needed to look this stuff up in encyclopedias and things?  Man was that tough.  Now you just Google and poof! there it is...

Dog bark park, Cottonwood, IDAnd going right along with that, here we have Unusual Hotels of the World.  Everything from underwater to boats, igloos, farms, castles, lighthouses, you name it.  Even prisons and treehouses :)  The picture at left shows Dog Bark Park, a unique two-storey beagle in Cottonwood, ID.  Check them out by WOW rating...

Blue mosque - AfghanistanThe Earth Album has stunning photos of the world superimposed over Google Maps, such as the Blue Mosque, in Afghanistan (shown at right).  Travel around and watch the pretty pictures, without leaving the comfort of your keyboard.

Palacio de las Artes Reina Sofia, Valencia, SpainThis has to be one of the most beautiful buildings in the world: the Palacio de las Artes Reina Sofia, in Valencia, Spain.  The HDR picture from Salvador del Saz is pretty awesome, too.

Russian buildings from the airAnd here are some more amazing aerial shots, from a Russian photographer.  I can't read the site but I sure can admire the pictures.  You have to click through to see these!  (I love all the Russian comments and ads, too; there is a whole world out there which doesn't speak English, and it is great to be reminded once in a while...)

 

 

(New Yorker, 5/13/07)

Tuesday,  05/15/07  11:10 PM

 

Chez Pierre - pro-American French cuisine


 

Wednesday,  05/16/07  10:44 PM

Why Mathematicians now care about their hat color.  "Three players enter a room and a red or blue hat is placed on each person's head.  The color of each hat is determined by a coin toss, with the outcome of one coin toss having no effect on the others. Each person can see the other players' hats but not his own.  The general problem is to find a strategy for the group that maximizes its chances of knowing who has which color hat."  Yes, you have to read it to find out, sorry.  Kind of interesting actually, sort of reminds me of the two switches...

The New Yorker: Unstrung. "It is the best of times in physics.  Physicists are on the verge of obtaining the long-sought Theory of Everything...  It is the worst of times in physics.  For more than a generation, physicists have been chasing a will-o’-the-wisp called string theory."  This emperor is not wearing any clothes.  Paging Richard Feynman!  [ via slashdot, where many commenters agree with me... ]

The greatest movie line of all time?  Could be :)  [ via Brutally Honest, via American Digest ]

Waterfalls of IguassuThe Waterfalls of Iguassu.  Amazing and beautiful.

Because it is cool and so I can find it later: the Color Scheme Generator.  You really can find everything on the Internet, absolutely everything.

World's fastest sofa - 92 mphYou will be happy to know, there is a new land speed record for sofas.  92mph.  I am not making this up.

Kind of like the Secret Tesla Motors Master Plan.  I know their cars will be all-electric, beautiful, and fast, but I wonder if their seats will be as comfortable?

Remember "backward masking"?  Playing records backwards and listening to the sounds in reverse time.  So at Jeff Milner's Backmasking Site you can hear Stairway to Heaven, Imagine, Hotel California, and of course, I'm So Tired, aka "Paul is dead"...  Way cool.

Wired reports: Every species will have an entry in the Encyclopedia of Life.  Sounds awesome, a kind of Wikipedia for scientific knowledge about life.  I've volunteered Aperio's services to scan slides and provide viewing software, haven't heard back yet...

Finally, you MUST see this image in full resolution, please click to load, and then zoom in with your browser. 

evolution

Really remarkable :)

 

(New Yorker - 10/29/06)

Wednesday,  05/16/07  10:55 PM

 

dreaming...


 

entrepreneurs inside the machine

Thursday,  05/17/07  08:43 AM

entrepreneurs inside the machineFortune discusses Entrepreneurs Inside the Machine, regarding integrating acquired entrepreneurs into a big company.

I find this to be an important issue, as a shareholder as well as an entrepreneur.  In the early days the value of a company like Aperio lies largely in its people.  Over time the value becomes institutionalized, and moves into the customers, the market approach, the brand, the products, etc.  (Not that people don’t remain important, but they become relatively less important.)  If an acquiring company plans to realize the maximum value from an acquisition, they must either provide a good home to those people, or wait until the value has shifted away from the people.  Or both.

From my personal experience Intuit bought its billpay business (which was a separate company) too soon, the key people left, and the value was not fully realized.  Digital Insight went public, experienced turnover without losing value (over a period of years), and was then ultimately acquired by Intuit, long after the value had moved.  PayPal went public, experienced a great deal of turnover and lost some value (over a period of a year), and was then ultimately acquired by eBay.  The value to eBay has been immense, but there was an even larger and more valuable business inside PayPal which wasn’t fully realized.  At one time we legitimately spoke of forming a rival to Wells Fargo and Citibank, now that seems silly.  (Many of the PayPal people who left went on to start other successful businesses, YouTube being the highest profile example.  Maybe someday Aperio will be another :)

 

The Bakeoff

Thursday,  05/17/07  10:49 PM

the bakeoffI'd like to refer you to The Bakeoff, an amazing article that I recommend to everyone.  Really excellent, really thought-provoking.

This was published in the New Yorker a couple of years ago, and I can't find it anywhere online so I’ve scanned it. 

The article is superficially about the quest for a healthier cookie.  At a level down it is actually as much about software development – or innovation in general – as it is about baking; Joel Spolsky is quoted, as is Linus Torvalds, and the philosophy of “open source” is examined, and “extreme programming” is debunked.  Jon Udell posted a nice overview if you're too busy to read it all, but the writing is excellent so I recommend you do when you can.  The author is Malcolm Gladwell (of The Tipping Point and Blink), and he nails it.

P.S. This is an example of the kind of thing you can't find anywhere else.  I can't stand the New Yorker’s politics, or the way they seem to sneer at anyone not in New York, but the magazine is invaluable as a bulletin board for this sort of stuff.

 

bigger than baseball

Thursday,  05/17/07  11:03 PM

Barry Bonds is back in the news as he nears Hank Aaron's record of 755 lifetime home runs.  Which recalls this fantastic New Yorker cover, from April 3, 2006:

bigger than baseball
(click to make even bigger :)

Big news - I love it!

 
 

Return to the archive.

Home
Archive
flight
About Me
W=UH
Email
RSS   OPML

Greatest Hits
Correlation vs. Causality
The Tyranny of Email
Unnatural Selection
Lying
Aperio's Mission = Automating Pathology
On Blame
Try, or Try Not
Books and Wine
Emergent Properties
God and Beauty
Moving Mount Fuji The Nest Rock 'n Roll
IQ and Populations
Are You a Bright?
Adding Value
Confidence
The Joy of Craftsmanship
The Emperor's New Code
Toy Story
The Return of the King
Religion vs IQ
In the Wet
the big day
solving bongard problems
visiting Titan
unintelligent design
the nuclear option
estimating in meatspace
second gear
On the Persistence of Bad Design...
Texas chili cookoff
almost famous design and stochastic debugging
may I take your order?
universal healthcare
entertainment
triple double
New Yorker covers
Death Rider! (da da dum)
how did I get here (Mt.Whitney)?
the Law of Significance
Holiday Inn
Daniel Jacoby's photographs
the first bird
Gödel Escher Bach: Birthday Cantatatata
Father's Day (in pictures)
your cat for my car
Jobsnotes of note
world population map
no joy in Baker
vote smart
exact nonsense
introducing eyesFinder
resolved
to space
notebooks
where are the desktop apps?