techno page 4 - Dave's Blog

Search
My timeline on Mastodon

Deutsches Museum

2008 Dec 17, 2:22

sequelguy posted a photo:

Deutsches Museum

PermalinkCommentsmuseum munich technology science deutschesmuseum germanymunich

Deutsches Museum

2008 Dec 17, 2:21

sequelguy posted a photo:

Deutsches Museum

PermalinkCommentsmuseum munich technology science deutschesmuseum germanymunich

Deutsches Museum

2008 Dec 17, 2:21

sequelguy posted a photo:

Deutsches Museum

PermalinkCommentsmuseum munich technology science deutschesmuseum germanymunich

Deutsches Museum

2008 Dec 17, 2:21

sequelguy posted a photo:

Deutsches Museum

PermalinkCommentsmuseum munich technology science deutschesmuseum germanymunich

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

The Future of Driving, Part I: Robots and Grand Challenges: Page 1

2008 Oct 13, 2:35"The robotics community outdid itself once again at DARPA's 2007 Urban Challenge. This contest featured all the challenges of the original Grand Challenge, along with a few new ones: the vehicles navigated a simulated urban environment and were required to interact with human-driven vehicles while obeying all traffic laws. Six teams successfully completed the course, with Boss, a car developed at Carnegie Mellon, claiming the prize." Sure, sure but when will they fly?PermalinkCommentsarticle robot car science technology transportation ai

Business & Technology | Jobs with real authority: working on Microsoft's spell-checker | Seattle Times Newspaper

2008 Sep 30, 11:05Article on the team that owns the Office spell-checker: 'But, the team asked itself, should "calender" be flagged, or squiggled - have the red squiggly underline that indicates a misspelling? Yes, because letting it go through as correct "more often masks the really common spelling error that people make for calendar."' I didn't even realize they had written calender rather than calendar in the articlePermalinkCommentsmicrosoft office spell-check language

Party Movies Recommended by Netflix

2008 Sep 18, 10:31
Poster for 24 Hour Party PeoplePoster for Human TrafficPoster for The Boys and Girls Guide to Getting Down

Netflix has recommended three party movies over my time with Netflix and if you're OK with movies featuring sex, drugs, rock&roll (or techno) as almost the main character then I can recommend at least The Boys and Girls Guide to Getting Down.

24 Hour Party People is based on the true story of Tony Wilson, journalist, band manager, and club owner (not all at once) around the rise of punk and new wave in England. Like many true-story based movies it starts off strong and very interesting but gets very slow at the end like the writers got bored and just started copying the actual events. Unless you have some interest in the history of music in the 80s in Manchester I don't recommend this movie.

Human Traffic is fun and funny following a group of friends going out for a night of clubbing and partying. I had to get over seeing John Simm as not The Master from Doctor Who but rather as a partying youth. It felt like it was geared towards viewers who were on something like the totally odd techno musical interludes with the characters dancing for no apparent reason. Otherwise the movie was good.

The Boys and Girls Guide to Getting Down is done in the style of an old educational movie on the topic of clubbing and partying. It sounds like a premise that would get old but they do a good job. While demonstrating drinking and driving they have scientists push a mouse around in a toy convertible. Enough said. It was funny and I recommend it.

PermalinkCommentsparty movie netflix

The Large Hadron Collider Will Not Destroy the World Tomorrow, or Ever | Geekdad from Wired.com

2008 Sep 9, 8:36"You'd better read this today, because it's possible the world will end tomorrow. Strictly speaking, the probability of doomsday isn't any higher than it is on any normal Wednesday, but there's been a fair bit of kerfuffle and hullabaloo over the CERN Large Hadron Collider (LHC) and whether it will create a black hole that will destroy the entire planet."PermalinkCommentslhc cern humor wired technology science blog physics apocalypse

Microsoft launches 3D wonder Photosynth for consumers | Webware : Cool Web apps for everyone - CNET

2008 Aug 22, 5:35Photosynth now available and easy to use: "Photosynth, a technology demo from Microsoft Live Labs, has graduated from its "ooh, that's pretty" status to being a viable Web service for consumers. The technology, which takes a grouping of photographs and stitches them into a faux 3D environment, can now be implemented with photos you've taken on your digital camera or mobile phone, and converted right on your computer. Previously, the process of stitching these photos together took weeks of processing on specially configured server arrays. With its latest version, Microsoft has managed to shrink that into around the time it takes to upload your photos."PermalinkCommentsvia:felix42 photosynth photos photography 3d microsoft free tool

WERBLOG - Blog Archive - Response from Michael Powell on McCain's tech plan

2008 Aug 14, 5:04"Former FCC Chairman Michael Powell sent me this response to my criticism of John McCain's technology policies." Michael Powell helped draft McCains technology policy and is responding to Kevin Werbach who helped draft Obama's technology policy.PermalinkCommentsmccain technology policy politics michael-powell kevin-werbach

Blown to Bits - Blog Archive - John McCain's Technology Policy

2008 Aug 14, 5:01Thoughts on McCain's technology policy. '...Example: (a) "John McCain will focus on policies that leave consumers free to access the content they choose"; (b) "He championed laws that ... protected kids from harmful Internet content"; ... BUT the "policy" fails to note that the laws referred to in (b) have been overturned by federal courts because they unconstitutionally make (a) impossible.'PermalinkCommentspolitics mccain internet policy

tettix (formerly cicada)

2008 Jul 10, 2:31Creative-Commons licensed mostly electronic music. Check out "earth's assault on the central ai" from technology crisis and "chrono trigger - magus" from choralseptic.PermalinkCommentscreativecommons cc free music electronica

New Scientist Technology Blog: Dual-display e-book reader lets you flip pages naturally

2008 Jun 25, 2:50A few interesting interface ideas for a dual-display reading device.PermalinkCommentsvideo book interface ui

Street Use: Phone Mining

2008 Jun 19, 4:25Its the 90s version of the information economy: "He has noticed a new behaivor among his native hosts. If they are young, they want to borrow his phone and mine if for goodies they can copy."PermalinkCommentsmobile phone data technology blog kevin-kelly

Jane Kim: From Inventing To Implementing IE Features | WM_IN | Channel 9

2008 Jun 11, 12:45Channel9's Women in Technology interviews Jane Kim, the PM for one of my features.PermalinkCommentsjane-kim microsoft video interview

Richard Feynman and the Connection Machine

2008 May 30, 10:52'"Richard Feynman reporting for duty. OK, boss, what's my assignment?" The assembled group of not-quite-graduated MIT students was astounded.... So we sent him out to buy some office supplies.'PermalinkCommentshistory richard-feynman programming computer article essay technology physics science via:swannman

Been-Seen.com:: Cool Stuff - Guerilla Drive-In

2008 May 19, 3:47"Ever get nostalgic for the Drive-In movies of yore? Now with the new global guerilla drive-in movement, MobMov, the drive-in is making a comeback--thanks to the wonders of modern technology."PermalinkCommentsdrive-in flash-mob movie car projector

Lifeboat Foundation Bios: Joshua W. Klein, M.S.

2008 May 16, 2:33This guy works on interesting projects. "Joshua W. Klein, M.S. is a Mobile, Personal, and Future Technology Specialist who is currently Senior Technology Principal at Frog Design."PermalinkCommentsjoshua-klien bio

Joshua Klein, Mobile, Personal, and Future Technology Specialist

2008 May 16, 2:32"Roo'd by Joshua Klein". Cyberpunk, fiction, creative-commons.PermalinkCommentscyberpunk fiction scifi free book writing cc joshua-klein
Older EntriesNewer Entries Creative Commons License Some rights reserved.