<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Thushan Fernando</title><link>https://www.thushanfernando.com/</link><description>Recent content on Thushan Fernando</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>Thushan Fernando</managingEditor><webMaster>Thushan Fernando</webMaster><lastBuildDate>Sun, 03 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://www.thushanfernando.com/feed.xml" rel="self" type="application/rss+xml"/><item><title>Olla: A Smart Load Balancer for your LLM Infrastructure</title><link>https://www.thushanfernando.com/2026/05/olla-a-smart-load-balancer-for-your-llm-infrastructure/</link><pubDate>Sun, 03 May 2026 00:00:00 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/2026/05/olla-a-smart-load-balancer-for-your-llm-infrastructure/</guid><description>&lt;p&gt;When you start running local LLMs at home or your work, you usually start with one box and one &lt;a href="https://ollama.com"&gt;Ollama&lt;/a&gt; install. Things are simple, you&amp;rsquo;re like, this AI thing isn&amp;rsquo;t half bad and it runs on my own tin. Then you add another box, maybe an old gaming rig with a spare GPU, then a Mac with &lt;a href="https://lmstudio.ai/"&gt;LM Studio&lt;/a&gt; for the MLX-friendly models, then a Linux box running &lt;a href="https://github.com/vllm-project/vllm"&gt;vLLM&lt;/a&gt; for serving things at scale. Suddenly you&amp;rsquo;ve got four URLs, four model lists, four different API quirks and no way to know which one&amp;rsquo;s hot or cold.&lt;/p&gt;</description></item><item><title>Smash v1.0.0: Fast Duplicate File Finder</title><link>https://www.thushanfernando.com/2025/07/smash-v1.0.0-fast-duplicate-file-finder/</link><pubDate>Sun, 13 Jul 2025 00:00:00 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/2025/07/smash-v1.0.0-fast-duplicate-file-finder/</guid><description>&lt;p&gt;After a lot of testing and tweaks, &lt;a href="https://github.com/thushan/smash"&gt;Smash v1.0.0&lt;/a&gt; is now available. It&amp;rsquo;s a CLI tool I&amp;rsquo;ve been working on for detecting duplicate files in large datasets using a file slicing approach rather than full-file hashing.&lt;/p&gt;
&lt;p&gt;This all started with ~2 PB of Aero/Astro data to deduplicate - mostly 300–550 MB binary files, some multi-terrabyte - and traditional hashing just wasn’t going to cut it. Years ago, I wrote a tool called SmartHash (in C/ASM - those were simpler times!), but it was built for a different era &amp;amp; no longer working.&lt;/p&gt;</description></item><item><title>Converting Proxmox VMs to Containers Easily!</title><link>https://www.thushanfernando.com/2024/02/converting-proxmox-vms-to-containers-easily/</link><pubDate>Thu, 01 Feb 2024 12:33:56 +1000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/2024/02/converting-proxmox-vms-to-containers-easily/</guid><description>If you&amp;rsquo;ve got a Proxmox Server, you&amp;rsquo;ll know how awesome it is to run everything as (LXC) Containers, they&amp;rsquo;re light &amp;amp; resource-efficient, easier to manage and can be templated. But often, you start off with a VM, set it up the way you want and have no way of easily converting. Now you can, quite easily!</description></item><item><title>Missing /dev/serial/by-id on Debian variants.</title><link>https://www.thushanfernando.com/2023/07/missing-dev-serial-by-id/</link><pubDate>Sat, 15 Jul 2023 12:33:56 +1000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/2023/07/missing-dev-serial-by-id/</guid><description>Fix for missing /dev/serial/by-id on recent Debian derivatives due to a break in systemd.</description></item><item><title>Managing macOS with Brew Bundle Brewfile</title><link>https://www.thushanfernando.com/2022/08/managing-macos-with-brew-bundle-brewfile/</link><pubDate>Sat, 27 Aug 2022 18:33:56 +1000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/2022/08/managing-macos-with-brew-bundle-brewfile/</guid><description>Easily manage your macOS environment with brew Bundles and a Brewfile to create bundles to spin up a consistent environment everytime!</description></item><item><title>PipeWire Loudness Normalisation</title><link>https://www.thushanfernando.com/notes/popos-pipewire-loudness/</link><pubDate>Sun, 05 Jun 2022 11:45:20 +1100</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/notes/popos-pipewire-loudness/</guid><description>Setting up Loudness Normalisation / Equalisation for PipeWire when you&amp;rsquo;re watching your favourite Youtube influencer!</description></item><item><title>Proxmox: Mounting CIFS Shares in Containers</title><link>https://www.thushanfernando.com/notes/proxmox-cifs-setup/</link><pubDate>Sun, 06 Feb 2022 11:45:20 +1100</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/notes/proxmox-cifs-setup/</guid><description>A quick guide on how to mount CIFS shares on Proxmox Containers for Proxmox 7.x release.</description></item><item><title>Getting started with TinyGo for IoT Development</title><link>https://www.thushanfernando.com/2020/09/getting-started-with-tinygo-for-iot-development/</link><pubDate>Sun, 20 Sep 2020 07:42:40 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/2020/09/getting-started-with-tinygo-for-iot-development/</guid><description>Explore using TinyGo for your IoT adventures on Arduino. Setting up - tooling, terminal goodies, VSCode with uploading your first sketch and some interesting bits about TinyGo in the new v0.15.x release.</description></item><item><title>Windows Terminal Setup</title><link>https://www.thushanfernando.com/2020/08/windows-terminal-setup/</link><pubDate>Tue, 11 Aug 2020 18:33:56 +1000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/2020/08/windows-terminal-setup/</guid><description>Simple guide to help you get started with Windows Terminal and work around some common problems, configure it to look schmick and improve your productivity too! Including my Windows Terminal profile with elevated terminal sessions in process!</description></item><item><title>WordPress to Hugo</title><link>https://www.thushanfernando.com/2020/07/wordpress-to-hugo/</link><pubDate>Sun, 12 Jul 2020 07:42:40 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/2020/07/wordpress-to-hugo/</guid><description>Blog moved to hugo from WordPress. Some helpful hints if you intend to do the same too.</description></item><item><title>Headless With Raspberry Pi</title><link>https://www.thushanfernando.com/notes/headless-raspberrypi-setup/</link><pubDate>Tue, 10 Sep 2019 21:35:32 +1000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/notes/headless-raspberrypi-setup/</guid><description>A guide to setting up a headless installation of Raspbian Lite for the first time - securing your user account, enabling and securing SSH with key-based authentication.</description></item><item><title>About Thushan Fernando</title><link>https://www.thushanfernando.com/about/</link><pubDate>Tue, 10 Sep 2019 00:00:00 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/about/</guid><description>&lt;h2 id="thushan"&gt;Thushan&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;m a Senior Consultant at &lt;a href="https://www.sixpivot.com.au/"&gt;SixPivot&lt;/a&gt; (formerly &lt;a href="http://www.readify.net"&gt;Readify&lt;/a&gt;) and Founder of &lt;a href="https://tensorfoundry.io"&gt;TensorFoundry&lt;/a&gt; based in Australia.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://tensorfoundry.io"&gt;TensorFoundry&lt;/a&gt; started in the 2010s as something I&amp;rsquo;d tinker on after hours and officially became a business on April 1st, 2025. The date is genuine, the timing was not a joke - but also, what kind of fool would start an AI company? TensorFoundry is where I take on NVIDIA consulting and work with customers on edge AI, fine-tuning and inference challenges. It&amp;rsquo;s also where the tools live (yes, &lt;em&gt;TF&lt;/em&gt; fits my initials. That wasn&amp;rsquo;t on purpose):&lt;/p&gt;</description></item><item><title>Signing Git Commits</title><link>https://www.thushanfernando.com/notes/signing-git-commits/</link><pubDate>Wed, 19 Jun 2019 10:18:21 +1000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/notes/signing-git-commits/</guid><description>Signing your commits on git with PGP.</description></item><item><title>Clean install with bootable Windows 10 ISO</title><link>https://www.thushanfernando.com/notes/bootable-windows-10/</link><pubDate>Fri, 22 Apr 2016 12:25:32 +1000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/notes/bootable-windows-10/</guid><description>A guide on getting a clean install of Windows 10 with a fresh ISO from MSDN on an USB drive with extra meaty background information too.</description></item><item><title>Choco-tastic package export and restore!</title><link>https://www.thushanfernando.com/notes/choco-export-restore/</link><pubDate>Sat, 12 Mar 2016 12:25:32 +1000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/notes/choco-export-restore/</guid><description>Manage your list of choco packages before your reinstall with some useful commands.</description></item><item><title>Quick Tip: Mapping your GAC folder in Windows with Subst</title><link>https://www.thushanfernando.com/index.php/2010/12/30/quicktip-mapping-your-gac-folder-in-windows-with-subst/</link><pubDate>Thu, 30 Dec 2010 03:19:07 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2010/12/30/quicktip-mapping-your-gac-folder-in-windows-with-subst/</guid><description>&lt;p&gt;Here’s a quick tip if you want to browse the files in your &lt;a href="http://msdn.microsoft.com/en-us/library/yf1d93sz%28v=VS.100%29.aspx"&gt;GAC&lt;/a&gt; easily without messing about with commands all the time. Map the folder containing the assemblies with the &lt;a href="http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/subst.mspx?mfr=true"&gt;Subst&lt;/a&gt; command.&lt;/p&gt;
&lt;p&gt;To do that, bring up a console window (&lt;kbd&gt;⊞ Win&lt;/kbd&gt;
+ &lt;kbd&gt;R&lt;/kbd&gt;
), then:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;subst&lt;/span&gt; &lt;span class="n"&gt;G:&lt;/span&gt; &lt;span class="n"&gt;C:&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;windows&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;Assembly&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This will map the Global Assembly Cache folder to your G drive in Windows Explorer. You can also peek around and &lt;a href="http://www.codeproject.com/KB/dotnet/demystifygac.aspx"&gt;see how the GAC works&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Windows Phone 7 Resources</title><link>https://www.thushanfernando.com/index.php/2010/11/15/windows-phone-7-resources/</link><pubDate>Mon, 15 Nov 2010 01:33:49 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2010/11/15/windows-phone-7-resources/</guid><description>&lt;p&gt;I’ve been busy hacking away the past month or so with &lt;a href="http://www.microsoft.com/windowsphone/en-GB/default.aspx"&gt;Windows Phone 7&lt;/a&gt; and &lt;a href="http://developer.android.com/guide/basics/what-is-android.html"&gt;Android&lt;/a&gt;. They’re both very different when it comes to the out of box developer experience – with Microsoft tools being supremo right now. Thought I’d contribute some resources when it comes to (on this post) writing Windows Phone 7 Applications. I’ll try and keep this up to date with new things I find.&lt;/p&gt;</description></item><item><title>ASP.NET Session Cookie Crypto Attack Exploiting</title><link>https://www.thushanfernando.com/index.php/2010/09/20/asp-net-session-cookie-crypto-attack-exploiting/</link><pubDate>Mon, 20 Sep 2010 13:12:27 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2010/09/20/asp-net-session-cookie-crypto-attack-exploiting/</guid><description>&lt;p&gt;If the &lt;a href="/index.php/2010/09/20/cve-2010-3081-64bit-linux-kernel-root-exploit/"&gt;Linux CVE-2010-3081: 64bit Linux Kernel Root Exploit&lt;/a&gt; didn’t get you, then this little birdy might. It seems the implementation of the AES encryption algorithm which protects the integrity of the Session Cookies in ASP.NET has a weakness which could enable an attacker to hijack sessions – &lt;a href="https://www.my.commbank.com.au/netbank/Logon/Logon.aspx"&gt;Which bank&lt;/a&gt;? The idea behind the use of AES is to ensure that the crypt’d data hasn’t been tampered with – and hence decryptable, but unfortunately the flawed implementation of the use of AES and how it handles errors gives out some much needed clues for an attacker to pursue.&lt;/p&gt;</description></item><item><title>CVE-2010-3081: 64bit Linux Kernel Root Exploit</title><link>https://www.thushanfernando.com/index.php/2010/09/20/cve-2010-3081-64bit-linux-kernel-root-exploit/</link><pubDate>Mon, 20 Sep 2010 12:27:30 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2010/09/20/cve-2010-3081-64bit-linux-kernel-root-exploit/</guid><description>&lt;p&gt;Well its been a heavy week on the security front, first up is a &lt;a href="https://bugzilla.redhat.com/show_bug.cgi?id=634457"&gt;Linux root exploit for 64bit Machines&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A vulnerability in the 32-bit compatibility layer for 64-bit systems was reported. It is caused by insecure allocation of user space memory when translating system call inputs to 64-bit. A stack pointer underflow can occur when using the “compat_alloc_user_space” method with an arbitrary length input.&lt;/p&gt;</description></item><item><title>OpenIndiana Announced, the fork to Oracle’s OpenSolaris!</title><link>https://www.thushanfernando.com/index.php/2010/09/15/openindiana-announced-the-fork-to-oracles-opensolaris/</link><pubDate>Wed, 15 Sep 2010 11:55:57 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2010/09/15/openindiana-announced-the-fork-to-oracles-opensolaris/</guid><description>&lt;p&gt;Earlier today, we had the &lt;a href="http://openindiana.org/announcement/"&gt;announcement for OpenIndiana&lt;/a&gt;. Aimed to be the &lt;a href="http://www.openindiana.org/"&gt;de-facto OpenSolaris Distribution&lt;/a&gt; that tries to be binary and package compatible with Solaris 11 &amp;amp; Solaris 11 Express. Its apart &lt;a href="http://www.illumos.org/"&gt;Illumos Community&lt;/a&gt; with 20 core developers providing (eventually) a stable branch with 100% free &amp;amp; open source distribution.&lt;/p&gt;
&lt;p&gt;Not only that, you can also download a &lt;a href="http://dlc-origin.openindiana.org/isos/147/"&gt;ready baked OpenIndiana distribution&lt;/a&gt; (based on ou_147) or if you’re like me and still using &lt;a href="http://www.genunix.org/dist/indiana/?C=M;O=D"&gt;OpenSolaris DEV snv_134&lt;/a&gt;, you can &lt;a href="http://wiki.openindiana.org:8080/display/oi/Installing+or+Upgrading"&gt;upgrade via the IPS management tools&lt;/a&gt;. Having said that though, I’m not going to rush and &lt;a href="/categories/zeus/"&gt;upgrade my zeus box&lt;/a&gt; anytime soon as it will take time to settle in, but you can take the baked ISO’s for a spin in a VM 🙂 I have found a few references to OpenSolaris still there and there is currently no xVM Xen (dom0) support nor lx (Linux) branded zones. Not to worry, keep an eye out on the &lt;a href="http://openindiana.org/home/roadmap/"&gt;roadmap&lt;/a&gt; and &lt;a href="http://openindiana.org/support/release-schedule/"&gt;release schedule&lt;/a&gt; for what they’re going to deliver.&lt;/p&gt;</description></item><item><title>What the flip are you looking at?</title><link>https://www.thushanfernando.com/index.php/2010/07/28/think-this-is-funny-think-this-is-some-kind-of-mother-flipping-joke-mother-flippers-think-everythings-a-mother-flipping-joke/</link><pubDate>Wed, 28 Jul 2010 11:50:50 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2010/07/28/think-this-is-funny-think-this-is-some-kind-of-mother-flipping-joke-mother-flippers-think-everythings-a-mother-flipping-joke/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/TwJheWwW7rw?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;From &lt;a href="http://www.denofgeek.com/television/546433/the_it_crowd_series_4_episode_5_1.html"&gt;The IT Crowd Season 4 Episode 5 – Bad Boys&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Git tips &amp; tricks collection</title><link>https://www.thushanfernando.com/notes/git-tricks/</link><pubDate>Wed, 12 May 2010 12:25:32 +1000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/notes/git-tricks/</guid><description>Common tricks in git and some helpful commands.</description></item><item><title>OpenSolaris FIX: Server refused to allocate pty (SSH)</title><link>https://www.thushanfernando.com/index.php/2010/05/11/opensolaris-fix-server-refused-to-allocate-pty-ssh/</link><pubDate>Tue, 11 May 2010 13:53:01 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2010/05/11/opensolaris-fix-server-refused-to-allocate-pty-ssh/</guid><description>&lt;p&gt;Just upgraded a friends OpenSolaris box to &lt;a href="http://pkg.opensolaris.org/dev/en/catalog.shtml?version=0.5.11%2C0.5.11-0.134&amp;amp;action=Browse"&gt;SNV_134&lt;/a&gt; (latest available from the &lt;a href="http://pkg.opensolaris.org/dev/en/index.shtml"&gt;OpenSolaris dev repository&lt;/a&gt;) and after rebooting we realised we couldn&amp;rsquo;t SSH into it.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Server refused to allocate pty
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;DOH! This is caused by a &lt;a href="http://defect.opensolaris.org/bz/show_bug.cgi?id=12380"&gt;known bug that has been around for a few builds now&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You&amp;rsquo;ll need to modify &lt;code&gt;/etc/minor_perm&lt;/code&gt; and add the following to the bottom of the file.&lt;/p&gt;</description></item><item><title>Ubuntu 10.04 and getting Sun JRE instead of OpenJDK</title><link>https://www.thushanfernando.com/index.php/2010/05/02/ubuntu-10-04-and-getting-sun-jre-instead-of-openjdk/</link><pubDate>Sat, 01 May 2010 14:26:31 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2010/05/02/ubuntu-10-04-and-getting-sun-jre-instead-of-openjdk/</guid><description>&lt;p&gt;If you’ve downloaded the latest &lt;a href="http://releases.ubuntu.com/lucid/"&gt;Ubuntu 10.04 Lucid Lynx&lt;/a&gt; you’d realise that they ship with the &lt;a href="http://openjdk.java.net/"&gt;OpenJDK&lt;/a&gt; instead of the Sun (Oracle) JRE. The Ubuntu team has decided to move the Sun Java bits to the partner repository which means we need to do a couple of things prior to getting it through &lt;code&gt;apt-get&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>The move to Android from WinMo and Android 2.2 (aka Froyo) coming soon!</title><link>https://www.thushanfernando.com/index.php/2010/04/26/the-move-to-android-from-winmo-and-android-2-2-aka-froyo-coming-soon/</link><pubDate>Mon, 26 Apr 2010 04:10:43 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2010/04/26/the-move-to-android-from-winmo-and-android-2-2-aka-froyo-coming-soon/</guid><description>&lt;p&gt;I switched from using Windows &lt;span style="text-decoration: line-through;"&gt;Mobile&lt;/span&gt; Phone devices to the &lt;a href="http://code.google.com/android/"&gt;Android platform&lt;/a&gt; a couple of months back with the &lt;a href="http://www.google.com/phone"&gt;Google Nexus One&lt;/a&gt;. With Microsoft following the lead of Apple in closing everything they’ve kept open for so long, there wasn’t much to look forward to with Windows Phone 7 (I was almost going to work on that team had I moved to the US a couple of years ago). Though, I’ve started writing for the new WP7 series via work, I’ve felt it was time to move on. Android is a breath of fresh air, I’ve toyed around with the G1 but the Nexus (whilst still a HTC device) is a joy to use as is the operating system. I actually have two Nexus’s these days, one is kept stock as my primary phone, whilst the other is using the &lt;a href="http://wiki.cyanogenmod.com/index.php/Main_Page"&gt;Cyanogen mod&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Google shows the power of HTML 5, ports Quake II to run in browser!</title><link>https://www.thushanfernando.com/index.php/2010/04/03/google-shows-the-power-of-html-5-ports-quake-ii-to-run-in-browser/</link><pubDate>Sat, 03 Apr 2010 00:25:43 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2010/04/03/google-shows-the-power-of-html-5-ports-quake-ii-to-run-in-browser/</guid><description>&lt;p&gt;The title says it all. Using the &lt;a href="http://bytonic.de/html/jake2.html"&gt;Jake2 port&lt;/a&gt; of &lt;a href="http://www.idsoftware.com/games/quake/quake2/"&gt;Quake II&lt;/a&gt; (to Java) the &lt;a href="http://timepedia.blogspot.com/2010/04/gwtquake-taking-web-to-next-level.html"&gt;bright sparks at Google have used GWT to bring Quake II to HTML 5&lt;/a&gt;.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/fyfu4OwjUEI?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;We started with the existing Jake2 Java port of the Quake II engine, then used the Google Web Toolkit (along with WebGL, WebSockets, and a lot of refactoring) to cross-compile it into Javascript. You can see the results in the video above — we were honestly a bit surprised when we saw it pushing over 30 frames per second on our laptops (your mileage may vary)!&lt;/p&gt;</description></item><item><title>Upgrading non-Global OpenSolaris Zone to latest BE</title><link>https://www.thushanfernando.com/index.php/2010/01/14/upgrading-non-global-opensolaris-zone-to-latest-be/</link><pubDate>Thu, 14 Jan 2010 11:22:52 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2010/01/14/upgrading-non-global-opensolaris-zone-to-latest-be/</guid><description>&lt;p&gt;I’ve been &lt;a href="http://pkg.opensolaris.org/dev/en/index.shtml"&gt;tracking the latest dev version&lt;/a&gt; of &lt;a href="http://www.opensolaris.org/"&gt;OpenSolaris&lt;/a&gt; (as of writing I just upgraded to &lt;a href="http://hub.opensolaris.org/bin/view/Community+Group+x_win/changelogs-nv_130"&gt;Nevada SNV 130&lt;/a&gt; ) because of &lt;a href="http://opensolaris.org/jive/thread.jspa?messageID=437092"&gt;some issues surrounding CIFS in the 2009.06 image&lt;/a&gt; of OpenSolaris.&lt;/p&gt;
&lt;p&gt;To update to the latest BE, simply update your packages and image-update (after &lt;a href="http://pkg.opensolaris.org/dev/en/index.shtml"&gt;configuring the dev repository&lt;/a&gt;!).&lt;/p&gt;
&lt;div class="code-toolbar shell-block" data-prompt-char="#"&gt;
&lt;div class="terminal-chrome"&gt;&lt;span class="dot dot-red"&gt;&lt;/span&gt;&lt;span class="dot dot-yellow"&gt;&lt;/span&gt;&lt;span class="dot dot-green"&gt;&lt;/span&gt;&lt;span class="terminal-title"&gt;bash&lt;/span&gt;&lt;button class="copy-btn" type="button" aria-label="Copy code" title="Copy"&gt;&lt;svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;&lt;rect x="9" y="9" width="13" height="13" rx="2" ry="2"&gt;&lt;/rect&gt;&lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="command-line-prompt" data-prompt-char="#"&gt;&lt;span data-user="root" data-host="zeus"&gt;&lt;/span&gt;&lt;span data-user="root" data-host="zeus"&gt;&lt;/span&gt;&lt;span data-user="root" data-host="zeus"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pkg refresh --full
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pkg image-update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;reboot&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;If you’ve &lt;a href="/index.php/2009/11/22/in-the-zone-creating-opensolaris-zones/"&gt;created zones in your OpenSolaris system&lt;/a&gt; after upgrading to the latest BE you will need to upgrade your zones as well. Here’s a simple guide on how to update a zone named &lt;code&gt;tomcat&lt;/code&gt; to the BE on the &lt;code&gt;global&lt;/code&gt; zone.&lt;/p&gt;</description></item><item><title>OpenSolaris cheatsheet</title><link>https://www.thushanfernando.com/index.php/2009/12/15/opensolaris-cheatsheet/</link><pubDate>Tue, 15 Dec 2009 12:20:14 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/12/15/opensolaris-cheatsheet/</guid><description>&lt;p&gt;Most excellent &lt;a href="http://opensolaris.wikia.com/wiki/OpenSolaris_Cheatsheet"&gt;cheatsheet for OpenSolaris&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>In the Zone, Creating OpenSolaris Zones.</title><link>https://www.thushanfernando.com/index.php/2009/11/22/in-the-zone-creating-opensolaris-zones/</link><pubDate>Sun, 22 Nov 2009 04:08:34 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/11/22/in-the-zone-creating-opensolaris-zones/</guid><description>&lt;p&gt;I’m really enjoying using &lt;a href="http://www.opensolaris.org"&gt;OpenSolaris&lt;/a&gt; as our server / &lt;a href="/categories/zeus/"&gt;NAS at home&lt;/a&gt;, its a different ball game to Linux but an interesting one never the less. One of the cool features of Solaris are the &lt;a href="http://www.sun.com/bigadmin/content/zones/"&gt;Solaris Zones&lt;/a&gt; (or &lt;a href="http://en.wikipedia.org/wiki/Solaris_Containers"&gt;Solaris Containers&lt;/a&gt;). Zones are an implementation of &lt;a href="http://en.wikipedia.org/wiki/Operating_system-level_virtualization" title="Operating system-level virtualization"&gt;operating system-level virtualisation&lt;/a&gt; where the kernel isolates multiple instances of the user-space available. Something like &lt;a href="http://en.wikipedia.org/wiki/Chroot"&gt;chroot&lt;/a&gt; but so much more. Unlike running under a &lt;a href="http://en.wikipedia.org/wiki/Hypervisor"&gt;hypervisor&lt;/a&gt; (like &lt;a href="/tags/vmware/"&gt;VMWare&lt;/a&gt; or &lt;a href="/tags/virtualbox"&gt;VirtualBox&lt;/a&gt;), Zone’s have very little (if any) overhead.&lt;/p&gt;</description></item><item><title>Part III: Zeus rebuilt and configured!</title><link>https://www.thushanfernando.com/index.php/2009/11/21/part-iii-zeus-rebuilt-and-configured/</link><pubDate>Sat, 21 Nov 2009 07:13:48 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/11/21/part-iii-zeus-rebuilt-and-configured/</guid><description>&lt;p&gt;I’ve spent the last month working with the newly built &lt;a href="/categories/zeus/"&gt;zeus server&lt;/a&gt; which is now powered by &lt;a href="http://www.opensolaris.org"&gt;OpenSolaris&lt;/a&gt; (&lt;a href="http://www.opensolaris.com/learn/features/whats-new/200906/"&gt;2009.06&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Here’s my final hardware specifications:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CPU:&lt;/strong&gt; &lt;a href="http://products.amd.com/en-ca/DesktopCPUDetail.aspx?id=487"&gt;AMD Athlon X2 5050e&lt;/a&gt; – 2.6Ghz (45W TDP, &lt;a href="http://www.amd.com/us-en/0,,3715_15781,00.html"&gt;AMD-V&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Motherboard:&lt;/strong&gt; &lt;a href="http://www.gigabyte.com.tw/Products/Motherboard/Products_Overview.aspx?ClassValue=Motherboard&amp;amp;ProductID=3038&amp;amp;ProductName=GA-MA790X-UD4P"&gt;Gigabyte GA-MA790X-UD4P&lt;/a&gt; (&lt;a href="http://www.amd.com/us/products/desktop/chipsets/7-series-discrete/Pages/amd-790x-chipset.aspx"&gt;AMD 790X Chipset&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RAM:&lt;/strong&gt; 2x ****&lt;a href="http://www.corsair.com/_datasheets/TWIN2X4096-6400C5.pdf"&gt;Corsair TWIN2X4096-6400C5&lt;/a&gt; (4Gb kit x 2 = 8Gb)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Graphics:&lt;/strong&gt; &lt;a href="http://asus.com/product.aspx?P_ID=D2OPpSFCnK1DAaHA&amp;amp;templete=2"&gt;ASUS 9400GT&lt;/a&gt; PCI-Express&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hard Disks:&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;rpool&lt;/code&gt; – 2x WD740ADFD – 74Gb 10K RPM, 16Mb Cache (mirror’d)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tank&lt;/code&gt; – 6x &lt;a href="http://www.wdc.com/en/products/products.asp?driveid=503"&gt;WD1002FBYS&lt;/a&gt; – 1TB, 7200RPM, 32Mb Cache (raidz)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;base&lt;/code&gt; – 2x WD7500AAKS – 750Gb, 7200RPM, 16Mb (mirror’d)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Addon cards:&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;SATA – Silicon Image, Inc. SiI 3132 Serial ATA Raid II Controller&lt;/li&gt;
&lt;li&gt;NICs – 2x Intel Corporation 82545GM Gigabit Ethernet Controller (e1000g)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I’ve finally managed to get the &lt;a href="http://www.sun.com/bigadmin/hcl/data/systems/details/39463.html"&gt;GA-MA790X-UD4P on the OpenSolaris HCL list&lt;/a&gt; – woo! Unfortunately the onboard NIC will not work in the 2009.06 release even though it is detected:&lt;/p&gt;</description></item><item><title>Some changes in .NET BCL 4.0</title><link>https://www.thushanfernando.com/index.php/2009/11/21/some-changes-in-net-bcl-4-0/</link><pubDate>Sat, 21 Nov 2009 06:24:49 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/11/21/some-changes-in-net-bcl-4-0/</guid><description>&lt;p&gt;I’ve been porting a few products to &lt;a href="http://www.microsoft.com/NET/"&gt;.NET 4.0&lt;/a&gt; and came across some cool &lt;a href="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx"&gt;new additions in .NET 4.0&lt;/a&gt; which will be quite useful for developers.&lt;/p&gt;
&lt;h3 id="strings"&gt;Strings&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.string.isnullorwhitespace%28VS.100%29.aspx"&gt;&lt;code&gt;String.IsNullOrWhiteSpace&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Like the &lt;a href="http://msdn.microsoft.com/en-us/library/system.string.isnullorempty(VS.100).aspx"&gt;&lt;code&gt;String.IsNullOrEmpty&lt;/code&gt;&lt;/a&gt; method, this new helper method will check whether the string is null, empty or contains only whitespace characters (from &lt;a href="http://msdn.microsoft.com/en-us/library/system.char.iswhitespace(VS.100).aspx"&gt;&lt;code&gt;Char.IsWhiteSpace&lt;/code&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.text.stringbuilder.clear(VS.100).aspx"&gt;&lt;code&gt;StringBuilder.Clear()&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Clear a StringBuilder contents instead of (the currently) setting of length = 0.&lt;/p&gt;</description></item><item><title>ZFS gets deduplication</title><link>https://www.thushanfernando.com/index.php/2009/11/03/zfs-gets-deduplication/</link><pubDate>Tue, 03 Nov 2009 00:47:18 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/11/03/zfs-gets-deduplication/</guid><description>&lt;p&gt;&lt;a href="http://blogs.sun.com/bonwick/en_US/entry/zfs_dedup"&gt;ZFS now has deduplication support&lt;/a&gt; which is as easy as just setting a property on the file system.&lt;/p&gt;
&lt;div class="code-toolbar shell-block" data-prompt-char="$"&gt;
&lt;div class="terminal-chrome"&gt;&lt;span class="dot dot-red"&gt;&lt;/span&gt;&lt;span class="dot dot-yellow"&gt;&lt;/span&gt;&lt;span class="dot dot-green"&gt;&lt;/span&gt;&lt;span class="terminal-title"&gt;bash&lt;/span&gt;&lt;button class="copy-btn" type="button" aria-label="Copy code" title="Copy"&gt;&lt;svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;&lt;rect x="9" y="9" width="13" height="13" rx="2" ry="2"&gt;&lt;/rect&gt;&lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="command-line-prompt" data-prompt-char="$"&gt;&lt;span data-user="thushan" data-host="zeus"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;zfs &lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;dedup&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;on tank/src&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Read &lt;a href="http://blogs.sun.com/bonwick/en_US/"&gt;Jeff Bonwick’s&lt;/a&gt; (the supremo source for ZFS) article as it covers everything you’d ever want to know about what deduplication is and the various strategies behind it. Can’t wait for it to be implemented in &lt;a href="http://www.genunix.org/dist/indiana/"&gt;OpenSolaris 2010.02&lt;/a&gt; its already been &lt;a href="http://hg.genunix.org/onnv-gate.hg/rev/e2081f502306"&gt;integrated into the ON source base&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Quick Fix: jQuery $.getJSON() fails in IE6 &amp; IE7</title><link>https://www.thushanfernando.com/index.php/2009/10/27/quickfix-jquery-getjson-fails-in-ie6-ie7/</link><pubDate>Tue, 27 Oct 2009 07:44:14 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/10/27/quickfix-jquery-getjson-fails-in-ie6-ie7/</guid><description>&lt;p&gt;Had a nasty issue with jQuery + Json + IEx just now – still at work because of it!&lt;/p&gt;
&lt;p&gt;This bit of code works perfectly fine on Firefox and Chrome:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;function onUnitsModified() {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; $.getJSON(&amp;#34;&amp;lt;%=Url.Action(&amp;#34;GetTotalUnitCount&amp;#34;, &amp;#34;ProjectReaper&amp;#34;)%&amp;gt;&amp;#34;, null, function(result) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if(result &amp;gt; 0)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; // Do stuffs here
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; });
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; return true;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;But in IE we’ve come to realise that the first hit is successful, future Json requests ones are not hitting the ASP.NET MVC actions (I put a breakpoint). You could append a time stamp to get rid of this annoying caching bug, but alternatively you can use the &lt;code&gt;ajaxSetup&lt;/code&gt; options to disable caching.&lt;/p&gt;</description></item><item><title>Part II: Rebuilding ZEUS – The Operating System, FileSystem &amp; Virtualisation</title><link>https://www.thushanfernando.com/index.php/2009/10/18/part-ii-rebuilding-zeus-the-operating-system-filesystem-virtualisation/</link><pubDate>Sun, 18 Oct 2009 01:42:39 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/10/18/part-ii-rebuilding-zeus-the-operating-system-filesystem-virtualisation/</guid><description>&lt;p&gt;Now that &lt;a href="/index.php/2009/10/06/part-i-rebuilding-zeus-the-journey-of-training-the-next-home-server/"&gt;I’ve decided what I want out of the server&lt;/a&gt; (and &lt;a href="/index.php/2009/10/14/rebuilding-zeus-part-i-5-change-of-heart-change-of-hardware/"&gt;the hardware I’ve got&lt;/a&gt;), its time to workout what operating system to run the system on. Currently, ZEUS is running on &lt;a href="https://wiki.ubuntu.com/GutsyGibbon"&gt;Ubuntu Gutsy (7.10)&lt;/a&gt; which is running &lt;a href="http://en.wikipedia.org/wiki/Logical_Volume_Manager_(Linux)"&gt;LVM&lt;/a&gt; with an &lt;a href="http://oss.sgi.com/projects/xfs/"&gt;XFS volume&lt;/a&gt; holding approximately 2.5Tb worth of data. There’s a &lt;a href="/index.php/2009/01/25/maintaining-your-xfs-with-xfs-fsr/"&gt;cron job that defrags the XFS volume&lt;/a&gt; to keep things in order.&lt;/p&gt;</description></item><item><title>ZFS Reference &amp; Cheat Sheet</title><link>https://www.thushanfernando.com/notes/zfs-cheatsheet/</link><pubDate>Sun, 18 Oct 2009 01:35:32 +1000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/notes/zfs-cheatsheet/</guid><description>A working ZFS cheat sheet covering pools, datasets, snapshots, send/recv, compression and the bits you forget at 2am. Started on OpenSolaris around 2008, kept current with OpenZFS on FreeBSD and Proxmox.</description></item><item><title>FIX: OpenSolaris Package Manager fails after adding Extras Repository</title><link>https://www.thushanfernando.com/index.php/2009/10/16/fix-opensolaris-package-manager-fails-after-adding-extras-repository/</link><pubDate>Fri, 16 Oct 2009 11:21:28 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/10/16/fix-opensolaris-package-manager-fails-after-adding-extras-repository/</guid><description>&lt;p&gt;After &lt;a href="/index.php/2009/10/16/setting-up-opensolaris-extras-repository-for-virtualbox-true-type-fonts-flash-javafx-sdk/"&gt;setting up the extras repository&lt;/a&gt; for &lt;a href="http://www.opensolaris.org/"&gt;OpenSolaris&lt;/a&gt; I tried to install &lt;a href="http://www.virtualbox.org/"&gt;VirtualBox&lt;/a&gt; via the package manager.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;thushan@zeusy:~$ pfexec pkg install virtualbox
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Traceback (most recent call last):
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; File &amp;#34;/usr/bin/pkg&amp;#34;, line 2598, in ?
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; __ret = main_func()
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; File &amp;#34;/usr/bin/pkg&amp;#34;, line 2541, in main_func
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; return install(mydir, pargs)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; File &amp;#34;/usr/bin/pkg&amp;#34;, line 710, in install
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; update_index=update_index)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; File &amp;#34;/usr/lib/python2.4/vendor-packages/pkg/client/api.py&amp;#34;, line 203, in plan_install
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; self.log_operation_end(error=e)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; File &amp;#34;/usr/lib/python2.4/vendor-packages/pkg/client/api.py&amp;#34;, line 1410, in log_operation_end
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; self.img.history.log_operation_end(error=error, result=result)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; File &amp;#34;/usr/lib/python2.4/vendor-packages/pkg/client/history.py&amp;#34;, line 680, in log_operation_end
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; self.operation_result = result
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; File &amp;#34;/usr/lib/python2.4/vendor-packages/pkg/client/history.py&amp;#34;, line 279, in __setattr__
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; raise AttributeError(&amp;#34;&amp;#39;history&amp;#39; object attribute &amp;#39;%s&amp;#39; &amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;AttributeError: &amp;#39;history&amp;#39; object attribute &amp;#39;operation_result&amp;#39; cannot be set before &amp;#39;operation_name&amp;#39;.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pkg: This is an internal error. Please let the developers know about this
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;problem by filing a bug at http://defect.opensolaris.org and including the
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;above traceback and this message. The version of pkg(5) is &amp;#39;87d6ba4c8e1c&amp;#39;.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Uh-oh, what the hell did I break now I thought? After some messing about I realised the time on the machine was a few hours behind – this was just installed on the &lt;a href="/index.php/2009/10/14/rebuilding-zeus-part-i-5-change-of-heart-change-of-hardware/"&gt;new hardware I picked up the other day&lt;/a&gt;, the certificates were timestamped and I figured this was probably a clash of the space-time continuum. Instead of opting to manually set the time, I let it &lt;a href="/index.php/2009/10/04/keeping-track-of-time-with-ntp-in-linux/"&gt;sync (periodically) with an NTP Server local to us here in Melbourne&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Setting up OpenSolaris Extras Repository for VirtualBox, True-Type Fonts, Flash &amp; JavaFX SDK</title><link>https://www.thushanfernando.com/index.php/2009/10/16/setting-up-opensolaris-extras-repository-for-virtualbox-true-type-fonts-flash-javafx-sdk/</link><pubDate>Fri, 16 Oct 2009 11:03:45 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/10/16/setting-up-opensolaris-extras-repository-for-virtualbox-true-type-fonts-flash-javafx-sdk/</guid><description>&lt;p&gt;I’ve been messing about with &lt;a href="http://www.opensolaris.org/"&gt;OpenSolaris&lt;/a&gt; (you’ll know why soon!) and decided to install the &lt;a href="https://pkg.sun.com/register/"&gt;OpenSolaris Extras repository&lt;/a&gt; so I can grab the latest &lt;a href="http://www.virtualbox.org/"&gt;VirtualBox&lt;/a&gt; install from the repository. This repository has the following packages (as of writing) and is recommended if you plan on using VirtualBox:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;NAME (PUBLISHER) VERSION STATE UFIX
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SUNWadmj (extra) 0.5.11-0.111 known ----
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SUNWjsnmp (extra) 0.5.11-0.111 known ----
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SUNWwbapi (extra) 0.5.11-0.111 known ----
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SUNWwbcou (extra) 0.5.11-0.111 known ----
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SUNWwbdev (extra) 0.5.11-0.111 known ----
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;develop/java/javafx-sdk (extra) 1.2.0.233-0.111 known ----
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;service/compute/sungridengine (extra) 6.2.2-0.111 known ----
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;service/compute/sungridengine/arco (extra) 6.2.2-0.111 known ----
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;service/compute/sungridengine/domainmanager (extra) 6.2.2-0.111 known ----
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;system/font/truetype/ttf-fonts-core (extra) 1.0-0.111 known ----
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;system/iiim/ja/atok (extra) 17-0.111 known ----
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;system/iiim/ja/wnn8 (extra) 8-0.111 known ----
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;virtualbox (extra) 3.0.8-0.101 known ----
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;virtualbox/kernel (extra) 3.0.8-0.101 known ----
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;web/firefox/plugin/flash (extra) 10.0.32.18-0.111 known ----
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;So what do you need to get these freebies? (&lt;a href="https://pkg.sun.com/register/help#comment"&gt;source help&lt;/a&gt;)&lt;/p&gt;</description></item><item><title>Rebuilding Zeus – Part I.5: Change of heart, change of hardware.</title><link>https://www.thushanfernando.com/index.php/2009/10/14/rebuilding-zeus-part-i-5-change-of-heart-change-of-hardware/</link><pubDate>Wed, 14 Oct 2009 13:06:06 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/10/14/rebuilding-zeus-part-i-5-change-of-heart-change-of-hardware/</guid><description>&lt;p&gt;After a bit of digging around, &lt;a href="/index.php/2009/10/06/part-i-rebuilding-zeus-the-journey-of-training-the-next-home-server/#hardware"&gt;my original spec’d hardware I’ve decided is too much&lt;/a&gt; for a boxen that will be on 24×7, especially with the rates for electricity going up next year – every little Watt counts. The &lt;a href="http://processorfinder.intel.com/details.aspx?sSpec=SLA9V"&gt;existing 65W CPU&lt;/a&gt; isn’t ideal, instead I’m opting for a 45W CPU instead and this means – looking at the lineup, its going to be a walk down &lt;a href="http://www.amd.com"&gt;AMD&lt;/a&gt; way. Less watts, less heat and less noise, noice! See &lt;a href="http://www.firingsquad.com/hardware/amd_cpu_roadmap_update_2008/page2.asp"&gt;AMD’s product roadmap for 2010-2011&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Part I: Rebuilding ZEUS, the journey of training the next home server</title><link>https://www.thushanfernando.com/index.php/2009/10/06/part-i-rebuilding-zeus-the-journey-of-training-the-next-home-server/</link><pubDate>Tue, 06 Oct 2009 13:30:34 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/10/06/part-i-rebuilding-zeus-the-journey-of-training-the-next-home-server/</guid><description>&lt;p&gt;I’ve been looking at upgrading our existing home server from the archaic (and unsupported!) Ubuntu Gutsy (because I was feeling gutsy at the time) to something newer, fresher and that will last me at least another 2 years. This is purely for my documentation.&lt;/p&gt;
&lt;h2 id="current-setup"&gt;Current Setup&lt;/h2&gt;
&lt;p&gt;Currently running an AMD setup with &lt;a href="https://wiki.ubuntu.com/GutsyGibbon"&gt;Ubuntu Gutsy (7.10)&lt;/a&gt; – I didn’t think it would last this long, honest! Ubuntu 6.06 had too many issues with the hardware/driver incompatibilities.&lt;/p&gt;</description></item><item><title>Thunderbird 3.0 Beta 4 fixes corrupted summary files!</title><link>https://www.thushanfernando.com/index.php/2009/10/06/thunderbird-3-0-beta-4-fixes-corrupted-summary-files/</link><pubDate>Tue, 06 Oct 2009 02:32:32 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/10/06/thunderbird-3-0-beta-4-fixes-corrupted-summary-files/</guid><description>&lt;p&gt;Since ditching Outlook after &lt;span style="text-decoration: line-through;"&gt;Outlook 2003&lt;/span&gt; (Outlook 2007, 2003 was fine in comparison) came around I’ve been using &lt;a href="http://www.mozillamessaging.com/thunderbird/"&gt;Mozilla Thunderbird&lt;/a&gt; as my ever faithful email client. Its fast, lightweight and not as bloated as Outlook is – couple it with &lt;a href="http://www.mozilla.org/projects/calendar/lightning/index.html"&gt;Lightning&lt;/a&gt; and you’ll be laughing!&lt;/p&gt;
&lt;p&gt;&lt;a href="https://developer.mozilla.org/en/Thunderbird_3_for_users"&gt;Thunderbird 3 brings some cool features&lt;/a&gt; for users with the biggest being tabbed message windows (and calendars etc). If you downloaded the new 3.x betas &lt;a href="http://www.mozillamessaging.com/en-US/thunderbird/early_releases/downloads/"&gt;make sure you get Beta 4&lt;/a&gt;, the long standing issue with the Messagebox Summary file being corrupt has been finally addressed. Its been a pet hate for a long time now, sometimes searching a folder can corrupt an MSF (means having to go and remove the MSF so it rebuilds the index!), no more! Thunderbird will now fixup any problematic MSF files in the background, yay!&lt;/p&gt;</description></item><item><title>Keeping track of time with ntp in Linux</title><link>https://www.thushanfernando.com/index.php/2009/10/04/keeping-track-of-time-with-ntp-in-linux/</link><pubDate>Sun, 04 Oct 2009 10:51:27 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/10/04/keeping-track-of-time-with-ntp-in-linux/</guid><description>&lt;p&gt;So today &lt;a href="http://alldownunder.com/oz-k/date/australian-daylight-savings.htm"&gt;we had to move our clocks forward 1 hour&lt;/a&gt; (at 2am). Just realised that our Ubuntu box (&lt;code&gt;zeus&lt;/code&gt;) was not displaying the right time to begin with (prior to the change). So to keep your computer clock in time with the world, use &lt;a href="http://www.eecis.udel.edu/~mills/database/rfc/rfc1305/"&gt;ntp&lt;/a&gt;.&lt;/p&gt;
&lt;div class="code-toolbar shell-block" data-prompt-char="$"&gt;
&lt;div class="terminal-chrome"&gt;&lt;span class="dot dot-red"&gt;&lt;/span&gt;&lt;span class="dot dot-yellow"&gt;&lt;/span&gt;&lt;span class="dot dot-green"&gt;&lt;/span&gt;&lt;span class="terminal-title"&gt;bash&lt;/span&gt;&lt;button class="copy-btn" type="button" aria-label="Copy code" title="Copy"&gt;&lt;svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;&lt;rect x="9" y="9" width="13" height="13" rx="2" ry="2"&gt;&lt;/rect&gt;&lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="command-line-prompt" data-prompt-char="$"&gt;&lt;span data-user="thushan" data-host="zeus"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo ntpdate &lt;span class="o"&gt;[&lt;/span&gt;timeserver&lt;span class="o"&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;I use the Melbourne AAPT time-server but you can &lt;a href="http://www.pool.ntp.org/zone/@"&gt;find another here&lt;/a&gt; or if your an aussie, &lt;a href="http://info.connect.com.au/docs/ntp/index.html"&gt;use these&lt;/a&gt;:&lt;/p&gt;</description></item><item><title>Learning Scala from a Java perspective</title><link>https://www.thushanfernando.com/index.php/2009/10/01/learning-scala-from-a-java-perspective/</link><pubDate>Thu, 01 Oct 2009 09:47:18 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/10/01/learning-scala-from-a-java-perspective/</guid><description>&lt;p&gt;I’ve been reading up and keeping abreast of both the .NET world and Java world this year, both have some mighty exciting advancements coming – teaser: &lt;a href="http://www.youtube.com/watch?v=Ky-JTAPhmUo"&gt;its all about the Pentiums&lt;/a&gt;! I’ll try and cover some of my research into parallel work later.&lt;/p&gt;
&lt;p&gt;One of the other areas I’ve been keen on (after hearing from &lt;a href="http://www.hsd.com.au"&gt;the leader of our pack&lt;/a&gt;, &lt;a href="http://wolfeidau.blogspot.com/"&gt;Mr Wolfe&lt;/a&gt;) was &lt;a href="http://www.scala-lang.org/"&gt;Scala&lt;/a&gt; and came across a incredibly useful resource by &lt;a href="http://www.codecommit.com/"&gt;Daniel Spiewak&lt;/a&gt; on &lt;a href="http://www.codecommit.com/blog/scala/roundup-scala-for-java-refugees"&gt;looking at Scala from a Java developers perspective&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>InvokeRequired with anonymous delegates for threading in WinForms!</title><link>https://www.thushanfernando.com/index.php/2009/09/12/invokerequired-with-anonymous-delegates-for-threading-in-winforms/</link><pubDate>Sat, 12 Sep 2009 12:07:00 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/09/12/invokerequired-with-anonymous-delegates-for-threading-in-winforms/</guid><description>&lt;p&gt;Here’s a little cookie from the cookie jar. To quote the legendary &lt;a href="http://www.yoda.arachsys.com/"&gt;Jon Skeet&lt;/a&gt; from &lt;a href="http://www.yoda.arachsys.com/csharp/threads/winforms.shtml"&gt;Threading with Windows Forms&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;There are two different ways of invoking a method on the UI thread, one synchronous (&lt;code&gt;Invoke&lt;/code&gt;) and one asynchronous (&lt;code&gt;BeginInvoke&lt;/code&gt;). They work in much the same way – you specify a delegate and (optionally) some arguments, and a message goes on the queue for the UI thread to process. If you use &lt;code&gt;Invoke&lt;/code&gt;, the current thread will block until the delegate has been executed. If you use &lt;code&gt;BeginInvoke&lt;/code&gt;, the call will return immediately. If you need to get the return value of a delegate invoked asynchronously, you can use &lt;code&gt;EndInvoke&lt;/code&gt; with the &lt;code&gt;IAsyncResult&lt;/code&gt; returned by &lt;code&gt;BeginInvoke&lt;/code&gt; to wait until the delegate has completed and fetch the return value.&lt;/p&gt;</description></item><item><title>ANTS Memory Profiler 5.1 Review</title><link>https://www.thushanfernando.com/index.php/2009/09/07/ants-memory-profiler-5-1-review/</link><pubDate>Mon, 07 Sep 2009 11:27:25 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/09/07/ants-memory-profiler-5-1-review/</guid><description>&lt;p&gt;I recently took a look at the &lt;a href="http://www.red-gate.com/products/ants_memory_profiler/index.htm?utm_source=df&amp;amp;utm_medium=article&amp;amp;utm_content=amp5-review&amp;amp;utm_campaign=antsmemoryprofiler"&gt;ANTS Memory Profiler 5.1&lt;/a&gt; from &lt;a href="http://www.red-gate.com"&gt;RedGate software&lt;/a&gt; and posted &lt;a href="https://www.developerfusion.com/review/59466/ants-memory-profiler-51/"&gt;my thoughts on it at the DeveloperFusion market place&lt;/a&gt;. Having toyed with several profilers in the past – &lt;a href="http://en.wikipedia.org/wiki/DevPartner"&gt;DevPartner from Compuware&lt;/a&gt; (who’s now someone else &lt;a href="http://www.microfocus.com/products/DevPartner/index.asp"&gt;who now owns the product&lt;/a&gt;) being my primary love since I first came across their .NET version wayyy back in 2002 when I was writing for &lt;a href="http://web.archive.org/web/20031010181943/http://www.developer.net.au/"&gt;Australian Developer&lt;/a&gt; – see ‘**&lt;acronym title="Active Server Pages"&gt;ASP&lt;/acronym&gt; .NET and the Web: Optimising Application Performance’ (**which became &lt;a href="http://web.archive.org/web/20060818154728/http://www.developer.net.au/"&gt;International Developer&lt;/a&gt; which &lt;a href="http://www.developer.net.au/"&gt;are now no longer around&lt;/a&gt;!).&lt;/p&gt;</description></item><item><title>Mounting and activating LVM Volumes from BootCD to recover data in linux</title><link>https://www.thushanfernando.com/index.php/2009/09/02/mounting-and-activating-lvm-volumes-from-bootcd-to-recover-data-in-linux/</link><pubDate>Wed, 02 Sep 2009 11:44:11 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/09/02/mounting-and-activating-lvm-volumes-from-bootcd-to-recover-data-in-linux/</guid><description>&lt;p&gt;I’ve been working heavily with &lt;a href="http://www.redhat.com/rhel/"&gt;Red Hat Enterprise Linux&lt;/a&gt; (and subsequently &lt;a href="http://www.centos.org/"&gt;CentOS&lt;/a&gt;) the past few months (shh! dont tell my &lt;a href="http://www.jamescrowley.co.uk/"&gt;MSFT homey&lt;/a&gt;!) and one of the great things about CentOS and RHEL is that they both install using &lt;a href="http://en.wikipedia.org/wiki/Logical_Volume_Manager_%28Linux%29"&gt;LVM&lt;/a&gt; - which is a helluvah lot easier when time passes and you realise your running out of space on a drive.&lt;/p&gt;</description></item><item><title>Quick Tip: String to Enum with C# Generics</title><link>https://www.thushanfernando.com/index.php/2009/08/03/quick-tip-converting-an-enum-from-a-string-using-c-generics/</link><pubDate>Mon, 03 Aug 2009 07:10:19 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/08/03/quick-tip-converting-an-enum-from-a-string-using-c-generics/</guid><description>&lt;p&gt;Here’s a quick tip for you. Converting a string back to an Enum using Generics in C#.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="n"&gt;T&lt;/span&gt; &lt;span class="n"&gt;ToEnum&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;T&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;(&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="k"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;T&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;Enum&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;typeof&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;T&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="k"&gt;value&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Nice and easy, here’s an example usage – very lame I know.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Original enum&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;UriFormat&lt;/span&gt; &lt;span class="n"&gt;uriFormat&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;UriFormat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SafeUnescaped&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Persisted value&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;uriFormatText&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;uriFormat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ToString&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Back to the enum from the persisted value&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;UriFormat&lt;/span&gt; &lt;span class="n"&gt;uriFormatParsed&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ToEnum&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;UriFormat&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;(&lt;/span&gt;&lt;span class="n"&gt;uriFormatText&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;uriFormat&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;uriFormatText&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;uriFormatParsed&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Noice?&lt;/p&gt;</description></item><item><title>Linux Btrfs: A short history of btrfs</title><link>https://www.thushanfernando.com/index.php/2009/08/02/linux-btrfs-a-short-history-of-btrfs/</link><pubDate>Sun, 02 Aug 2009 03:25:46 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/08/02/linux-btrfs-a-short-history-of-btrfs/</guid><description>&lt;p&gt;&lt;a href="http://valerieaurora.org/"&gt;Valerie Aurora&lt;/a&gt; (such a cool name!) &lt;a href="http://lwn.net/Articles/342892/"&gt;takes a look into the history of Btrfs&lt;/a&gt;, well written and easy to follow.&lt;/p&gt;</description></item><item><title>VirtualBox 3.0 New Features</title><link>https://www.thushanfernando.com/index.php/2009/06/25/virtualbox-3-0-brings-some-exciting-new-bits-o-functionality/</link><pubDate>Thu, 25 Jun 2009 12:00:43 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/06/25/virtualbox-3-0-brings-some-exciting-new-bits-o-functionality/</guid><description>&lt;p&gt;&lt;a href="http://www.sun.com"&gt;Sun&lt;/a&gt; is prepping up the release of &lt;a href="http://www.virtualbox.org/"&gt;VirtualBox&lt;/a&gt; 3.0 which should be out soonishly (before the end of the month if everything is on track!). Amongst the top new bits of functionality is the guest multi-processing (SMP) support, you can now offer your virtual machines upto 32 virtual CPUs, which at last count was the highest by any hypervisor (VMWare can offer a maximum of 2). Not only that, but Windows guests get Direct3D 9 acceleration, bi-directional OVF support (still need to sysprep drivers) and OpenGL 2.0 support for Linux, Solaris &amp;amp; Windows guests.&lt;/p&gt;</description></item><item><title>.NET Tools: NDepend Static Analysis Review</title><link>https://www.thushanfernando.com/index.php/2009/06/01/net-tools-ndepend-static-analysis-tool-leave-t-pain-behind/</link><pubDate>Sun, 31 May 2009 14:41:51 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/06/01/net-tools-ndepend-static-analysis-tool-leave-t-pain-behind/</guid><description>&lt;p&gt;The release of &lt;a href="http://blogs.msdn.com/fxcop/archive/2007/10/03/new-for-visual-studio-2008-code-metrics.aspx"&gt;Visual Studio 2008 brought along Code Metrics to the IDE&lt;/a&gt;‘s ‘out-of-the-box’ functionality (I’ve been overusing that phrase thanks to our resident CRM Consultant at work!). This was a major boon for .NET developers to get a clear idea of health of what they write, Visual Studio 2005 gave &lt;a href="http://msdn.microsoft.com/en-us/library/bb429476.aspx"&gt;FxCop&lt;/a&gt; integration that provided much needed &lt;a href="http://en.wikipedia.org/wiki/Static_code_analysis"&gt;static code analysis&lt;/a&gt; for .NET assemblies. Together these tools provide a peek into the deep depths of the project your working on, it benchmarks the correctness, performance and security implications, localisation, design issues amongst other metrics. Damn useful if you’ve inherited – as I often do in my consultancy life – someone else’s code base with little or no documentation. They say code is the best documentation right? (oh gosh, not one of those projects!)&lt;/p&gt;</description></item><item><title>Bing Bing Bing Bing Bing: Microsoft launches Bing.</title><link>https://www.thushanfernando.com/index.php/2009/05/30/bing-bing-bing-bing-bing-microsoft-launches-bing/</link><pubDate>Sat, 30 May 2009 06:41:33 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/05/30/bing-bing-bing-bing-bing-microsoft-launches-bing/</guid><description>&lt;p&gt;A few weeks ago saw the launch of &lt;a href="/index.php/2009/05/19/wolfram-alpha-launches/"&gt;Wolfram Research Alpha&lt;/a&gt;, a natural search engine which could do &lt;a href="http://www53.wolframalpha.com/input/?i=88mph+to+kmh"&gt;some funky things&lt;/a&gt;. Now Microsoft have stepped up from their previous attempts – &lt;a href="http://en.wikipedia.org/wiki/Ms._Dewey"&gt;Ms Dewey&lt;/a&gt; (&lt;a href="http://janinagavankar.com/"&gt;Janina Gavankar&lt;/a&gt;, who’s &lt;a href="http://images.google.com.au/images?q=Janina+Gavankar&amp;amp;oe=utf-8&amp;amp;rls=org.mozilla:en-US:official&amp;amp;client=firefox-a&amp;amp;um=1&amp;amp;ie=UTF-8&amp;amp;ei=h9EgSo_aGtaCkQWNurGRBQ&amp;amp;sa=X&amp;amp;oi=image_result_group&amp;amp;resnum=1&amp;amp;ct=title"&gt;quite a hottie&lt;/a&gt;! reminds me of Tiffany) and now we have the final release of &lt;a href="http://www.bing.com/"&gt;Bing&lt;/a&gt; (aka codenamed Kumo) which is going to be a behemoth search engine.&lt;/p&gt;</description></item><item><title>HOWTO: Importing Thunderbird contacts into GMail</title><link>https://www.thushanfernando.com/index.php/2009/05/25/howto-importing-thunderbird-contacts-into-gmail/</link><pubDate>Mon, 25 May 2009 13:22:07 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/05/25/howto-importing-thunderbird-contacts-into-gmail/</guid><description>&lt;p&gt;I’ve moved my entire mailbox over to &lt;a href="http://mail.google.com"&gt;Gmail&lt;/a&gt; now, previously I was a firm believer in IMAP and didnt move to Gmail fully sooner because of the lack of folders – unlike in real life where &lt;a href="http://www.flickr.com/photos/thushan/3451487833/"&gt;my life is usually a mess&lt;/a&gt;, I keep my mail quite organised. Whats more, the junk mail filters are second to none.&lt;/p&gt;</description></item><item><title>Wolfram Alpha Launches!</title><link>https://www.thushanfernando.com/index.php/2009/05/19/wolfram-alpha-launches/</link><pubDate>Tue, 19 May 2009 00:13:40 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/05/19/wolfram-alpha-launches/</guid><description>&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Stephen_Wolfram"&gt;Steven Wolfram&lt;/a&gt; of &lt;a href="http://en.wikipedia.org/wiki/Mathematica"&gt;Mathematica&lt;/a&gt; fame (and pure genius) has launched &lt;a href="http://www.wolframalpha.com/"&gt;Wolfram Alpha&lt;/a&gt;, its a ‘computational knowledge engine’ and quite a cool tool too! Taking on the big giants &lt;a href="http://www.google.com"&gt;Google&lt;/a&gt; and &lt;a href="http://www.yahoo.com"&gt;Yahoo&lt;/a&gt;, &lt;a href="http://www.live.com"&gt;Live&lt;/a&gt; etc, this bit of kit allows you to search using natural language processing (NLP).&lt;/p&gt;
&lt;p&gt;Let me demonstrate, suppose you want to know &lt;a href="http://www53.wolframalpha.com/input/?i=who+is+the+prime+minister+of+bulgaria"&gt;who the prime minister of Bulgaria&lt;/a&gt; is, it will not only give you the answer but also some background information on the person.&lt;/p&gt;</description></item><item><title>UPDATE: Installing CentOS 5.x on ASUS P5WDH-Deluxe</title><link>https://www.thushanfernando.com/index.php/2009/05/15/update-installing-centos-5x-on-asus-p5wdh-deluxe/</link><pubDate>Fri, 15 May 2009 11:23:52 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/05/15/update-installing-centos-5x-on-asus-p5wdh-deluxe/</guid><description>&lt;p&gt;Earlier I mentioned that getting &lt;a href="http://www.centos.org"&gt;CentOS 5.x&lt;/a&gt; to &lt;a href="/index.php/2009/05/12/booting-centos-53-on-asus-p5wdh-deluxe/"&gt;install on the&lt;/a&gt; &lt;a href="http://www.asus.com.au/products.aspx?l1=3&amp;amp;l2=11&amp;amp;l3=248&amp;amp;model=1198&amp;amp;modelmenu=1"&gt;ASUS P5WDH-Deluxe&lt;/a&gt; motherboard wasn’t as easy as I first thought and suggested you disable a few things (&lt;a href="/index.php/2009/05/12/booting-centos-53-on-asus-p5wdh-deluxe/"&gt;mentioned in the previous post&lt;/a&gt;). However today I’ve got another solution thats less headachey.&lt;/p&gt;
&lt;p&gt;Forget disabling ACPI and booting with irqpoll, instead you will need to disable the onboard JMicron controller (mine was always disabled!) and make sure if your using a PATA optical drive you use the ICHR7 port – that&amp;rsquo;s the blue IDE port in the middle of the board at the bottom at the picture.&lt;/p&gt;</description></item><item><title>Booting CentOS 5.3 on ASUS P5WDH Deluxe</title><link>https://www.thushanfernando.com/index.php/2009/05/12/booting-centos-53-on-asus-p5wdh-deluxe/</link><pubDate>Tue, 12 May 2009 10:43:28 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/05/12/booting-centos-53-on-asus-p5wdh-deluxe/</guid><description>&lt;p&gt;As my journey to find the perfect &lt;a href="http://www.developerfusion.com/community/blog-entry/8392528/rebuilding-zeus-part-1-preliminary-research-and-installing-ubuntu-904-rc1/"&gt;setup for the new Zeus continues&lt;/a&gt;, I thought I’d try out &lt;a href="http://lists.centos.org/pipermail/centos-announce/2009-April/015711.html"&gt;CentOS 5.3&lt;/a&gt;. One of the many benefits of running on &lt;a href="http://www.flickr.com/photos/thushan/3451487833/"&gt;an open-setup&lt;/a&gt;, lots of HDDs, lots of room to move around, not much time though 🙁&lt;/p&gt;
&lt;p&gt;If you find you get stuck during the installation for &lt;a href="http://www.centos.org"&gt;CentOS&lt;/a&gt; (and subsequently &lt;a href="http://www.redhat.com/rhel/"&gt;RHEL&lt;/a&gt; &amp;amp; &lt;a href="http://fedoraproject.org/"&gt;Fedora&lt;/a&gt;) here&amp;rsquo;s how to get things to boot.&lt;/p&gt;</description></item><item><title>COOL TOOL: WinRAR 3.90 Beta released with some ubber goodness!</title><link>https://www.thushanfernando.com/index.php/2009/05/01/cool-tool-winrar-390-beta-released-with-some-ubber-goodness/</link><pubDate>Fri, 01 May 2009 11:49:04 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/05/01/cool-tool-winrar-390-beta-released-with-some-ubber-goodness/</guid><description>&lt;p&gt;&lt;a href="http://www.rarlab.com/"&gt;Rarlab&lt;/a&gt;, the genius’s behind the &lt;a href="http://www.rarlab.com/rar_archiver.htm"&gt;WinRAR&lt;/a&gt; product have released a new beta version (v3.9) which brings some impressive new features:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Changes in Version 3.90 Beta 1:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;WinRAR version for Windows x64 is available&lt;/em&gt;&lt;/strong&gt;. If you use Windows x64, it is strongly recommended to install 64 bit WinRAR version. It provides a higher performance and better shell integration than 32 bit version.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;RAR compression speed is improved for multi-core and multi-CPU systems.&lt;/em&gt;&lt;/strong&gt; This improvement is most noticeable in Windows Vista and Windows 7 operating systems.&lt;/li&gt;
&lt;li&gt;“Remove duplicate folders from extraction path” option in “Settings/Compression” dialog is replaced by more universal “Remove redundant folders from extraction path” option. This option will eliminate redundant archive name based folders from extraction path if you unpack an archive with “Extract to DestName&amp;amp;#8221; context menu command and if archive root folder contains only one folder and no files.&lt;/li&gt;
&lt;li&gt;Changes in “Extraction path and options” dialog:
&lt;ol&gt;
&lt;li&gt;“New folder” button creates a new subfolder in currently selected folder;&lt;/li&gt;
&lt;li&gt;F2 key renames a selected folder in the folders tree;&lt;/li&gt;
&lt;li&gt;F5 key updated the tree pane contents;&lt;/li&gt;
&lt;li&gt;Del key removes a selected folder in the folders tree.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;You can enable “Show seconds” option in “Settings/File list” dialog if you wish to see seconds in file dates in file list in WinRAR shell.&lt;/li&gt;
&lt;li&gt;“Where to check for SFX archives” options group in “Settings/Integration/Context menus items” dialog lets you to control processing of SFX archives in context menus. For example, if you frequently right click “.exe” files on slow network disks, you can turn off “Network disks” options to minimize the delay before displaying the context menu.&lt;/li&gt;
&lt;li&gt;If you sort files by name in the file list in WinRAR shell, WinRAR will use the new logical file name sorting, same as in Windows Explorer, considering digits in file names by their numerical value. So files will be sorted as 1.txt, 2.txt, 10.txt instead of previous 1.txt, 10.txt, 2.txt. This new sort behavior is available in Windows XP Service Pack 2 and newer.&lt;/li&gt;
&lt;li&gt;Ctrl+W key combination can be used to close the main WinRAR window also as WinRAR viewer windows. “View as Windows text” shortcut in WinRAR viewer changed from Ctrl+W to Ctrl+I.&lt;/li&gt;
&lt;li&gt;New command line switch -r- disables recursion completely. So ‘rar a -r- arc dirname’ command will add only the empty dirname folder and ignore its contents. By default, if dirname does not include wildcards, RAR adds its contents even if -r switch is not specified.&lt;/li&gt;
&lt;li&gt;If used when extracting, the new command line switch -ai forces RAR to ignore file attributes. When using this switch, extracted files will always have attributes assigned by operating system to a newly created file by default.&lt;/li&gt;
&lt;li&gt;If output file name is not specified in “cw” command, console RAR will send comment data to stdout.&lt;/li&gt;
&lt;li&gt;When compressing stdin data with -si[name] switch, RAR sets modification time of archived entry to current system time. Previous RAR versions did not fill this field, resulting in meaningless modification time for stdin.&lt;/li&gt;
&lt;li&gt;Message displayed when you place the mouse cursor on WinRAR tray icon includes the archive name now. Previously only time left and total percent were displayed for archiving operations.&lt;/li&gt;
&lt;li&gt;Bugs fixed:
&lt;ol&gt;
&lt;li&gt;WinRAR could fail to open tar or tar.gz archive if such archive contained a file larger than 8GB;&lt;/li&gt;
&lt;li&gt;WinRAR context menu did not work properly in Windows 7 beta if icons in context menus were enabled and user clicked a file inside of Windows 7 Library folder;&lt;/li&gt;
&lt;li&gt;previous WinRAR versions failed to rename files having 5 or more continuous spaces in the name. WinRAR shell does not display such spaces for safety reasons, because they can hide an actual file extension. But this security measure prevented the rename command to work properly.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;p&gt;The primary bits that got my attention was the native x64 release and the improved multi-threaded support for compression (the first two items – bolded). So naturally I downloaded the Windows x64 release and had a stab at doing some benches. This was a very quick test.&lt;/p&gt;</description></item><item><title>Think outside the box: Getting VirtualBox 2.x running in Jaunty</title><link>https://www.thushanfernando.com/index.php/2009/04/25/think-outside-the-box-getting-virtualbox-2x-running-in-jaunty/</link><pubDate>Sat, 25 Apr 2009 12:55:24 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/04/25/think-outside-the-box-getting-virtualbox-2x-running-in-jaunty/</guid><description>&lt;p&gt;Here’s a quick guide on getting &lt;a href="http://www.virtualbox.org/wiki/VirtualBox"&gt;VirtualBox 2.x&lt;/a&gt; running in &lt;a href="http://www.ubuntu.com/products/whatisubuntu/904features/"&gt;Ubuntu 9.04&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;First make sure you add the VirtualBox repositorys to your sources:&lt;/p&gt;
&lt;div class="code-toolbar shell-block" data-prompt-char="$"&gt;
&lt;div class="terminal-chrome"&gt;&lt;span class="dot dot-red"&gt;&lt;/span&gt;&lt;span class="dot dot-yellow"&gt;&lt;/span&gt;&lt;span class="dot dot-green"&gt;&lt;/span&gt;&lt;span class="terminal-title"&gt;bash&lt;/span&gt;&lt;button class="copy-btn" type="button" aria-label="Copy code" title="Copy"&gt;&lt;svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;&lt;rect x="9" y="9" width="13" height="13" rx="2" ry="2"&gt;&lt;/rect&gt;&lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="command-line-prompt" data-prompt-char="$"&gt;&lt;span data-user="thushan" data-host="zeus"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo nano /etc/apt/sources.lst&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Then add the following to the top of the file:&lt;/p&gt;</description></item><item><title>Quick Tip: P5WDH-Deluxe with E6750 with DDR800</title><link>https://www.thushanfernando.com/index.php/2009/04/25/quick-tip-p5wdh-deluxe-with-e6750-with-ddr800/</link><pubDate>Sat, 25 Apr 2009 02:58:26 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/04/25/quick-tip-p5wdh-deluxe-with-e6750-with-ddr800/</guid><description>&lt;p&gt;If you own a &lt;a href="http://www.asus.com.au/products.aspx?l1=3&amp;amp;l2=11&amp;amp;l3=248&amp;amp;model=1198&amp;amp;modelmenu=1"&gt;ASUS P5WD-H Deluxe&lt;/a&gt; mobo and want to get the newer &lt;a href="http://processorfinder.intel.com/details.aspx?sSpec=SLA9V"&gt;Intel E6750&lt;/a&gt; (2.66Ghz) working with your DDR-800 memory (in my case some &lt;a href="http://www.corsair.com/products/go.aspx?pn=TWIN2X4096-6400C5"&gt;TWINX4096-6400C5&lt;/a&gt;‘s) you may find that when booting you get random clock speeds when posting, ranging from 2.12Ghz to 1.64Ghz and occasionally, if the Sun is aligning properly report a 2.66Ghz clock (the default).&lt;/p&gt;</description></item><item><title>HEAT OF THE MOMENT: Breaking News, Oracle buys Sun MicroSystems!</title><link>https://www.thushanfernando.com/index.php/2009/04/21/heat-of-the-moment-breaking-news-oracle-buys-sun-microsystems/</link><pubDate>Mon, 20 Apr 2009 14:38:54 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/04/21/heat-of-the-moment-breaking-news-oracle-buys-sun-microsystems/</guid><description>&lt;p&gt;In what may come as a surprise to everyone, &lt;a href="http://news.prnewswire.com/DisplayReleaseContent.aspx?ACCT=104&amp;amp;STORY=/www/story/04-20-2009/0005008591&amp;amp;EDATE="&gt;Oracle Corporation has bought Sun MicroSystems&lt;/a&gt; for a cool $7.4Billion benjamins. IBM was eying a buyout for quite sometime but (I reckons for the better of mankind) has &lt;a href="http://www.bloomberg.com/apps/news?pid=20601087&amp;amp;sid=aDivhuNbXRsM"&gt;failed to secure the epic deal&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Question is, what will happen to the buyouts such as &lt;a href="http://www.virtualbox.org"&gt;VirtualBox&lt;/a&gt; (&lt;a href="http://www.oracle.com/technologies/virtualization/index.html"&gt;Oracle has a hypervisor&lt;/a&gt; which &lt;a href="http://www.oracle.com/corporate/press/2007_nov/ovm-ga-111107.html"&gt;launched in 2007&lt;/a&gt; and is based on the &lt;a href="http://www.xen.org/"&gt;Xen Hypervisor&lt;/a&gt;), &lt;a href="http://www.mysql.com"&gt;MySQL&lt;/a&gt; which &lt;a href="http://www.mysql.com/news-and-events/sun-to-acquire-mysql.html"&gt;was acquired by Sun&lt;/a&gt; a while ago (Oracle has this little &lt;a href="http://en.wikipedia.org/wiki/Oracle_Database"&gt;RDBMS called Oracle&lt;/a&gt; btw), &lt;a href="http://www.openoffice.org"&gt;OpenOffice&lt;/a&gt; which will have another O added to it (oooo its OOo).&lt;/p&gt;</description></item><item><title>Quick Tip: Iterate through an enum in .NET</title><link>https://www.thushanfernando.com/index.php/2009/04/19/quick-tip-iterate-through-an-enum-in-net/</link><pubDate>Sun, 19 Apr 2009 10:33:08 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/04/19/quick-tip-iterate-through-an-enum-in-net/</guid><description>&lt;p&gt;Here’s a quicky for you. Iterating through an &lt;code&gt;Enum&lt;/code&gt; in .NET, replace ‘&lt;code&gt;IconResource&lt;/code&gt;‘ with the &lt;code&gt;Enum&lt;/code&gt; you want to iterate.&lt;/p&gt;
&lt;h2 id="csharp"&gt;CSharp&lt;/h2&gt;
&lt;div class="code-toolbar code-block"&gt;
&lt;div class="terminal-chrome"&gt;&lt;span class="dot dot-red"&gt;&lt;/span&gt;&lt;span class="dot dot-yellow"&gt;&lt;/span&gt;&lt;span class="dot dot-green"&gt;&lt;/span&gt;&lt;span class="terminal-title"&gt;csharp&lt;/span&gt;&lt;button class="copy-btn" type="button" aria-label="Copy code" title="Copy"&gt;&lt;svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;&lt;rect x="9" y="9" width="13" height="13" rx="2" ry="2"&gt;&lt;/rect&gt;&lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2 2v1"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Array&lt;/span&gt; &lt;span class="n"&gt;enumValues&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;System&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Enum&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetValues&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;typeof&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;IconResource&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;foreach&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;IconResource&lt;/span&gt; &lt;span class="n"&gt;resource&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;enumValues&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Resource: {0}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;resource&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="vbnet"&gt;VB.NET&lt;/h2&gt;
&lt;div class="code-toolbar code-block"&gt;
&lt;div class="terminal-chrome"&gt;&lt;span class="dot dot-red"&gt;&lt;/span&gt;&lt;span class="dot dot-yellow"&gt;&lt;/span&gt;&lt;span class="dot dot-green"&gt;&lt;/span&gt;&lt;span class="terminal-title"&gt;vb&lt;/span&gt;&lt;button class="copy-btn" type="button" aria-label="Copy code" title="Copy"&gt;&lt;svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;&lt;rect x="9" y="9" width="13" height="13" rx="2" ry="2"&gt;&lt;/rect&gt;&lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2 2v1"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-vb" data-lang="vb"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;enumValues&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="n"&gt;Array&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;System&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;Enum&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetValues&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ow"&gt;GetType&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;IconResource&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;For&lt;/span&gt; &lt;span class="k"&gt;Each&lt;/span&gt; &lt;span class="n"&gt;resource&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="n"&gt;IconResource&lt;/span&gt; &lt;span class="ow"&gt;In&lt;/span&gt; &lt;span class="n"&gt;enumValues&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Resource: {0}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;resource&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;Next&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Useful?&lt;/p&gt;</description></item><item><title>Rebuilding Zeus Part 1: Ubuntu 9.04 Setup</title><link>https://www.thushanfernando.com/index.php/2009/04/19/rebuilding-zeus-part-1-preliminary-research-and-installing-ubuntu-904-rc1/</link><pubDate>Sat, 18 Apr 2009 14:22:15 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/04/19/rebuilding-zeus-part-1-preliminary-research-and-installing-ubuntu-904-rc1/</guid><description>&lt;p&gt;Just spent a fair chunk of today getting a rebuild of Zeus going – &lt;a href="http://www.flickr.com/photos/thushan/sets/72057594074383598/"&gt;our affectionately dubbed&lt;/a&gt; &lt;a href="/tags/ubuntu/"&gt;Ubuntu server&lt;/a&gt; at home. This is the third rebuild (hardware wise) in the past 5 years (sheesh its been that long?), but I’m not complaining. First Ubuntu’fied version (&lt;a href="http://old-releases.ubuntu.com/releases/5.10/"&gt;5.10 – Breezy Badger&lt;/a&gt;) ran on an &lt;a href="http://processorfinder.intel.com/details.aspx?sSpec=SL7KB"&gt;Pentium 4 3Ghz&lt;/a&gt; (Socket 478), noisey little guy that sucked quite a bit of power which was my old development box that served me well.&lt;/p&gt;</description></item><item><title>Hot Butter: Slipstreaming SQL Server 2008 with SP1 and an easier FIX for Rule “Previous releases of Microsoft Visual Studio 2008? failed.</title><link>https://www.thushanfernando.com/index.php/2009/04/16/hot-butter-slipstreaming-sql-server-2008-with-sp1-and-an-easier-fix-for-rule-previous-releases-of-microsoft-visual-studio-2008-failed/</link><pubDate>Thu, 16 Apr 2009 13:58:08 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/04/16/hot-butter-slipstreaming-sql-server-2008-with-sp1-and-an-easier-fix-for-rule-previous-releases-of-microsoft-visual-studio-2008-failed/</guid><description>&lt;p&gt;We just did a hardware upgrade of one of our &lt;a href="http://www.dell.com/content/products/productdetails.aspx/pedge_2950_3?c=us&amp;amp;cs=04&amp;amp;l=en&amp;amp;s=bsd"&gt;&lt;acronym title="Structured Query Language"&gt;SQL&lt;/acronym&gt; Server boxes&lt;/a&gt; during the Easter break. With &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=66ab3dbb-bf3e-4f46-9559-ccc6a4f9dc19&amp;amp;displaylang=en"&gt;SP1 for &lt;acronym title="Structured Query Language"&gt;SQL&lt;/acronym&gt; Server 2008&lt;/a&gt; available I followed the excellent instructions from &lt;a href="http://blogs.msdn.com/petersad/default.aspx"&gt;Peter Saddow&lt;/a&gt; to &lt;a href="http://blogs.msdn.com/petersad/archive/2009/02/25/sql-server-2008-creating-a-merged-slisptream-drop.aspx"&gt;slipstream SP1 into the &lt;acronym title="Structured Query Language"&gt;SQL&lt;/acronym&gt; 2008&lt;/a&gt; ISO. Highly recommend you follow the guide 🙂&lt;/p&gt;
&lt;p&gt;Whilst on the topic of &lt;a href="http://www.microsoft.com/sqlserver/2008/en/us/overview.aspx"&gt;&lt;acronym title="Structured Query Language"&gt;SQL&lt;/acronym&gt; Server 2008&lt;/a&gt;, if you were recieving the following – as &lt;a href="/index.php/2008/08/10/fix-rule-previous-releases-of-microsoft-visual-studio-2008-failed"&gt;documented in this earlier post&lt;/a&gt;:&lt;/p&gt;</description></item><item><title>Quick Tip: Extracting all files in multiple folders in Linux</title><link>https://www.thushanfernando.com/index.php/2009/04/11/quicktip-extracting-all-files-in-multiple-folders-in-linux/</link><pubDate>Sat, 11 Apr 2009 01:17:03 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/04/11/quicktip-extracting-all-files-in-multiple-folders-in-linux/</guid><description>&lt;p&gt;I just got sent a bunch of backup snapshots nicely compressed in RAR format in 20Mb segments in multiple folders. Nice I thought, now you’d have to iterate through 80 folders, and extract each rar file and merge them all into the same folder.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/media/Storage/Shared/Backups/AcronisTrueImage.WEBSOFTWARE-X.20090201/*.rar
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/media/Storage/Shared/Backups/AcronisTrueImage.WEBSOFTWARE-X.20090202/*.rar
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/media/Storage/Shared/Backups/AcronisTrueImage.WEBSOFTWARE-X.20090203/*.rar
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;So I threw the files onto our linux box (didnt want to run this through &lt;a href="http://www.cygwin.com"&gt;Cygwin&lt;/a&gt;) and knocked up a little gem to iterate through all the folders and extract the RAR files and put them into the root folder.&lt;/p&gt;</description></item><item><title>FIX: ‘The Microsoft.Jet.OLEDB.4.0 provider is not registered on the local machine.’ Message for .NET Applications</title><link>https://www.thushanfernando.com/index.php/2009/04/02/fix-the-microsoftjetoledb40-provider-is-not-registered-on-the-local-machine-message-for-net-applications/</link><pubDate>Thu, 02 Apr 2009 10:06:09 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/04/02/fix-the-microsoftjetoledb40-provider-is-not-registered-on-the-local-machine-message-for-net-applications/</guid><description>&lt;p&gt;Came across a &lt;a href="http://www.developerfusion.com/forum/thread/36012/#post-171347"&gt;post on DeveloperFusion today&lt;/a&gt; that resonated the same issue we had &lt;a href="http://www.hsd.com.au"&gt;at work&lt;/a&gt; a few days earlier involving JET (no not &lt;a href="http://www.jettheband.com/"&gt;the band&lt;/a&gt;) accessing &lt;a href="http://en.wikipedia.org/wiki/Microsoft_Access"&gt;an Access database&lt;/a&gt; in .NET code on Windows x64.&lt;/p&gt;
&lt;p&gt;If you find you get a nasty:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The Microsoft.Jet.OLEDB.4.0 provider is not registered on the local machine.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;When you run your .NET Application – and I know this – on your x64 box, its because &lt;a href="http://support.microsoft.com/kb/239114"&gt;Microsoft does not support JET on 64bit&lt;/a&gt; versions of Windows &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=ad2b6698-de73-47dc-911b-50f4f0627ff4"&gt;outside of Windows 2003&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Deep Dive: How .NET Regular Expressions really work.</title><link>https://www.thushanfernando.com/index.php/2009/03/17/deep-dive-how-net-regular-expressions-really-work/</link><pubDate>Tue, 17 Mar 2009 02:28:35 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/03/17/deep-dive-how-net-regular-expressions-really-work/</guid><description>&lt;p&gt;Have you ever wondered how &lt;a href="http://en.wikipedia.org/wiki/Regular_expression"&gt;Regular Expression&lt;/a&gt;s really work? Most of us (myself included) just take the implementation for granted, but &lt;span&gt;&lt;a href="http://www.blogger.com/profile/16074905903060665396"&gt;Jeff Moser&lt;/a&gt; of &lt;a href="http://www.moserware.com/"&gt;Moserware&lt;/a&gt; has posted a most excellent, very in-depth overview &lt;a href="http://www.moserware.com/2009/03/how-net-regular-expressions-really-work.html"&gt;how Regular Expressions have been implemented in .NET&lt;/a&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;A must read for anyone who would like a deeper knowledge about what really happens under the hood and Jeff has done a brilliant job of pulling it into one consistent article.&lt;br /&gt; &lt;/span&gt;&lt;/p&gt;</description></item><item><title>Finally joined the 21st century and onto Twitter</title><link>https://www.thushanfernando.com/index.php/2009/03/15/finally-joined-the-21st-century-and-onto-twitter/</link><pubDate>Sat, 14 Mar 2009 23:50:34 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/03/15/finally-joined-the-21st-century-and-onto-twitter/</guid><description>&lt;p&gt;Thats right, I’m now l33t enough to be &lt;a href="http://twitter.com/thushanfernando"&gt;on twitter&lt;/a&gt;. A foundry for all my &lt;a href="http://en.wikipedia.org/wiki/Urandom"&gt;/dev/random&lt;/a&gt; thoughts that just can’t fill up the space on this blog. As you’d expect its raw, unedited and uncut, just the way you like it. Alternatively the gadget on the right of the blog has the latest tweets.&lt;/p&gt;</description></item><item><title>Quick Tip: Extracting files from Windows Installer (MSI) Setup Files</title><link>https://www.thushanfernando.com/index.php/2009/03/14/quick-tip-extracting-files-from-windows-installer-msi-setup-files/</link><pubDate>Sat, 14 Mar 2009 10:33:09 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/03/14/quick-tip-extracting-files-from-windows-installer-msi-setup-files/</guid><description>&lt;p&gt;Had to extract some files from a &lt;a href="http://en.wikipedia.org/wiki/Windows_Installer"&gt;Windows Installer&lt;/a&gt; setup, a mental note of the command line:&lt;/p&gt;
&lt;div class="code-toolbar shell-block" data-prompt-char="&amp;gt;"&gt;
&lt;div class="terminal-chrome"&gt;&lt;span class="dot dot-red"&gt;&lt;/span&gt;&lt;span class="dot dot-yellow"&gt;&lt;/span&gt;&lt;span class="dot dot-green"&gt;&lt;/span&gt;&lt;span class="terminal-title"&gt;powershell&lt;/span&gt;&lt;button class="copy-btn" type="button" aria-label="Copy code" title="Copy"&gt;&lt;svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;&lt;rect x="9" y="9" width="13" height="13" rx="2" ry="2"&gt;&lt;/rect&gt;&lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="command-line-prompt" data-prompt-char="&gt;"&gt;&lt;span data-user="thushan" data-host="cody"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;msiexec&lt;/span&gt; &lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="no"&gt;target.msi&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;qb&lt;/span&gt; &lt;span class="n"&gt;TARGETDIR&lt;/span&gt;&lt;span class="p"&gt;=[&lt;/span&gt;&lt;span class="no"&gt;Path to extract&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Whilst on the topic of MSI’s, I can’t live without &lt;a href="http://msi2xml.sourceforge.net/"&gt;msi2xml&lt;/a&gt;. Perfect for that quick hack to an MSI that simply wont install because of &lt;acronym title="Operating System"&gt;OS&lt;/acronym&gt; Checks or something else – yes, I mess with things far more than I’d like to admit 😉&lt;/p&gt;</description></item><item><title>The anatomy of the Ext4 File-System</title><link>https://www.thushanfernando.com/index.php/2009/02/23/the-anatomy-of-the-ext4-file-system/</link><pubDate>Mon, 23 Feb 2009 12:21:23 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/02/23/the-anatomy-of-the-ext4-file-system/</guid><description>&lt;p&gt;Tim Jones has posted an article on the &lt;a href="http://www.ibm.com/developerworks/linux/"&gt;IBM DeveloperWorks&lt;/a&gt; website about the importance and anatomy of the &lt;a href="http://en.wikipedia.org/wiki/Ext4"&gt;Ext4 file system&lt;/a&gt; &lt;a href="http://ext4.wiki.kernel.org/index.php/Main_Page"&gt;for Linux&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The first supported file system for Linux was the Minix file system. This file system had some significant performance issues, so another file system was created specifically for Linux called the &lt;em&gt;extended file system.&lt;/em&gt; The first extended file system (ext1) was designed by Remy Card and introduced into Linux in April 1992. The ext1 file system was the first to use the virtual file system (VFS) switch implemented in the 0.96c kernel and supported file systems up to 2 gigabytes (&lt;acronym title="Gigabyte"&gt;GB&lt;/acronym&gt;) in size.&lt;/p&gt;</description></item><item><title>Maintaining your XFS with XFS Filesystem Reorganiser xfs_fsr to defrag</title><link>https://www.thushanfernando.com/index.php/2009/01/25/maintaining-your-xfs-with-xfs-fsr/</link><pubDate>Sun, 25 Jan 2009 03:37:05 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2009/01/25/maintaining-your-xfs-with-xfs-fsr/</guid><description>&lt;p&gt;File Systems are a hairy topic, on &lt;a href="http://en.wikipedia.org/wiki/Windows"&gt;Windows&lt;/a&gt; you should be using &lt;a href="http://en.wikipedia.org/wiki/NTFS"&gt;NTFS&lt;/a&gt; (the days of &lt;a href="http://en.wikipedia.org/wiki/File_Allocation_Table"&gt;FAT&lt;/a&gt; are long gone!) but on &lt;a href="http://en.wikipedia.org/wiki/Linux"&gt;Linux&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/BSD"&gt;BSD&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/OpenSolaris"&gt;*Solaris&lt;/a&gt; we still have a wide variety to pick and choose depending on our needs. I’ve always been a &lt;a href="http://en.wikipedia.org/wiki/JFS_(file_system)"&gt;JFS&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/XFS"&gt;XFS&lt;/a&gt; fan (previously &lt;a href="http://en.wikipedia.org/wiki/ReiserFS"&gt;ReiserFS&lt;/a&gt;) until &lt;a href="http://en.wikipedia.org/wiki/Btrfs"&gt;Btrfs&lt;/a&gt; goes mainstream (which is &lt;a href="http://linux-foundation.org/weblogs/lwf/2009/01/11/looking-forward-to-2629/"&gt;one thing to hangout for in Linux Kernel 2.6.29&lt;/a&gt;!) and often I’d have a mixture of all three. Our main server at home – affectionately dubbed &lt;em&gt;Zeus&lt;/em&gt;, after our lovable &lt;a href="http://www.flickr.com/photos/thushan/sets/72057594074383598/"&gt;Australian Customs puppy Zeus&lt;/a&gt;, uses XFS, JFS and &lt;a href="http://en.wikipedia.org/wiki/Ext3"&gt;Ext3&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Linux 2.6.28 released for all the good l33tle boys and girls!</title><link>https://www.thushanfernando.com/index.php/2008/12/26/linux-2-6-28-xmas-present/</link><pubDate>Fri, 26 Dec 2008 01:43:40 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2008/12/26/linux-2-6-28-xmas-present/</guid><description>&lt;p&gt;Linus Torvalds just &lt;a href="http://lkml.org/lkml/2008/12/24/105"&gt;released Linux Kernel 2.6.28&lt;/a&gt; today as an Christmas present to all the good (and not evil) l33tle-big boys and gals around the globe. This brings a whole host of new cool bits and bobs thats sure to get people excited (&lt;a href="http://kernelnewbies.org/Linux_2_6_28#head-42f34a57c528b1f7aa8ca5c7a4d6291d76922eee"&gt;Ext4 being one&lt;/a&gt; and the &lt;a href="http://kernelnewbies.org/Linux_2_6_28#head-b957b19f6139b6bbbfabaf790bf643b1746985d6"&gt;GEM Memory Manager&lt;/a&gt;) read all about it in the &lt;a href="http://kernelnewbies.org/Linux_2_6_28"&gt;Linux Kernel Newbies guide&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Sun ushers in VirtualBox 2.1 with cool new features!</title><link>https://www.thushanfernando.com/index.php/2008/12/18/sun-ushers-in-virtualbox-21-with-cool-new-features/</link><pubDate>Thu, 18 Dec 2008 10:38:49 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2008/12/18/sun-ushers-in-virtualbox-21-with-cool-new-features/</guid><description>&lt;p&gt;It only feels like last month &lt;a href="/index.php/2008/09/07/sun-releases-virtualbox-20-just-couple-of-days-after-166/"&gt;Sun released VirtualBox 2.0&lt;/a&gt; and they’ve just released 2.1 which brings a plethora of additional goodies… &lt;a href="http://www.virtualbox.org/wiki/Changelog"&gt;from the changelog&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Support for hardware virtualization (VT-x and AMD-V) on Mac &lt;acronym title="Operating System"&gt;OS&lt;/acronym&gt; X hosts&lt;/li&gt;
&lt;li&gt;Support for 64-bit guests on 32-bit host operating systems (experimental; see user manual, chapter 1.6, 64-bit guests, page 16)&lt;/li&gt;
&lt;li&gt;Added support for Intel Nehalem virtualization enhancements (EPT and VPID; see user manual, chapter 1.2, Software vs. hardware virtualization (VT-x and AMD-V), page 10))&lt;/li&gt;
&lt;li&gt;Experimental 3D acceleration via OpenGL (see user manual, chapter 4.8, Hardware 3D acceleration (OpenGL), page 66)&lt;/li&gt;
&lt;li&gt;Experimental LsiLogic and BusLogic &lt;acronym title="Small Computer System Interface"&gt;SCSI&lt;/acronym&gt; controllers (see user manual, chapter 5.1, Hard disk controllers: IDE, SATA (AHCI), &lt;acronym title="Small Computer System Interface"&gt;SCSI&lt;/acronym&gt;, page 70)&lt;/li&gt;
&lt;li&gt;Full VMDK/VHD support including snapshots (see user manual, chapter 5.2, Disk image ?les (VDI, VMDK, VHD), page 72)&lt;/li&gt;
&lt;li&gt;New NAT engine with signi?cantly better performance, reliability and ICMP echo (ping) support (bugs &lt;a href="http://www.virtualbox.org/ticket/1046" title="Heavy NAT network usage crashing VBox (hash collision) =&amp;gt; Fixed in SVN (closed)"&gt;#1046&lt;/a&gt;{.closed.ticket}, &lt;a href="http://www.virtualbox.org/ticket/2438" title="bad NAT performance (outgoing/uploading/writing speed drops to 0kb/s) (closed)"&gt;#2438&lt;/a&gt;{.closed.ticket}, &lt;a href="http://www.virtualbox.org/ticket/2223" title="NAT interface is very slow for writing (closed)"&gt;#2223&lt;/a&gt;{.closed.ticket}, &lt;a href="http://www.virtualbox.org/ticket/1247" title="ping doesn't work with NAT network interfaces (closed)"&gt;#1247&lt;/a&gt;{.closed.ticket})&lt;/li&gt;
&lt;li&gt;New Host Interface Networking implementations for Windows and Linux hosts with easier setup (replaces TUN/TAP on Linux and manual bridging on Windows)&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Some key things to note here, those “cool” people that run &lt;acronym title="Operating System"&gt;OS&lt;/acronym&gt; X can now get hardware virtualisation. Even if you have a 32bit host operating system your able to run 64bit hosts so long as you enable hardware acceleration on the CPU (&lt;a href="http://en.wikipedia.org/wiki/X86_virtualization#AMD_virtualization_.28AMD-V.29"&gt;AMD-V&lt;/a&gt; or &lt;a href="http://en.wikipedia.org/wiki/X86_virtualization#Intel_Virtualization_Technology_.28Intel_VT.29"&gt;Intel-VT&lt;/a&gt;) as VirtualBox’s &lt;a href="http://en.wikipedia.org/wiki/Hypervisor"&gt;Hypervisor&lt;/a&gt; requires this to work. A couple of other major additions – tested personally, include the enhanced virtualisation on the new Nahalem processors (Extended Page Table &amp;amp; Virtual Processor Identifier – see below) and the starting block for OpenGL (and later DirectX) Acceleration in XP and Vista. Testing this on OpenGL gave some decent performance though its still got a bit of work to do.&lt;/p&gt;</description></item><item><title>Google releases Chrome 1.0</title><link>https://www.thushanfernando.com/index.php/2008/12/12/google-releases-chrome-10/</link><pubDate>Fri, 12 Dec 2008 11:19:49 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2008/12/12/google-releases-chrome-10/</guid><description>&lt;p&gt;Epic news, &lt;a href="http://googleblog.blogspot.com/2008/12/google-chrome-beta.html"&gt;Google has released a 1.0&lt;/a&gt; release of &lt;a href="/tags/chrome/"&gt;Chrome&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We have removed the beta label as our goals for stability and performance have been met but our work is far from done. We are working to add some common browser features such as form autofill and &lt;acronym title="Really Simple Syndication"&gt;RSS&lt;/acronym&gt; support in the near future. We are also developing an &lt;a href="http://dev.chromium.org/developers/design-documents/extensions"&gt;extensions platform&lt;/a&gt; along with support for Mac and Linux. If you are already using Google Chrome, the update system ensures that you get the latest bug fixes and security patches, so you will get the newest version automatically in the next few days.&lt;/p&gt;</description></item><item><title>OpenSolaris 2008.11 out the door!!!</title><link>https://www.thushanfernando.com/index.php/2008/12/03/opensolaris-200811-out-the-door/</link><pubDate>Wed, 03 Dec 2008 09:03:19 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2008/12/03/opensolaris-200811-out-the-door/</guid><description>&lt;p&gt;&lt;a href="http://www.opensolaris.org/os/project/indiana/resources/relnotes/200811/x86/"&gt;OpenSolaris 2008.11&lt;/a&gt; has just been released, it encompasses some super cool new features and I’ve been waiting patiently to try this &lt;acronym title="Operating System"&gt;OS&lt;/acronym&gt; – need something new to learn!&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span class="Quote"&gt;The OpenSolaris 2008.11 operating system is a point of integration for the installation, desktop, and package management system projects on OpenSolaris.org. Today, the OpenSolaris 2008.11 live &lt;acronym title="Compact Disc"&gt;CD&lt;/acronym&gt; is available with the following feature updates: &lt;/span&gt;&lt;/p&gt;</description></item><item><title>Microsoft Releases Singularity 2.0 Research Development Kit (RDK)</title><link>https://www.thushanfernando.com/index.php/2008/11/18/microsoft-releases-singularity-20-research-development-kit-rdk/</link><pubDate>Tue, 18 Nov 2008 09:56:49 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2008/11/18/microsoft-releases-singularity-20-research-development-kit-rdk/</guid><description>&lt;p&gt;&lt;a href="http://www.microsoft.com"&gt;Microsoft&lt;/a&gt; has just unleased the &lt;a href="http://www.codeplex.com/singularity/Release/ProjectReleases.aspx?ReleaseId=19428"&gt;initial release&lt;/a&gt; of the &lt;a href="http://research.microsoft.com/os/singularity/"&gt;Singularity 2.0 Research Development Kit&lt;/a&gt; (RDK). Singularity is a research operating system started around 2003 by Microsoft Research to write an &lt;acronym title="Operating System"&gt;OS&lt;/acronym&gt; in managed code. The &lt;a href="http://en.wikipedia.org/wiki/Singularity_(operating_system)#Workings"&gt;inner-workings of Singularity&lt;/a&gt; taken from Wikipedia:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The lowest-level &lt;a href="http://en.wikipedia.org/wiki/X86_architecture" title="X86 architecture"&gt;x86&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Interrupt" title="Interrupt"&gt;interrupt&lt;/a&gt; dispatch code is written in &lt;a href="http://en.wikipedia.org/wiki/Assembly_language" title="Assembly language"&gt;assembly language&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/C_%28programming_language%29" title="C (programming language)"&gt;C&lt;/a&gt;. Once this code has done its job, it invokes the kernel, whose &lt;a href="http://en.wikipedia.org/wiki/Runtime" title="Runtime"&gt;runtime&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Garbage_collection_%28computer_science%29" title="Garbage collection (computer science)"&gt;garbage collector&lt;/a&gt; are written in &lt;a href="http://en.wikipedia.org/wiki/Sing" title="Sing"&gt;Sing#&lt;/a&gt; (an extension of &lt;a href="http://en.wikipedia.org/wiki/C_Sharp_%28programming_language%29" title="C Sharp (programming language)"&gt;C#&lt;/a&gt;) and runs in unsafe mode. The &lt;a href="http://en.wikipedia.org/wiki/Hardware_abstraction_layer" title="Hardware abstraction layer"&gt;hardware abstraction layer&lt;/a&gt; is written in &lt;a href="http://en.wikipedia.org/wiki/C%2B%2B" title="C++"&gt;C++&lt;/a&gt; and runs in safe mode. There is also some C code to handle debugging. The computer’s &lt;a href="http://en.wikipedia.org/wiki/BIOS" title="BIOS"&gt;BIOS&lt;/a&gt; is invoked during the 16-bit &lt;a href="http://en.wikipedia.org/wiki/Real_mode" title="Real mode"&gt;real mode&lt;/a&gt; bootstrap stage; once in 32-bit mode, Singularity never invokes the BIOS again, but invokes device drivers written in &lt;a href="http://en.wikipedia.org/wiki/Sing_sharp" title="Sing sharp"&gt;Sing#&lt;/a&gt;{.mw-redirect}, an extended version of &lt;a href="http://en.wikipedia.org/wiki/Spec_Sharp" title="Spec Sharp"&gt;Spec#&lt;/a&gt;, itself an extension of C#. During installation, &lt;a href="http://en.wikipedia.org/wiki/Common_Intermediate_Language" title="Common Intermediate Language"&gt;Common Intermediate Language&lt;/a&gt; (CIL) &lt;a href="http://en.wikipedia.org/wiki/Opcode" title="Opcode"&gt;opcodes&lt;/a&gt; are compiled into x86 opcodes using the &lt;a href="http://en.wikipedia.org/wiki/Bartok_%28compiler%29" title="Bartok (compiler)"&gt;Bartok&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Compiler" title="Compiler"&gt;compiler&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Breaking News: BD+ Broken</title><link>https://www.thushanfernando.com/index.php/2008/11/02/breaking-news-bd-broken/</link><pubDate>Sun, 02 Nov 2008 13:07:31 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2008/11/02/breaking-news-bd-broken/</guid><description>&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/BD%2B"&gt;BD+&lt;/a&gt; is the &lt;a href="http://en.wikipedia.org/wiki/Digital_Rights_Management" title="Digital Rights Management"&gt;DRM&lt;/a&gt;{.mw-redirect} system for &lt;a href="http://en.wikipedia.org/wiki/Blu-ray_Disc" title="Blu-ray Disc"&gt;Blu-ray&lt;/a&gt; discs, as &lt;a href="http://en.wikipedia.org/"&gt;Wikipedia&lt;/a&gt; puts it:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;BD+&lt;/strong&gt; is a component of the &lt;a href="http://en.wikipedia.org/wiki/Blu-ray_Disc" title="Blu-ray Disc"&gt;Blu-ray Disc&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Digital_Rights_Management" title="Digital Rights Management"&gt;Digital Rights Management&lt;/a&gt;{.mw-redirect} system. It was developed by &lt;a href="http://en.wikipedia.org/wiki/Cryptography_Research" title="Cryptography Research"&gt;Cryptography Research&lt;/a&gt; Inc. and is based on their &lt;a href="http://en.wikipedia.org/wiki/Self-Protecting_Digital_Content" title="Self-Protecting Digital Content"&gt;Self-Protecting Digital Content&lt;/a&gt; concept. BD+ played an important role in the past format war of Blu-ray Disc and HD &lt;acronym title="Digital Versatile Disc"&gt;DVD&lt;/acronym&gt;. Several studios have cited Blu-ray Disc’s adoption of the BD+ anti-copying system as the reason they supported Blu-ray Disc over HD &lt;acronym title="Digital Versatile Disc"&gt;DVD&lt;/acronym&gt;.&lt;/p&gt;</description></item><item><title>Ubuntu 8.10: Intrepid Ibex Released!</title><link>https://www.thushanfernando.com/index.php/2008/10/31/ubuntu-810-intrepid-ibex-released/</link><pubDate>Fri, 31 Oct 2008 02:32:55 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2008/10/31/ubuntu-810-intrepid-ibex-released/</guid><description>&lt;p&gt;With the amount of coverage surely to be taken by &lt;a href="/categories/windows/"&gt;Windows 7&lt;/a&gt; we can’t forget the other side of the force, &lt;a href="/index.php/2008/10/31/ubuntu-810-intrepid-ibex-released/"&gt;Ubuntu 8.10 Intrepid Ibex&lt;/a&gt; was released a few hours ago.&lt;/p&gt;
&lt;p&gt;Believe it or not I actually stayed up waiting for it to hit the servers, then hopped over to the &lt;a href="http://ftp.iinet.net.au/linux/ubuntu-cd-images/8.10"&gt;iinet &lt;acronym title="File Transfer Protocol"&gt;FTP&lt;/acronym&gt; server&lt;/a&gt; (mirror’d by the &lt;a href="http://mirror.internode.on.net/pub/ubuntu/releases/8.10/"&gt;Internode servers&lt;/a&gt; also) as the &lt;a href="http://mirror.3fl.net.au/pub/ubuntu/releases/8.10/"&gt;3FL Mirror&lt;/a&gt; (&lt;a href="http://www.westnet.com.au"&gt;Westnet&lt;/a&gt;) wasn’t up to date (it is now!) and started leeching the sucker.&lt;/p&gt;</description></item><item><title>Going Deep: Inside Windows 7 with Mark Russinovich</title><link>https://www.thushanfernando.com/index.php/2008/10/29/going-deep-inside-windows-7-with-mark-russinovich/</link><pubDate>Wed, 29 Oct 2008 09:30:31 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2008/10/29/going-deep-inside-windows-7-with-mark-russinovich/</guid><description>&lt;p&gt;If you like discussions about deep internals you’ll most definately have subscribed to the &lt;a href="http://channel9.msdn.com/shows/Going+Deep/"&gt;Going Deep series&lt;/a&gt; on &lt;a href="http://channel9.msdn.com"&gt;Channel 9&lt;/a&gt;. Today they just released a fascinating interview with Kernel Guru, &lt;a href="http://blogs.technet.com/markrussinovich/about.aspx"&gt;Mark Russinovich&lt;/a&gt; – of &lt;a href="http://technet.microsoft.com/en-us/sysinternals/default.aspx"&gt;Sysinternals&lt;/a&gt; fame, who is now a Technical Fellow at Microsoft. One of my favourite books would have to be &lt;a href="http://www.amazon.com/Microsoft-Windows-Internals-4th-Server/dp/0735619174"&gt;Windows Internals 4th Edition&lt;/a&gt;, and reference it quite frequently. Cant wait for the &lt;a href="http://www.amazon.com/Windows%C2%AE-Internals-Including-Windows-PRO-Developer/dp/0735625301"&gt;5th edition&lt;/a&gt;!!!&lt;/p&gt;</description></item><item><title>Windows Se7en: So it begins…</title><link>https://www.thushanfernando.com/index.php/2008/10/29/windows-se7en-so-it-begins/</link><pubDate>Wed, 29 Oct 2008 02:32:56 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2008/10/29/windows-se7en-so-it-begins/</guid><description>&lt;p&gt;Unless you’ve been living under a rock under the &lt;a href="http://www.apple.com"&gt;Apple tree&lt;/a&gt; you would have heard that a &lt;a href="http://www.microsoft.com"&gt;little company in Redmond WA&lt;/a&gt; has been working on a new version of Windows dubbed &lt;a href="http://en.wikipedia.org/wiki/Windows_7"&gt;Windows 7&lt;/a&gt; (which is what it will actually be called for once!).&lt;/p&gt;
&lt;p&gt;At &lt;a href="http://www.microsoftpdc.com/"&gt;PDC today&lt;/a&gt;, Microsoft finally unveiled the much-anticipated release of Windows 7 and handed out pre-beta bits to atendees (tagged &lt;em&gt;6801.winmain_win7m3.081020-1655&lt;/em&gt;). They demonstrated a newer build which was tagged &lt;em&gt;6933.winmain.081020-184&lt;/em&gt; during PDC which unfortunately was not given out. Unfortunately I couldn’t go due to work constraints, but in case your in the same boat I’ve collected some of the best sources of info out there for you to browse through.&lt;/p&gt;</description></item><item><title>COOL TOOL: Throwaway the CDs &amp; DVDs, use your Flash Drive + UNetbootin to install Linux!</title><link>https://www.thushanfernando.com/index.php/2008/10/11/cool-tool-throwaway-the-cds-dvds-use-your-flash-drive-unetbootbin-to-install-linux/</link><pubDate>Sat, 11 Oct 2008 05:23:45 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2008/10/11/cool-tool-throwaway-the-cds-dvds-use-your-flash-drive-unetbootbin-to-install-linux/</guid><description>&lt;p&gt;I’ll admit it, I still have a floppy-drive attached to &lt;a href="http://service.futuremark.com/resultComparison.action?compareResultId=4772&amp;amp;compareResultType=18"&gt;my maturing beast&lt;/a&gt;, which is primarily used as my day-to-day development box. Floppies come in handy for that odd install of XP or below that require &lt;acronym title="Redundant Array of Inexpensive Disks"&gt;RAID&lt;/acronym&gt; drivers (though you can just &lt;a href="http://www.nliteos.com/"&gt;use nLite and bundle it&lt;/a&gt; by default).&lt;/p&gt;</description></item><item><title>HOWTO: Running ASP.NET 2.0 Ajax Toolkit 1.0.x in .NET 3.5 / SP1 IIS</title><link>https://www.thushanfernando.com/index.php/2008/10/01/howto-running-aspnet-20-ajax-toolkit-10x-in-net-35-sp1-iis/</link><pubDate>Wed, 01 Oct 2008 02:35:25 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2008/10/01/howto-running-aspnet-20-ajax-toolkit-10x-in-net-35-sp1-iis/</guid><description>&lt;p&gt;We had a bit of a dilemma at work today, we just sent a version of a web application we’ve been working on for the past few months to staging (testing) to our client. Our client mentioned a move to &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=333325FD-AE52-4E35-B531-508D977D32A6&amp;amp;displaylang=en"&gt;.NET 3.5&lt;/a&gt; is pending on the boxes there and that they need to ensure the products we ship are compatible. Should be right?&lt;/p&gt;</description></item><item><title>HOWTO: Network Monitoring with nTop in Ubuntu</title><link>https://www.thushanfernando.com/index.php/2008/09/28/howto-network-monitoring-with-ntop-in-ubuntu/</link><pubDate>Sun, 28 Sep 2008 04:14:22 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2008/09/28/howto-network-monitoring-with-ntop-in-ubuntu/</guid><description>&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.ntop.org/overview.html"&gt;ntop&lt;/a&gt;&lt;/strong&gt; is a network probe that shows how much the network is being utilised with very little overhead and impressive graphical representation via the web. Its definitely a must-have tool if you run a fileserver.&lt;/p&gt;
&lt;p&gt;The version of ntop on the ubuntu mirrors is 3.2.x, so I set out to update to the latest release this weekend (3.3.x released in June last year).&lt;/p&gt;</description></item><item><title>Managed Operating Systems &amp; COSMOS – C# Open Source Managed Operating System</title><link>https://www.thushanfernando.com/index.php/2008/09/21/managed-operating-systems-and-cosmos-c-sharp-open-source-managed-operating-system/</link><pubDate>Sun, 21 Sep 2008 08:33:31 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2008/09/21/managed-operating-systems-and-cosmos-c-sharp-open-source-managed-operating-system/</guid><description>&lt;p&gt;Writing an &lt;a href="http://en.wikipedia.org/wiki/Operating_system"&gt;operating system&lt;/a&gt; in &lt;a href="http://en.wikipedia.org/wiki/Managed_code"&gt;Managed Code&lt;/a&gt; is not entirely a new concept but its quite an interesting one. The fact that we have &lt;a href="http://en.wikipedia.org/wiki/AOT_compiler"&gt;AOT&lt;/a&gt; compilers gives us this ability to write such things. This post is a little guided tour or information dump on COSMOS as I worked through the initial bits this weekend.&lt;/p&gt;</description></item><item><title>TIP: Quick tip on how to Debug ASP.NET Web Application Deployed in IIS</title><link>https://www.thushanfernando.com/index.php/2008/09/08/tip-quick-tip-on-how-to-debug-aspnet-web-application-deployed-in-iis/</link><pubDate>Mon, 08 Sep 2008 06:07:53 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2008/09/08/tip-quick-tip-on-how-to-debug-aspnet-web-application-deployed-in-iis/</guid><description>&lt;p&gt;Heres a real quick tip (+ info) on how to debug a &lt;acronym title="Active Server Pages"&gt;ASP&lt;/acronym&gt;.NET Web Application/Site when running inside &lt;acronym title="Internet Information Services"&gt;IIS&lt;/acronym&gt; itself. After the launch of Whidbey (&lt;a href="http://msdn.microsoft.com/en-us/vs2005/default.aspx"&gt;Visual Studio 2005&lt;/a&gt;) we didn’t really need to have Internet Information Services (&lt;acronym title="Internet Information Services"&gt;IIS&lt;/acronym&gt;) installed thanks partly to the bundled hosting engine (based on &lt;a href="http://www.asp.net/Downloads/archived/cassini/"&gt;Cassini&lt;/a&gt;). But sometimes – just sometimes� 🙄 – when you deploy your &lt;acronym title="Active Server Pages"&gt;ASP&lt;/acronym&gt;.NET web apps to &lt;acronym title="Internet Information Services"&gt;IIS&lt;/acronym&gt; you’ll find things break – like we just experienced – unlike running via the internal web-server.&lt;/p&gt;</description></item><item><title>NAnt: Signing Satelite Assemblies Fix</title><link>https://www.thushanfernando.com/index.php/2008/09/04/nant-signing-satelite-assemblies-fix/</link><pubDate>Thu, 04 Sep 2008 00:36:24 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2008/09/04/nant-signing-satelite-assemblies-fix/</guid><description>&lt;p&gt;I’ve been using &lt;a href="http://nant.sourceforge.net/"&gt;NAnt&lt;/a&gt; to build our source trees at work (via &lt;a href="http://www.jetbrains.com/teamcity/"&gt;TeamCity&lt;/a&gt; ) and came across a somewhat annoying issue when it comes to signing satellite assemblies.&lt;/p&gt;
&lt;h2 id="problem-background"&gt;Problem Background&lt;/h2&gt;
&lt;p&gt;For several of the projects we use the &lt;a href="http://www.lhotka.net/cslanet/Default.aspx#"&gt;CSLA framework&lt;/a&gt; by Rockford Lhotka, the framework doesn’t ship a redistributable binary blob. When it gets built it generates the following:&lt;/p&gt;</description></item><item><title>Google Chrome Released!</title><link>https://www.thushanfernando.com/index.php/2008/09/03/google-chrome-released/</link><pubDate>Tue, 02 Sep 2008 23:42:07 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2008/09/03/google-chrome-released/</guid><description>&lt;p&gt;Google has entered the browser wars with their own take on how the web should be with &lt;a href="http://www.google.com/chrome"&gt;Google Chrome&lt;/a&gt;. They just released the first beta for Windows XP / Vista today so go on and download a copy.&lt;/p&gt;
&lt;p&gt;First impressions : WOW! Its ridiculously fast – taking &lt;a href="http://www.digg.com"&gt;Digg&lt;/a&gt; and &lt;a href="http://www.pageflakes.com"&gt;PageFlakes&lt;/a&gt; as a benchmark – and the memory footprint is quite a lot better (&lt;em&gt;23Mb&lt;/em&gt;) than the Firefox (&lt;em&gt;68Mb – Safemode&lt;/em&gt;), Opera (41Mb) and Internet Explorer (&lt;em&gt;52Mb&lt;/em&gt;) counterparts. As expected, each tab is a new child process to the main Chrome process, so closing a tab instantly releases the resources held by the child process.&lt;/p&gt;</description></item><item><title>Chrome, an Innovative browser from Google</title><link>https://www.thushanfernando.com/index.php/2008/09/02/chrome-an-innovative-browser-from-google/</link><pubDate>Tue, 02 Sep 2008 03:50:08 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2008/09/02/chrome-an-innovative-browser-from-google/</guid><description>&lt;p&gt;I’ve just been &lt;a href="http://blogoscoped.com/archive/2008-09-01-n47.html"&gt;reading up&lt;/a&gt; on the newly announced &lt;a href="http://blogoscoped.com/archive/2008-09-01-n47.html"&gt;&lt;/a&gt;&lt;a href="http://www.google.com/chrome"&gt;Google Chrome&lt;/a&gt; browser that will no doubt set a new standard for browsers. Its built on the WebKit engine and includes some really really different train of thoughts on how browsers should act and behave. You can read a very nicely done &lt;a href="http://www.agglom.com/webslideshow/1876/Google_Chrome_The_Comic_Book"&gt;Comic Strip&lt;/a&gt; on the new things we can expect to see, which I think is genius in itself.&lt;/p&gt;</description></item><item><title>Lutz Roeder’s .NET Reflector to be maintained by Red Gate Software</title><link>https://www.thushanfernando.com/index.php/2008/08/27/lutz-roeders-net-reflector-to-be-maintained-by-red-gate-software/</link><pubDate>Wed, 27 Aug 2008 13:31:19 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2008/08/27/lutz-roeders-net-reflector-to-be-maintained-by-red-gate-software/</guid><description>&lt;p&gt;Lutz Roeder just sent the word out that he has stopped working on Reflector handing the reigns to &lt;a href="http://www.red-gate.com/"&gt;Red Gate Software&lt;/a&gt; who themselves have some impressive software such as the &lt;a href="http://www.red-gate.com/products/ants_profiler/index.htm"&gt;ANTS Profiler&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote &gt;
&lt;strong&gt;Lutz&amp;rsquo;s note&lt;/strong&gt;&lt;br&gt;
&lt;p&gt;After more than eight years of working on .NET Reflector, I have decided it is time to move on and explore some new opportunities.&lt;/p&gt;</description></item><item><title>FIX: Rule “Previous releases of Microsoft Visual Studio 2008” failed.</title><link>https://www.thushanfernando.com/index.php/2008/08/10/fix-rule-previous-releases-of-microsoft-visual-studio-2008-failed/</link><pubDate>Sun, 10 Aug 2008 05:26:46 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2008/08/10/fix-rule-previous-releases-of-microsoft-visual-studio-2008-failed/</guid><description>&lt;blockquote&gt;
&lt;p&gt;18/05/2020 Far easier solution was given by &lt;a href="/index.php/2008/08/10/fix-rule-previous-releases-of-microsoft-visual-studio-2008-failed/#comment-494"&gt;Paul in the comments section&lt;/a&gt; of the old blog. As the move to Hugo clobbered the comments, this article brings the workable solution from Paul and updated for 2020.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;As you may be aware, &lt;a href="http://www.microsoft.com/presspass/press/2008/aug08/08-06SQLServer2008PR.mspx" title="Microsoft SQL Server 2008 Press Release"&gt;Microsoft RTM’d &lt;acronym title="Structured Query Language"&gt;SQL&lt;/acronym&gt; Server 2008&lt;/a&gt; a few days ago, unfortunately if you have the RTM version of Visual Studio 2008 (any edition) installed you’ll find that installing &lt;acronym title="Structured Query Language"&gt;SQL&lt;/acronym&gt; Server 2008 you’ll get a nasty little surprise: &lt;b&gt;asg&lt;/b&gt;&lt;/p&gt;</description></item><item><title>Design Patterns in C# &amp; Java : The Singleton.</title><link>https://www.thushanfernando.com/index.php/2008/06/27/design-patterns-in-c-java-the-singleton/</link><pubDate>Fri, 27 Jun 2008 12:16:38 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2008/06/27/design-patterns-in-c-java-the-singleton/</guid><description>&lt;p&gt;So its back to reality of living back home! I’ve been slowly going through my mail and replying to everyones messages, one in particular stood out from someone asking me about how to implement the Singleton pattern properly in C# and Java.&lt;/p&gt;
&lt;p&gt;First of all, lets go through what the &lt;strong&gt;Singleton Design Pattern&lt;/strong&gt; is and where its used.&lt;/p&gt;</description></item><item><title>HelloWorld #3!!!</title><link>https://www.thushanfernando.com/index.php/2008/04/15/helloworld-3/</link><pubDate>Tue, 15 Apr 2008 09:07:45 +0000</pubDate><author>Thushan Fernando</author><guid>https://www.thushanfernando.com/index.php/2008/04/15/helloworld-3/</guid><description>&lt;p&gt;Well hello there yet again! After much procrastinating I’ve finally made my first initial post on the “official” &lt;a href="/"&gt;thushanfernando.com&lt;/a&gt; blog! This is technically the third blog and hopefully the one that will stick till I’m old and gray (actually I’m already starting to go gray).&lt;/p&gt;
&lt;p&gt;My &lt;a href="https://blogs.developerfusion.co.uk/blogs/thushan/"&gt;previous blog&lt;/a&gt; is still available at &lt;a href="http://www.developerfusion.com"&gt;DeveloperFusion&lt;/a&gt;&amp;rsquo;s &lt;a href="https://blogs.developerfusion.co.uk/"&gt;blog roll&lt;/a&gt;, after so long I finally gave up on &lt;a href="http://dev.communityserver.com/" title="CommunityServer"&gt;CommunityServer&lt;/a&gt; because of the &lt;a href="http://blogs.developerfusion.co.uk/blogs/thushan/archive/2008/02/09/3799.aspx#comments" title="Spam"&gt;constant comment spam&lt;/a&gt; and the lack of proper updating to address it. Not to mention that the CS blog editor is bj0rked in Firefox and while I do like to code, there are times when having a visual editor helps – especially in blogging!&lt;/p&gt;</description></item></channel></rss>