2007 Sep 11, 11:17A headset that allows you to switch between a bluetooth phone and music.
product headphone music headset phone plantronics bluetooth purchase 2007 Aug 22, 12:12Software that resizes images while maintaining the relative ratios of important features. Just go watch the video its neat!
image images software photos photo siggraph video 2007 Aug 6, 5:40I was messing with the
XSLT to XSL Converter source which is a
javascript file that can be run with cscript.exe. I've changed it to be like a very basic version of
xsltproc that simply runs an XML file through
an XSLT. I also wanted to run this from the command prompt without writing "cscript ..." everytime. I decided to make like perl programmers I've seen and make a JS file that works as a batch file and
a JS file at the same time.
Here's a basic version of what I ended doing applied to a 'hello world' script named helloworld.cmd:
/* 2> NUL
@echo off
cscript /e:javascript /nologo "%~f0" %*
@goto :eof
Hello World
Says 'Hello world.' when you run it.
*/
var outText = 'Hello world.';
WScript.Echo(outText);
Running this on a command prompt gives the following:
C:\Users\davris>helloworld
C:\Users\davris>/* 2>NUL
Hello world.
However, after a little more experimentation I found this was slightly overkill for my purposes since if I rename the file to helloworld.js and just type its name like a command it is
run by cscript:
C:\Users\davris>helloworld
Microsoft (R) Windows Script Host Version 5.7
Copyright (C) Microsoft Corporation. All rights reserved.
Hello world.
So this time I didn't need all that but if ever in the future I need to run a batch file then a JS file I can do it with one file...
cmd js technical cscript batch xslt xsl javascript 2007 Jul 15, 5:08This previous weekend Sarah and I went to Canada for my friends Palak and Meghal's wedding. Our five day stay took us on
the route from Toronto, to Burlington (for the wedding), and then Niagra.
In Toronto we visited the
CN Tower, the
ROM, and the
Bata Shoe Museum. We generally acted like tourists walking around taking photos of things, putting on sun block, and not saying 'eh'. But we could have been worse
like the drunk American college students in front of us in line for the CN Tower asking the guide if the CN Tower is taller than the Stratosphere in Las Vegas. We stumbled upon the
Toronto Outdoor Art Exhibit which was really interesting. Sarah in particular recalls the cute stuffed animal
monsters.
After Toronto we drove to Burlington where Palak and Meghal's wedding would take place. We got up early and made it on time to the wedding which was
lovely. I hadn't attended an Indian wedding previously so it was a new experience for me. During the ceremony the child in front of me kept peeking over her parent's shoulder and staring at me. It
lasted all day with a break after lunch during which we drove around and experienced small town Ontario. After the break cousins performed dances for Palak and Meghal and then we all danced the night
away until the wee hours.
In Niagra we stayed in a hotel room with a falls view which was lovely. We went on the
Maid of the Mist tour that takes tourists
right up to the falls in a boat and drenches them. We also went on the
Behind the Falls tour which was not as fun. In both we are
given rain coats which are essentially glorified plstic trash bags. For dinner we ate in the hotel restaurant which had a lovely view of the falls. At night the falls are lit up in various colors
with gigantic lights.
niagra wedding personal toronto nontechnical 2007 Jul 14, 3:12I've been at Microsoft three years as of last Thursday. It makes me feel old but on the bright side I've upgraded offices. I now
have an office with a window. Its actually a coincidence that I got this office at the time of my Microsoft anniversary but I like to pretend. I've had a single office for only four or five months
now so its a nice surprise that I'm moving into a single window office so soon.
Of course this move means I'll be leaving some things behind. For instance the hanging dry erase pen holder that I created out
of office supplies I will leave attached to my old white board. My new office has fancy whiteboards with trays built-in (sooo fancy) so I know the person coming into my old office will make better
use of my hanging dry erase pen holder then I would. I explained to him that the rubber bands need to be replaced every eight months or so and not to exceed the maximum weight restrictions.
Additionally, the office art masterpiece I created I will also leave behind. When Bill Gates was featured on the cover of
Diversity Inc. for his amazing
philanthropic acts many of us got copies in our mailboxes. I
collected mine and some from the recycling bins and put up five of the covers on the wall. Eventually others added to it which was my intent, but I only started this when I eventually checked my
mailbox a week or so after the magazine arrived so there weren't as many covers left with which to work. At any rate I ended up with eleven on the wall. I'll leave the interpretation of the artwork
up to the viewer.
microsoft personal office nontechnical 2007 Jul 13, 8:30I bought an external backup drive a few weekends ago. I've previously setup a
Subversion repository so I decided to move everything into the repository and
then back it up. So in went the contents of all of my %USERPROFILE% and ~ directories with a bit of sorting and pruning. Not too much though given its much easier to dump in everything and search for
what I want then to take the time to examine and grade each file. What follows are the notes I took while setting this up. It takes me a bit of time to look up the help on each command so I figure
I'll write it all down here for the benefit of myself and potentially others...
Setting Up the Backup Drive For Linux
I first changed the filesystem on the drive to ext3. I plugged it into my USB2.0 port and ran fdisk:
sudo fdisk /dev/sda
Useful commands I used to do this follow mostly in order:
-
m
-
help
-
p
-
print current partitions
-
d
-
delete current partition
-
n
-
create new partition (I used the defaults)
-
w
-
write changes and exit
Then I formatted for ext3.
sudo mkfs.ext3 /dev/sda1
I made it easy to mount:
sudo vim /etc/fstab
# added line to end:
/dev/sda1 /media/backup ext3 rw,user,noauto 0 0
I setup the directory structure on the disk
mount /media/backup
sudo mkdir /media/backup/users
sudo mkdir /media/backup/users/dave
sudo chown dave:dave /media/backup/users/dave
After all that its easy to make a copy of the Subversion repository:
mount /media/backup
cp -Rv /home/dave/svn /media/backup/users/dave/
umount /media/backup
Next on the agenda is to add a cron job to do this regularly.
Subversion Command Reference
On a machine that has local access to the Subversion repository you can check out a specific subdirectory as follows using the file scheme:
svn co file:///home/dave/svn/trunk/web/dave%40deletethis.net/public_html
Note also that although one of my directories is named 'dave@deletethis.net' Subversion requires the '@' to be percent-encoded.
Other useful subversion commands:
-
svn help
-
help
-
svn list file:///home/dave/svn/
-
list all files in root dir of svn depot
-
svn list -R file:///home/dave/svn/
-
list all files in svn depot
-
svn list -R file:///home/dave/svn/ | grep \/$
-
list all directories
-
svn status
-
List status of all files in the working copy directory as in - modified, not in repository, etc
-
svn update
-
Brings the working copy up to date wrt the repository
-
svn commit
-
Commit changes from the working copy to the repository
-
svn add / move / delete
-
Perform the specified action -- occurs immediately
Setting up Windows Client for Auto Auth into SVN
When using an SVN client on Windows via svn+ssh its useful to have the Windows automatically generate connections to the SVN server. I use
putty on my Windows machines so I read the directions on
using public keys with putty.
putty.exe dave@deletethis.net
cd .ssh
vim authorized_keys # leave the putty window open for now
puttygen.exe
Click the 'generate' button
Move the mouse around until finished
Copy text in 'Public key for pasting into OpenSSH authorized_keys file:' to putty window & save & close putty window
Enter Key passphrase & Comment in puttygen
Save the private key somewhere private
pageant.exe
'Add Key' the private key just saved.
Checking out using Tortoise SVN
On one of my Windows machines I've already installed Tortoise SVN. Checking out from my SVN repository was really easy. I just right clicked in Explorer in a directory and selected "SVN Checkout...".
Then in the following dialog I entered the svn URI:
svn+ssh://dave@deletethis.net/home/dave/svn/trunk/web/dave%40deletethis.net/public_html/
Note again that the '@' that is part of the directory name is percent-encoded as '%40' while the '@' in the userinfo is not.
Windows Command Line Check Out
On my media center I didn't want to install Tortoise SVN so rather I used the
command line tool. I setup pageant like before the only
difficulty was getting the SVN command line tool to use putty. With the default configuration you can use the SVN_SSH environment variable to point at a compliant SSH command line tool. The trick is
that its interpreted as a backslash escaped string. So I set mine thusly:
set SVN_SSH=C:\\users\\dave\\bin\\putty\\plink.exe
The escaping solved the vague error I received about not being able to create the tunnel.
backup technical personal windows svn linux subversion 2007 Jul 11, 3:52I realized that I have short list of chicken related things I find humorous and they're all available for the linking to via youtube.
Chicken: The Powerpoint Presentation. This is a power point presentation of a research paper written in the
language chicken. (
video)
Bluth Family Chicken Dances. From the show Arrested Development many Bluth family members had their own chicken
dance. (
video)
Peter Fights the Giant Chicken. A man sized chicken fights Peter from Family Guy for multiple
minutes in several episodes mimicking famous action sequences. I must admire the writers dedication to the gag. (
video1,
video2)
roundup video personal chicken humor nontechnical 2007 Jul 11, 9:54Stats on who uses social networks.
research reference statistics social web 2007 Jul 4, 11:21Photos of a giant high voltage installation
photos steampunk architecture electricity history science technology weird 2007 Jul 4, 10:58Hackdiary
I really enjoy reading Matt Biddulph's blog
hackdiary. An entry some time ago talked about his
Second
Life flickr screen which is a screen in Second Life that displays images from flickr.com based on viewers suggested tags. I'm a novice to the Second Life scripting API and so it was from this
blog post I became aware of the
llHTTPRequest. This is like the XMLHttpRequest for Second Life code in that it lets you make HTTP requests.
I decided that I too could do something cool with this.
Translator
I decided to make a translator object that a Second Life user would wear that would translate anything said near them. The details aren't too surprising: The translator object keeps an owner
modifiable list of translation instructions each consisting of who to listen to, the language they speak, who to tell the translation to, and into what language to translate. When the translator
hears someone, it runs through its list of translation instructions and when it finds a match for the speaker uses the llHTTPRequest to send off what was said to
Google translate. When the result comes back the translator simply says the response.
Issues
Unfortunately, the llHTTPRequest limits the response size to 2K and no translation site I can find has the translated text in the first 2K. There's a flag HTTP_BODY_MAXLENGTH provided but it defaults
to 2K and you can't change its value. So I decided to setup a PHP script on my site to act as a translating proxy and parse the translated text out of the HTML response from Google translate. Through
experimentation I found that their site can take parameters text and langpair queries in the query like so:
http://translate.google.com/translate_t?text=car%20moi%20m%C3%AAme%20j%27en%20rit&langpair=fr|en
. On the topic of non US-ASCII characters (which is important for a translator) I
found that llHTTPRequest encodes non US-ASCII characters as percent-encoded UTF-8 when constructing the request URI. However, when Google translate takes parameters off the URI it only seems to
interpret it as percent-encoded UTF-8 when the user-agent is IE's. So after changing my
PHP script to use IE7's user-agent non
US-ASCII character input worked.
In Use
Actually using it in practice is rather difficult. Between typos, slang, abbreviations, and the current state of the free online translators its very difficult to carry on a conversation.
Additionally, I don't really like talking to random people on Second Life anyway. So... not too useful.
personal translate second-life technical translator sl code google php llhttprequest 2007 Jun 25, 3:13I keep seeing 'Ozzie' on emails and such now due mainly to
Ray Ozzie who is now the Chief Software Architect at Microsoft and his brother
Jack Ozzie. Whenever I see his name I think of
Ozzie from Chrono
Trigger. He was one third of a trio of villains, the other two being Flea and Slash. I feel like I should be thinking of the
Ozzy for
which this Ozzie was named but I really don't.
My next thought on Ozzie is
the Scottish guy who went to my high school. He'd shout
'Ozzie! Ozzie! Ozzie!' to which listeners were compelled to respond 'Oi! Oi! Oi!'. The wikipedia article on the chant has some thoughts on the
origins but I suppose at Microsoft it could take on entirely new meaning. I really hope I'm someday in a meeting with Ray or Jack Ozzie and have the opportunity...
ozzy personal ozzie random nontechnical 2007 Jun 21, 2:38Unspun is a social list creation website from Amazon. For instance, you could create a list named '
Most Desired Features for Next Version of Internet Explorer' and users of Unspun fill in and
rank the answers. There's a mix of serious answers that are excellent suggestions, fan-boy answers that are lame, uninformed answers that are already implemented, and hilarious answers that are
awesome. The following is the very short unsorted list of the awesome suggestions.
-
Innovative Anti-Phreaking Technology
-
Given the work done in IE7 on anti-phishing, subsequent work on anti-phreaking just makes sense.
-
AXELROD 2.8 Acceleration with XML Bindings
-
I'm not sure what AXELROD 2.8 is but accelerating it sounds good. Also I enjoy binding things to XML so...
-
Larger Buttons for My Mighty Fingers
-
For maximum humor this should be read by Richard Horvitz as Zim of Invader Zim. This
one makes me laugh every time I read it.
amazon personal ie humor nontechnical 2007 Jun 11, 3:36This past weekend I was invited to two BBQs. Consequently, the weather took a break from the heat to drizzle.
The first was a lunch BBQ in celebration of Sarah's mom getting her Masters degree. Sarah and I went to her sister's house on the East-side where we had traditional foods you might associate with a
BBQ including some enjoyable sausage. There was a bit of Wii to be had and Sarah's mom killed at bowling. Sarah seemed a bit dismayed at this. I guess Sarah didn't expect it since she's had more
experience compared to her mom who was playing for the first time.
For dinner we drove over to Seattle to have a BBQ at Jeannie's house. Jeannie's family and my family became friends through our church when I was born and Jeannie even babysat me. The second bit
about the babysitting is how Jeannie would introduce me at the BBQ. I met her boyfriend who seems like a cool guy. He works for Microsoft as a consultant and has traveled to various countries for his
job. Guests had been instructed to bring side dishes and so there was quite a spread which was eclectic as well. We brought red potatoes, humus, and pita bread. As it turns out, one of the other
guests had produced humus in bulk as a supplier and apparently had a grudge against the big humus chains. We played it cool and she didn't say anything so we can only assume she didn't know it was
us. Jeannie was a great hostess and I had a fun time.
bbq washington personal nontechnical 2007 Jun 7, 4:35A few weekends ago Sarah and I visited the
Woodland Park Zoo (Finding its website I'm amazed that its domain is 'zoo.org'. Somebody in Seattle was
quick on the domain registration.) I liked the zoo except for all the children. Human children... As visitors to the zoo... What did you think I meant? The kids are everywhere! Shouldn't they be
inside playing video games or something?
There was a gorilla that was wrapped in a dirty blanket. It looked like a homeless person and very sad. I'm reminded of the episode of the Simpsons in which
the octuplets work at the zoo and the scene in which while Homer is breaking out the children a gorilla tries to get him to take her child too. Looking for a
clip of this to post here I can only find clips from the Simpsons in German for some reason.
Like this one.
Two thirds or so of the way through my camera started running low on power. We were forced to choose which animals were camera worthy. Is it too common? Is it cute enough? Etc. Sarah
took a very nice shot of some hippos under these conditions. Unfortunately I couldn't get a good angle and view of the Elephants. But they were cool and had an interesting habitat (that's zoo for
large-ish cage.)
zoo personal nontechnical 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 21, 2:49Little go carts disguised as giant bunny slippers.
humor technology slippers bunny car 2007 May 17, 4:33FTA: 'The key to the biggest number contest is not swift penmanship, but rather a potent paradigm for concisely capturing the gargantuan.'
article education math science humor csc 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