Archive for the ‘OS’ Category


Why is an iPhone like an Etch-a-sketch?


This post has now been migrated to

Follow this link to go directly to the article.


My Wish List for Apple iPhone OS 4.0


This post has now been migrated to

Follow this link to go directly to the article.


Top FlagIT Posts of 2009


It’s been about a year since I started blogging here and whilst it was primarily supposed to be a site for quick useful tech-related posts several have grown into far larger posts.  Whilst some posts have remained somewhat quiet on the number of reads others have generated far more interest than I could have expected.

It’s actually five more days until this blog is a year old, but I thought that new year’s day might be as good an opportunity to review what the top ten posts were.  This has been based on the number of visits from more than six and a quarter thousand since the blog was created.

10. Reclaim more Memory on a Windows Mobile Device

Posted: 04/04/2009

Reads: 95 (Daily Average 0.35)

Windows mobile phones have a finite amount of memory and like any operating system (particularly M$ ones?) memory leaks can stop memory being released.  This post highlights how to resolve some storage issues with the Mobile Opera browser and a useful tool for reclaiming that memory lost to leakage.

9. Simple Template Workaround for Evernote

Posted: 21/11/2009

Reads: 95 (Daily Average 2.32)

A relatively recent post about one of my favourite pieces of software (Evernote) and how to use a simple bit of scripting to create templates in Evernote.

8. A Ceiling Function for VBScript

Posted: 31/07/2009

Reads: 133 (Daily Average 0.86)

This post includes some VBS code to round a number off to the greatest integer.

7. Developer Tabs and Drop Down Lists in Word 2007

Posted: 17/03/2009

Reads: 135 (Daily Average 0.47)

This post explains how to access the developer tab in Microsoft Word 2007 and briefly discusses some of the shortcomings of the drop down lists it offers.

6. VBScript – Count Occurrences in a Text String

Posted: 30/07/2009

Reads: 148 (Daily Average 0.95)

Another simple bit of VBS code that counts the number of instances of a string of text within another string of text.

5. Omnia to Oblivia (and back)

Posted: 05/04/2009

Reads: 151 (Daily Average 0.56)

I have a Samsung Omnia mobile phone and have had a number of issues with it.  This describes how I resolved one of the most difficult issues with the file system constantly mounting and dismounting a storage device.

4. A Flexible Progress Window in VBScript

Posted: 19/07/2009

Reads: 169 (Daily Average 1.02)

Another popular bit of VBS code is some that builds a customisable progress window based around dynamically updating a web page that is automatically loaded into a browser.  The progress window allows the user to display messages and progress bars.

3. VBScript – Select a Folder

Posted: 28/03/2009

Reads: 278 (Daily Average 1.00)

The most popular VBS code post on the blog in the past year this one shows how to access a common dialog to select a folder and pass this back to the main code.

2. Controlling Spotify

Posted: 29/07/2009

Reads: 1172 (Daily Average 7.51)

At this point we see a big change in the number of reads of the posts.  This particular post’s popularity is most likely related to the popularity of Spotify.  The post describes a way in which an iPhone emulator can be used on a PC running Microsofrt Windows PC to control Spotify installed on an Apple Mac.

1. Excel – Dynamic Drop Down Lists with Full Validation

Posted: 15/03/2009

Reads: 1272 (Daily Average 4.36)

At the top spot is a post relating to Microsoft Excel.  It looks at how to overcome some of the limitations on dynamically populated drop down lists.  There are a number of other Excel related posts on the blog that people may find useful in combination with this and it has certainly made quite an impact with some of the spreadsheets I’ve developed for colleagues at work.  It seems as though that popularity is spreading to hundreds of others across the Internet.

So please have a look through these top ten (and others if you like) and I’d encourage you to leave a comment or rate the post.  If you like the content why not subscribe to one of the RSS feeds?


Multiple Monitors


Several months ago I got a Dell Latitude E6400 laptop to replace my overworked Dell Latitude D410.  Along with the laptop I got a new advanced E-dock which included two monitor outputs, so I recycled an old smaller monitor that had been relegated to the stores to have a dual monitor set-up.

I find the two monitor set-up really useful and I frequently have different applications in different windows as you might expect.  However I struggled with Excel as I would frequently want to copy data between large format spreadsheets and I would have loved to have one on each screen … but they simply opened as child windows and I Alt-Tab’d between them.

I guess I never really stopped to think about it, but one day my subconscious kicked in and I realised that if I chose not to open the files directly I could open multiple instances and then open a file in each.  Then each instance of the application can be dragged to a different monitor.  Hey presto a spreadsheet in each window.


Chrome OS as Laptop Fast Boot Option


We have a number of E-series Dell laptops in my organisation and whilst we don’t configure it many have Dell’s Latitude On installed.  This is a small Linux install that gives quick read only access to things such as recent mail, calendar and even a web browser.

With the advent of Chrome OS and after reading a recent article on LifeHacker by Gina Trapani it struck me that as well as dedicated Chrome OS devices there may be an option to boot from an onboard chip (like Latitude On) to effectively allow an alternative quick boot for a machine.  Now whilst the supported hardware list is not currently extensive hardware manufacturers can use the fact that Chrome OS is open source to create appropriate drivers.

Whereas Latitude On allows access to stored mailboxes, using Chrome OS would obviously relate to accessing content located on Google servers with regards to things such as mail or documents.  So would this be a step forwards or backwards?

Well for me I think it will be a progression.  There’s maybe another year or so of development to get to this point and by then the cloud, Google and Chrome OS will no doubt have progressed.  I think the maturity of the Chrome browser a year down the line and the fact that it will be ‘geared’ to working with Google services could be a big selling point for the Chrome OS in this sort of deployment.  I expect it will be faster and perhaps prettier (in GUI terms) to other quick alternative boot options.

I wonder how quick Chrome OS would be on a dedicated chip on a fast laptop as opposed to a netbook?  Hopefully I’ll get the chance to find out.


Quit XBMC when it freezes (MAC)


I run XBMC on a Mac Mini plugged into my TV.  Sometimes XBMC gets a bit caught up and freezes or gets locked into some sort of loop.  I have it running in full screen which makes it rather hard to quite when the application with focus is non-responsive.  So to get past this, press F8 to bring up Spaces and navigate to another space.  From here right click on XBMC in the dock to reveal and select Force Quit.


Skype and Web Servers


I briefly had a problem with the web server that’s running my personal wiki yesterday.  Try as I might it just wouldn’t start-up.  I hadn’t had a problem before and after three or four attempts at clicking the start option I took a step back and surveyed my machine – a useful option in many circumstances.

I spotted the culprit straight away as I had come across the issue before – Skype.  When Skype starts up if the default port (51907 on my current instance of Skype) is unavailable (because another application is using it or more likely a firewall is blocking it) it tries to set-up on a port that is more likely to be available – 80 or 443 which are used by web servers for insecure and secure traffic respectively.

Whilst there is an advanced option in Skype to force it away from these two alternative ports often there are no other convenient ones to choose from.  This is because it is good practice security to block unused ports and Skype isn’t always a top runner so to speak on ports to have open.

The moral of the story is simple – start your web server before you start Skype.

However this got me to wondering what else might pick a port that could conflict and how would you know what it was without just systematically working through all the applications and services you have running … which for me could be a large number.  My solution was to use some DOS commands.  NETSTAT can be used to examine what ports are in use by what processes.  TASKLIST can be used then to identify the executable.

To smooth things over a little I’ve concocted a little script to automate this process.  It’s really just a bit of a nicer front end to the whole thing and whilst several command prompt windows may briefly flash up as it runs, the script will take in the information from the commands and process them to filter out the pertinent information.

Option Explicit

Dim objCommandPort
Dim astrResults
Dim astrInfoLine
Dim strOutput
Dim strPortCommand
Dim strPID
Dim strApps

strPortCommand = "netstat -ano" 

set objCommandPort = New clsDOSCommandExecutor

strOutput = objCommandPort.GetOutput
astrResults = split(strOutput, vbCrLf)

strApps = "PORT: APPLICATION" & vbCrLf
AssessPort "80"
strApps = strApps & vbCrLf
AssessPort "443"

MsgBox strApps, vbInformation + vbOKOnly, "Applications using web server ports"

Sub AssessPort(p_strPort)
 Dim intCounter

 For intCounter = 1 to Ubound(astrResults)
 If inStr(astrResults(intCounter), ":" & p_strPort) > 0 Then
 astrInfoLine = split(astrResults(intCounter))
 strPID = astrInfoLine(ubound(astrInfoLine))
 strApps = strApps & vbCrLf & p_strPort & ": " & AppOnPort(strPID)
 End If
End Sub

Function AppOnPort(p_strPID)
 Dim objCommandPID
 Dim strPIDCommand
 Dim strPIDOut
 Dim astrPIDOut

 set objCommandPID = New clsDOSCommandExecutor
 strPIDCommand = "tasklist /fi ""PID eq " & p_strPID & """"


 strPIDOut = Right(objCommandPID.GetOutput, len(objCommandPID.GetOutput) - inStrRev(objCommandPID.GetOutput, "=" & vbcrlf))
 astrPIDOut = split(strPIDOut)

 AppOnPort = Replace(astrPIDout(0), vbCrLf, "")
End Function

Class clsDOSCommandExecutor
 Dim objShell, objExec
 Dim strCommand
 Dim strError
 Dim objError
 Dim objOutput
 Dim strOutput

 Sub ExecuteCommand(p_strCommand)
 strCommand = "cmd /c " & p_strCommand
 Set objShell = CreateObject("Wscript.Shell" )


 Set objExec = objShell.Exec(strCommand)

 Do Until objExec.Status
 Wscript.Sleep 200

 Set objError = objExec.StdErr
 strError = objError.ReadAll

 Set objOutput = objExec.stdOut
 strOutput = objOutput.ReadAll
 End Sub

 Function GetOutput()
 GetOutput = strOutput
 End Function

 Function GetError()
 GetError = strError
 End Function

 Function Failed()
 If strError = "" Then
 Failed = false
 Failed = true
 End If
 End Function
End Class