Tuesday, August 30, 2005

I know what I'm doing this weekend...

My advice, stay out of Soulard for a couple weeks. Fun, fun, fun

Movie Meme

From Brad
Italicize the ones you've seen and Bold the ones you actually liked. I saw TOO many.

1. Titanic (1997) - $600,779,824 2. Star Wars (1977) - $460,935,665 3. E.T. the Extra-Terrestrial (1982) - $434,949,459 4. Star Wars: Episode I - The Phantom Menace (1999) - $431,065,444 5. Spider-Man (2002) - $403,706,375 6. Lord of the Rings: The Return of the King, The (2003) - $377,019,252 7. Passion of the Christ, The (2004) - $370,025,697 8. Jurassic Park (1993) - $356,784,000 9. Shrek 2 (2004) - $356,211,000 10. Lord of the Rings: The Two Towers (2002) - $340,478,898 11. Finding Nemo (2003) - $339,714,367 12. Forrest Gump (1994) - $329,691,196 13. Lion King, The (1994) - $328,423,001 14. Harry Potter and the Sorcerer's Stone (2001) - $317,557,891 15. Lord of the Rings: The Fellowship of the Ring, The (2001) - $313,837,577 16. Star Wars: Episode II - Attack of the Clones (2002) - $310,675,583 17. Star Wars: Episode VI - Return of the Jedi (1983) - $309,125,409 18. Independence Day (1996) - $306,124,059 19. Pirates of the Caribbean (2003) - $305,411,224 20. Sixth Sense, The (1999) - $293,501,675 21. Star Wars: Episode V - The Empire Strikes Back (1980) - $290,158,751 22. Home Alone (1990) - $285,761,243 23. Matrix Reloaded, The (2003) - $281,492,479 24. Shrek (2001) - $267,652,016 25. Harry Potter and the Chamber of Secrets (2002) - $261,970,615 26. How the Grinch Stole Christmas (2000) - $260,031,035 27. Jaws (1975) - $260,000,000 28. Monsters, Inc. (2001) - $255,870,172 29. Batman (1989) - $251,188,924 30. Men in Black (1997) - $250,147,615 31. Toy Story 2 (1999) - $245,823,397 32. Bruce Almighty (2003) - $242,589,580 33. Raiders of the Lost Ark (1981) - $242,374,454 34. Twister (1996) - $241,700,000 35. My Big Fat Greek Wedding (2002) - $241,437,427 36. Ghost Busters (1984) - $238,600,000 37. Beverly Hills Cop (1984) - $234,760,500 38. Cast Away (2000) - $233,630,478 39. Lost World: Jurassic Park, The (1997) - $229,074,524 40. Signs (2002) - $227,965,690 41. Rush Hour 2 (2001) - $226,138,454 42. Mrs. Soubtfire (1993) - $219,200,000 43. Ghost (1990) - $217,631,306 44. Aladdin (1992) - $217,350,219 45. Saving Private Ryan (1998) - $216,119,491 46. Mission:Impossible II (2000) - $215 class=GramE>,397,30 47. X2 (2003) - $214,948,780 48. Austin Powers in Goldmember (2002) - $213,079,163 49. Back to the Future (1985) - $210,609,762 50. Austin Powers: The Spy Who Shagged Me (1999) - $205,399,422 51. Terminator 2: Judgment Day (1991) - $204,843,350 52. Exorcist, The (1973) - $204,565,000 53. Mummy Returns, The (2001) - $202,007,640 54. Armageddon (1998) - $201,573,391 55. Gone with the Wind (1939) - $198,655,278 56. Pearl Harbor (2001) - $198,539,855 57. Indiana Jones and the Last Crusade (1989) - $197,171,806 58. Toy Story (1995) - $191,800,000 59. Men in Black II (2002) - $190,418,803 60. Gladiator (2000) - $187,670,866 61. Snow White and the Seven Dwarfs (1937) - $184,925,485 62. Dances with Wolves (1990) - $184,208,848 63. Batman Forever (1995) - $184,031,112 64. Fugitive, The (1993) - $183,875,760 65. Ocean's Eleven (2001) - $183,405,771 66. What Women Want (2000) - $182,805,123 67. Perfect Storm, The (2000) - $182,618,434 68. Liar Liar (1997) - $181,395,380 69. Grease (1978) - $181,360,000 70. Jurassic Park III (2001) - $181,166,115 71. Mission: Impossible (1996) - $180,965,237 72. Planet of the Apes (2001) - $180,011,740 73. Indiana Jones and the Temple of Doom (1984) - $179,870,271 74. Pretty Woman (1990) - $178,406,268 75. Tootsie (1982) - $177,200,000 76. Top Gun (1986) - $176,781,728 77. There's Something About Mary (1998) - $176,483,808 78. Ice Age (2002) - $176,387,405 79. Crocodile Dundee (1986) - $174,635,000 80. Home Alone 2: Lost in New York (1992) - $173,585,516 81. Elf (2003) - $173,381,405 82. Air Force One (1997) - $172,888,056 83. Rain Man (1988) - $172,825,435 84. Apollo 13 (1995) - $172,071,312 85. Matrix, The (1999) - $171,383,253 86. Beauty and the Beast (1991) - $171,301,428 87. Tarzan (1999) - $171,085,177 88. Beautiful Mind, A (2001) - $170,708,996 89. Chicago (2002) - $170,684,505 90. Three Men and a Baby (1987) - $167,780,960 91. Meet the Parents (2000) - $166,225,040 92. Robin Hood: Prince of Thieves (1991) - $165,500,000 93. Hannibal (2001) - $165,091,464 94. Catch Me If You Can (2002) - $164,435,221 95. Big Daddy (1999) - $163,479,795 96. Sound of Music, The (1965) - $163,214,286 97. Batman Returns (1992) - $162,831,698 98. Bug's Life, A (1998) - $162,792,677 99. Harry Potter and the Prisoner of Azkaban (2004) - $161,963,000 100. Waterboy, The (1998) - $161,487,252

Friday, August 26, 2005

I'm so bummed right now...

Looks like Rio is dead. Now I don't know what to do... my current Karma needs a minor power-switch repair (which I'm doing this weekend), and the Circuit City extended warranty expires in March. I was hoping to see the new Karma replacement hit the stores before then, but since D&M sold off all the IP and engineers to Sigmatel, that wasn't likely. Now with Rio shuttering, it's certainly not going to happen. So, sometime before March, I need to find a good HDD DAP that Circuit City carries (or sell the gift card). I'm on the lookout for a good 30GB+ music player (video and stuff is not a feature), with USB host mode or an SD slot (to get stuff off my camera). ID3 tag based navigation and gapless. Any ideas?

Wednesday, August 24, 2005

A much better way to handle CSS hacks

When you're doing CSS in the real world, you have to handle the CSS bugs in various browsers. But don't embed them in your real style-sheets and clutter everything up. Rather, have a single CSS that has all the work-arounds, and decorate your <html> tag with multiple classes that pull in all the work-around rules. Next, use javascript to handle the injection of those classes automatically at page load! When bugs become patterns - A look at CSS Hacks

Tuesday, August 23, 2005

StringBuilder.Length is not read-only!

When you wander the blogs, sometimes the comments are more interesting or useful than the posting. Today's case-in-point is James Curran's observation that StringBuilder.Length is not a read-only value... how many times have you built a comma (or any other delimiter) seperated string by optionally prepending the delimiter in the loop, or trimming off the leading (or trailing) delimiter after the loop. James says just truncate the final delimiter by adjusting Length! góða nótt. My Ajax.NET Library

Blasts from the past... the old is new again.

Catching up on a newly subscribed blog for Derrick Coetzee, I came across a great post about Bloom Filters. I immediately recognized that use from the Borland Turbo Lightning product that I used in the mid to late 80s. It was an awesome TSR that loaded and then spell-checked whatever text proceeded the cursor at every space (or other work separator). A simple "beep" told you something was suspicious and a hot-key would popup the suggestions. It worked by scraping the screen RAM (in text mode, of course) and thus worked in EVERYTHING. I wonder if such a tool is available for Windows? Of course, I had to let Derrick know and that meant looking up the information and that's when the fun really started? Dig this quote from the April 1986 article from Jerry Pournelle

In the word-processing category, there's a three-way tie and an honorable mention. Tied for best of 1985 are Symantec's Q&A, Borland's Turbo Lightning, and Living Videotext's Ready! idea processor. It's impossible to choose among these; they're all useful. Two are memory-resident. I suppose that one day the trend to memory-resident software will be halted by a really excellent multitasking operating system. Maybe this year?
Ah, the good old days...

Monday, August 15, 2005

RE: Transparency, Video, and Windows Vista

In Windows 2000, Microsoft introduced a feature called Layered Windows. This introduced desktop composition features that had not been available in previous versions of windows, the most interesting of which was arguably the support for per-pixel transparency. With layered windows, any pixel in a window could be given its own transparency level. This is used for things like the transparent drop shadows you see on some windows, and Outlook uses it to fade new email notifications up and down.
[Via IanG on Tap] So, why do I WANT to do this, again? In what possible way is a fuzzy semi-visible version of the underlying video stream useful to me?

Friday, August 12, 2005

Maintaining thread safety is hard

Even Microsoft's best have issues.. First they mess it up in .Net 1.1, then they rewrite it wrong in .Net 2.0. I wonder if they need another code reviewer. The 2.0 version has three bugs now! First, it will reset the _inTrim flag on any exception, even if it didn't set the flag. Second, it will reset the _inTrim flag right before the second NeedsTrim() check, even if someone else has already set it (and presumably is using that flag). Lastly, it will now silently eat exceptions when trimming. How many times have you seen a catch when a finally was the right thing. Go vote on Ladybug to get this fixed.

Thursday, August 11, 2005

Tell me where you are...

If anyone is really reading this, how about showing me where you are:

Monday, August 01, 2005

All things UI point to Ajax and Rico...

In the past couple of months, I've been learning more and more about the business of writing very customizable user interfaces for browser-based applications. To me the best system architecture is a strong model-view-controller architecture.

  • The model is your business logic
  • The controller is your user-interface navigation logic (screen to screen)
  • The view is the user-interface presentation (including intrascreen navigation logic)
I'm well versed in the way you assemble and partition business logic into reasonable layers (utilities, data access, business objects, business services). These days, I'm expressing this using the .Net runtime and my common classes, nHibernate, simple non-mutable objects for the business object entities, and state-less service objects for business rules. I've developed these techniques in 20+ years of PL/I, C, C++, VB6 COM and now C# programming. What's been new to me recently is learning about advanced user-interface development. My old days were in console-mode (text) applications and then Windows™ forms-based stuff. I've grokked the separation of the controller from the presentation and benefited from The Humble Dialog Box and the ease of unit-testing it enables. HTML web interfaces, however, were really a dark corner of my mind until the last couple of years. I knew HTML markup, but doing anything interactive was new to me. Thankfully, I didn't have to learn the "old way". I got to play with ASP.Net from the get-go, and it really did save me a huge learning curve. I learned about post-backs without having to unlearn posting to a different page when that was the strategy of the day. But nothing in the web grabbed my attention until I started playing with applications that put someone of the UI-specific controller logic on the pages. Those appplications (gmail, Google Maps, Outlook Web Access, and earlier things like the old Sears Photos site) let me feel immedately in control of the application without all the distaste that the typical usability-be-damned Flash applications didn't. That methodology has a moniker now... it's AJAX, and I like it. I'm converted. How do I build a real application without inventing all that plumbing? As usual, it is time to hit the blogs and start playing. There's a gold mine of great parts that I want to mention: First, as I'm a server-guy at heart, I've got the find the .Net support for the controller. That's easy... Microsoft has announced the up-and-coming Atlas, but why wait when Ajax.Net is already here, and does almost anything you could possibly want; once again the goodness of open-source makes me happy. Make sure you check out Michael Schwarz's blog. OpenRico is the best collection of client-side user-interface tools for AJAX that I've found. It's an amazing piece of engineering, in that it does everything that is hard to get right, it is free, and it is open source. Go play for a minute, then come back and tell me why I should write a WinForms application for the average data-entry application. You'll find a drag-and-drop handler with constrained targets, cinematic stuff for sizing, positioning, corner rounding, fading and some animation effects (some are even tolerable). The really sweet bit is the client-side AJAX for a lazy-loaded, sortable, scrollable data-grid! OpenRico is built upon the very clean object-oriented JavaScript framework Prototype. This set of methods and coding style solves the "how do I do this cleanly" on the client side. Don't structure your code without it. Now the next problem I've noticed is that the pages are getting to be a real tag-soup. This is bad, I can't read the content of the page because it is lost in all of the JavaScript eventing and identifiers and style-sheets. Come on! There are only a few "standard" types of display and entry fields on the average data-entry screen. Can't we find some way of centralizing the behavior of things based on the class of display/input element? Wait, this is sounding familiar... if only there was a way to associate those behaviors with page elements through a simple decoration... sort of like CSS styles... hmmm... YES! that's it exactly. Welcome to the future, associate your behavior using css selectors using this simple framework. Another interesting bit is the Scriptaculous scripts for autocomplete, drag-and-drop of individual elements, and tons of animations (which I hate). Of course, dealing with all of these cool client-side toys means that we need a much better testing experience. I've been looking into the latest coolness, a FIT driven testing tool called Selenium. The coolest part is that the test scripts are simply HTML tables of actions and values, anyone can read (and write) them. Some other AJAX sites: Ajaxian has some interesting insights into JavaScript's implications for screen readers and automated testing. Completely off-topic: Pseudo HTML element that combines a radio button group with a select box for quick picks of common options. Internet Explorer vs. Mozilla from a JavaScript coder's perspective. Things to watch out for when crossing browsers. [Edit: 9:37 AM 4-Aug-2005 - thanks John] The JavaScript language specification is an interesting read. The errata is there to proved that everyone makes mistakes.