Numbledenumps
A take on the recipe for rumbledethumps on the BBC website.
Basically, I just used what was available in the local shops and what was in the fridge that needed using up
Ingredients:
750g potato, peeled and diced.
500g parsnips, peeled and diced.
50g butter
A bit of cooking oil of choice
1/2 white cabbage, quite finely sliced into 2cm lengths (sliced one way, then turn it a quarter and chop it again a couple of times)
1 onion
salt and pepper
a bunch of cheese, grated (i used up some mozzarella and mature cheddar)
Method:
Put the potato and parsnips in a pan, cover with water and add a teaspoon of salt.
Put a lid on, bring to the boil, remove lid, turn down and simmer until very tender.
While that's cooking, hear the butter with a bit of normal cooking oil in another pan with that has a lid.
Turn it up high, fry the onion until golden.
Turn it down, add the cabbage and stir.
Put a lid on and sweat it for 5 minutes. Don't over do it, they must still be quite firm.
Drain the veg. Return them to the pan.
Add the onion, cabbage and butter mix.
Mash, season with salt and pepper to taste (about 1/4 tsp salt and 10 turns of pepper)
Transfer to a lidded casserole dish, cover the top with the cheese.
Put the lid on and put in the oven at 180C for 30 minutes.
After that, remove the lid and put back in the oven for a further 15 minutes.
Nom the hell out of it.
Lie down and wonder why you tried to eat so much.
Sunday, 23 December 2012
Wednesday, 16 May 2012
How to configure unattended upgrades in Ubuntu
Here's a useful page on how to configure unattended upgrades in Ubuntu:
http://www.richud.com/wiki/Ubuntu_Enable_Automatic_Updates
http://www.richud.com/wiki/Ubuntu_Enable_Automatic_Updates
Thursday, 29 March 2012
Automatic Reg Free COM Script
Here's a windows batch file I wrote that automatically takes a .NET Assembly who's classes have been suitably decorated with COM visibility tags and embeds all the information necessary for Reg Free COM to work.
UPDATE1: OK, some fixes added. But this one really works.
However, I wrote a command line app to get the version number of an assembly called GetAssemblyVersion.
Source code is at the end of the post, unless you know of a better way, in which case let me know!
It also doesn't work for signed assemblies, you'll need to add another command to add something like %PublicToken% to the client manifest
If you're not using Xml pretty printing, remote the WSCRIPT... line
There are some pre-requisites for that, you need the following software installed and in your PATH variable:
mt (provided by the MS Windows SDK or Visual Studio)
rc (provided by the MS Windows SDK or Visual Studio)
tlbexp (provided by the MS Windows SDK or Visual Studio)
reshacker (Follow the link, download and install)
Optional (pretty prints the Xml manifest embedded in the DLL to allow easy reading)
wscript, the Windows scripting host
Altova XMLSpy
The following VB Script:
TBD: Publish the script to auto-merge many client manifests into one and embed it in a target EXE (embedding is required for this to work in Win7, side by side manifests don't work anymore)
Embed this in your build scripts.
There, I've saved the world from reg free COM.
But will anybody ever read it?
Or buy me beer?
Source code for GetAssemblyVersion:
UPDATE1: OK, some fixes added. But this one really works.
However, I wrote a command line app to get the version number of an assembly called GetAssemblyVersion.
Source code is at the end of the post, unless you know of a better way, in which case let me know!
It also doesn't work for signed assemblies, you'll need to add another command to add something like %PublicToken% to the client manifest
ECHO OFF REM Show usage if no parameters are passed in IF %1==[] GOTO :NoParams SET DLLFilename=%1 REM Kill any old manifests, mt won't overwrite one IF EXIST %DLLFilename%.manifest DEL %DLLFilename%.manifest REM Get MT to autogenerate a reg free COM manifest from the COM decorated classes in the assembly mt -nologo -managedassemblyname:%DLLFilename% -nodependency -out:%DLLFilename%.manifest REM Optional VB Script that uses XMLSpy to auto-format the Xml into something readable WSCRIPT PrettyPrint.vbs //NOLOGO //B //T:60 %~dp0%DLLFilename%.manifest REM Now poke the manifest file into the target DLL at the right location reshacker -addoverwrite %DLLFilename%,%DLLFilename%,%DLLFilename%.manifest,24,1,1033 REM Generate the COM interface that isn't present in .NET assemblies. tlbexp /silent %DLLFilename% REM Again, use reghacker to poke it into the DLL reshacker -addoverwrite %DLLFilename%,%DLLFilename%,%~n1.tlb,TYPELIB,1,1033 REM Clear up all the rubbish, because we don't need all these files hanging around anymore!! 8D DEL %DLLFilename%.manifest FOR /F "tokens=*" %%i in ('GetAssemblyVersion %~dp0\%DLLFilename%') do SET AssemblyVersion=%%i REM Now generate a client manigest for the EXE/DLL that's going to be referencing our component IF EXIST %1.client.manifest DEL %1.client.manifest ECHO ^<?xml version="1.0" encoding="UTF-8" standalone="yes"?^> >> %1.client.manifest ECHO ^<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"^> >> %1.client.manifest ECHO ^<assemblyIdentity type="win32" name="client" version="1.0.0.0"/^> >> %1.client.manifest ECHO ^<dependency^> >> %1.client.manifest ECHO ^<dependentAssembly^> >> %1.client.manifest ECHO ^<assemblyIdentity name="%~n1" version="%AssemblyVersion%" processorArchitecture="msil"/^> >> %1.client.manifest ECHO ^</dependentAssembly^> >> %1.client.manifest ECHO ^</dependency^> >> %1.client.manifest ECHO ^</assembly^> >> %1.client.manifest GOTO :End :NoParams ECHO Usage: RegFreeMe DLLFilename :End
If you're not using Xml pretty printing, remote the WSCRIPT... line
There are some pre-requisites for that, you need the following software installed and in your PATH variable:
mt (provided by the MS Windows SDK or Visual Studio)
rc (provided by the MS Windows SDK or Visual Studio)
tlbexp (provided by the MS Windows SDK or Visual Studio)
reshacker (Follow the link, download and install)
Optional (pretty prints the Xml manifest embedded in the DLL to allow easy reading)
wscript, the Windows scripting host
Altova XMLSpy
The following VB Script:
'Pretty Print XML Dim objSpy ' As XMLSpyLib.Application Set objSpy = GetObject("", "XMLSpy.Application") 'objSpy.ShowApplication (False) Dim objDoc' As XMLSpyLib.Document Set objDoc = objSpy.Documents.OpenFile(Wscript.Arguments(0), False) objDoc.SwitchViewMode 0 objDoc.SwitchViewMode 1 objDoc.SaveAs Wscript.Arguments(0) objSpy.Quit
TBD: Publish the script to auto-merge many client manifests into one and embed it in a target EXE (embedding is required for this to work in Win7, side by side manifests don't work anymore)
Embed this in your build scripts.
There, I've saved the world from reg free COM.
But will anybody ever read it?
Or buy me beer?
Source code for GetAssemblyVersion:
using System; using System.Reflection; namespace GetAssemblyVersion { static class Program { [STAThread] static void Main(string[] args) { if (!string.IsNullOrEmpty(args[0])) { Console.Out.WriteLine(Assembly.LoadFile(args[0]).GetName().Version.ToString()); } else { Console.WriteLine("Usage: GetAssembly AssemblyFilename"); } } } }
Monday, 12 March 2012
All Watched Over By Machines Of Loving Grace (playlist)
('http://www.youtube.com/p/6CAC1A8A9BEFAB04?version=3&hl=en_GB',)
Finally got round to finishing my YouTube playlist for Adam Curtis' "All Watched Over by Machines of Loving Grace"
Finally got round to finishing my YouTube playlist for Adam Curtis' "All Watched Over by Machines of Loving Grace"
Subscribe to:
Posts (Atom)