Apologies if you don't find anything of interest here, it's more for my own use than anyone else's. I'm a network & server administrator from Preston, UK. I'm sure you're not interested in my personal opinions, so mostly this blog will be stuff that I need to know for my own use, if you find it useful too then I'm glad.
Tuesday, 10 November 2009
PuTTY Connection Manager
Just found a fantastic add-on the the ubiquitous PuTTY application -- Putty Connection Manager. This application adds tabs to PuTTY so you no longer have multiple windows floating around your screens. Simple but effective. You can get it from http://puttycm.free.fr/cms/
Friday, 18 September 2009
Using FIND as a GREP alternative for Windows
You can use the Windows 'find' command in a similar manner to how 'grep' would work in a UNIX-based system.
Find can search through files for strings but also can have output piped to it. So for example, to list all the services containing the word 'Sophos' on a remote computer, you can use the syntax:
Find can search through files for strings but also can have output piped to it. So for example, to list all the services containing the word 'Sophos' on a remote computer, you can use the syntax:
sc \\computername query |find "Sophos"
Tuesday, 15 September 2009
Use Powershell to display a list of mailboxes and their SMTP addresses
Use the Powershell command:
get-mailbox * | select displayname, primarysmtpaddressThis will list all the mailboxes on the server and the primary email address next to it.
Monday, 17 August 2009
Accepting user input in batch files
There are several ways of accepting user input in a batch file, you can accept it as a parameter by typing it after the name of the batch file on the command line, e.g.
Another way would be to have the batch file ask the user for input and allow them to choose from a list of choices. To do this you would use the 'choice' command within your batch file. By default they would get an option of 'Y' or 'N', e.g.
The third way would to allow the user to provide their own input, for example if you can't provide them with a list for whatever reason. To do this, use the 'set' command with the /p switch as follows:
mybatchfile.bat *.txtThe above would give you a variable of %1 which would now contain *.txt. Any further parameters you accept would have %2, %3 and so on. The only problem with accepting parameters like this is that the user would have to be comfortable typing a command on the command line, obviously that example is quite simple but you would probably not want your users to have to visit the command line unless absolutely necessary.
Another way would be to have the batch file ask the user for input and allow them to choose from a list of choices. To do this you would use the 'choice' command within your batch file. By default they would get an option of 'Y' or 'N', e.g.
[Y,N]?You can configure the available choices to be whatever you want by using the command's switches. When the user makes a choice, the command sets an %errorlevel% value which you can use ('Y' would return errorlevel 1 and 'N' would return errorlevel 2). The only issue is that this command is not available on Windows 2000 or below.
The third way would to allow the user to provide their own input, for example if you can't provide them with a list for whatever reason. To do this, use the 'set' command with the /p switch as follows:
set /p NAME=Please enter your name:The above command would display 'Please enter your name:' and then populate the %NAME% variable with whatever the user typed in.
Monday, 29 June 2009
Send smtp emails from command line (bmail.exe)
I've discovered a free command line tool which sends SMTP emails from a command line and therefore can be used within batch files. It can also take environment variables as parameters. For example, to send an email when a server is booted, create a batch file with the following line:
You can obtain the tool from the following webpage: http://www.beyondlogic.org/solutions/cmdlinemail/cmdlinemail.htm
bmail.exe -s 192.168.1.7 -t admin@domain.com -f helpdesk@domain.com -a "%computername% has just booted" -b "The computer has started up. Please investigate."You can then just copy the batch file and bmail.exe to your SYSVOL folder on the domain controller(s) and create a GPO to run the batch file on startup.
You can obtain the tool from the following webpage: http://www.beyondlogic.org/solutions/cmdlinemail/cmdlinemail.htm
Wednesday, 17 June 2009
Watch command for Windows
One of the things I like about Linux/Unix is that there are far more (and better) command-line tools available than the ones you get by default with Windows. One of the commonly used tools is 'watch' which simply repeatedly runs another command until you quit. This is useful for things like displaying the current contents of a log file, or maybe doing a directory listing so you can watch it to see when something has changed. As far as I know there is nothing similar in Windows so I wrote my own batch file which does the same thing:
What happens in the script above is basically that the 1st parameter you supply would be the command to run and the following 4 parameters would be any switches or values you want to provide. Up to 4 extra switches can be provided although you can obviously change this to be as many as you like. The choice command provides a 3-second delay and gives you the chance to quit watching by pressing q or continue immediately by pressing c — rather than waiting for the 3 seconds to elapse. Again, you can change the timeout from 3 seconds by changing the /t 3 value to something else.
Now, say you want to monitor the output of a file named 'C:\error.log'. Use the command by entering watch type c:\error.log and the file will be repeatedly typed on the console screen at 3 second intervals until you press q.
Easy!
@echo offIf you want to use it, copy the script above into a file called 'watch.cmd' and place that file somewhere in your path, e.g. C:\Windows\System32.
title Watching %1 %2 %3 %4 %5
:top
cls
%1 %2 %3 %4 %5
echo.
choice /C QC /M "Press Q to quit or C to continue" /t 3 /d c
if errorlevel==2 goto top
if errorlevel==1 goto end
:end
What happens in the script above is basically that the 1st parameter you supply would be the command to run and the following 4 parameters would be any switches or values you want to provide. Up to 4 extra switches can be provided although you can obviously change this to be as many as you like. The choice command provides a 3-second delay and gives you the chance to quit watching by pressing q or continue immediately by pressing c — rather than waiting for the 3 seconds to elapse. Again, you can change the timeout from 3 seconds by changing the /t 3 value to something else.
Now, say you want to monitor the output of a file named 'C:\error.log'. Use the command by entering watch type c:\error.log and the file will be repeatedly typed on the console screen at 3 second intervals until you press q.
Easy!
Monday, 15 June 2009
Orange Internet settings for a mobile
If you have an Orange SIM and an unlocked phone, or you need to get the internet settings so your phone can access the internet on Orange's GPRS or 3G network, visit the following website and enter your phone model and phone number. You will be texted the settings which will automatically be set up for you. The link is http://setuporange.wdsglobal.com/internet
Thursday, 28 May 2009
Disconnected templates in VMware ESX
I had an issue today where the templates I wanted to deploy a VM from were listed as disconnected in VirtualCenter. They were displayed in italics, such as:
vmtemplatename (Disconnected)
This also meant that couldn't be converted into, or deployed as VMs. To resolve this issue I simply restarted the VirtualCenter service and the problem was resolved.
vmtemplatename (Disconnected)
This also meant that couldn't be converted into, or deployed as VMs. To resolve this issue I simply restarted the VirtualCenter service and the problem was resolved.
Labels:
disconnected,
template,
virtualcenter,
vmware
Thursday, 14 May 2009
Powershell
Powershell is something I've not really had much cause to use so far - I know, I know, it is really useful and a great way to script things - but with our network being relatively small I still find it most convenient to use the GUIs for most purposes.
However I have just discovered that Quest have some great free tools for Powershell. One is their ActiveRoles Management Shell which is a set of Powershell cmdlets specifically for managing Active Directory. I used this for a task I had which would have taken forever using the GUI — listing and exporting the contents of AD user groups. I just needed to write a simple script which queried the groups and piped the contents into a text file, using this command as shown below:
The next tool, PowerGUI, basically provides a full GUI for Powershell cmdlets. The beauty of this is that you can use Powershell functionality even if you don't know the syntax of the cmdlets. You can use it just as a standard console or there is an editor where you can create your own scripts. The script editor is clever as it provides you with a list of valid options when you start entering the command, similar to how the Powershell command line can be prompted, however it displays it as you type so it saves on keystrokes. Sorry for the quality of the image below but hopefully you get the idea.

PowerGUI also integrates with VMware and Exchange 2007 if you have the Powershall management tools for those.
I'll certainly be useing Powershell more in future now.
However I have just discovered that Quest have some great free tools for Powershell. One is their ActiveRoles Management Shell which is a set of Powershell cmdlets specifically for managing Active Directory. I used this for a task I had which would have taken forever using the GUI — listing and exporting the contents of AD user groups. I just needed to write a simple script which queried the groups and piped the contents into a text file, using this command as shown below:
get-qadgroupmember -identity "usergroup name" >> userlist.txtEasy.
The next tool, PowerGUI, basically provides a full GUI for Powershell cmdlets. The beauty of this is that you can use Powershell functionality even if you don't know the syntax of the cmdlets. You can use it just as a standard console or there is an editor where you can create your own scripts. The script editor is clever as it provides you with a list of valid options when you start entering the command, similar to how the Powershell command line can be prompted, however it displays it as you type so it saves on keystrokes. Sorry for the quality of the image below but hopefully you get the idea.

PowerGUI also integrates with VMware and Exchange 2007 if you have the Powershall management tools for those.I'll certainly be useing Powershell more in future now.
Wednesday, 13 May 2009
Setting file permissions from command line in Windows 2000/2003
Microsoft provide a tool for this purpose called xcacls.exe which is part of the Windows 2000 Resource Kit or Windows 2003 Support Tools (Adminpak).
Briefly, say you wanted to set the permissisons on a group of files so that 'Everyone' has Full Control, you would issue the following command:
Briefly, say you wanted to set the permissisons on a group of files so that 'Everyone' has Full Control, you would issue the following command:
xcacls *.* /E /C /G everyone:FTo view the permissions on a single file you could just use:
xcacls filename.txtMore information can be found at http://support.microsoft.com/kb/318754
Tuesday, 28 April 2009
Hibernation in Windows 2008 - turn it off!
Unless you want to run Windows 2008 on a laptop, I cannot see why Microsoft in their wisdom would enable hibernation on a server operating system — by default! As this creates a file named c:\hiberfil.sys which is the same size as the memory in the server this is a huge inconvenience, especially running in a virtual environment where you want to keep your disk partitions small.
You can, of course, turn the hibernation off and delete the file by using the following command from the command line:
Microsoft: nul points.
You can, of course, turn the hibernation off and delete the file by using the following command from the command line:
powercfg -h offNote: several times I have got the following error message at the command line, despite being a domain admin:
You do not have permission to enable or disable the Hibernate feature.If this happens, create a shortcut to 'powercfg.exe -h off' and then right-click it and choose 'Run as administrator. This will elevate your priveleges and enable the file to be deleted.
Microsoft: nul points.
Wednesday, 15 April 2009
Windows 2008 Remote Server Administration Tool
After finally switching from XP to Vista over the past few days, I came to update some Group Policy Objects this morning, only to find that the GPMC (Group Policy Management Console) that came with the Windows 2003 Adminpak no longer works. Apparently it is not Vista-compatible (I have heard that such problems exist!)
Oh well, I thought, I'll just get the Vista-compatible one. Cue a 2 hour trawl through the web. Apparently the GPMC was available in Vista pre-SP1 but for some reason Microsoft removed it when SP1 came out. They then re-released it as part of the Windows 2008 Remote Server Administration Tools but failed to put any mention of it on their website so you can't find it. Eventually I stumbled upon this thread http://social.technet.microsoft.com/Forums/en-US/itprovistasp/thread/81571529-c84c-4db2-8d9b-0943f1870031/ which explains how to get it and run it.
In a nutshell, here's how to obtain and enable it:
Oh well, I thought, I'll just get the Vista-compatible one. Cue a 2 hour trawl through the web. Apparently the GPMC was available in Vista pre-SP1 but for some reason Microsoft removed it when SP1 came out. They then re-released it as part of the Windows 2008 Remote Server Administration Tools but failed to put any mention of it on their website so you can't find it. Eventually I stumbled upon this thread http://social.technet.microsoft.com/Forums/en-US/itprovistasp/thread/81571529-c84c-4db2-8d9b-0943f1870031/ which explains how to get it and run it.
In a nutshell, here's how to obtain and enable it:
- Uninstall the Windows 2003 Adminpak if you currently have it installed
- Download it from http://www.microsoft.com/downloads/details.aspx?FamilyID=9ff6e897-23ce-4a36-b7fc-d52065de9960&DisplayLang=e (32bit) or http://www.microsoft.com/downloads/details.aspx?FamilyID=d647a60b-63fd-4ac5-9243-bd3c497d2bc5&DisplayLang=en (64bit)
- Install it
- Enable the Remote Server Administration Tools from the 'Turn Windows features on or off' box in the Programs and Features applet in Control Panel
- Make a brew while waiting for the features to be configured (this took about 10 minutes on my PC)
- The tools are now available in the Administrative Tools menu
Tuesday, 14 April 2009
HP Procurve Mini-GBIC compatibilty matrix
HP have a document which lists which Mini-GBIC (i.e. Fiber uplink) devices are compatible with with which Procurve switches.
You can find it here: http://cdn.procurve.com/training/Manuals/Mini-GBIC-Support-Mar2009.pdf
You can find it here: http://cdn.procurve.com/training/Manuals/Mini-GBIC-Support-Mar2009.pdf
Monday, 6 April 2009
Twitter is stupid
Well, I gave it a go, I tried to like it, but I just don't see the point of Twitter. I can't be bothered checking a web page every few minutes just in case someone I don't know has put the equivalent of a badly-spelt text message on there. I tried using TwitterFox which is a Firefox extension that just pops up the tweets when you receive them, but I found it just distracted me.
And very, very few of the tweets I received were of any interest. That is, if you could actually tell what they were about, most of them seemed to be just garbled abbreviations which you had to squint at then go and do a load of research on. To me, this defeats the object of having a so-called 'quick and easy' system of communication. True, Stephen Fry's tweets were sort of sweet in a whimsical kind of way, but do I really need to know (or care) that he is sat on a plane on the way to Singapore? Nope, I'll find that out when your TV programme is on in a couple of months, Stephen.
So I have uninstalled TwitterFox, and unless someone can explain to me what Twitter is actually good for, other than annoying me and getting in the way of my actual WORK, I won't be bothering with Twitter again. Just in time, as I read in Computer Weekly that they are currently trying to work out aa way of making money from the users.
Quelle surprise.
And very, very few of the tweets I received were of any interest. That is, if you could actually tell what they were about, most of them seemed to be just garbled abbreviations which you had to squint at then go and do a load of research on. To me, this defeats the object of having a so-called 'quick and easy' system of communication. True, Stephen Fry's tweets were sort of sweet in a whimsical kind of way, but do I really need to know (or care) that he is sat on a plane on the way to Singapore? Nope, I'll find that out when your TV programme is on in a couple of months, Stephen.
So I have uninstalled TwitterFox, and unless someone can explain to me what Twitter is actually good for, other than annoying me and getting in the way of my actual WORK, I won't be bothering with Twitter again. Just in time, as I read in Computer Weekly that they are currently trying to work out aa way of making money from the users.
Quelle surprise.
Tuesday, 31 March 2009
Backing up your Microsoft DHCP server
Note: this applies to Windows 2003, I haven't tested it on Windows 2008 yet.
Rather than use multiple DHCP servers in case of failure, I prefer to take regular backups of the DHCP scope. This can then be restored to an alternate DHCP server in case of a failure of the primary one. I have the alternate one fully configured but with the DHCP service stopped, so it is just a case of starting it up and restoring your latest backup to it when required.
To back up your DHCP server, get a command line and enter the following command:
Rather than use multiple DHCP servers in case of failure, I prefer to take regular backups of the DHCP scope. This can then be restored to an alternate DHCP server in case of a failure of the primary one. I have the alternate one fully configured but with the DHCP service stopped, so it is just a case of starting it up and restoring your latest backup to it when required.
To back up your DHCP server, get a command line and enter the following command:
netsh dhcp server export dhcpbackup.bak allThe above command will backup all the scopes on your DHCP server to a file called dhcpbackup.bak. I enter this into a batch file and run it as a scheduled task so I always have an up to date copy. In the event of needing to switch to my backup DHCP server, I just need to start the DHCP service and run the opposite command:
netsh dhcp server import dhcpbackup.bak all
Friday, 20 March 2009
Minimum disk space required for MailMarshal to send mail
It turns out that MailMarshal has a minimum amount of disk space required (512MB) that it needs to be able to process mail. If there is not enough disk space then errors will be noticed in the receiver log files, similar to the following:
3320 00:01:26.510 Diskspace: free=0x00000000208cb000, limits=(0x0000000020000000, 0x0000000040000000), avail=1% on (D:\Program Files\Marshal\MailMarshal\Quarantine)Adding more disk will resolve the issue — another reason to be Virtual!
3320 00:01:26.510 Diskspace: free=0x00000000208cb000, limits=(0x0000000020000000, 0x0000000040000000), avail=1% on (D:\Program Files\Marshal\MailMarshal\Logging)
3320 00:01:26.510 Diskspace: free=0x00000000208cb000, limits=(0x0000000020000000, 0x0000000040000000), avail=1% on (D:\Program Files\Marshal\MailMarshal\Queues\Incoming)
3320 00:01:26.510 Low disk space left, sleeping for 29s. Found 520.79 MB free on D:\Program Files\Marshal\MailMarshal\Queues\Incoming. Minimum required: 512.00 MB. Minimum preferred: 1.00 GB.
Wednesday, 18 March 2009
Virtualising SQL Server
My colleague Rob found a document on Microsoft's website which discusses the issues around running SQL Server in a virtual environment. Basically the conclusion is 'go for it' unless you are running very heavily used databases which could cause performance issues.
You can get the document at http://download.microsoft.com/download/a/c/d/acd8e043-d69b-4f09-bc9e-4168b65aaa71/SQLVirtualization.doc
You can get the document at http://download.microsoft.com/download/a/c/d/acd8e043-d69b-4f09-bc9e-
Installing Sophos Anti-Virus on Windows 2008
When installing Sophos remotely on a Windows 2008 server with the firewall enabled there may be a problem if the firewall isn't correctly configured to allow remote installations. See the Sophos article here for instructions on how to configure it.
Tuesday, 17 March 2009
"All Users" folder has moved in Windows 2008
In their infinite wisdom Microsoft have done their usual trick of moving things around in their new OS - just to confuse everybody. In my line of work I often have to make an application run on logging into Windows and to do that you used to put a shortcut to it in "C:\Documents and Settings\All Users\Start Menu\Startup". But for some reason MS have moved the folder, it now is at "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup"!
What the hell the ProgramData is for I haven't yet worked out. It's hidden, by the way, so you either need to enable viewing hidden files and folders* or you can type the path in the address bar.
*Which I don't like to do as some files and folders are hidden for a reason. I can't think why the "All Users" folder is hidden...
What the hell the ProgramData is for I haven't yet worked out. It's hidden, by the way, so you either need to enable viewing hidden files and folders* or you can type the path in the address bar.
*Which I don't like to do as some files and folders are hidden for a reason. I can't think why the "All Users" folder is hidden...
Thursday, 5 March 2009
IP address change requires CSG reconfigure
If you change the IP address of the Citrix Secure Gateway, you need to make sure that you re-run the configuration tool. Otherwise the service will not start - it will complain with an error in the event log saying:
No listening sockets available, shutting down. (Hint: Port might be in use by another process)
Odd firewall problem with Citrix Secure Gateway on Windows 2008
This problem kept me stumped for the best part of a day but I got there in the end.
I have installed Citrix Secure Gateway (CSG) in order to provide secure access to our Citrix XenApp farm. I am using Windows 2008 (which is a fantastic OS, I am enjoying using it more and more). Windows 2008 comes complete with extensive firewall capabilities to help keep it secure. On Windows 2003 I didn't really bother with these but I have resolved to make use of them from now on, especially as they have been improved so much in the new OS. Anyway, on to the problem.
CSG uses SSL which of course runs over TCP port 443. The default Windows firewall rule, which I believe is activated when you install IIS, allows connections into 443, from any external address to any internal address on the server. However, it only allows connections into the 'System' program -- I take that to mean actual Windows system services, in this case presumably the World Wide Web Publishing Service. To enable access to CSG I created a new rule which allowed connections to 'D:\Program Files\Citrix\Secure Gateway\bin\CtxSGSvc.exe'.
Obvious really!
I have installed Citrix Secure Gateway (CSG) in order to provide secure access to our Citrix XenApp farm. I am using Windows 2008 (which is a fantastic OS, I am enjoying using it more and more). Windows 2008 comes complete with extensive firewall capabilities to help keep it secure. On Windows 2003 I didn't really bother with these but I have resolved to make use of them from now on, especially as they have been improved so much in the new OS. Anyway, on to the problem.
CSG uses SSL which of course runs over TCP port 443. The default Windows firewall rule, which I believe is activated when you install IIS, allows connections into 443, from any external address to any internal address on the server. However, it only allows connections into the 'System' program -- I take that to mean actual Windows system services, in this case presumably the World Wide Web Publishing Service. To enable access to CSG I created a new rule which allowed connections to 'D:\Program Files\Citrix\Secure Gateway\bin\CtxSGSvc.exe'.
Obvious really!
Wednesday, 4 March 2009
Monday, 2 March 2009
Simpsons avatar
If you're interested in how I got my Simpsons-style avatar, you can create it at http://www.simpsonsmovie.com/
I look a bit like Homer's half-brother which is pretty scary....
I look a bit like Homer's half-brother which is pretty scary....
Friday, 27 February 2009
How to backup a database in SQL Express 2005 or 2008
SQL Express is a great free database from Microsoft, it has many of the features of the full SQL Server application. Microsoft being Microsoft, however, have decided to make it a bit tricky for you to backup your databases -- you can manually do it from the Management Studio, but you can't do it from the Management section as there is no Maintenance Plans section. However it is pretty easy to acheive by writing a a very simple SQL script and then automating it using the Task Scheduler.
For this example we will backup the 'master' database, you will just need to amend any references to 'master' with the name of the database you want to backup.
Create the SQL script
First, create a text file called 'backup.sql' and open it in Notepad. Paste in the following text:
EXEC sp_addumpdevice 'disk', 'MediaBackup',
'D:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\BACKUP\master.bak'
BACKUP DATABASE master
TO MediaBackup
The above script just creates a 'disk media' called 'MediaBackup' and backs up the 'master' database into it.
Create the script to call the SQL script
Next we need to create a script (batch file) to run the SQL script we just created. Create a 'backup.cmd' file and edit it in Notepad.
Paste in the following text:
del "D:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\BACKUP\master.bak"
sqlcmd -S np:\\.\pipe\MSSQL$SQLEXPRESS\sql\query -i backup.sql
The first line above deletes the last backup file that you created. You can leave this out if you like, and the backup will be amended to the backup file -- obviously this file will grow large as multiple backups will be added into it.
The second line basically runs a SQL query using the contents of the file specified -- in this case the 'backup.sql' file.
Test
Once you have saved the both files, I would get to a command line and run the backup.cmd file.
Doing it from a command line ensures you can troubleshoot any errors which may be flagged up.
Schedule
Once you are happy that the backup is working, you just need to schedule the job by using Task Scheduler.
For this example we will backup the 'master' database, you will just need to amend any references to 'master' with the name of the database you want to backup.
Create the SQL script
First, create a text file called 'backup.sql' and open it in Notepad. Paste in the following text:
EXEC sp_addumpdevice 'disk', 'MediaBackup',
'D:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\BACKUP\master.bak'
BACKUP DATABASE master
TO MediaBackup
The above script just creates a 'disk media' called 'MediaBackup' and backs up the 'master' database into it.
Create the script to call the SQL script
Next we need to create a script (batch file) to run the SQL script we just created. Create a 'backup.cmd' file and edit it in Notepad.
Paste in the following text:
del "D:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\BACKUP\master.bak"
sqlcmd -S np:\\.\pipe\MSSQL$SQLEXPRESS\sql\query -i backup.sql
The first line above deletes the last backup file that you created. You can leave this out if you like, and the backup will be amended to the backup file -- obviously this file will grow large as multiple backups will be added into it.
The second line basically runs a SQL query using the contents of the file specified -- in this case the 'backup.sql' file.
Test
Once you have saved the both files, I would get to a command line and run the backup.cmd file.
Doing it from a command line ensures you can troubleshoot any errors which may be flagged up.
Schedule
Once you are happy that the backup is working, you just need to schedule the job by using Task Scheduler.
Tuesday, 24 February 2009
How to list properties of all SQL databases
Use the SQL command
sp_helpdb
Simple...
sp_helpdb
Simple...
Monday, 23 February 2009
Visio VMware stencils
I finally stumbled across this Visio diagram which contains some Visio shapes for VMware diagrams. Unfortunately they aren’t in .vss format, it is an actual diagram, but the shapes are great!
Terminal Server / Citrix utils
On the Brian Madden site I came across this link which lists some cool utils for managing TS & Citrix.
Here goes...
My first post on my new blog, my old one was unloved, stale and dusty, like a half-empty pantry. I will try to keep this one well stocked, shiny and organised like a new branch of Tesco. However, unlike Tesco I will try not to be evil and take over the world.
First job: move some of my old blog posts in.
First job: move some of my old blog posts in.
Subscribe to:
Posts (Atom)