ip page 26 - Dave's Blog

Search
My timeline on Mastodon

Why the Music Industry Hates Guitar Hero

2009 Feb 26, 11:41"Aerosmith has reportedly earned more from 'Guitar Hero : Aerosmith' than from any single album in the band's history." Games are usually more expensive than albums but still impressive stat.PermalinkCommentsvia:ethan_t_hein music guitar-hero videogames copyright art media rock-band ip riaa

Some Datasets Available on the Web - Data Wrangling Blog

2009 Feb 23, 10:34Lots of neat web APIs. Added to Delicious network. "Over the past year, I've been tagging interesting data I find on the web in del.icio.us. I wrote a quick python script to pull the relevant links from my del.icio.us export and list them at the bottom of this post. Most of these datasets are related to machine learning, but there are a lot of government, finance, and search datasets as well."PermalinkCommentsapi data semanticweb information reference

MyFonts Blog - Blog Archive - Introducing WhatTheFont for iPhone!

2009 Feb 11, 10:05"With the iPhone version of WhatTheFont you can use the phone's built-in camera to photograph the text in question (or choose an existing image from your photo albums)... After confirming which characters are used in the image, the app provides a list of possible matching fonts."PermalinkCommentsfont iphone camera typography

Proxy Client Autoconfig File Format

2009 Feb 5, 8:47Copy of the Netscape Navigator document (the original's long gone) describing the Proxy Auto-Config (PAC) file format and mime-type. Its a javascript file with at least one well known function that, given a host, returns a string describing which methods are appropriate for a web browser to connect to that host.PermalinkCommentsjavascript pac proxy http reference netscape navigator

The WHATWG Blog - Blog Archive - This Week in HTML 5 - Episode 20

2009 Feb 3, 11:15"r2719 specifies that browsers should not allow scripts to set document.domain to anything on the Public Suffix List, such as "com" or "co.jp". Essential background reading on why this is dangerous: Untraceable XSS Attacks. Most browsers already block this attack, e.g. Firefox since 3.0. [Background: Re: Setting document.domain]"PermalinkCommentshtml5 tld publicsuffix dns security html internet web reference w3c

nru, another step towards magical augmented reality phones - Boing Boing Gadgets

2009 Jan 20, 2:20"Because the G1 has a compass inside, nru presents its data as a sonar-like spinning map when held parallel to the ground, but presents a snazzy augmented reality overlay when tipped up towards the horizon. It's easier to grok when you can see it in motion; there's a video up above."PermalinkCommentsg1 phone cellphone compass geolocation video android

Instaviz: Graph Sketching for your iPhone

2009 Jan 15, 8:00Cool application that turns your sketches into graphs. I wonder if this can ever come to my phone? "Sketch a rough shape with your finger and Instaviz transforms what you drew in a split second. Sketch a link between two shapes and Instaviz quickly redraws the graph with the best layout."PermalinkCommentsgraph visualization iphone graphviz phone software application development

Mazapan.se - You Have To Burn The Rope

2009 Jan 12, 12:27The game is "You Have To Burn The Rope" with the description: "Computer games are getting so hard these days..." Take a minute to play this game and then enjoy the end game song.PermalinkCommentshumor game flash computer parody music

Etre Touchy - Welcome - Gloves for your iPhone, iPod Touch, Nintendo DS, Blackberry, PDA and more...

2009 Jan 8, 5:49Gloves with the ends of the index finger and thumb missing for using phones and the like while keeping the rest of your hands warm. Good idea!PermalinkCommentsglove design shopping wishlist phone cellphone clothing gloves

Back from California

2008 Dec 30, 2:29

Sarah and Me at ChristmasSarah and I are back from a short Christmas visit to California. We spent the days around Christmas with much of my extended family in Sacramento many of whom I had not seen in quite a while. It was nice to see everybody again. I ended up taking a few pictures on Christmas in order to add to the digital photo frame I gave Grandma.

San Francisco Pier at NightWe flew in and out of San Francisco on Virgin America which was really nice. The staff is trying their best to be hip but accessible, the safety instructional video is entertaining, there's mood lighting, and all seats have entertainment systems as well as power outlets and USB ports to charge your electronic devices. They don't have many flights which appears to mean shorter lines. And it was cheaper to fly with them and then rent a car and drive to Sacramento then to fly in to Sacramento. I'll for sure be flying with them again given the opportunity. Before flying back Sarah and I spent a day in San Francisco, where we decided that if we don't go back to Fisherman's Wharf again in this lifetime that would be acceptable, saw the Golden Gate Park and met up with my friend Jake who I haven't seen in at least four years. Next up, happy new year!

PermalinkCommentschristmas virgin america family personal san francisco

Packagetrackr - Package Tracking Service - UPS, USPS, FedEx, DHL, TNT and more

2008 Dec 30, 1:40Packagetrackr is like the isnoop tool but with IE8 integration. Its universal tracking across UPS, USPS, FedEx, etc., shows progress on a map, has RSS feed you can subscribe to telling you about the package's progress, and also added support for IE8's accelerator and webclips. Snazzy. Still want georss markup in the feed though.PermalinkCommentsgeo google map ups visualization mashup rss package shipping feed tool fedex usps tracker track accelerator webclip

Commons:Photo scavenger hunts - Wikimedia Commons

2008 Dec 30, 1:19The other day I thought a creative commons photography scavenger hunt is such a good idea, that it must already exist. And of course it does.PermalinkCommentsscavenger-hunt cc creative-commons wikipedia photo photography stolen-thoughts

World of Warcraft - English (NA) Forums -> I played WoW, I became a terrorist (story!)

2008 Dec 29, 12:22"This wasn't my fault. Anyone could have dropped his stupid iPod in the toilet. It's really the government here. I mean, at this point the building contained six customs officials, an army of policemen, people from various security agencies, a bomb squad, and a couple of detectives."PermalinkCommentsipod toilet humor airplane plane security terrorism wow

Dropped Calls: When Cell Phone Meets Toilet : NPR

2008 Dec 29, 12:21This reminds me of the case of the iPod in the toilet which I could have sword I already posted to delicious...PermalinkCommentsvia:claire npr humor phone cellphone toilet

Back From Germany

2008 Dec 14, 4:59

View from Jon'sSarah and I are back from Munich, Germany as of Thursday and I've just about recovered. The trip there via Air France we watched many movies and it was much better than the trip back in which the entertainment system failed and I had a cold. When we arrived, Jon met us at the airport, helped us with the subway system, we played Guitar Hero, ate at a Bavarian pub, and then later at an Australian bar.

Neuschwanstein CastleThe following day we met up with Jon and three of his friends, one of whom was visiting from England and we all took a train to Neuschwanstein Castle. Apparently its the 'Disney' castle in that Disney's castle's are based upon it. The castle is filled with images and statues of swans in homage to the Swan Knight. We ate in the town at a cafe with traditional Bavarian food before taking the train back and getting all you can eat fajitas for dinner.

PermalinkCommentsgermany personal vacation nontechnical

STREET WITH A VIEW: a project by Robin Hewlett & Ben Kinsley

2008 Nov 22, 5:22"On May 3rd 2008, artists Robin Hewlett and Ben Kinsley invited the Google Inc. Street View team and residents of Pittsburgh's Northside to collaborate on a series of tableaux along Sampsonia Way. Neighbors, and other participants from around the city, staged scenes ranging from a parade and a marathon, to a garage band practice, a seventeenth century sword fight, a heroic rescue and much more."PermalinkCommentsgoogle map street view pittsburgh streetview internet art

Clips: The Kids In The Hall Think Portal Is HILARIOUS

2008 Nov 20, 11:30KITH + Portal! "We're not sure how deep into the goof juice the Kids in the Hall were when troupe funnyman Scott Thompson started sulking and playing Portal in the back of the tour bus, but something got into Kids during this sad little gaming session. Yes, the comedic stylings of Valve writer Erik Wolpaw are most amusing, as is the struggle of watching Thompson attempt to do anything more than move a cube - uncrouch already! - but something tells me there's something magical in those cups. Thanks for the tip, Sascha23!"PermalinkCommentsportal video humor valve kith scott-thompson

Text/Plain Fragment Bookmarklet

2008 Nov 19, 12:58

The text/plain fragment documented in RFC 5147 and described on Erik Wilde's blog struck my interest and, like the XML fragment, I wanted to see if I could implement this in IE. In this case there's no XSLT for me to edit so, like my plain/text word wrap bookmarklet I've implemented it as a bookmarklet. This is only a partial implementation as it doesn't implement the integrity checks.

Check out my text/plain fragment bookmarklet.

PermalinkCommentstext url boring bookmarklet uri plain-text javascript fragment

Tab Expansion in PowerShell

2008 Nov 18, 6:38

PowerShell gives us a real CLI for Windows based around .Net stuff. I don't like the creation of a new shell language but I suppose it makes sense given that they want something C# like but not C# exactly since that's much to verbose and strict for a CLI. One of the functions you can override is the TabExpansion function which is used when you tab complete commands. I really like this and so I've added on to the standard implementation to support replacing a variable name with its value, tab completion of available commands, previous command history, and drive names (there not restricted to just one letter in PS).

Learning the new language was a bit of a chore but MSDN helped. A couple of things to note, a statement that has a return value that you don't do anything with is implicitly the return value for the current function. That's why there's no explicit return's in my TabExpansion function. Also, if you're TabExpansion function fails or returns nothing then the builtin TabExpansion function runs which does just filenames. This is why you can see that the standard TabExpansion function doesn't handle normal filenames: it does extra stuff (like method and property completion on variables that represent .Net objects) but if there's no fancy extra stuff to be done it lets the builtin one take a crack.

Here's my TabExpansion function. Probably has bugs, so watch out!


function EscapePath([string] $path, [string] $original)
{
    if ($path.Contains(' ') -and !$original.Contains(' '))
    {
        '"'   $path   '"';
    }
    else
    {
        $path;
    }
}

function PathRelativeTo($pathDest, $pathCurrent)
{
    if ($pathDest.PSParentPath.ToString().EndsWith($pathCurrent.Path))
    {
        '.\'   $pathDest.name;
    }
    else
    {
        $pathDest.FullName;
    }
}

#  This is the default function to use for tab expansion. It handles simple
# member expansion on variables, variable name expansion and parameter completion
# on commands. It doesn't understand strings so strings containing ; | ( or { may
# cause expansion to fail.

function TabExpansion($line, $lastWord)
{
    switch -regex ($lastWord)
    {
         # Handle property and method expansion...
         '(^.*)(\$(\w|\.) )\.(\w*)$' {
             $method = [Management.Automation.PSMemberTypes] `
                 'Method,CodeMethod,ScriptMethod,ParameterizedProperty'
             $base = $matches[1]
             $expression = $matches[2]
             Invoke-Expression ('$val='   $expression)
             $pat = $matches[4]   '*'
             Get-Member -inputobject $val $pat | sort membertype,name |
                 where { $_.name -notmatch '^[gs]et_'} |
                 foreach {
                     if ($_.MemberType -band $method)
                     {
                         # Return a method...
                         $base   $expression   '.'   $_.name   '('
                     }
                     else {
                         # Return a property...
                         $base   $expression   '.'   $_.name
                     }
                 }
             break;
          }

         # Handle variable name expansion...
         '(^.*\$)([\w\:]*)$' {
             $prefix = $matches[1]
             $varName = $matches[2]
             foreach ($v in Get-Childitem ('variable:'   $varName   '*'))
             {
                 if ($v.name -eq $varName)
                 {
                     $v.value
                 }
                 else
                 {
                    $prefix   $v.name
                 }
             }
             break;
         }

         # Do completion on parameters...
         '^-([\w0-9]*)' {
             $pat = $matches[1]   '*'

             # extract the command name from the string
             # first split the string into statements and pipeline elements
             # This doesn't handle strings however.
             $cmdlet = [regex]::Split($line, '[|;]')[-1]

             #  Extract the trailing unclosed block e.g. ls | foreach { cp
             if ($cmdlet -match '\{([^\{\}]*)$')
             {
                 $cmdlet = $matches[1]
             }

             # Extract the longest unclosed parenthetical expression...
             if ($cmdlet -match '\(([^()]*)$')
             {
                 $cmdlet = $matches[1]
             }

             # take the first space separated token of the remaining string
             # as the command to look up. Trim any leading or trailing spaces
             # so you don't get leading empty elements.
             $cmdlet = $cmdlet.Trim().Split()[0]

             # now get the info object for it...
             $cmdlet = @(Get-Command -type 'cmdlet,alias' $cmdlet)[0]

             # loop resolving aliases...
             while ($cmdlet.CommandType -eq 'alias') {
                 $cmdlet = @(Get-Command -type 'cmdlet,alias' $cmdlet.Definition)[0]
             }

             # expand the parameter sets and emit the matching elements
             foreach ($n in $cmdlet.ParameterSets | Select-Object -expand parameters)
             {
                 $n = $n.name
                 if ($n -like $pat) { '-'   $n }
             }
             break;
         }

         default {
             $varNameStar = $lastWord   '*';

             foreach ($n in @(Get-Childitem $varNameStar))
             {
                 $name = PathRelativeTo ($n) ($PWD);

                 if ($n.PSIsContainer)
                 {
                     EscapePath ($name   '\') ($lastWord);
                 }
                 else
                 {
                     EscapePath ($name) ($lastWord);
                 }
             }

             if (!$varNameStar.Contains('\'))
             {
                foreach ($n in @(Get-Command $varNameStar))
                {
                    if ($n.CommandType.ToString().Equals('Application'))
                    {
                       foreach ($ext in @((cat Env:PathExt).Split(';')))
                       {
                          if ($n.Path.ToString().ToLower().EndsWith(($ext).ToString().ToLower()))
                          {
                              EscapePath($n.Path) ($lastWord);
                          }
                       }
                    }
                    else
                    {
                        EscapePath($n.Name) ($lastWord);
                    }
                }

                foreach ($n in @(Get-psdrive $varNameStar))
                {
                    EscapePath($n.name   ":") ($lastWord);
                }
             }

             foreach ($n in @(Get-History))
             {
                 if ($n.CommandLine.StartsWith($line) -and $n.CommandLine -ne $line)
                 {
                     $lastWord   $n.CommandLine.Substring($line.Length);
                 }
             }

             # Add the original string to the end of the expansion list.
             $lastWord;

             break;
         }
    }
}

PermalinkCommentscli technical tabexpansion powershell

Sam Kass's Blog

2008 Nov 17, 8:21"The organization is now five years old, and our membership is larger than ever. It is estimated that one out of every four people on Earth is now a devoted member. The secret language has been perfected-- it allows us to talk freely, and sounds just like normal small talk. Also, we have an order of special agents who are particularly dangerous, and are all disguised as normal people. Our goal is the annihilation of all paranoid people."PermalinkCommentshumor club paranoia sam-kass
Older EntriesNewer Entries Creative Commons License Some rights reserved.