res page 31 - Dave's Blog

Search
My timeline on Mastodon

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

What's New with the Glue Society - Hi-Fructose Magazine

2008 Nov 21, 3:52I like the melted ice cream truck. "Our Australian friends 'The Glue Society', a group of artists, designers and projecteers, have created these amazing series of sculptures and films where they've created chair rainbows on the frozen tundra, a curb-side wrap party, gratuitous nudie pictures for airplanes passing by, a house of crates, and a blow-up doll's vacation paradise."PermalinkCommentsstreetart art prank culture nature photo sculpture ice-cream-truck via:boingboing

Obama Looks to Axe Daylight Time -- NYT Explains Why - Green Daily

2008 Nov 21, 3:47"In order to conserve energy, President-elect Barak Obama wants to eliminate daylight saving time."PermalinkCommentsenergy politics obama dst time date datetime

Evil Mad Scientist Laboratories - Binary Birthday

2008 Nov 19, 4:28"A binary birthday candle. It consists of a single candle with seven wicks, where the wicks that are lit represent the birthday individual's age in binary. This single candle design works flawlessly to represent any age from 1 to 127, never requiring anyone below the age of 127 to blow out more than a mere six candles at a time."PermalinkCommentsvia:swannman birthday geek math humor howto cake birthday-cake candle binary

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

For a Washington Job, Be Prepared to Tell All - NYTimes.com

2008 Nov 18, 1:10"...Just in case the previous 62 questions do not ferret out any potential controversy, the 63rd is all-encompassing: 'Please provide any other information, including information about other members of your family, that could suggest a conflict of interest or be a possible source of embarrassment to you, your family, or the president-elect.' ... For those who clear all the hurdles, the reward could be the job they wanted. But first there will be more forms, for security and ethics clearances from the Federal Bureau of Investigation and the Office of Government Ethics."PermalinkCommentsgovernment obama fbi privacy

del.icio.us Whuffie Bookmarklet: Noah Sussman

2008 Nov 16, 10:24Noah Sussman describes the 'via:' delicious tag with references including a bookmarklet to ensure the via: tags are added automatically. The bookmarklet would only be useful to me if it worked on the 'Save a new bookmark' page, but the history and references are interesting. Reminds me of my past idea for a project that shows who influences who in your Delicious network based on duplicate links among friends with the influencer who saves it first.PermalinkCommentsvia:ethan_t_hein delicious meta bookmarklet script whuffie noah-sussman

The urban art of Joshua Callaghan: the man who can turn street objects invisible - Telegraph

2008 Nov 16, 10:10"Joshua Callaghan disguises utility boxes by pasting pictures onto them of the scenery behind, thereby creating the illusion of an uninterrupted view."PermalinkCommentsart streetart graffiti urban via:swannman

Code: Flickr Developer Blog

2008 Nov 16, 9:48Flickr's Developer Blog has some interesting posts including various folks personal projects that use Flickr.PermalinkCommentsdevelopment flickr monthly blog web

9NEWS.com | Colorado's Online News Leader | Three small canisters ...

2008 Nov 11, 3:57Grandpa's old films contain some surprises: "There was another reason why the Library of Congress wanted the original films. They are a treasure trove of historic video of the aftermath of D-Day."PermalinkCommentsvideo history library-of-congress

XSLT Meddler Script

2008 Nov 9, 11:25

I've made an XSLT Meddler script in my continued XSLT adventures. Meddler is a simple and easy web server that runs whatever JScript.NET code you give it. I wrote a script that takes an indicated XSLT on the server, downloads an indicated XML from the Internet and returns the result of running that XML through the XSLT. This is useful when you want to work with something like the Zune software or IE7's feed platform which only reads feeds over the HTTP protocol. I'll give more interesting and specific examples of how this could be useful in the future.

PermalinkCommentsmeddler technical xml script xslt

I Voted

2008 Nov 9, 11:18

I Voted 2008 - Farewell to Polls by RedRaspusThis past Tuesday I voted in my first presidential election. Of course I was eligible twice before so don't tell my social studies teacher. I read about folks who stood in line for twelve hours waiting to vote but I personally had no issues. I found the voting location around 10am and it seemed appropriately busy: There were people voting but no lines. I came in and looked confused until an elderly lady gave me a paper to bubble in. The voting booth was more like a fold out voting table at a very awkward height and in the end my back ached. It feels better to vote in person and have a back ache after. Its more like I've accomplished something.

PermalinkCommentspersonal voting

"Single?" Lawn Signs Conquer the American Landscape - The Metric System

2008 Nov 6, 6:27Examination of the who and why behind those 'Single?' lawn signs: 'At this point, I came to the realization that every question I answered seemed to introduce two more. In this case, they were "did someone hire these firms or are they acting on their own?" and, more confusingly, "how did a web design firm in Panama or India get a lawn sign physically planted in the front lawn of my high school in South Jersey?"'PermalinkCommentssign blog marketing dns advertising business web internet research

2008 Election Maps

2008 Nov 6, 6:24Comparison of various website's US presidential election maps: "Most media outlets covering the 2008 US Presidential Election used the familar red/blue map to track the progress of the race as results from the polls rolled in Tueday evening. Here are several of those maps, in some ways as similar to each other as they are varied."PermalinkCommentsmap visualization geography president election vote voting politics

The igraph library for complex network research

2008 Nov 5, 3:55A graphing library which includes variaous graph visualization algorithms. GNU licensed. "igraph is a free software package for creating and manipulating undirected and directed graphs. It includes implementations for classic graph theory problems like minimum spanning trees and network flow, and also implements algorithms for some recent network analysis methods, like community structure search."PermalinkCommentsreference free development programming visualization graph math library opensource c++ igraph graphviz via:mattb

Voting Machines Elect One Of Their Own As President | The Onion - America's Finest News Source

2008 Nov 5, 12:13Sure, we're laughing now but what if...PermalinkCommentsvoting politics humor onion video president voting-machine

Candy Vote

2008 Nov 4, 1:33Kid dresses up as voting booth for Halloween collecting candy as votes in either a McCain or Obama bag and tallies the results on CandyVote.com: "Welcome to CandyVote.com - The results are in!"PermalinkCommentshumor video politics election obama mccain voting halloween costume

Google 2008 Elections Map

2008 Nov 4, 8:33"Watch as real-time election results come in on Tuesday, November 4th. Select a state to see county-by-county results and view House and Senate races by using the dropdown toolbar."PermalinkCommentsgoogle map politics visualization elections mashup president

A Picture is Worth a Thousand Locksmiths

2008 Nov 3, 2:01Software that can produce the design for a key from a photo of a key. "Scenes from one of the proof-of-concept telephoto experiments using a new software program from UC San Diego that can perform key duplication without having the key. Instead, the computer scientists only need a photograph of the key."PermalinkCommentssecurity photo software research paranoia key
Older EntriesNewer Entries Creative Commons License Some rights reserved.