Top 10

It’s been a long time since I’ve done one of these, but here’s another top 10 randomized entries from my collection:

  • Byrds – Turn! Turn! Turn! (To Everything There Is A Season)
  • Kool and the Gang – 16 Spirit Of The Boogie
  • King’s X – Pretend
  • The Commodores – Still
  • Spock’s Beard – 4 O’ Clock
  • Lit – Miserable
  • Journey – Any Way You Want It
  • Van Halen II – D.O.A.
  • They Might Be Giants – Clap Your Hands
  • Mike Helm – Meet My New Friend

(Granted, I cheated when I removed the Mr. Belvedere theme song, but can you blame me?)

Got a new feed reader

A comment I just posted at http://datamining.typepad.com/data_mining/attensa/ :

I’ve been using intraVnews for several years, liking Outlook’s sorting power to manage info, but I’m not at one machine long enough lately to keep current. So I went shopping for an online reader, and found your post and the RSS Reader Survey.

Based on those, I tried (or at least looked at) Bloglines, Rojo, NetNewsWire and Great News. I mostly didn’t like the UIs (too weak or clunky compared to Outlook), and most just didn’t work on my Windows Mobile phone’ Pocket IE.

I ended up using Google Reader instead — sure it’s not as powerful as intraVnews/Outlook (no search folders, no deactivating feeds), but I don’t think I need that power since the “reading flow” is so smooth (aka “UX”, or User Experience in Microsoft’s new lingo). I don’t Need to filter out the “junk” since it’s easy to just ignore it.

Granted, it’s only been 2 weeks, but I’ve been successfully keeping up on 296 feeds pretty easily.

I should mention I was actually looking for an Outlook/online combo.  Apparently Newsgator and Attensa both do this, but Newsgator ain’t free (and I’m a tightwad), and I couldn’t find Attensa’s supposed free service…  I’ve tried the Outlook addins for both in the past, tho, and they’re fine (since it’s Outlook).

Hm, should I post my 296 feed OPML?  ..or I guess Google Reader has a sharing feature — maybe that’s something to try out.

Links for 2007-01-04

Busy?  Oh yeah.

I just reset my Sager notebook’s BIOS.

For those in a similar tight place…

Alright, I shouldn’t have experimented with the BIOS settings so flippantly, but all my other current hardware either has an internal “reset” jumper, or it automatically detects problems and resets itself, so I assumed I was safe…

Well imagine my surprise that powering on gave me an utterly blank screen, and no combination of keys would fix it.  Opening the case showed no reset mechanism either.  And Sager’s website showed no support options except an RMA form…

Fortunately I found (elsewhere) an email address for support: .  I emailed and got a response within 24 hours asking for a serial number.  Knowing it was out of warranty (and expecting a “sorry about your luck” response), I gritted my teeth & answered.

Glory be, 12 hours later I received these instructions from Daniel on how to reset the BIOS to factory settings:

Bob,

If you feel comfortable, Try this, 1st unplug all the power remove the AC Adapter and the Battery. And open the bottom cover(see attachment picture) and unplug the Cmos-Battery’s wire(red&black crop by Green Color) for like 15sec. Then reconnect it back the wire then everything ACA and the Big Battery. See that will help.

*** We don’t hold any responsibility ***

Daniel
Sager computer
18005 Cortney Ct
City of Industry, CA 91748
Tel# 1-800-741-2219 626 964 4849
Fax# 626-964-2381

Despite Bob-ifying me, it made enough sense that I was booting normally in 5 minutes (and mostly time for the tiny screws).

It’s good info, Sager just needs to share it more easily.  I wrote back to thank Daniel, and suggested they put this kind of info in a public knowledgebase.

IE7 and minWidth


IE7 was supposed to have supported min-width in CSS.  It doesn’t work right


Their spec says it applies to “floating block-level elements”, but they don’t mention that it also requires an explicit width — “auto” won’t work.  While that’s fine for “stretchy” layouts, it’s useless for what I want: a flexible, tableless form layout (with elements which can expand to their contents’ sizes).


In fact, my previous IE6 hacks to force it with CSS expressions now don’t work, because while the min-width attribute is valid in IE7, the feature is not actually implemented.  SO, while I previously could pick it up in IE6 with something like this:
SELECT {
min-width:11em;
_width:expression(this.currentStyle.getAttribute(‘min-width’));
}


IE7 now requires the same trick to be like so:
SELECT {
min-width:11em;
_width:expression(this.currentStyle.getAttribute(‘minWidth’));
}


Unfortunately, forking logic inside CSS expressions is a bit of a pain.  That, combined with the limitations of this technique (IE6 treats width as min-width only when the contained elements can’t be wrapped), prompted me to write a solution script.  Here it is:


/*
author: Rob Eberhardt
desc: fix MinWidth for IE6 & IE7
params: none
returns: nothing
notes: cannot yet fix childless elements like INPUT or SELECT
history:
   2006-11-20 revised for standards-mode compatibility
   2006-11-17 first version
*/
function fixMinWidthForIE(){
   try{
      
if(!document.body.currentStyle){return} //IE only
   }catch(e){return}
   
var elems=document.getElementsByTagName(“*”);
   
for(e=0; e<elems.length; e++){
      var eCurStyle = elems[e].currentStyle;
      var
l_minWidth = (eCurStyle.minWidth) ? eCurStyle.minWidth : eCurStyle.getAttribute(“min-width”); //IE7 : IE6
      if(l_minWidth && l_minWidth != ‘auto’){
         var shim = document.createElement(“DIV”);
         shim.style.cssText = ‘margin:0 !important; padding:0 !important; border:0 !important; line-height:0 !important; height:0 !important; BACKGROUND:RED;’;
         shim.style.width = l_minWidth;
         shim.appendChild(document.createElement(“&nbsp;”));
         if(elems[e].canHaveChildren){
            elems[e].appendChild(shim);
         }
else{
            //??
         }
      }
   }
}


It uses a shim technique to fix it only for IE (other browsers don’t support currentStyle).  The remaining limitation here is that it only works on elements which canHaveChildren, so it does not work on childless elements, like form INPUTs or SELECTs.  Any suggestions for this case are welcome!


To use it, just call fixMinWidthForIE() in the window.onload, or better yet when the DOM has loaded, and you’re set.


2006-11-20: I updated the script for better standards-mode compatibility (it was causing extra blank lines).  I had missed the doctype switch in my current project.  The good news is that IE7 in standards mode does do min-width.  (I wish I’d noticed that sooner!)  However, I still have a lot of IE6 miles to go before I can put it to sleep…


 

Finally off dotText!

It took ages, but I’m on dasBlog now.  Good riddance to dotText!  — I bid it lovingly, though, since it served well for a 1st generation blog engine — Somehow a couple hundred legitimate posts + comments garnered many thousands of comment spams.  I expect dasBlog will handle that all better; captchas are a tad annoying but effective, I hear.

That dasBlog is still under active development is a good sign.  I find that quality much more  important these days.  For reference, dotText was last updated almost 2yrs ago (and wasn’t even really released).

So in other news (in the sense that no news is its own news), I haven’t posted much of anything in a couple months, and even then there wasn’t much meat.  I plan to start writing/posting with something like BlogJet.  (Yes, I actually used dotText’s web-based editor, which was text-only in Firefox — I’m entirely too comfortable with code for my own good).  Hopefully this ease will lubricate the writing process.

Regarding the transition: I used two great tools.  One was Aaron Junod’s great dotText to dasBlog converter to migrate the content.  This would have done the trick many moons ago, except that I didn’t want to orphan all my incoming links (a big no-no to a web dev like me).  Fortunately, Scott Hanselman published a Regex to remap URLs from dotText’s format to dasBlog’s (If only I hadn’t fat-fingered that one the first time I tried it way back, it’d actually have worked). 

Finally, some outstanding meta-throbs junk:

  1. Comments were probably lost.  Sorry.  I noticed spammers were usually changing the subject from the default “re: whatever”, so I killed most of the rest. 
  2. Search is gone for the moment.  I’ll add it back in Real Soon Now.
  3. Images and other locally-hosted junk is probably all broken.  I’ll fix that slightly sooner.
  4. Comments are screwy (dotText saved as HTML.  dasBlog doesn’t.)
  5. Layout is messed in IE6.

Ever celebrated one billion anything?

Hard to explain (I’m a geek, nuff said), but I just noticed my One-Billionth birthsecond is coming up soon.  Furthermore, my (almost 3yr old) son’s One-Hundred-Millionth birthsecond will be about a month earlier!

Want to know when you/a loved one reached/will celebrate a major birthsecond?  In that case, I proudly (?) introduce my Birthsecond Calculator (;>) :

  1. Date/Time of birth:
  2. + a birthsecond:
  3. ?
     

Note: This surely won’t work in a feed reader, so come visit for the fun.

(web geek colophon: This works thanks to jsDate, my port of VBScript Date functions to Javascript.)

Update 2007-04-15: My 7yo son wants to know when his 250 millionth birthsecond is, so here’s a customizable version.

CSS includes + HTTP headers = big mess

Anne van Kesteren just posted about the Opera 9 Preview.  More notable to me is the testcase for Linking to style sheets with HTTP headers.

Here’s the code:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
 <head>
  <title>CSS: Linking to style sheets with HTTP headers</title>
  <meta name="Author" content="Krijn Hoetmer ~ http://ktk.xs4all.nl/">
 </head>
 <body>
  <h1>Linking to style sheets with <abbr title="HyperText Transfer Protocol">HTTP</abbr> headers</h1>

  <p>This line should (or could) be red.</p>
  <hr>
  <h2>Code</h2>
  <pre><code>Link: &lt;index.css&gt;; REL=&quot;stylesheet&quot;; MEDIA=&quot;screen&quot;</code></pre>
 </body>

</html>

The testcase already works (P element in red) in the current Firefox 1.07 (but not IE, natch).  Style code is utterly missing from the document — there are no style attributes, and no <style> or <link> elements.

That’s because they’re not in the document.  It’s in the headers of the HTTP response which delivered the document.  I had to find the style insertion with the Fiddler tool (a great IE addin), and this is what I found in the HTTP headers:

Link: <index.css>; REL="stylesheet"; MEDIA="screen"

I must’ve missed the memo where this became a standard (since multiple browsers now support it).  I miss how it’s a good idea too…

Yes, there’s a gee whiz factor to it.  I could even think of possible uses for HTTP style includes (like configuring includes at the website level via the web server, something which IIS already can do with normal include files). 

But it just seems like a bad idea.

Granted, the line between protocol and document was crossed long ago with HTTP-EQUIV META tags.  This, however, crosses it in the opposite direction, by putting not meta-data, not layout or behavior data, but style data into a transport protocol!

Now I’m no code purist — I feel most like a “SAVD” on Molly’s scale  (What’s bizarre is that I’d consider Anne much closer to a purist, a “SASS” to Molly.) 

We have CSS to get the font tags out of HTML.  Why not cram it into something even more poorly suited like HTTP?!

VERY bad idea.