Rss 2.0 via FEED
Ken Hughes...
Productivity, Technology and Automating Everything...
 
    
 

I just found this Microsoft KB article which is a very comprehensive list of what services use what ports. Anyone working with enterprise software solutions or Microsoft back end infrastructure should find it useful.

GEO 51.4043197631836:-1.28760504722595 
Posted: Thursday, July 24, 2008 11:23:29 AM (GMT Daylight Time, UTC+01:00)  #    Comments [0]
TAGS: Software | Technical

imageToo much effort reading my ramblings ? Want to listen instead ? Now you can !!

Courtesy of the excellent odiogo, the excellent text to speech service. This is a free service that bloggers can use, it takes your RSS feed, splits it out to each separate post and then creates a MP3 for the post.

The text-to-speech quality is really good, only about 1 in 50 words is corrupt/unintelligible - easily high enough quality to get a good rendition of the post. Obviously it depends on the content of the post, I have not yet listened to a post with lots of sample code or the like, but I expect it would be pretty hard going.

Get the audio for this blog here. You can even subscribe in iTunes. I will also update the site to include the links in the sidebar.

GEO 51.4043197631836:-1.28760504722595

Posted: Monday, July 21, 2008 4:22:56 PM (GMT Daylight Time, UTC+01:00)  #    Comments [0]
TAGS: Dasblog | RSS | Technical | Tools | Web

One of the things I find really helpful in terms of motivation (for running) is having easy visibility of weekly, monthly and total mileages, times, paces etc.

nikeplus_sportband So, a couple of weeks ago I bought myself a Nike+ Sportband. This promised it all - a senor that fits in your shoe and automatically records your distance, time and speed and wirelessly transmits it to a wristband. The wristband also has a detachable USB connector / screen that you simply plug into your PC and the data is auto uploaded to the Nike+ web site.

For too long I have been using an Excel spreadsheet and manually copying it between PCs, in the past couple of months I had started getting to grips with WCF by putting together a running log application that I had planned to host on my web site (just for me) - no need for that any longer, Nike+ was going to solve all my problems and more...

How wrong I was. I cannot tell you (although that is exactly what this post is trying to do) how technically inept this product is, not just the wristband but also the web site, the whole experience in fact.

coding-horror-official-logo-small If you are familiar with the class book 'Code Complete' you will know about a 'Coding Horror' (things you really should not do when writing software), Jeff Atwood even used the term for the name of his great blog - well this isn't all software, so lets call them 'Design Horrors'.

The first 'Design Horror' comes from trying to invent a new and snazzy way to secure a piece of technology to your wrist. Watch straps have been around for hundreds of years, everyone knows how to use it right ?, the only advancement in wrist fastening / securing technology ever was to use a Velcro patch to secure the two separate lengths of strap together (typically in sports pieces, for added speed). Did this stop the Nike engineers, no way - they came up with a new paradigm in wrist strap technology. One length of strap has 10 small holes, spaced by about 2 or 3 mm, the other length has two stud like protrusions that (using one hand) you must line up with the required two holes and push into place with a force just less than that required to push your thumb through the flesh of your wrist.

'Design Horror' 2 (DH2) is similar to that of DH1, remember the detachable USB connector / screen thing I mentioned, well to secure it the USB connector pushing into a slot in the wristband and then it is secured by one of these studs pressed into a hole, however the button on the face of the screen is exactly above that stud and pushing the USB thingy down to make sure it is secured typically results in the button being forcibly pressed for a few seconds (resulting in the device trying to locate the shoe sensor), also I'm not comfortable with the amount of pressure placed upon the button this regularly (thumb through the wrist pressure)....

nikeplus_logo 'Design Horror' 3 (DH3) is the 'clock' facility of the wristband. I may be being unfair here, this could be a 'by design' issue that was never part of the requirements (which would make it a Product Requirements Horror instead). The wristband has the ability to display the current time, as well as the mileages, pace etc. Naturally you would think that Nike position it as a watch replacement for runners, however I cannot believe that is the case. how could they imagine it would replace my watch which not only has alarms, date functions, countdown timers etc with something that only shows the time, nothing else, and does so without any form of backlighting, so that trying to read it outside the core hours of 10am to 4pm result in a painful headache and a trip to the optician for thick lenses. Obviously the decision to save what couldn't be more than 10p, for a tiny surface mount device giving date/time features, in the cost of materials seemed important to them.

'Design Horror' 4 (DH4) is the orientation of the display. This is in the most difficult to read position available (regardless of how the thing is worn). The display does not read along the length/drop of your arm like most watches - no, it reads perpendicular to the length/drop of your arm. So, now, instead of just squinting at the display with no backlighting you are also skewing your arm / wrist into some crazy angle like a contortionist.

nikeplus_utility 'Design Horror' 5 (DH5) brings us to the client side software that you need on your PC to interface with the USB thingy and auto upload your run data. When you plug the USB thingy in it auto starts the 'Nike+ Utility', however it is started behind all other application windows. Further, on first using it it displays a login facility pre-populated with the username of 'Guest'. Clicking in the username textbox to try and change it results in nothing ?? Nowhere does it mention it, but I have since determined that you log into the site via a browser and then the Username is picked up for the 'Nike+ Utility' from a cookie or something...
What part of "we'll show a username that the user knows is not theirs and give them no visible means of changing it" seemed sensible at the design stage ??

'Design Horror' 6 (DH6) falls into the areas of calibration and uploading runs. You can see from the screen shot that there is a calibration tab (the sensor is basically a pedometer and it needs to be calibrated to your stride length for accuracy) - the problem is that as soon as the USB thingy is plugged in the Nike+ utility starts and uploads any outstanding runs, before you calibrate. So my very first experience with this, when I'm still in the 'happy' zone about my purchase is a run being uploaded that is the wrong distance. All the shiny graphics depict that I am considerably slower and run shorter distances than I actually do - what a deflation. of course, my first though is that I'll just edit the run and update it with the correct distance  - leading me nicely to DH7.

'Design Horror' 7 (DH7) is the fact that I cannot edit any of the runs I upload, neither can I manually upload/input runs. With all the (fun) challenges available on the site, design to further motivate people, not providing this feature is a big letdown. Just in terms of personal motivation, Nike+ shows my Total for this year as 18 odd miles, but I didn't buy it till July, being able to correct that with accurate values should be possible, unfortunately it's not. Likewise some kind of import facility for all my old runs, should be - but isn't...

'Design Horror' 8 (DH8) is the communication between the wristband and the Nike+ web site - it seems to be one way, certainly none of the totals from the web site are reflected in the wristband figures - I 'reset' my wristband the other day to recalibrate (the distances suggested by the unit were 1.05 miles in 8 out, even after calibration) and now it tells me my total is 1.93 miles (even though I calibrated it to 2 miles exactly).nikeplus_run

The final 'Design Horror' (DH9) is the accuracy of the data. The run depicted in the image was an 8 miler I did, steady pace, no walking, flat terrain and a fast finish. the data does not reflect that, it looks like I actually stopped around 2.5 miles and slowed at the end. Nice graphs are great, but if I don't trust your data then what's the point.

The whole web site is flash/shockwave based and pretty slow, it is also difficult to navigate and non intuitive.

On the flip side, it is a great idea, some of the web site features are really neat - the ability to challenge other runners, join 'virtual teams' and have team challenges - it's a pretty good social networking for runners site all in all. It only costs £40 for the kit (sensor and wristband), so it doesn't break the bank.
BUT - It could be incredible if the hardware and software are sorted out !!

My message to Nike - Just Do It

GEO 51.4043197631836:-1.28760504722595 
Posted: Sunday, July 13, 2008 10:57:15 PM (GMT Daylight Time, UTC+01:00)  #    Comments [2]
TAGS: Hardware | Running | Technical | Web

A while back I restructured my website so that this blog no longer started at the root, instead starting from /blog. This was so that I could introduce some other web apps and have a subfolder for projects etc.

One of the pains of this restructure was modifying all the links - I thought I had caught all this with a Redirector HttpModule, but recently realised that for some reason I had not caught images embedded in the posts themselves.
Also it was becoming a pain having to remember to include the HttpModule in my web.config everytime I upgraded my blog (dasBlog)

I wanted it fixed properly this time, so grabbed a copy of all the XML files in my 'content' folder, copied them to a local folder and cracked open PowerShell...

I wanted every instance of www.mywebsite.com changed to www.mywebsite.com/blog - not difficult, but this would also change valid urls such as www.mywebsite.com/blog/page.aspx to www.mywebsite.com/blog/blog/page.aspx (note the /blog/blog in the url)

So I got everything I needed done with two 'one liners' in PowerShell...

dir | %{ $a = get-content $_ ; $a = $a -replace ("www.mywebsite.com", "www.mywebsite.com/blog") ; set-content $_ $a }

...and...

dir | %{ $a = get-content $_ ; $a = $a -replace ("www.mywebsite.com/blog/blog", "www.mywebsite.com/blog") ; set-content $_ $a }

All fixed...

 

GEO 51.4043197631836:-1.28760504722595 
Posted: Sunday, July 06, 2008 3:35:38 PM (GMT Daylight Time, UTC+01:00)  #    Comments [0]
TAGS: Dasblog | PowerShell | Scripting | Web

I was recording some audio earlier today and the quality from my cheap, generic headset/microphone was woeful.dropio_logo-1, so I searched around for a service that I could make a telephone call into and it would record the spoken audio and give me a WAV or MP3file.

I came across http://drop.io - this is a neat little Web 2.0 service that allows sharing of files, media etc, sending stuff via email, receiving stuff via email, fax, voice etc.

One of the features was a US telephone voicemail service that recorded my spoken content and stored it in my private 'drop' as an MP3 - exactly what I was looking for.

Whilst I could have, undoubtedly, found the specific service I was looking for from a UK provider the cool features that these guys provide made me want to use them :-

  • Conference Calling number (not recorded). drop.io
  • Voicemail Number (audio is recorded and left in your 'drop' as a MP3).
  • Add content via a custom @drop.io email address.
  • Add content via fax.
  • Email alerts to any updates to your drop.
  • RSS feed for action on your drop.
  • Security model where I can invite people to view my drop, or add content etc.
  • Add notes / links to your drop.
  • Zip up the whole drop and provide a link.
  • Really nice, clean look and feel.
  • FREE !!

You can also upgrade to pro version (paid for) that provide more than the 1GB of storage or keep drops open for longer than the defaults or even shorten the url of your drop (in the free version this is http://drop.io/user_chosen_drop_name min of 7 characters) - to two letters http://drop.io.kj for example...

GEO 51.4043197631836:-1.28760504722595
Posted: Friday, June 27, 2008 4:30:24 PM (GMT Daylight Time, UTC+01:00)  #    Comments [1]
TAGS: Tools | Web

OutlookIMAPFoldersNow that I have moved us over to Google Apps For Your Domain (GAFYD) completely, I have been fighting with Outlook to get a decent user / email experience.

It just doesn't seem to flow well - I got the SMTP/IMAP send/receive stuff all set up and working correctly, but it's clunky.

I have all the folders appearing in my Outlook client but the UX just does not flow - in order to LABEL a email (in google terms) I have to move it to a folder named as the LABEL I want to apply (if I want to label it 'Outdoor' I simply move it to the 'Outdoor' folder). Equally, anything I have labelled will be visible in that folder (if I labelled it 'Outdoor' then it'll be in my 'Outdoor' folder).

There are plenty of sites with step by step guides for configuring Outlook with GoogleMail, so I wont go into that but I will share this tip:

To download full emails (not just headers) you need to do the following :-

  • Tools -> Send/Receive -> Send/Receive Settings -> Define Send/Receive Groups...
  • Select the group your IMAP account is in (typically 'All Accounts')
  • Click 'Edit'
  • Select the account if there is more than one
  • Select the option for 'Download complete items' (this is different for OL2003 and OL2007, below is OL2003)

OutlookIMAPDownload

 

However the biggest pain with Outlook is that it does not by default open in any account that does not have the usual default folders (Contacts, Calendar, Inbox etc).

As a Google IMAP account does not have these it automatically adds a 'Personal Folders' PST file and opens at the Inbox folder folder of that instead.

I am pretty much settled on letting OL grab a copy of my mail (just in case I need to edit offline), but am finding myself using Google's web mail interface most of the time.

GEO 51.4043197631836:-1.28760504722595
Posted: Wednesday, June 25, 2008 1:24:06 PM (GMT Daylight Time, UTC+01:00)  #    Comments [0]
TAGS: Outlook | Web

Just changed all my email / calendar stuff to Google Apps for Your Domain (GAYD). It was a breeze to do, took around an hour all in and now all email access is IMAP and Web.

The reason I chose this setup was so that all email and calendar data is stored by google, which is much less likely to loose data that I am (HDD crash, theft, fire, flood etc).

As part of the reconfiguration I changed my usual mail IMAP settings on my WM6 device (Pocket Outlook). After changing all the settings I was surprised to find that it simply didn't work.
After much trial and error I found that WM6 didn't seem to want to swap from non SSL connections for SSL connections.

The 'fix' was simply to delete the original account and then create a brand new one. All is fine and dandy now...

GEO 51.4043197631836:-1.28760504722595
Posted: Monday, May 26, 2008 7:41:09 PM (GMT Daylight Time, UTC+01:00)  #    Comments [0]
TAGS: Outlook | Windows Mobile

twitterI have been playing with Twitter recently and thought it might be neat to see if I could post a 'tweet' from PowerShell. There is a great Google Group that discusses their API. The APIs are all REST based and really easy to use - the only complexity is that you need HTTP Basic Authentication to do anything 'real'.

One of the more simple API calls is to get the public timeline. No authentication is required for this so you can simply the url into your browser and get back the data (xml format, but json and other formats are available also). Try this :Windows_PowerShell_icon

http://twitter.com/statuses/public_timeline.xml

Now, for doing an update we need the following API:

update

Updates the authenticating user's status.  Requires the status parameter specified below.  Request must be a POST.

URL: http://twitter.com/statuses/update.format

Formats: xml, json.  Returns the posted status in requested format when successful.

Parameters:

  • status.  Required.  The text of your status update.  Be sure to URL encode as necessary.  Must not be more than 160 characters and should not be more than 140 characters to ensure optimal display.

The fact it must be a POST means we have to use a HttpWebRequest (as opposed to the easier WebClient). Anyway, here is the PowerShell function :

function Send-Tweet([string]$text, [string]$username, [string]$password)

{

     $updateurl = "http://twitter.com/statuses/update.xml"

     $result = $null

     $text = [System.Web.HttpUtility]::UrlEncode($text)

 

     [System.Net.HttpWebRequest] $request = [System.Net.HttpWebRequest] [System.Net.WebRequest]::Create($updateurl)

     $request.Credentials = new-object System.Net.NetworkCredential($username, $password)

     $request.Method = "POST"

     $request.ContentType = "application/x-www-form-urlencoded"

     $param = "status=" + $text

     $sourceParam = "&source=PowerShell"

     $request.ContentLength = $param.Length + $sourceParam.Length

 

     [System.IO.StreamWriter] $stOut = new-object System.IO.StreamWriter($request.GetRequestStream(), [System.Text.Encoding]::ASCII)

     $stOut.Write($param)

     $stOut.Write($sourceParam)

     $stOut.Close()

 

     [System.Net.HttpWebResponse] $response = [System.Net.HttpWebResponse] $request.GetResponse()

     if ($response.StatusCode -ne 200)

     {

           $result = "Error : " + $response.StatusCode + " : " + $response.StatusDescription

     }

     else

     {

           $sr = New-Object System.IO.StreamReader($response.GetResponseStream())

           [xml]$xml = [xml]$sr.ReadToEnd()

           $id = $xml.status.id

           $tweet = $xml.status.text

           if ($tweet.length -gt 50) { $tweet = $tweet.Substring(0,50) + "...(truncacted)" }

           $result = "Tweet " + $id + " added : " + $tweet

     }

    

     return $result

}

And to use it :

send-tweet "I'm sending updates from PowerShell, cool or what ??" "<your_username>" "<your_password>"

 
GEO 51.4043197631836:-1.28760504722595
Posted: Tuesday, April 01, 2008 10:23:11 AM (GMT Daylight Time, UTC+01:00)  #    Comments [0]
TAGS: PowerShell | Twitter

I was listening to one of Scott Hanselman's podcasts this morning and Scott made a comment about people thinking that agile methodologies were and excuse for sloppy project management (NOTE: Scott wasn't of this opinion, he just stated that some other people thought this).

I am fully bought into SCRUM, and whilst we don't implement if fully at work (we have our own handcrafted way of doing it that really works well for us) I think it brings great benefits.
One of the real stumbling blocks with people adopting SCRUM / Agile is getting over the mind set that they can determine the delivery dates and that they can force the development team into delivering everything they want by that date. I truly do not believe that it is possible to fix both scope (requirements) and timescale (delivery dates) in a software project, even having done lots of design up front. I have written before on the perils of this approach...

Giving up all control of dates is something that takes quite a psychological leap of getting used to, but when you are there, you see all the benefits. Let me give you an example...

abbeyroad Think of The Beatles.
Their 'products' were (obviously) their songs, they were all passionate about what they were doing (providing great music to the masses) and they did it really well - everyone loved their product.
When Lennon and McCartney (and Harrison) sat down to write a song, if they'd had a limited time then the quality would have suffered. They were not limited in time and they produced great things.

That is one of the things you have to accept in agile - crafting great software products is an skill and an art, for the developers sometimes their creative juices flow in abundance, sometimes they don't.
To meet strict timescales, something has to give, and that something is scope (or quality, but you don't really want that do you ??...)

GEO 51.4043197631836:-1.28760504722595
Posted: Thursday, March 27, 2008 12:58:15 PM (GMT Standard Time, UTC+00:00)  #    Comments [2]
TAGS: Development | SCRUM

It has been a real busy month at work and I've just not had a minute.

screenshot_startMenu_SearchOne of the big things I see on the (technical) horizon is 'federated search' for the Enterprise. We already have this for the desktop / individual in the form of Google Desktop Search, Vista 'Instant Search' and many others.

Google have already brought some of this to the enterprise with their Enterprise Edition (but I've heard horror stories about getting this installed and working correctly)...

Microsoft are entering this space with their 'Search Server' (also available in a free Express version).gds

There are two key concepts here :-

                • Federated Search Providers 
                • Search Connectors

At work we have added support for a Federated Search Provider to Archive One and will be adding Search Connectors for Search Server (and others) shortly, and that has resulted in me having to explain the difference between them and write a bunch of marketing stuff around it.

A Federated Search Provider is a facility for the search technology to pass your application / solution a search query that is then executed by your application / solution and the results sent back to the search technology.

Example:

  • A user goes to the Search Server interface and enters the search query enron shredding (why does Enron always get cited in our industry ??).
  • Search Server looks through the index of data it knows about (files, Exchange data, SharePoint data etc) and gets a set of results.
  • Search Server also passes the query (enron shredding) to the Archive One Federated Search Connector.
  • Archive One searches through the archived email and gets a set of results.
  • The Archive One results are passed back to Search Server.
  • Search Server combines both sets of results and displays them to the user.

The key behind this is that the Search Server knows nothing about the Archive One and the search is actually carried out by Archive One on behalf of Search Server.
The benefit is that there is no dependance on Search Server having to index the data itself so as soon as Archive One has the data it is searchable.

A Search Connector is a facility for Search Server to 'crawl' the Archive One data and index the data itself. All search results are returned by Search Server directly.

Example:

  • Over time Search Server crawls the Archive One data and creates it's own index of that data.
  • A user goes to the Search Server interface and enters the search query enron shredding.
  • Search Server looks through the index of data it knows about (files, Exchange data, SharePoint data and Archive One data) and gets a set of results.
  • Search Server displays them to the user.

The key behind this method is that Search Server also indexes all the Archive One data and it knows all about it without having to farm out the query to another location.

subhero_searchserver
Other advantages here are that supporting a Federated Search Provider (and the OpenSearch V1.1 protocol) allows you to add the site as a 'Custom Search Provider' in IE7, supporting Search Connectors for one vendor / technology allows support of the many other vendors / technologies with just a little extra tweaking.

I have always said that customers "don't want islands of data, they want connected, synergistic solutions" and these technologies are going to make that happen, gone are the days of hunting around file shares, local disks, Outlook etc for that elusive PowerPoint presentation. I can search across the whole enterprise from one simple location. Imagine searching for all communication with customer X and getting results from everyone email, archived email, MSCRM, SharePoint, saved IM conversations, VoIP audio streams, scanned faxes, Exchange Unified Messaging voicemails. Never lose anything.

GEO 51.4043197631836:-1.28760504722595
Posted: Sunday, March 23, 2008 11:21:13 AM (GMT Standard Time, UTC+00:00)  #    Comments [0]
TAGS:

So a while back (31st Dec 2007), my beta license for Windows Home Server (WHS) expired and I hacked together an alternative quicklinks_whs_logosolution.

I have been updating my (almost) free/opensource alternative (it still needs a Windows OS) over the past couple of days and now have a pretty viable solution.

I have a machine (the Home Server) running Windows (any version would do) with two large additional drives in it (Data1 and Data2).
Data1 is the primary data drive and on there I created a number of folders / shares:HomeServerFolders

  • Photos
  • Documents
  • Music
  • Videos
  • Software
  • Backups
  • Downloads

I re-homed each of my 'special' folders in Vista (Docs, Music, Video, Photos) to these shares, so all data is stored on the Home Server. You could create a separate shared folder for each user with the correct permissions, but I share all the docs/photos etc between all machines so no need for me.

Next I wanted the WHS feature of duplicating the stored data across more than drive, so I grabbed a copy of the Robocopy and created a batch file with the following commands :

  • robocopy d:\documents e:\documents /MIR /SEC /LOG:c:\robocopy.txt /NDL /NFL
  • robocopy d:\music e:\music /MIR /SEC /LOG+:c:\robocopy.txt /NDL /NFL
  • robocopy d:\videos e:\videos /MIR /SEC /LOG+:c:\robocopy.txt /NDL /NFL
  • robocopy d:\software e:\software /MIR /SEC /LOG+:c:\robocopy.txt /NDL /NFL
  • robocopy d:\photos e:\photos /MIR /SEC /LOG+:c:\robocopy.txt /NDL /NFL
  • robocopy d:\backups e:\backups /MIR /SEC /LOG+:c:\robocopy.txt /NDL /NFL
  • robocopy d:\downloads e:\downloads /MIR /SEC /LOG+:c:\robocopy.txt /NDL /NFL

This replicates all the folders across to the other data drive (Data2) thereby mitigating against a single drive failure. All the replication results / logs are stored in a file (c:\robocopy.txt) and I wanted that emailed to me so I grabbed a copy of Blat and added the following command line to the batch file :blat

  • c:\tools\blat262\full\blat.exe c:\robocopy.txt -to YOUREMAILADDRESS -subject "RoboCopy Results" -server mail.YOURMAILSERVER.com-f "RoboCopy on Home Server" -u YOURUSERNAME -pw YOURPASSWORD

I named the batch file 'replicate.bat', put it in the c:\tools folder and then scheduled the batch file to run every night at 2am with this command line :

  • SCHTASKS /Create /SC DAILY /TN Replicate /TR c:\tools\replicate.bat /ST 02:00

Excellent - now the data is replicated across two drives, and I get an email every day with the results of the replication process (in case anything goes wrong).

HTTPFSNext I wanted to ensure I have remote access to my files from anywhere. I grabbed a copy of the excellent HTTP File System and put that on the Home Server.

HFSScreenshotI set the root to the Data1 drive, created a user account for myself and gave it 'upload' ability and that gives me fully web based access to upload and/or download any file.

The next piece in the puzzle is to get full backups of the machines. For this I had planned to use VMware Server and the excellent VMware Converter tool, however it seems the command line options for the tool they provide p2vtool only works with a licensed version.

It's a great tool and pulls a whole physical machine image into a VMware virtual machine - and is a great way to get the failed machine back to life - what it doesn't do is restore a machine, but I'm most likely to rebuild any failed machine anyway - I simply need access to any files / data on there that might not have made it to the shared server folders...

 

GEO 51.4043197631836:-1.28760504722595
Posted: Wednesday, February 13, 2008 12:46:49 PM (GMT Standard Time, UTC+00:00)  #    Comments [0]
TAGS: Software | Technical | Tools

I have been updating some of my 'magicwords' for SlickRun recently. This a great tool for getting focus on a particular task. Instead of having to mess about opening folders, word documents, web sites all in preparation for a task you can enter one 'magicword' and have it do all that work for you.sr_header

For example when we (C2C) release a new hotfix the process requires :

  • Review of the technical notes / fix details (from a database report)
  • Grab all the relevant files into a .zip package (I really should have this section automated)
  • Update the 'versions' xml file that our app checks so that end users get notified of the fix availability
  • Post the zip file containing the hotfix to our support website.

(in fact I really should automate ALL of this)

Anyway, there were a couple of things that I had wanted to do to make SlickRun a touch better at getting this environment set up for me...

The first was to minimize all current windows (before opening the set of new ones)
The second was to automatically post form data to a website.

Both of these required a little scripting....

 

' Minimize all windows to the taskbar
' Ken Hughes
' 23 Jan 2008

Set objShell = CreateObject("Shell.Application")
objShell.MinimizeAll
Set objShell = Nothing

Just run the script for the results....

 

 

' HTTP POST script
' Post form data to a url
' Ken Hughes
' 23rd Jan 2008

' Check cmd line args
If (WScript.Arguments.Count <> 2) Then
    ' none - show usage
    Wscript.echo ""
    Wscript.echo "USAGE: httppost.vbs url ""data"""
Else
    ' got them - so post the data
    sURL = Wscript.Arguments(0)
    sFormData = Wscript.Arguments(1)

    Dim objIE
    Set objIE = CreateObject("InternetExplorer.Application")
    objIE.Visible = True
    objIE.Navigate sURL, , , sFormData, "Content-Type: application/x-www-form-urlencoded;"
End If

Run the script with the URL and the post data as command line parameters - for example httppost.vbs http://yourdomain.com/page.aspx "field1=value1&field2=value2"

GEO 51.4043197631836:-1.28760504722595
Posted: Tuesday, January 29, 2008 5:56:50 PM (GMT Standard Time, UTC+00:00)  #    Comments [0]
TAGS: Productivity | Scripting
 
 
 
Copyright © 2008 Ken Hughes. All rights reserved.

Creative Commons License
This work is licensed under a Creative Commons Attribution 2.0 UK: England & Wales License.