Mount SkyDrive Natively in Windows

Microsoft SkyDrive is a free 25GB online storage locker available to anyone with a Live ID. Microsoft just gave it a fresh new web interface but has never provided a way to access it natively from the Windows Shell.

On the bright side, SkyDrive is implemented on WebDav over SSL which is an open standard and one that is incorporated into Windows Vista and later. (You could map a drive to a WebDAV location in XP too but not over HTTPS.)

The trick is that the SkyDrive DAV URLs are obscure and not easily discoverable but I found a cool little command-line utility on codeplex which spits out the URLs to each of your root-level DAV shares in SkyDrive.

utility

 

Use these URLs with net use or “map a network drive” in Windows Explorer and you have access to skydrive contents via the Windows Shell or a command-line.

webdav-skydrive

It seems like this should also work in OS X but the Finder keeps giving me an error bonk that it can’t contact the server. I’m not sure what the problem is there.

Advertisements

Cool PowerShell Script Replicates Telnet

Lee Holmes has a cool script to reproduce telnet-like functionality via the TcpClient object in PowerShell.

## Connect-Computer.ps1 
## Interact with a service on a remote TCP port 
param( 
    [string] $remoteHost = "localhost", 
    [int] $port = 23
     ) 

try
{
    ## Open the socket, and connect to the computer on the specified port 
    write-host "Connecting to $remoteHost on port $port" 
    $socket = new-object System.Net.Sockets.TcpClient($remoteHost, $port) 
    if($socket -eq $null) { return; } 

    $stream = $socket.GetStream() 
    $writer = new-object System.IO.StreamWriter($stream) 

    $buffer = new-object System.Byte[] 1024 
    $encoding = new-object System.Text.AsciiEncoding 

    while($true) 
    { 
       ## Allow data to buffer for a bit 
       start-sleep -m 500 

       ## Read all the data available from the stream, writing it to the 
       ## screen when done. 
       while($stream.DataAvailable)  
       {  
          $read = $stream.Read($buffer, 0, 1024)    
          write-host -n ($encoding.GetString($buffer, 0, $read))  
       } 

       ## Read the user's command, quitting if they hit ^D 
       $command = read-host 
      
       ## Write their command to the remote host      
       $writer.WriteLine($command) 
       $writer.Flush() 
    } 
}
finally
{
    ## Close the streams 
    $writer.Close() 
    $stream.Close()
}

This solves the problem of telnet.exe crashing conhost.exe when using Console2.

Update

I tweaked Lee’s code to use try/finally which obviates the need for a special escape sequence to clean up the TCP resources.

Annoyance: Android Market Regional App Availability

The Android Market Place has regional app availability which means that if you live or travel outside of North America and the EU, you don’t have access to some of the best apps like Google Voice, Google Listen, GMail App updates, Amazon Kindle App and Skype to name a few.

It turns out that the regional restriction is by carrier but Google isn’t looking at where your data is coming from. They are looking at the carrier identifier on the SIM. The restrictions aren’t technically regional, they are by carrier.

If I put my AT&T SIM in my phone in Accra, I see the USA-only apps and can download them over WiFi. Unfortunately, even once they are installed apps that I have to install using my AT&T SIM don’t seem receive updates when I am using my Zain SIM. It seems that I have to periodically switch SIMs and check for updates.

It’s possible to spoof the carrier id and fool the Android Market  if you root your phone but I really don’t want to spend that kind of time and energy beating on my phone. I’d like it to just work, please.

The user experience for this is really bad. It feels like a bug with the phone because Android Market just says that the software was not found when you follow a link or QR code for a restricted app. Couldn’t it at least say something like “We’re sorry. The publisher of this software has not made it available for your carrier. Click here to request it to be made available.” This is the Amazon approach when a book is not available for Kindle. At least that is mildly cathartic that you get to complain to someone.

Is this carrier whitelisting of apps really necessary for the Android Market? Really?

%d bloggers like this: