which page 16 - Dave's Blog

Search
My timeline on Mastodon

Wikipedia Tools

2007 Sep 12, 6:54I'm visiting Wikipedia more and more recently but I always find myself reading the referenced webpages to get the full context of quotes and for more info. Basically I use Wikipedia as an introduction and a place to look for links. For times when I'm looking for opinions rather than facts I like to use Everything2. No need to check references there.

There's the much hyped WikiScanner tool which reports who has been making anonymous (thought to be anonymous at the time anyway) edits to Wikipedia. Its humorous and interesting in a few cases, but in general I think its stretching to say that because an IP address range is owned by a corporation and someone edited Wikipedia on an IP in that range that you can attribute that edit to that corporation. If I edited Wikipedia I'd probably do a bit of that during my lunch break, but that wouldn't mean that Microsoft wants the Wikipedia pages for Weird Al, Dave Risney, URIs, or whatever else I would edit on Wikipedia changed.

Also, via Everything Is Miscellaneous I found the tool Wiki Dashboard. Wiki Dashboard proxies Wikipedia and on each page shows a timeline view at the top with who made edits and when. Its nice to see a gentle curve down from an initial spike at the beginning for topics you don't imagine to be controversial. As the canonical test page for this service I looked up 'Elephant' the Wikipedia page Stephen Colbert suggested folks vandalize on his show on 2006 July 31st. If you look at the Wiki Dashboard Elephant page you can see a very large spike in edits on that date. That's all I need to see.

As a side note, for the link on Stephen Colbert suggesting folks vandalize Wikipedia I linked to a Wikipedia article. Is it inappropriate to provide info about Wikipedia being vandalized and thus incorrect via a link to a Wikipedia article?PermalinkCommentswikidashboard stephen-colbert wikality wikipedia wikiscanner colbert-report

Ad Blocking built into IE7

2007 Sep 11, 2:55There's been some news recently on some guy hating on FireFox for its ad-blocking.

On a similar note here's a fun tip for IE7 users I got from Eric. You can get decent ad-blocking in IE7 by putting ad servers in the restricted zone. By default script inclusion is blocked between different zones so you can put domains that serve up ads in your restricted zone after which, normal internet zone sites won't be able to include script from them. This covers most of the ads I run into these days.

I use Fiddler to figure out the domains that are serving up ads which incidentally also has an ad-blocking^H^H^H^H general purpose content blocking plugin. Here's a screenshot of Slashdot and ArsTechnica from my browser. Notice the large blank areas in the screenshots:
PermalinkCommentsad-blocking personal ad ie7 technical browser tip ie

ErrorZilla err ErrorSoft

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.PermalinkCommentsarchive personal res cache resource ie7 technical browser whois 404 error extension

Video Woes

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 PermalinkCommentstechnical youtube video personal livejournal homepage

Bunny Sniff and Shake

2007 Aug 13, 3:35
I've been told that family members after reading my webpage which contains some technical related material would turn to my cousins webpage. So, in an effort to not drive away readers I've...
From: David Risney
Views: 328
3 ratings
Time: 00:08 More in Pets & Animals
PermalinkCommentsvideo

Awesome Movies Unknown to Me

2007 Aug 12, 2:50Thanks to Netflix I've been able to enjoy several movies that I'd never heard of.



Brick is a classic PI film set in a modern high school. Its fun figuring out which high school students correspond to which film noir archetypes.

Primer is a sci-fi movie but it doesn't focus on action or effects. Its like watching an excellent Twilight Zone episode. I hate to describe this any further for fear of giving something away.

The Amazing Screw-On Head is an animated version of the one shot comic. It feels like the 1800s precursor to the The Venture Bros. and stars Screw-On Head, a steam-punk robot head thing and Abe Lincoln's top spy for occult matters.

The Quiet Earth is the movie version of the book about a man who awakes one day to find himself alone(... or is he?) It was made in the 80s and in Australia but don't hold that against it.PermalinkCommentsscifi primer movie amazing screw-on head personal netflix brick the quiet earth

Which which - Batch File Hackiness

2007 Aug 9, 5:41To satisfy my hands which have already learned to type *nix commands I like to install Win32 versions of common GNU utilities. Unfortunately, the which command is a rather literal port and requires you to enter the entire name of the command for which you're looking. That is 'which which' won't find itself but 'which which.exe' will. This makes this almost useless for me so I thought to write my own as a batch file. I had learned about a few goodies available in cmd.exe that I thought would make this an easy task. It turned out to be more difficult than I thought.

for /F "usebackq tokens=*" %%a in ( `"echo %PATH:;=& echo %"` ) do (
    for /F "usebackq tokens=*" %%b in ( `"echo %PATHEXT:;=& echo %"` ) do (
        if exist "%%a"\%1%%b (
            for  %%c in ( "%%a"\%1%%b ) do (
                echo %%~fc
            )
        )
    )
)
The environment variables PATH and PATHEXT hold the list of paths to search through to find commands, and the extensions of files that should be run as commands respectively. The 'for /F "usebackq tokens=*" %%a in (...) do (...)' runs the 'do' portion with %%a sequentially taking on the value of every line in the 'in' portion. That's nice, but PATH and PATHEXT don't have their elements on different lines and I don't know of a way to escape a newline character to appear in a batch file. In order to get the PATH and PATHEXT's elements onto different lines I used the %ENV:a=b% syntax which replaces occurrences of a with b in the value of ENV. I replaced the ';' delimiter with the text '& echo ' which means %PATHEXT:;=& echo% evaluates to something like "echo .COM& echo .EXE& echo .BAT& ...". I have to put the whole expression in double quotes in order to escape the '&' for appearing in the batch file. The usebackq and the backwards quotes means that the backquoted string should be replaced with the output of the execution of its content. So in that fashion I'm able to get each element of the env. variable onto new lines. The rest is pretty straight forward.

Also, it supports wildcards:
C:\Users\davris>which.cmd *hi*
C:\Windows\System32\GRAPHICS.COM
C:\Windows\System32\SearchIndexer.exe
D:\bin\which.exe
D:\bin\which.cmd
PermalinkCommentswhich cmd technical batch for

Two-for Script File

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...PermalinkCommentscmd js technical cscript batch xslt xsl javascript

Moved

2007 Aug 6, 4:07I've moved from my previous apartment in Redmond into Sarah's condo in Kirkland. Over the past week I'd been coming home from work and packing and sorting all of my belongings. Everything had a few destination options: I donated two carts of computer related junk (two CRTs, two desktops, six laptops, untold number of cables, piles of network and sound cards, etc) to RE-PC and six garbage bags of clothing that I either never wear or into which I have worn holes into friendly looking clothing donation bins. Of course I still need to find some place to get rid of my 15 inch CRT TV, VCR, DVD player, and X-Box. I finally emptied my bags of coins that had been collecting for about seven years (one of the bags was from my college orientation) through Coinstar and got ~$160. Some items seemed to fit very well at work like my satirical RIAA propaganda poster and my Darth Vader Nutcracker. This past weekend I had movers come and actually move my furniture. Most of its now in storage except for my living room which is moved into Sarah's second bedroom. Now all I have to do is unpack...PermalinkCommentsmove personal repc recycle nontechnical

Wp64 Issues

2007 Aug 6, 3:43Miladin told me about the Visual Studio compiler's promising option Wp64 that finds 64bit portability issues when compiling in 32bit. If, for instance, you cast from a (long*) to a (long) you get a W4 warning. However, the #defines are still set for 32bit builds. This means that other parts of the code can make assumptions based on the #defines that are valid on 32bit but generate 64bit errors or warnings.

For instance, in winuser.h the public published Windows header file there's the following:
...
#ifdef _WIN64
...
WINUSERAPI
LONG_PTR
WINAPI
SetWindowLongPtrA(
    __in HWND hWnd,
    __in int nIndex,
    __in LONG_PTR dwNewLong);
...
#else  /* _WIN64 */
...
#define SetWindowLongPtrA   SetWindowLongA
...
#endif /* _WIN64 */
...
In 64bit everything's normal but in 32bit SetWindowLongPtrA is #defined to SetWindowLongA which takes a LONG rather than a LONG_PTR. So take the following code snippet:
...
LONG_PTR inputValue = 0;
LONG_PTR error = SetWindowLongPtrA(hWnd, nIndex, inputValue);
...
This looks fine but generates warnings with the Wp64 flag.

In 64 bit, p is cast to (LONG_PTR) and that's great because we're actually calling SetWindowLongPtrA which takes a LONG_PTR. In 32 bit, p is cast to (LONG_PTR) which is then implicitly cast to (LONG) because we're actually calling SetWindowLongA. LONG and LONG_PTR are the same size in 32bit which is fine but if you turn on the Wp64 flag there's a W4 warning because of the implicit cast from a larger size to a smaller size if you were to compile for 64bit. So even though doing a 32bit or 64bit compile would have worked just fine, if you turn on the Wp64 flag for 32bit you'd get an error here.

It looks like I'm the most recent in a list of people to notice this issue. Well I investigated this so... I'm blogging about it too!PermalinkCommentswp64 technical 64bit compiler c++ visual-studio setwindowlongptra

Pick Your Candidate (2008 Presidential Candidates)

2007 Jul 22, 7:50Enter your views on various topics and see which candidates publicly stated opinions most match.PermalinkCommentsgovernment politics quiz vote

Canadian Wedding

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.

Hotel near CN TowerIn 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.

Palak And Meghal's Wedding 6After 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.

Niagra FallsIn 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.PermalinkCommentsniagra wedding personal toronto nontechnical

Office with a View

2007 Jul 14, 3:12New OfficeI'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.

Hanging Pen HolderOf 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.

Diversity in NumbersAdditionally, 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.PermalinkCommentsmicrosoft personal office nontechnical

Second Life Translator

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.PermalinkCommentspersonal translate second-life technical translator sl code google php llhttprequest

Ozzie

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.
Ray Ozzie. Links to license.Ozzie from Chrono Trigger. Links to license.Ozzy Osbourne. Links to license.
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...PermalinkCommentsozzy personal ozzie random nontechnical

BBQ x 2

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.PermalinkCommentsbbq washington personal nontechnical

Wiimote wiissues

2007 Jun 7, 5:29The other day I had the best idea for my Wii remote. Clearly I should use it to control the rotation of Tetris pieces in my N-dimensional Tetris game Polytope Tetris. One of the issues I described with Polytope Tetris is user input. Given a Wii remote the user could rotate a piece through 3 dimensions in a manner that's much easier to adjust to than particular keys on the keyboard.

Anyway, I did a little research into how this might work. I knew that the Wii remote used infrared for absolute positioning and Bluetooth for everything else (LEDs, speaker, accels.) I bought a Bluetooth adapter for my PC after realizing that none of my computers had one already. I used GlovePIE to ensure that my Wii remote could connect and successfully communicate with my computer. GlovePIE is actually pretty cool -- it provides a simple script layer over the Wii remote to control things like your mouse.

Since Polytope Tetris is in Java I looked for and found a Java library for operating with the Wii remote and a long forum thread discussing its use. I then read up on Bluetooth in Java. Apparently JSR 82 is the name of the standard that describes the API a Bluetooth stack should expose in Java. That is, to get Bluetooth working in Java one needs an additional package for Java that actually implements the Bluetooth Java API. This package would depend on the system so I suppose I can't fault Sun for not including it... Where to find such a package? I found a comparison list of implementations and tried the ones that support javax.bluetooth. None of them worked for me because none can address USB devices it seems or they cost money and I couldn't get the trial version working. I also tried bluesock (not listed on the previous list) which seemed promising and could produce an address for my Wii remote as a connected device but couldn't use that address.

And I thought that after I found the Wii remote Java library it would be easy... Oh well...PermalinkCommentsjava bluetooth wii technical remote jsr82 tetris polytopetetris wiimote

Zoo Trip

2007 Jun 7, 4:35TigerA 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?

Gorilla HomelessThere 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.

HipposTwo 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.)PermalinkCommentszoo personal nontechnical

Language Translation -- English, French, German, Spanish, Italian, Portuguese, Dutch, Russian, Greek, Norwegian, Chinese, Japanese & Korean

2007 Jun 6, 4:59A list of free web based language translation services including language guessing which I think is neat.PermalinkCommentsdictionary translation tool language reference free internet

IE7 Feed Display Update

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...PermalinkCommentsfeed res slashdot digg resource itunes technical browser ie rss extension
Older EntriesNewer Entries Creative Commons License Some rights reserved.