2007 Oct 29, 1:48FTA: "Ben Goldacre is a medical doctor who writes the Bad Science column in the Guardian, examining the claims of scaremongering journalists, quack remedy peddlers, pseudoscientific cosmetics
adverts, and evil multinational pharmaceutical corporations. Th
monthly blog science politics religion media news healthy research humor 2007 Oct 29, 7:07Two brief updates to previous posts:
- I noted that I had a new entry on the IE blog. Some comments on the IE blog have recently been rude in their request for information
on future versions of IE. For example see the first two comments responding to my post. Feeling bad about that
I looked at my posts entry on delicious and saw the following:
"This is the first blog from the IE team that I have found rigorous and informative. I skipped to the bottom to find it was written by one of the TA's from my first class at Cal
Poly."
That made me feel a bit better and I was able to catch up with someone from college. Thanks Kris!
- I previously had my GPS set with an Australian accent. When it encountered 'WA', as in the abbreviation for Washington in freeway
exits, it pronounced it 'Western Australia'. Now I've got it with a British accent and WA is just 'W.A.' but when I tell it to drive to 'MS', the name of my saved location for work, it pronounces
it 'Manuscript'.
microsoft blog gps personal nontechnical 2007 Oct 22, 4:47I purchased the
Orange Box off of Steam a bit ago and like
others before me who have
discussed elsewhere, I already owned two of the five games that come from the Orange Box. However, the combined price of
HL2E2 and Portal, the two games I actually wanted was supposedly equivalent to the price of the Orange Box bundle. Incidentally, if anyone would like HL2 or HL2E1 I can
gift them to you.
HL2E2 was excellent of course but the big surprise for me was Portal. (Mild spoilers follow) It has a sort of zen simplicity: there are a few simple game-play mechanics, a handful of textures and
objects, and a deceptively simple story all used well and tied together to produce an entertaining and polished game. It seems a bit short but its probably better to end with the gamer demanding
more. The humor and the sort of
play within a play aspect of the game is what really sold me though. It has the funniest
ending theme I've heard (also
blogged by the creator). The voices of the automated turrets are so adorable I would feel compelled to hug them if they weren't
always trying to kill me. Additionally the
weighted companion cube seems like an experiment in understanding gamers'
attachment to NPCs. In this case the NPC is a box and yet I still felt awful incinerating it. The whole time I was vaguely reminded of
Solitary the reality show
that sticks contestants alone in small rooms forcing them to endure various tests all the while being watched by a humorous computer with a female voice. Someone should sue...
RPS has articles on Portal including
a Portal review, a page
suggesting Portal is a tale of
lesbianism, and
others.
hl2e2 game hl2 solitary valve portal nontechnical 2007 Oct 12, 3:20And now to fit in better with the rest of the emo kids on LJ, in no particular order here are some reasons why I feel old:
- I've attended friends weddings sorted chronologically by when I met them: Lucas from high school, followed by Carissa from college,
and then Palak from Microsoft.
- I rarely get carded for alcohol.
- Jon's moving to Germany soon -- this time permanently. He's already started the process of getting rid of possessions he's not taking with him like his car and TV. However, after doing so he
couldn't maintain his smug "I don't even own a TV" attitude and ended up trading me my small CRT TV
(as mentioned previously) for his DDR pads and games. A good trade for both since we were each looking to dump these items. So far I've
only convinced Sarah to try DDR once with me. Somehow I've gotten much worse at something I wasn't that great at to begin with.
- I have business cards.
- I still have semi-monthly nightmares in which I'm taking a Linear Algebra course for which I haven't studied or done homework in years. This differs from the more frequent nightmares I had
immediately after finishing that series of classes in which I was taking the final and it was all on the one topic I didn't study. In reality, the prof. had done his PhD work on this one topic and
I, correctly betting it wouldn't appear on the final, didn't study it. Apparently this was a traumatic bet for me to make given the wake of destruction left on my dreams.
- I have to remind myself that 2005 was two years ago.
personal nontechnical 2007 Oct 7, 4:12In a
previous post I mentioned an xsltproc like js file I made. As noted in that post, on Windows you can write console script files in
JavaScript, name them foo.js, and execute them from the command prompt. I later found that
MSDN has an XSLT javascript sample
which looks similar to mine, but I like mine better for the XSLT parameter support and having a non-ridiculous way of interpreting filenames. The code for my xsltproc.js follows. The script is very
simple and demonstrates the ease with which you can manipulate these system objects and all it takes is opening up notepad.
var createNewXMLObj = function() {
var result = new ActiveXObject("MSXML2.FreeThreadedDOMDocument");
result.validateOnParse = false;
result.async = false;
return result;
}
var args = WScript.arguments;
var ofs = WScript.CreateObject("Scripting.FileSystemObject");
var xslParams = [];
var xmlStyle = null;
var xmlInput = null;
var inputFile = null;
var outputFile = null;
var error = false;
for (var idx = 0; idx < args.length && !error; ++idx)
if (args.item(idx) == "-o") {
if (idx + 1 < args.length) {
outputFile = ofs.GetAbsolutePathName(args.item(idx + 1));
++idx;
}
else
error = true;
}
else if (args.item(idx) == "--param" || args.item(idx) == "-param") {
if (idx + 2 < args.length) {
xslParams[args.item(idx + 1)] = args.item(idx + 2);
idx += 2;
}
else
error = true;
}
else if (xmlStyle == null) {
xmlStyle = createNewXMLObj();
xmlStyle.load(ofs.GetAbsolutePathName(args.item(idx)));
}
else if (xmlInput == null) {
inputFile = ofs.GetAbsolutePathName(args.item(idx));
xmlInput = createNewXMLObj();
xmlInput.load(inputFile);
}
if (xmlStyle == null || xmlInput == null || error) {
WScript.Echo('Usage:\n\t"xsltproc" xsl-stylesheet input-file\n\t\t["-o" output-file] *["--param" name value]');
}
else {
var xslt = new ActiveXObject("MSXML2.XSLTemplate.3.0");
xslt.stylesheet = xmlStyle;
var xslProc = xslt.createProcessor();
xslProc.input = xmlInput;
for (var keyVar in xslParams)
xslProc.addParameter(keyVar, xslParams[keyVar]);
xslProc.transform();
if (outputFile == null)
WScript.Echo(xslProc.output);
else {
var xmlOutput = createNewXMLObj();
xmlOutput.loadXML(xslProc.output);
xmlOutput.save(outputFile);
}
}
js xml jscript windows xslt technical xsltproc wscript xsl javascript 2007 Sep 27, 2:17Starting on a new simple project I wanted to get the history of my Delicious links. Delicious has an export tool available via the settings section so I thought I'd try that. However, the links
aren't exported in XML not even in XHTML but rather in HTML. Shocking. An example:
"Don't Tase Me, Bro!" (UF Student Tasered Remix)
Remix of the 'Don't tase me, bro!' guy getting tasered.
At this point I'm already not going to use this file because its in HTML but I'm even more disgusted by those date time values.
Raymond Chen of the Old New Thing posted about recognizing timestamps and timestamp sentinel values. From the first blog post and with the use of a calculator for base conversion one can tell that
those are UNIX style timestamps counting the number of seconds since 1970.
It reminds me of my hatred for the MIME date time format I developed working on my webpage's server side parsing of atom and RSS. Atom is
of course my favorite as Atom uses the Internet date time format described in the following documents. Here's an example of one
2007-09-27T020:50:00.000-08:00
On the other hand the evil and villainous RSS uses the MIME date time format now described in the more
recent IETF MIME standard. Here's an example Thu, 27 Sep 2007 20:50:00 -0800
The Internet date time format has the advantage of being so easy to sort. An alphabetic sort with normal C-style collation rules of strings containing Internet date times will also sort them
chronologically. This is not the case for the MIME date time due to the preceding day of the week and the spelled out month name. This also means that when producing these you have to figure out
the day of the week and when parsing them you have to match month names rather than just parsing out numbers. Anyway now days if I see mention of a date time in a new proposed standard or spec I be
sure to point out the numerous advantages of the Internet date time format.
date xml html feed time technical date-time code atom rss 2007 Sep 14, 7:37I previously mentioned how much I enjoyed
my new office. Well my team has moved to a new building and although we get more offices total
meaning no one on the team has to share an office, this building has less windowed surface area which means less people get window offices. Since I received the window office recently I'm kicked out
now in FIFO order. Stacks are so sad.
microsoft work personal office nontechnical 2007 Sep 4, 1:52Do I need to look for a new blogging service? I'll just keep backing up my content...
blog censorship internet livejournal 2007 Aug 21, 4:04Seeing
ErrorZilla I realized I could easily do a similar thing to the IE7 404 page using the same
technique I used for the
XML view and the
feed view.
So that's what I did: I made
a new 404 page for IE7. There's not much new here technically if you've read the previous blog
entries to which I linked. My 404 page change adds links to the
Internet Archive, the
Coral Cache, and
Whois Tool.
archive personal res cache resource ie7 technical browser whois 404 error extension 2007 Aug 15, 3:30I've been experimenting with adding video to my webpage. I tried to
embed video in my livejournal blog posts previously however ran into
some issues with that. When creating the LJ post I added an
tag but when I submit that tags
turned into an
technical youtube video personal livejournal homepage 2007 Jul 25, 10:08LiveJournal's FAQ describes how to download all of your blog entries. Seems like a good idea after LiveJournal disappeared for the day yesterday.
backup howto livejournal blog 2007 Jun 18, 10:49"Nature Precedings is trying to overcome those limitations by giving researchers a place to post documents such as preprints and presentations in a way that makes them globally visible and citable."
science research journal nature database collaboration archive community 2007 May 22, 3:22I've created an
update to the IE7 feed display.
After working on my
update to the XML source view I tried running my resourcelist program on other IE DLLs including ieframe. I found that
one of the resources in ieframe is the XSLT used to turn an
RSS feed into the IE7 feed display.
My first thought for this was that I could embed enclosures into the feed display. For instance, have controls for youtube.com videos or podcast audio files directly in the feed display. However, I
found that I can't use object or embed tags that rely on ActiveX controls in the page or in frames in the feed display.
With that through I decided I could at least add support for some RSS extensions. Thanks to
IE7's RSS platform which provides a
normalized view of RSS feeds it was really easy to do this. I went to several popular RSS feeds and RSS feeds that I like and took a look at the source to see what extensions I might want to add
support for.
For
digg.com I added support for
their RSS extension which includes digg count, and submitter name and icon. I
added the digg count in a box on the right and tried to make it fit in stylistically. For the
iTunes RSS extension
I add the feed icon, feed author, and descriptions. I was surprised by how much of the podcasts content was missing from the feed view. I also added support for a few other misc things: the
slash RSS extension's section and department, the feed description to the top of the feed display, and the atom author icon.
I wonder what other goodies lurk in IE's resources...
feed res slashdot digg resource itunes technical browser ie rss extension 2007 May 17, 5:16Previously I created some
resource tools and then I used them to
overwrite msxml3's
XML source view. In this update I've added support for the XPointer Framework.
This time around I've started to add support for the
XPointer Framework to my
XML source view and
I've added
installation instructions. The framework consists of a series of pointer segments each of which has a scheme name followed
by data in parenthesis. For example 'scheme1(data1)scheme2(data2)scheme3(data3)'. A pointer segment resolves to a portion of the XML document based on the data and the scheme name. The whole pointer
resolves to the first segment that successfully resolves. That is, from the example, if scheme1 resolves to nothing and scheme2 resolves to something then that's used and scheme3 is ignored. In
addition to the framework I've added support for the
xmlns scheme which binds namespace prefixes to a namespace URI and the
element scheme which is a simple way to resolve to particular elements in an XML. I also have limited support for the
xpointer scheme the content of which is resolved as an
XPath with some extra functions (which I don't support --
hence the limited). I've also thrown in schemes for the two
SelectionLanguage values supported by msxml3.
Next time I might try to support the xpointer functions that aren't in xpath using
msxml script. But I think I'm losing steam on
this project... we'll see.
resource technical xml xpointer res xpath xslt 2007 May 11, 8:55Last time, I had written some resource tools to allow me to view and modify Windows module resources in my ultimate and noble quest to
implement the XML content-type fragment in IE7. Using the resource tools I found that MSXML3.DLL isn't signed and that I can replace the XSLT embedded resource with my own, which is great news and
means I could continue in my endevour. In the following I discuss how I came up with this
replacement for IE7's XML source view.
At first I thought I could just modify the existing XSLT but it turns out that it isn't exactly an
XSLT, rather its an
IE5 XSL. I tried using the
XSL to XSLT converter linked to on MSDN, however the resulting document still
requires manual modification. But I didn't want to muck about in their weird language and I figured I could write my own XSLT faster than I could figure out how theirs worked.
I began work on the new XSLT and found it relatively easy to produce. First I got indenting working with all the XML nodes represented appropriately and different CSS classes attached to them to make
it easy to do syntax highlighting. Next I added in some javascript to allow for closing and opening of elements. At this point my XSLT had the same features as the original XSL.
Next was the XML mimetype fragment which uses
XPointer, a framework around various different schemes for naming parts of an XML document. I focused on the
XPointer scheme which is an extended version of
XPath. So I named my first task as getting XPaths working.
Thankfully javascript running in the HTML document produced by running my XSLT on an XML document has access to the original XML document object via the
document.XMLDocument property. From this this I can execute XPaths, however there's no builtin way to map from the XML nodes selected by
the XPath to the HTML elements that I produced to represent them. So I created a recursive javascript function and XSLT named-template that both produce the same unique strings based on an XML node's
position in the document. For instance 'a3-e2-e' is the name produced for the 3rd attribute of the second element of the root element of the XML document. When producing the HTML for an XML node, I
add an 'id' attribute to the HTML with the unique string of the XML node. Then in javascript when I execute an XPath I can discover the unique string of each node in the selected set and map each of
them to their corresponding positions in the HTML.
With the hard part out of the way I changed the onload to get the fragment of the URI of the current document, interpret it as an XPath and highlight and navigate to the selected nodes. I also added
an interactive floating bar from which you can enter your own XPaths and do the same. On a related note, I found that when accessing XML files via the file URI scheme the fragment is stripped off and
not available to the javascript.
The next steps are of course to actually implement XPointer framework parsing as well as the limited number of schemes that the XPointer framework specifies.
xml xpointer msxml res xpath xslt resource ie7 technical browser ie xsl 2007 May 11, 7:48After
Carissa and Elijah's wedding Sarah and I went to San Francisco. We drove in, well Sarah drove anyway, still in
the PT Cruiser Sunday morning and checked into our hotel,
Hotel Diva. I was originally concerned that I wouldn't fit in as I don't really consider myself a
diva, however the hotel was cool. They have Internet rooms setup in various themes, the front desk is always staffed, our room had a very modern look, and when we entered the flat-screen over the
front desk was playing an episode of Aqua Teen Hunger Force.
We walked around a bit before going to the
SF Museum of Modern Art. There was a Picasso exhibit at the time
which we could see for only $3 more. It felt kind of wrong like my ticket was super-sized. I think the most memorable piece I saw was
three white
panels which consisted of three blank panels. Art. Sure. After that Sarah wanted to see the giant Hello Kitty store she had heard of from her sister. We ended up going to the Westfield Shopping
center which has a disappointingly average sized Hello Kitty store. Apparently the giant one is gone. That night we went to
First Crush for dinner. I had a
flight of wine which consists of three one-third sized glasses of various but complimentary wines. It was a great restaurant in terms of food, drink, atmosphere and service.
The next morning we were even more the tourists when we went down to Fisherman's Wharf and Pier 39. We visited the famous wax museum and purchased multiple
pounds of taffy. On the way back to the Oakland airport we got to experience a little traffic as part of
the
580 freeway had collapsed the morning we arrived and was still under repair on our way out. We survived of course and I think the trip went rather well.
sanfrancisco personal california sfmoma nontechnical 2007 Jan 19, 9:15I've moved my homepage to server-side scripting. Previously I've mentioned that
I was using client side scripting to interpret and sort my
livejournal and delicious entries together. Now I'm using
PHP and
XSLTs to process and sort my livejournal,
delicious, flickr, and librarything entries. See
my homepage for the finished result.
LibraryThing is pretty cool despite being pretty niche. Its like flickr but for books. I display a random sampling of the covers of books I have listed in
librarything on my page. I've also hooked the display of the covers of my book up to the corner image. Now when you hover over the cover of a book a bigger picture of its cover appears in the corner
of the webpage. Also, flickr entries in the main section how have the same on hover behavior.
This may not be the best use of my time, but its still fun.
librarything xslt delicious homepage flickr technical php livejournal script 2006 Dec 4, 6:18My profile on LiveJournal
profile livejournal blog me 2006 Nov 3, 3:02I'm updating my
homepage to include a sorted list of
my livejournal blog entries and
my del.icio.us bookmarks. I'm using
BadgerFish to convert the XML of the RSS feeds of the two into JavaScript objects. At
that point I can do fun stuff like sorting them into lists on my page. Neat. This is how I spend my free time... OK.
xml badgerfish feed rss script livejournal delicious homepage 2004 Apr 22, 3:52I actually have something to say which I thought would be appropriate for the LiveJournal format. Why I haven't posted to the LiveJournal for such a great length of time can be saved for later. I
spent Easter weekend and the Monday following, in Washington, the state. Microsoft paid for me to fly up and stay in Washington so I could do the technical portion of the interview with them. I hung
out with my friend Jeannie and she showed me all around Seattle on Saturday and Sunday. Each night we had somewhat expensive dinners, all paid for by Microsoft. It was cool. On Sunday I stayed at a
nice hotel in Redmond and the next morning I spent just short of eight hours being interviewed by five different people from different groups within Microsoft. Each sub interview consisted of two
portions. First there was the general portion where they would ask me why I wanted to work there, ask about my previous experience, and those sort of non technical questions. The second portion would
take the majority of the time and it would be me trying to solve some technical problem they'd present. By the end of the interview my hands were gray with dry erase marker ink because apparently
everybody's got a whiteboard and they all want me to write code on them. I have to go to class soon and I might post some more stories related to this trip, but mostly I wanted to say that last week
I received a great offer from them and I'll probably be moving up to Washington sometime (weeks or months?) after graduation. Also, I've changed my AIM name from SequelGuy to SequelDave. My email
address will also have to change soon, but I don't know to what it will change.