<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<feed xmlns="http://www.w3.org/2005/Atom">

	<title>Planet SysAdmin</title>
	<link rel="self" href="http://planetsysadmin.com/atom.xml"/>
	<link href="http://planetsysadmin.com/"/>
	<id>http://planetsysadmin.com/atom.xml</id>
	<updated>2012-05-18T07:16:19+00:00</updated>
	<generator uri="http://www.planetplanet.org/">Planet/2.0 +http://www.planetplanet.org</generator>

	<entry xml:lang="en">
		<title type="html">Links for 2012-05-17 [del.icio.us]</title>
		<link href="http://feedproxy.google.com/~r/AntonChuvakinPersonalBlog/~3/mhUeLm-AWvA/anton18"/>
		<id>http://del.icio.us/anton18#2012-05-17</id>
		<updated>2012-05-18T07:00:00+00:00</updated>
		<content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://h30499.www3.hp.com/t5/Following-the-White-Rabbit/Logging-Opening-Pandora-s-Box-Part-4-Awareness/ba-p/5559301&quot;&gt;HP Communities - Logging: Opening Pandora's Box - Part 4 (Awareness... - Enterprise Business Community&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/AntonChuvakinPersonalBlog/~4/mhUeLm-AWvA&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Dr Anton Chuvakin</name>
			<email>noreply@blogger.com</email>
			<uri>http://chuvakin.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Dr Anton Chuvakin Blog PERSONAL Blog</title>
			<subtitle type="html">LogChat: Andrew Hay and Anton Chuvakin talk about logging, log management and related topics</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/AntonChuvakinPersonalBlog"/>
			<id>tag:blogger.com,1999:blog-19553129</id>
			<updated>2012-05-18T07:16:08+00:00</updated>
			<rights type="html">(C) Anton Chuvakin and Andrew Hay</rights>
		</source>
	</entry>

	<entry>
		<title type="html">My Firefox 12 extensions and addons</title>
		<link href="http://utcc.utoronto.ca/~cks/space/blog/web/Firefox12Extensions"/>
		<id>tag:cspace@cks.mef.org,2009-03-24:/blog/web/Firefox12Extensions</id>
		<updated>2012-05-17T20:15:55+00:00</updated>
		<content type="html">&lt;div class=&quot;wikitext&quot;&gt;&lt;h2&gt;My Firefox 12 extensions and addons&lt;/h2&gt;

&lt;p&gt;In light of &lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/web/FirefoxNightly-2012-05-13&quot;&gt;yesterday's entry about my failed Firefox Nightly
experiment&lt;/a&gt; and the potential that some of
my extensions are the root cause of my Firefox problems, I'm going
to run down the current set of Firefox extensions that I use in my
main browser (updating &lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/web/Firefox7Extensions&quot;&gt;previous&lt;/a&gt; &lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/web/Firefox7ExtensionsII&quot;&gt;discussions&lt;/a&gt; from the Firefox 7 era, which alarmingly was less
than a year ago). This time around I'm going to group them by purpose:&lt;/p&gt;

&lt;p&gt;Safe browsing:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/noscript/&quot;&gt;NoScript&lt;/a&gt;
to disable JavaScript for almost everything. I browse with JS blocked
and only enable it selectively on sites when I have to (and almost
always temporarily). I consider this more an issue of safety than of
performance; I simply don't trust most JavaScript from most sites to
not do things that will make me unhappy.&lt;p&gt;
(&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/noscript/&quot;&gt;NoScript&lt;/a&gt; also takes care of blocking Flash, Java, and so on.)&lt;p&gt;
&lt;/p&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/cookiesafe-ff-4-compatible/&quot;&gt;CookieSafe 3.0.5&lt;/a&gt;,
with the actual addon &lt;a href=&quot;http://sourceforge.net/projects/cookiesafe/files/3.1/&quot;&gt;here&lt;/a&gt;. I browse through
a filtering proxy and it blocks ordinary cookies, but it can't
do anything about cookies I get over HTTPS or via JavaScript. I
use CookieSafe to block those (there's some more explanation &lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/web/FirefoxExtensions&quot;&gt;here&lt;/a&gt;).&lt;p&gt;
(For me, CookieSafe 3.1a10 has an explosive interaction with NoScript
that hangs Firefox in some sort of infinite JavaScript loop, so I am
still on 3.0.5 aka the 2011-12-10 version of CookieSafe.)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;User interface:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/all-in-one-gestures/&quot;&gt;All-in-One Gestures&lt;/a&gt;
(specifically &lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/programming/AllInOneCustomization&quot;&gt;my tweaked version of it&lt;/a&gt;). I turn off A-i-O autoscroll
because the native Firefox autoscroll is better (and has been for
years). A-i-O hasn't been updated in ages but still seems to be the
best, most reliable gesture extension in my brief experimentation.&lt;p&gt;
(&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/firegestures/&quot;&gt;FireGestures&lt;/a&gt; is
actively developed but the last time I tried it there was an odd
bug with changing font size settings; however, that was a while
back. It would be my leading alternate here.)&lt;p&gt;
&lt;strong&gt;Update&lt;/strong&gt;: All-in-One Gestures seems to have been a major cause
of my Firefox memory bloat problems. I've now replaced it with
&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/firegestures/&quot;&gt;FireGestures&lt;/a&gt;; see &lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/web/Firefox12Gestures&quot;&gt;this update&lt;/a&gt;. I can no
longer recommend it.&lt;p&gt;
&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/status-4-evar/&quot;&gt;Status-4-Evar&lt;/a&gt;
restores the old Firefox bottom status bar so that I can see the
full display of link targets and have a useful page load status
display.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fixing annoying websites, especially Google's:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/greasemonkey/&quot;&gt;GreaseMonkey&lt;/a&gt;
combined with the &lt;a href=&quot;http://userscripts.org/scripts/show/95092&quot;&gt;Google Link Cleanup&lt;/a&gt; user script to remove
Google's tracking links from search results. I hate these tracking
links with a burning passion for two reasons; first, I have no
interest in letting Google know what search results I've followed
and second, Google's tracking links screw up my history so that I
can't see which search results I've already read and which are new.&lt;p&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/stylish/&quot;&gt;Stylish&lt;/a&gt;
combined with a number of mostly personally written styles to fix
various website misdesigns. The most important is &lt;a href=&quot;http://userstyles.org/styles/29712/google-search-disable-left-option-sidebar&quot;&gt;a version of
this user style&lt;/a&gt;
to disable the left option sidebar in Google searches (because I hate it
and I use Google all the time). I also have &lt;a href=&quot;http://userstyles.org/styles/55666/compact-google-reader&quot;&gt;Compact Google Reader&lt;/a&gt; in the Firefox
instance I use with Google Reader, for similar reasons.&lt;p&gt;
(&lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/web/FixingGoogleRedesign&quot;&gt;This entry&lt;/a&gt; and its comments have a bunch of
discussion about ways to fix Google's layout issues.)&lt;p&gt;
I could probably replace my use of &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/stylish/&quot;&gt;Stylish&lt;/a&gt; with more &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/greasemonkey/&quot;&gt;GreaseMonkey&lt;/a&gt;
user scripts, but I started with &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/stylish/&quot;&gt;Stylish&lt;/a&gt; and I prefer fixing things
with CSS alterations than with JavaScript (even if the JavaScript just
inserts CSS alterations). Certainly there seem to be plenty of 'fix
Google stuff' GreaseMonkey user scripts, eg &lt;a href=&quot;http://userscripts.org/scripts/show/116931&quot;&gt;this one for Google Reader&lt;/a&gt; (which I have not tried).&lt;/p&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Improving my life:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/its-all-text/&quot;&gt;It's All Text!&lt;/a&gt;
handily deals with &lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/web/BrowsersMakeBadEditors&quot;&gt;how browsers make bad editors&lt;/a&gt;. The more I have it available the more I
use it (and the longer comments and so on I wind up leaving, because
I can actually edit them sensibly; this may not be a plus, all things
considered).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Modern versions of Firefox also give you a JavaScript based PDF viewer
addon for free. I have not done much with this and in fact currently
have it turned off.&lt;/p&gt;

&lt;p&gt;Of these extensions, I consider &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/noscript/&quot;&gt;NoScript&lt;/a&gt;, &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/all-in-one-gestures/&quot;&gt;All-in-One Gestures&lt;/a&gt;,
&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/greasemonkey/&quot;&gt;GreaseMonkey&lt;/a&gt;, and &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/stylish/&quot;&gt;Stylish&lt;/a&gt; to be completely essential. I can sort
of live without the others, so as an experiment I am trying that to
see if it makes a difference in Firefox memory usage and the number of
zombie compartments that build up. If I am serious about this, I probably
should migrate away from &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/stylish/&quot;&gt;Stylish&lt;/a&gt; to &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/greasemonkey/&quot;&gt;GreaseMonkey&lt;/a&gt; for everything
on the grounds that the latter is probably more actively used and maintained
and so any leaks it has are more likely to get fixed promptly.&lt;/p&gt;

&lt;p&gt;(Unfortunately I suspect that A-i-O is a likely candidate to be a leaky
extension, since it hasn't been updated in ages.)&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt; (&lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/web/Firefox12Extensions?showcomments#comments&quot;&gt;5 comments&lt;/a&gt;.) &lt;/div&gt;</content>
		<author>
			<name>cks</name>
			<uri>http://utcc.utoronto.ca/~cks/space/blog/</uri>
		</author>
		<source>
			<title type="html">Chris's Wiki :: blog</title>
			<subtitle type="html">Recently changed pages in Chris's Wiki :: blog.</subtitle>
			<link rel="self" href="http://utcc.utoronto.ca/~cks/space/blog/?atom"/>
			<id>http://utcc.utoronto.ca/~cks/space/blog/?atom</id>
			<updated>2012-05-17T21:15:32+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">My experiment with Firefox Nightly builds: a failure</title>
		<link href="http://utcc.utoronto.ca/~cks/space/blog/web/FirefoxNightly-2012-05-13"/>
		<id>tag:cspace@cks.mef.org,2009-03-24:/blog/web/FirefoxNightly-2012-05-13</id>
		<updated>2012-05-17T20:14:08+00:00</updated>
		<content type="html">&lt;div class=&quot;wikitext&quot;&gt;&lt;h2&gt;My experiment with Firefox Nightly builds: a failure&lt;/h2&gt;

&lt;p&gt;Ever since &lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/web/SlowFirefox&quot;&gt;my old Firefox build started crashing&lt;/a&gt; and I
was &lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/web/Firefox7Extensions&quot;&gt;forced to update to current versions&lt;/a&gt;, I've
had serious memory issues with Firefox.  I used to be able to leave
Firefox running for weeks (or months) with basically stable memory
usage. Now, Firefox will steadily bloat up from under a GB of resident
memory at its initial steady state to, say, 1.5 GB in a few days at
most. Although &lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/linux/HomeMachine2011&quot;&gt;my current machine&lt;/a&gt; has 16
GB of RAM, Firefox progressively gets slower and slower as its resident
memory grows; by the time it reaches around 1.5 to 1.6 GB resident the
performance is visibly dragging and I have to restart.&lt;/p&gt;

&lt;p&gt;Recently I stumbled across &lt;a href=&quot;http://blog.mozilla.org/nnethercote/2012/05/07/update-on-leaky-add-ons/&quot;&gt;this Mozilla blog entry&lt;/a&gt;
on Firefox memory usage, which discusses how current Firefox builds
have changes that reduce memory leaks, especially a drastic reduction
in &lt;a href=&quot;https://developer.mozilla.org/en/Zombie_compartments&quot;&gt;zombie compartments&lt;/a&gt; (see &lt;a href=&quot;http://blog.kylehuey.com/post/21892343371/fixing-the-memory-leak&quot;&gt;this
entry&lt;/a&gt;
for more). Ever since I discovered the verbose about:memory
information, I've noticed that I have zombie compartments that
linger from my ordinary browsing; the longer I browse, the more
zombie compartments build up. A Firefox change that actually dropped
zombie compartments seemed very promising, certainly promising
enough to build a current version of Firefox and see what happened.&lt;/p&gt;

&lt;p&gt;(Thus this is not quite an experiment with the literal Nightly
builds, although it should be very close; as far as I understand,
they're built from the same &lt;a href=&quot;https://developer.mozilla.org/en/mozilla-central&quot;&gt;source repository&lt;/a&gt; (&lt;a href=&quot;https://developer.mozilla.org/en/Mozilla_Source_Code_%28Mercurial%29&quot;&gt;see also&lt;/a&gt;)
that I was using.)&lt;/p&gt;

&lt;p&gt;Unfortunately, the experiment turned out to be mostly a failure,
although a sort of interesting one; in some ways Firefox improved
but in other ways it got significantly worse. &lt;a href=&quot;http://twitter.com/thatcks/status/201407418591227905&quot;&gt;I tweeted&lt;/a&gt; a cryptic short
form version, and I feel like elaborating on it now.&lt;/p&gt;

&lt;p&gt;What improved was Firefox's responsiveness as its resident memory grew.
Firefox 12 visibly starts slowing down with as little as 1.2 or 1.3 GB
of resident memory; the current Firefox code was still running almost as
well as at start when it reached 2 GB or more of resident memory, and
it might have kept going even as it bloated more. What did not improve
was everything else. I still saw zombie compartments (probably just as
many as before) and if anything Firefox memory usage grew faster than
under Firefox 12, reaching 2 GB resident in a day or two. But the worse
thing was that at home, Firefox would soon get into a state where it was
constantly using CPU (apparently talking with the X server). In this
state it would not shut down gracefully; I could quit Firefox and it
would close all its windows, but the process would not exit and would
continue consuming the CPU talking with the X server.&lt;/p&gt;

&lt;p&gt;(I had to use '&lt;code&gt;kill -9&lt;/code&gt;' to get it to exit, and this happened more than
once with builds across several days. It was also odd CPU usage; it
showed clearly in &lt;code&gt;top&lt;/code&gt; but did not affect the load average and didn't
lag the X server that I could tell.)&lt;/p&gt;

&lt;p&gt;Unclean shutdowns aren't something that I considered acceptable in
this situation so I am now back to Firefox 12, &lt;a href=&quot;http://twitter.com/thatcks/status/186905210847887361&quot;&gt;memory bloat slowdown&lt;/a&gt; &lt;a href=&quot;http://twitter.com/thatcks/status/186905373331034114&quot;&gt;and all&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It's possible that the current Firefox codebase will improve as it
marches towards release, eliminating the memory bloat and 100% CPU usage
while preserving responsiveness as its memory usage grows. I could live
with that and it certainly would be an improvement over the status
quo. (In some ways, simply eliminating the CPU usage would be a bit
of an improvement over the status quo, although I don't like Firefox
consuming several GB of my RAM for no good reason.)&lt;/p&gt;

&lt;p&gt;(Despite the result, I don't regret doing this experiment; it was worth
trying and it didn't particularly explode in my face.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update, May 17th&lt;/strong&gt;: It seems that most of my Nightly memory problems
were probably due to a single old extension I was using. &lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/web/Firefox12Gestures&quot;&gt;See this
update&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Sidebar: dealing with this with Chrome or by disabling extensions&lt;/h3&gt;

&lt;p&gt;Chrome is not something I consider an acceptable alternative to
Firefox, so switching to it is not an option.&lt;/p&gt;

&lt;p&gt;One piece of advice the Mozilla people give about this sort of memory
bloat is 'disable unnecessary addons'. Well, I don't have any of
those; all of the addons I have loaded are ones that I consider either
absolutely necessary (to the point where I would not browse without
them) or important for how I use Firefox.&lt;/p&gt;

&lt;p&gt;(I suppose there's one or two that I don't
use very often, like &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/its-all-text/&quot;&gt;It's All Text!&lt;/a&gt;, but it
would be actively painful periodically.)&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt; (&lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/web/FirefoxNightly-2012-05-13?showcomments#comments&quot;&gt;4 comments&lt;/a&gt;.) &lt;/div&gt;</content>
		<author>
			<name>cks</name>
			<uri>http://utcc.utoronto.ca/~cks/space/blog/</uri>
		</author>
		<source>
			<title type="html">Chris's Wiki :: blog</title>
			<subtitle type="html">Recently changed pages in Chris's Wiki :: blog.</subtitle>
			<link rel="self" href="http://utcc.utoronto.ca/~cks/space/blog/?atom"/>
			<id>http://utcc.utoronto.ca/~cks/space/blog/?atom</id>
			<updated>2012-05-17T21:15:32+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">My Firefox memory bloat was mostly from All-in-One Gestures</title>
		<link href="http://utcc.utoronto.ca/~cks/space/blog/web/Firefox12Gestures"/>
		<id>tag:cspace@cks.mef.org,2009-03-24:/blog/web/Firefox12Gestures</id>
		<updated>2012-05-17T20:12:07+00:00</updated>
		<content type="html">&lt;div class=&quot;wikitext&quot;&gt;&lt;h2&gt;My Firefox memory bloat was mostly from All-in-One Gestures&lt;/h2&gt;

&lt;p&gt;It's time for an update to my prior Firefox situation (&lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/web/FirefoxNightly-2012-05-13&quot;&gt;one&lt;/a&gt;, &lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/web/Firefox12Extensions&quot;&gt;two&lt;/a&gt;).
After some experimentation it's become clear that most
of &lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/web/FirefoxNightly-2012-05-13&quot;&gt;my Firefox problems&lt;/a&gt;
with constant memory growth and &lt;a href=&quot;https://developer.mozilla.org/en/Zombie_compartments&quot;&gt;zombie compartments&lt;/a&gt; were due
to my use of All-in-One Gestures (&lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/web/Firefox12Extensions&quot;&gt;as I kind of suspected it
might be&lt;/a&gt;). I've switched to &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/firegestures/&quot;&gt;FireGestures&lt;/a&gt; instead
(initially as an experiment and now full time on all of my various
Firefox instances on various different machines) and things have been
much better; there are no zombie compartments at all and memory growth
seems to have dropped significantly (although it's not clear yet if
it's completely gone). And I haven't run into any problems or bugs
this time around; everything has just worked the way I expected.&lt;/p&gt;

&lt;p&gt;(A-i-O doesn't seem to have been the only problem I had; for example, it
seems to be a bad idea to leave a tab or window sitting around with an
embedded Youtube video. It's also not clear if Firefox Nightly behaves
well for me in general because I haven't been able to leave it running
for multiple days yet.)&lt;/p&gt;

&lt;p&gt;In addition to less memory usage, &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/firegestures/&quot;&gt;FireGestures&lt;/a&gt; also seems to simply
be more responsive and snappy than A-i-O.  It certainly has more useful
features, including the ability to add gestures without needing to hack
the source code, a library of existing additional gestures (including
the one that I wanted), and the ability to 'back up' and 'restore' your
settings (which for me really means the ability to easily synchronize my
gestures between multiple Firefox instances).&lt;/p&gt;

&lt;p&gt;(See &lt;a href=&quot;http://www.xuldev.org/firegestures/&quot;&gt;FireGesture's homepage&lt;/a&gt;
for more information on all of this.)&lt;/p&gt;

&lt;p&gt;So &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/firegestures/&quot;&gt;FireGestures&lt;/a&gt; is now one of my core extensions, replacing
All-in-One Gestures in &lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/web/Firefox12Extensions&quot;&gt;the previous list&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The one drawback of &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/firegestures/&quot;&gt;FireGestures&lt;/a&gt; is that it doesn't work in Firefox
3.6; my laptop is still running Fedora 14 with this Firefox release
(because that's the last one with Gnome 2 instead of Gnome 3). I don't
consider this a real drawback, but you may.&lt;/p&gt;

&lt;p&gt;PS: people migrating from All-in-One Gestures to &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/firegestures/&quot;&gt;FireGestures&lt;/a&gt; might
want to use Down-Right-Down to call up the A-i-O information display
that shows all of your gestures and then save it (as an HTML page, which
is what it is). You can then conveniently look at it later when you're
using &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/firegestures/&quot;&gt;FireGestures&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;(I am far too impatient to try to retrain years of reflexes to use the
native &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/firegestures/&quot;&gt;FireGestures&lt;/a&gt; gestures for various actions; I just ruthlessly
rewrote them to be the A-i-O gestures I'm used to.)&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt; (&lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/web/Firefox12Gestures?showcomments#comments&quot;&gt;One comment&lt;/a&gt;.) &lt;/div&gt;</content>
		<author>
			<name>cks</name>
			<uri>http://utcc.utoronto.ca/~cks/space/blog/</uri>
		</author>
		<source>
			<title type="html">Chris's Wiki :: blog</title>
			<subtitle type="html">Recently changed pages in Chris's Wiki :: blog.</subtitle>
			<link rel="self" href="http://utcc.utoronto.ca/~cks/space/blog/?atom"/>
			<id>http://utcc.utoronto.ca/~cks/space/blog/?atom</id>
			<updated>2012-05-17T21:15:32+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">The Go language's problem on 32-bit machines</title>
		<link href="http://utcc.utoronto.ca/~cks/space/blog/programming/GoLang32BitProblem"/>
		<id>tag:cspace@cks.mef.org,2009-03-24:/blog/programming/GoLang32BitProblem</id>
		<updated>2012-05-17T07:20:06+00:00</updated>
		<content type="html">&lt;div class=&quot;wikitext&quot;&gt;&lt;h2&gt;The Go language's problem on 32-bit machines&lt;/h2&gt;

&lt;p&gt;Recently (for my value of recently) there was &lt;a href=&quot;http://news.ycombinator.com/item?id=3805302&quot;&gt;somewhat of a
commotion&lt;/a&gt; of &lt;a href=&quot;http://groups.google.com/group/golang-nuts/browse_thread/thread/ab1971bb9459025d&quot;&gt;people
declaring&lt;/a&gt;
that &lt;a href=&quot;http://golang.org/&quot;&gt;Go&lt;/a&gt; wasn't usable in production on 32-bit
systems because its garbage collection was broken and it would eat
all of your memory. Naturally I was interested in this and spent
some time digging in to the reports and trying to understand the
situation. Today I'm going to try to write down as much as I know
about what's going on to get it straight in my head, which is going
to involve a trip into the fun land of garbage collection.&lt;/p&gt;

&lt;p&gt;To simplify a bit, the purpose of &lt;a href=&quot;http://en.wikipedia.org/wiki/Garbage_collection_%28computer_science%29&quot;&gt;garbage collection&lt;/a&gt;
is to automatically free up memory that's no longer used. The
GC technique everyone starts with is &lt;a href=&quot;http://en.wikipedia.org/wiki/Reference_counting&quot;&gt;reference counting&lt;/a&gt; but since it has
various problems (including dealing with circular references) most
people soon upgrade to more complex schemes based on inverting the
problem: rather than noticing when something stops being used, the
garbage collection system periodically finds all of the memory that's
still actively used and then frees everything else. This is 'tracing
garbage collection' (and garbage collectors), so called because the
garbage collector 'traces' all live objects.&lt;/p&gt;

&lt;p&gt;One deep but unsexy problem in garbage collection is how your GC system
knows what fields in your objects refer to other objects and what fields
are just primitive types like numbers, memory buffers, strings, or
the like, and how it does this efficiently. This can be a particular
issue for a system language where you probably want to have structures
and objects that are as simple and dense as possible, with as little
overhead from type annotations, inefficient 'boxed' representations, and
so on as possible. One solution is to maintain a separate bitmap of what
words in an allocated memory area are actually pointers (which the GC
can then scan efficiently, and which can be set by the runtime when an
object is allocated).
Another solution is what gets called 'conservative garbage collection'.
The fundamental idea is that in conservative GC, we are willing to
over-estimate references (and thus wind up not freeing some unused
memory); rather than insisting on knowing about references, the GC
system simply scans through allocated memory looking anything that
&lt;em&gt;might&lt;/em&gt; be a pointer to an allocated object. If it finds one, it
conservatively declares that the object is still alive and traces things
from there.&lt;/p&gt;

&lt;p&gt;Go was initially designed as a system language, although it's no longer
described as one. As such, one of the tradeoffs the language designers
made is that &lt;strong&gt;Go more or less uses conservative garbage collection&lt;/strong&gt;,
as far as I understand, at least for objects or at least memory areas
that may contain pointers (some static data that's known to be pointer
free may be skipped by the conservative GC). Although there's said to be
the start of a more efficient word-bitmap implementation for Go objects,
it's not currently usable by the GC (and may not be fully live).&lt;/p&gt;

&lt;p&gt;(As far as I can tell from commentary, Go's garbage collector only scans
Go's own memory areas; it doesn't make any attempt to scan memory used
by outside libraries or code to find references to Go objects. Runtime
code that passes a pointer to a Go object to an outside function is
apparently required to keep the object alive inside Go, for example by
hooking it into a global variable.)&lt;/p&gt;

&lt;p&gt;The problem with conservative GC is that it over-estimates memory still
in use because it finds false 'references', things that look like
pointers to allocated objects that aren't actually that. There are a
number of factors that make conservative GC worse:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;the more of your address space is in use for language objects, the
more random values can look like references to them. If half of
the address space is your objects, half of all properly aligned
N-bit patterns look like pointers to your objects (where N is the
size of a pointer).&lt;/li&gt;
&lt;li&gt;the smaller the address space is in general, the more of it you're
going to fill up with your objects for the same amount of memory use.
Two GB of objects is half of the 32-bit address space but a tiny
fraction of the 64-bit address space.&lt;p&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;the larger your individual objects are, the more memory a single
'reference' somewhere inside one will prevent from being freed.&lt;/li&gt;
&lt;li&gt;similarly, the more other objects a single object refers to, the
more memory will be held down by a single spurious reference to
the top object.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Many of these factors are apparently quite bad for 32-bit Go programs
that use a significant amount of memory, apparently especially for large
objects and when they use objects that the garbage collector treats
conservatively. They are drastically reduced on 64-bit machines, where
you would generally have to be unlucky in order for the conservative GC
to accidentally hold a significant amount of memory busy. However, the
problem could still happen with 64-bit Go; it's just less likely.&lt;/p&gt;

&lt;p&gt;(The general reference for this is &lt;a href=&quot;http://code.google.com/p/go/issues/detail?id=909&quot;&gt;Go language issue 909&lt;/a&gt;.)&lt;/p&gt;

&lt;p&gt;At this point I have no articulate personal reactions to all of this.
As a pragmatic matter I'm not exactly writing Go programs right now for
various reasons (although I keep vaguely wanting to because I like Go in
the abstract), so if I'm being honest it's all kind of theoretical.&lt;/p&gt;

&lt;p&gt;(My problem with Go in practice is partly that I have nothing to really
use it on. I need to find a project that calls out for it instead of
anything else.)&lt;/p&gt;

&lt;h3&gt;Sidebar: the 32-bit Windows issue&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;http://www.abtinforouzandeh.com/2012/04/08/Do-Not-Use-Go-For-32bit-Development.html&quot;&gt;There's also an issue on Windows machines&lt;/a&gt;
due to memory fragmentation (via &lt;a href=&quot;http://news.ycombinator.com/item?id=3814020&quot;&gt;Hacker News&lt;/a&gt;). When it starts, the
Go runtime tries to allocate a contiguous 512 Mbyte region of virtual
address space.  Sometimes on Windows machines enough DLLs have
loaded in enough places by this point that there isn't such a
contiguous chunk of address space left any more, the allocation
fails, and the Go runtime immediately exits with an error.&lt;/p&gt;

&lt;p&gt;(In theory this sort of address space fragmentation could happen on any
32-bit OS, but apparently Windows is uniquely susceptible for various
reasons.)&lt;/p&gt;
&lt;/div&gt;</content>
		<author>
			<name>cks</name>
			<uri>http://utcc.utoronto.ca/~cks/space/blog/</uri>
		</author>
		<source>
			<title type="html">Chris's Wiki :: blog</title>
			<subtitle type="html">Recently changed pages in Chris's Wiki :: blog.</subtitle>
			<link rel="self" href="http://utcc.utoronto.ca/~cks/space/blog/?atom"/>
			<id>http://utcc.utoronto.ca/~cks/space/blog/?atom</id>
			<updated>2012-05-17T21:15:32+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">City Misses $1.6M in Parking Tickets Because of Computer Glitch</title>
		<link href="http://catless.ncl.ac.uk/Risks/26.84.html#subj1"/>
		<id>http://catless.ncl.ac.uk/Risks/26.84.html#subj1</id>
		<updated>2012-05-16T21:16:08+00:00</updated>
		<content type="html"></content>
		<author>
			<name>RISKS Digest</name>
			<uri>http://catless.ncl.ac.uk/Risks</uri>
		</author>
		<source>
			<title type="html">RISKS Digest</title>
			<subtitle type="html">The website of the RISKS Digest mailing list</subtitle>
			<link rel="self" href="http://catless.ncl.ac.uk/rdigest.rdf"/>
			<id>http://catless.ncl.ac.uk/rdigest.rdf</id>
			<updated>2012-05-16T21:46:06+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Computer Glitch Forces Johnson County Motor Vehicle Offices to Close</title>
		<link href="http://catless.ncl.ac.uk/Risks/26.84.html#subj2"/>
		<id>http://catless.ncl.ac.uk/Risks/26.84.html#subj2</id>
		<updated>2012-05-16T21:16:08+00:00</updated>
		<content type="html"></content>
		<author>
			<name>RISKS Digest</name>
			<uri>http://catless.ncl.ac.uk/Risks</uri>
		</author>
		<source>
			<title type="html">RISKS Digest</title>
			<subtitle type="html">The website of the RISKS Digest mailing list</subtitle>
			<link rel="self" href="http://catless.ncl.ac.uk/rdigest.rdf"/>
			<id>http://catless.ncl.ac.uk/rdigest.rdf</id>
			<updated>2012-05-16T21:46:06+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Computer Glitch Gave Free Education To College Students</title>
		<link href="http://catless.ncl.ac.uk/Risks/26.84.html#subj3"/>
		<id>http://catless.ncl.ac.uk/Risks/26.84.html#subj3</id>
		<updated>2012-05-16T21:16:08+00:00</updated>
		<content type="html"></content>
		<author>
			<name>RISKS Digest</name>
			<uri>http://catless.ncl.ac.uk/Risks</uri>
		</author>
		<source>
			<title type="html">RISKS Digest</title>
			<subtitle type="html">The website of the RISKS Digest mailing list</subtitle>
			<link rel="self" href="http://catless.ncl.ac.uk/rdigest.rdf"/>
			<id>http://catless.ncl.ac.uk/rdigest.rdf</id>
			<updated>2012-05-16T21:46:06+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Computer glitch hampers Alaska deer hunt reporting</title>
		<link href="http://catless.ncl.ac.uk/Risks/26.84.html#subj4"/>
		<id>http://catless.ncl.ac.uk/Risks/26.84.html#subj4</id>
		<updated>2012-05-16T21:16:08+00:00</updated>
		<content type="html"></content>
		<author>
			<name>RISKS Digest</name>
			<uri>http://catless.ncl.ac.uk/Risks</uri>
		</author>
		<source>
			<title type="html">RISKS Digest</title>
			<subtitle type="html">The website of the RISKS Digest mailing list</subtitle>
			<link rel="self" href="http://catless.ncl.ac.uk/rdigest.rdf"/>
			<id>http://catless.ncl.ac.uk/rdigest.rdf</id>
			<updated>2012-05-16T21:46:06+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Computer glitch means NC jobless can't collect</title>
		<link href="http://catless.ncl.ac.uk/Risks/26.84.html#subj5"/>
		<id>http://catless.ncl.ac.uk/Risks/26.84.html#subj5</id>
		<updated>2012-05-16T21:16:08+00:00</updated>
		<content type="html"></content>
		<author>
			<name>RISKS Digest</name>
			<uri>http://catless.ncl.ac.uk/Risks</uri>
		</author>
		<source>
			<title type="html">RISKS Digest</title>
			<subtitle type="html">The website of the RISKS Digest mailing list</subtitle>
			<link rel="self" href="http://catless.ncl.ac.uk/rdigest.rdf"/>
			<id>http://catless.ncl.ac.uk/rdigest.rdf</id>
			<updated>2012-05-16T21:46:06+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Hundreds of potential jurors mistakenly head to Placer County courthouse</title>
		<link href="http://catless.ncl.ac.uk/Risks/26.84.html#subj6"/>
		<id>http://catless.ncl.ac.uk/Risks/26.84.html#subj6</id>
		<updated>2012-05-16T21:16:08+00:00</updated>
		<content type="html"></content>
		<author>
			<name>RISKS Digest</name>
			<uri>http://catless.ncl.ac.uk/Risks</uri>
		</author>
		<source>
			<title type="html">RISKS Digest</title>
			<subtitle type="html">The website of the RISKS Digest mailing list</subtitle>
			<link rel="self" href="http://catless.ncl.ac.uk/rdigest.rdf"/>
			<id>http://catless.ncl.ac.uk/rdigest.rdf</id>
			<updated>2012-05-16T21:46:06+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">NJ toddler on no-fly list was mistakenly pulled from JetBlue flight</title>
		<link href="http://catless.ncl.ac.uk/Risks/26.84.html#subj7"/>
		<id>http://catless.ncl.ac.uk/Risks/26.84.html#subj7</id>
		<updated>2012-05-16T21:16:08+00:00</updated>
		<content type="html"></content>
		<author>
			<name>RISKS Digest</name>
			<uri>http://catless.ncl.ac.uk/Risks</uri>
		</author>
		<source>
			<title type="html">RISKS Digest</title>
			<subtitle type="html">The website of the RISKS Digest mailing list</subtitle>
			<link rel="self" href="http://catless.ncl.ac.uk/rdigest.rdf"/>
			<id>http://catless.ncl.ac.uk/rdigest.rdf</id>
			<updated>2012-05-16T21:46:06+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Risks of financial models being gamed</title>
		<link href="http://catless.ncl.ac.uk/Risks/26.84.html#subj8"/>
		<id>http://catless.ncl.ac.uk/Risks/26.84.html#subj8</id>
		<updated>2012-05-16T21:16:08+00:00</updated>
		<content type="html"></content>
		<author>
			<name>RISKS Digest</name>
			<uri>http://catless.ncl.ac.uk/Risks</uri>
		</author>
		<source>
			<title type="html">RISKS Digest</title>
			<subtitle type="html">The website of the RISKS Digest mailing list</subtitle>
			<link rel="self" href="http://catless.ncl.ac.uk/rdigest.rdf"/>
			<id>http://catless.ncl.ac.uk/rdigest.rdf</id>
			<updated>2012-05-16T21:46:06+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Top judge: ditching software patents a &quot;bad solution&quot;</title>
		<link href="http://catless.ncl.ac.uk/Risks/26.84.html#subj9"/>
		<id>http://catless.ncl.ac.uk/Risks/26.84.html#subj9</id>
		<updated>2012-05-16T21:16:08+00:00</updated>
		<content type="html"></content>
		<author>
			<name>RISKS Digest</name>
			<uri>http://catless.ncl.ac.uk/Risks</uri>
		</author>
		<source>
			<title type="html">RISKS Digest</title>
			<subtitle type="html">The website of the RISKS Digest mailing list</subtitle>
			<link rel="self" href="http://catless.ncl.ac.uk/rdigest.rdf"/>
			<id>http://catless.ncl.ac.uk/rdigest.rdf</id>
			<updated>2012-05-16T21:46:06+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Computerized prescriptions to stop fraud -- what could go wrong?</title>
		<link href="http://catless.ncl.ac.uk/Risks/26.84.html#subj10"/>
		<id>http://catless.ncl.ac.uk/Risks/26.84.html#subj10</id>
		<updated>2012-05-16T21:16:08+00:00</updated>
		<content type="html"></content>
		<author>
			<name>RISKS Digest</name>
			<uri>http://catless.ncl.ac.uk/Risks</uri>
		</author>
		<source>
			<title type="html">RISKS Digest</title>
			<subtitle type="html">The website of the RISKS Digest mailing list</subtitle>
			<link rel="self" href="http://catless.ncl.ac.uk/rdigest.rdf"/>
			<id>http://catless.ncl.ac.uk/rdigest.rdf</id>
			<updated>2012-05-16T21:46:06+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Facebook Shares More About How It Uses Your Data</title>
		<link href="http://catless.ncl.ac.uk/Risks/26.84.html#subj11"/>
		<id>http://catless.ncl.ac.uk/Risks/26.84.html#subj11</id>
		<updated>2012-05-16T21:16:08+00:00</updated>
		<content type="html"></content>
		<author>
			<name>RISKS Digest</name>
			<uri>http://catless.ncl.ac.uk/Risks</uri>
		</author>
		<source>
			<title type="html">RISKS Digest</title>
			<subtitle type="html">The website of the RISKS Digest mailing list</subtitle>
			<link rel="self" href="http://catless.ncl.ac.uk/rdigest.rdf"/>
			<id>http://catless.ncl.ac.uk/rdigest.rdf</id>
			<updated>2012-05-16T21:46:06+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html"></title>
		<link href="http://catless.ncl.ac.uk/Risks/26.84.html#subj12"/>
		<id>http://catless.ncl.ac.uk/Risks/26.84.html#subj12</id>
		<updated>2012-05-16T21:16:08+00:00</updated>
		<content type="html"></content>
		<author>
			<name>RISKS Digest</name>
			<uri>http://catless.ncl.ac.uk/Risks</uri>
		</author>
		<source>
			<title type="html">RISKS Digest</title>
			<subtitle type="html">The website of the RISKS Digest mailing list</subtitle>
			<link rel="self" href="http://catless.ncl.ac.uk/rdigest.rdf"/>
			<id>http://catless.ncl.ac.uk/rdigest.rdf</id>
			<updated>2012-05-16T21:46:06+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Microsoft Funded Startup Aims to Kill BitTorrent Traffic</title>
		<link href="http://catless.ncl.ac.uk/Risks/26.84.html#subj13"/>
		<id>http://catless.ncl.ac.uk/Risks/26.84.html#subj13</id>
		<updated>2012-05-16T21:16:08+00:00</updated>
		<content type="html"></content>
		<author>
			<name>RISKS Digest</name>
			<uri>http://catless.ncl.ac.uk/Risks</uri>
		</author>
		<source>
			<title type="html">RISKS Digest</title>
			<subtitle type="html">The website of the RISKS Digest mailing list</subtitle>
			<link rel="self" href="http://catless.ncl.ac.uk/rdigest.rdf"/>
			<id>http://catless.ncl.ac.uk/rdigest.rdf</id>
			<updated>2012-05-16T21:46:06+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Comcast Wants You to Watch Commercials</title>
		<link href="http://catless.ncl.ac.uk/Risks/26.84.html#subj14"/>
		<id>http://catless.ncl.ac.uk/Risks/26.84.html#subj14</id>
		<updated>2012-05-16T21:16:08+00:00</updated>
		<content type="html"></content>
		<author>
			<name>RISKS Digest</name>
			<uri>http://catless.ncl.ac.uk/Risks</uri>
		</author>
		<source>
			<title type="html">RISKS Digest</title>
			<subtitle type="html">The website of the RISKS Digest mailing list</subtitle>
			<link rel="self" href="http://catless.ncl.ac.uk/rdigest.rdf"/>
			<id>http://catless.ncl.ac.uk/rdigest.rdf</id>
			<updated>2012-05-16T21:46:06+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Slick new type of &quot;password&quot;</title>
		<link href="http://catless.ncl.ac.uk/Risks/26.84.html#subj15"/>
		<id>http://catless.ncl.ac.uk/Risks/26.84.html#subj15</id>
		<updated>2012-05-16T21:16:08+00:00</updated>
		<content type="html"></content>
		<author>
			<name>RISKS Digest</name>
			<uri>http://catless.ncl.ac.uk/Risks</uri>
		</author>
		<source>
			<title type="html">RISKS Digest</title>
			<subtitle type="html">The website of the RISKS Digest mailing list</subtitle>
			<link rel="self" href="http://catless.ncl.ac.uk/rdigest.rdf"/>
			<id>http://catless.ncl.ac.uk/rdigest.rdf</id>
			<updated>2012-05-16T21:46:06+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">DNSCrypt for Windows released: Does DNSSEC make it obsolete?</title>
		<link href="http://feedproxy.google.com/~r/techrepublic/security/~3/e-1XIBE3Tg8/7896"/>
		<id>http://www.techrepublic.com/blog/security/dnscrypt-for-windows-released-does-dnssec-make-it-obsolete/7896</id>
		<updated>2012-05-16T19:50:51+00:00</updated>
		<content type="html">OpenDNS just released a Windows version of DNSCrypt, but does the implementation of the DNSSEC protocol make it obsolete? Patrick Lambert takes a look at what the critics are saying.&lt;img src=&quot;http://feeds.feedburner.com/~r/techrepublic/security/~4/e-1XIBE3Tg8&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>TechRepublic IT Security</name>
			<uri>http://www.techrepublic.com/blog/security</uri>
		</author>
		<source>
			<title type="html">IT Security Blog | TechRepublic</title>
			<subtitle type="html">Security bloggers help keep you up to date on how to protect your network through news, updates, advice, and opinions on how you can stay ahead of hackers.</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/techrepublic/security"/>
			<id>http://feeds.feedburner.com/techrepublic/security</id>
			<updated>2012-05-18T07:15:51+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Bringing the Head Committee to order</title>
		<link href="http://feedproxy.google.com/~r/Sysadmin1138/~3/UAKzscmhUUc/bringing-the-head-comittiee-to-order.shtml"/>
		<id>tag:sysadmin1138.net,2012:/mt/blog//5.2633</id>
		<updated>2012-05-16T15:54:49+00:00</updated>
		<content type="html" xml:lang="en">&lt;i&gt;A client has just asked to move a maintenance window to some
other time due to a sudden emergency. The in-house Project
Managers, being the customer-service oriented people that they
are, have just asked if it is possible to move the window to
something less likely to get in the way. You are staring at the
reply screen to the email.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Scene&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;span&gt;A few people clustered around a
table. The &lt;span&gt;Herald of
Duty&lt;/span&gt; has just departed, having delivered the demand that
a decision needs to be made. A gavel sounds.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Bleeding Heart&lt;/span&gt;: Really? Well
then. We'll move it. &lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Grumpasarus:&lt;/span&gt; For ******
sake, we had contractual a maint-en-ance win-dow for a ******
reason! ******, we took a quarter of what we COULD have! Tell 'em to
***** off and lump it. They were warned!&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Schemer:&lt;/span&gt; Yeah, really. We
told them four weeks ago and now it's a problem?&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Slacker:&lt;/span&gt; Dude, I planned my
day around that. Moving the work totally ruins my schedule&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;Voice of Reason:&lt;/span&gt; Well, it's a problem they have now
and didn't know about then.&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;BH:&lt;/span&gt; Think about it! They
don't know their emergencies four weeks in advance. It's not fair to
them to have a problem only to have us unavailable. We owe it to
them, it's the humane thing to do.&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Grumpasarus:&lt;/span&gt; So ****** what?
Not OUR problem.&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Schemer:&lt;/span&gt; You&amp;nbsp; know....
if we play our cards right we just might get a special gift from the
client. Hm.&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Grumpasarus:&lt;/span&gt; Who ******
cares?? It'll just go to the PM's not us.&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;VoR:&lt;/span&gt; I point out that the
PMs have been known to be effusive in their praise when we do
favors.&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Slacker:&lt;/span&gt; But moving the
window means I'll lose &lt;span&gt;sleep&lt;/span&gt;.
It no workie for me.&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Schemer:&lt;/span&gt; You know, if we
push back a little now and &lt;span&gt;then&lt;/span&gt;
give in, the chances of something special coming our way get higher.
&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Grumpasarus:&lt;/span&gt; Really? Like
what?&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Schemer:&lt;/span&gt; Clients have been
known to send us things like large boxes of chocolate, cases of
beer, or comps to swank restaurants. &lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Grumpasarus:&lt;/span&gt; &lt;span&gt;Looks thoughtful&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Slacker:&lt;/span&gt; DUUUUUDE! Loss. Of.
Sleep. Hello!&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;VoR:&lt;/span&gt; You can take a nap
later.&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Slacker:&lt;/span&gt; But I was going to
play Skyrim all day, if I nap I won't get as much!&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Schemer:&lt;/span&gt; Did I mention the
Chocolate?&lt;span&gt;&lt;br /&gt;
&lt;br /&gt;
Slacker:&lt;/span&gt; But that's like, work and stuff. No, dude.&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;VoR:&lt;/span&gt; You'll nap less than
the sleep you lost, so you'll actually get more Skyrim in.&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Slacker:&lt;/span&gt; ... good point.&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Schemer: &lt;/span&gt;&lt;span&gt;Looks to the awaiting Page,&lt;/span&gt; We
have come to a decision! We will push...&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;BH:&lt;/span&gt; Wait! This is the wrong
course of action. You have to work with these people, and pushing
back now will make you seem like you're hard to work with.&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Schemer:&lt;/span&gt; And that means they
have to buy me off. I don't see the problem with this.&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;BH: &lt;/span&gt;Then they won't tell
you things.&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;VoR:&lt;/span&gt; And when they don't
tell you things, you get cut out of decision loops. &lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Grumpasarus:&lt;/span&gt; For ****** sake
just tell them to ****** lump it already. Or deliver the ******
chocolate. It's not like this'll get done without us.&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Slacker:&lt;/span&gt; But that's, like,
conflict and stuff. I don't like that.&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Grumpasarus:&lt;/span&gt; ****** ******
you too? *******! Grow a ****** backbone!&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Slacker:&lt;/span&gt; Not my job, man.&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;BH:&lt;/span&gt; Going along with this
now will make us look reasonable, and willing to work around our
customer's needs. Be a team player.&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Grumpasarus:&lt;/span&gt; ****** team
player. We ****** told them ****** four weeks ago that we'd ******
take the ****** system down. They can ****** well bend over and take
it. We notified them! This window is in the ****** contract they
****** signed and ****** well didn't read. &lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;VoR:&lt;/span&gt; I remind you again.
When the notice for this outage went out, they didn't know about
this problem. And secondly, the contracted window is much larger
than the one we gave. &lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Schemer:&lt;/span&gt; I still say we
should push back a little. This is last minute, there should be some
costs.&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Grumpasarus:&lt;/span&gt; ****** right
there should be!&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;BH:&lt;/span&gt; Pushing back makes us
look hard to work with. &lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Schemer:&lt;/span&gt; I really have to
council against blithely rolling over on this one. We don't want to
get to a spot where others can dictate our schedule. It'll mean
dark-of-night for everything.&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Slacker:&lt;/span&gt; I hate that!&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Schemer: &lt;/span&gt;I know. And as
we're East Coast and have West Coast clients, it'll mean morning
outages not late-night ones.&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Slacker:&lt;/span&gt; Duuuuude. No.&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Schemer:&lt;/span&gt; I know. They do
need to be made aware that this is not a trivial sacrifice on our
part.&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Slacker:&lt;/span&gt; Sleeeeeep! Skyrim!&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;BH:&lt;/span&gt; They already are aware.
Look at the email. See? They know.&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Grumpasarus:&lt;/span&gt; That's just
****** 'customer service' weasel-words. &lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Schemer:&lt;/span&gt; Hm, I'm not so
sure. That sentence could go either way. I'm willing to be persuaded
this once and see how it goes.&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;VoR:&lt;/span&gt; Fred has usually played
straight with us in the past.&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Grumpasarus:&lt;/span&gt; You're *****
serious??&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;VoR:&lt;/span&gt; Yes. Always.&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Slacker:&lt;/span&gt; No. Uh uh. We gotta
push a little. Make 'em think twice before asking to totally blow
our schedule.&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Grumpasarus:&lt;/span&gt; Better! Tell
them to ****** off!&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Schemer:&lt;/span&gt; No, we can still
make some hay with this. Push a little, not a lot. Just enough.&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;BH:&lt;/span&gt; I really wish we didn't
have to push back.&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Grumpasarus:&lt;/span&gt; We don't ******
have to. We just tell them ****** no. No pushing, just ******
standing our ****** ground.&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Slacker:&lt;/span&gt; I, uh, don't want
to say no outright. It'll get us in trouble later. So kinda no?&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Grumpasarus:&lt;/span&gt; For ******
sake, grow a ****** backbone you ****** lazy ****** ****** ******. *****
this.&amp;nbsp; &lt;span&gt;Stomps off in a huff&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;BH:&lt;/span&gt; &lt;span&gt;Points at the retreating Grumpasarus.
&lt;/span&gt;That's an abstention!&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;VoR:&lt;/span&gt; I agree.&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Slacker:&lt;/span&gt; &lt;span&gt;Turns to waiting page&lt;/span&gt;, We have
a decision....&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
&lt;span&gt;&lt;span&gt;To:&lt;/span&gt; Fred Gerkin&lt;/span&gt;&lt;br /&gt;
&lt;span&gt;&lt;span&gt;Subject:&lt;/span&gt; RE Pushing the maintenance window&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Hi Fred,&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;We warned 'em, but I do
understand emergencies. I had plans, but I'm pretty sure I can get
them moved. The new window will be 4 to 7am. I'll let you know if
I can't flex my plans.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
        
    &lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/Sysadmin1138?a=UAKzscmhUUc:rx6u4qmW2WE:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Sysadmin1138?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Sysadmin1138?a=UAKzscmhUUc:rx6u4qmW2WE:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Sysadmin1138?i=UAKzscmhUUc:rx6u4qmW2WE:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Sysadmin1138?a=UAKzscmhUUc:rx6u4qmW2WE:F7zBnMyn0Lo&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Sysadmin1138?i=UAKzscmhUUc:rx6u4qmW2WE:F7zBnMyn0Lo&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Sysadmin1138?a=UAKzscmhUUc:rx6u4qmW2WE:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Sysadmin1138?i=UAKzscmhUUc:rx6u4qmW2WE:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Sysadmin1138?a=UAKzscmhUUc:rx6u4qmW2WE:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Sysadmin1138?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/Sysadmin1138/~4/UAKzscmhUUc&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>SysAdmin1138</name>
			<uri>http://sysadmin1138.net/mt/blog/</uri>
		</author>
		<source>
			<title type="html">SysAdmin1138 Expounds</title>
			<subtitle type="html">Tribulations of a systems administrator (Windows, Linux, and formerly NetWare). Formerly academic, currently private sector. Not an official blog by any stretch. Really.</subtitle>
			<link rel="self" href="http://feeds2.feedburner.com/Sysadmin1138"/>
			<id>tag:sysadmin1138.net,2010-02-04:/mt/blog//5</id>
			<updated>2012-05-16T21:45:39+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Solving Blank or Apache 2 Test Page Problems (and more) in Plesk 10 on Linux</title>
		<link href="http://feedproxy.google.com/~r/TheNubbyAdmin/~3/Bilx2Bt4wOM/"/>
		<id>http://thenubbyadmin.com/?p=2619</id>
		<updated>2012-05-16T09:53:26+00:00</updated>
		<content type="html">&lt;p&gt;This won&amp;#8217;t be my usual &amp;#8220;Problem, Solution, Long Story&amp;#8221; style troubleshooting post. There are a few complexities involved that don&amp;#8217;t allow it to fit into that template so easily.&lt;/p&gt;
&lt;p&gt;I have a client-facing server running CentOS 5.7 and Plesk 10.3. When clients need web space, I put them on my Plesk server so they have shiny buttons to click when managing their own web space. Recently I had a series of unfortunate events cause an outage on one client.&lt;/p&gt;
&lt;p&gt;It starts with my craving to have things standardized. All client account domain directories are in lower case. All, that is, except for one: AmazingClient. Their main domain&amp;#8217;s vhost directory is /var/www/vhosts/AmazingClient which, in Plesk-land means that any reference to that client&amp;#8217;s domain is always in that case. It bugs me. More than it should. When I created the client account several months ago, for some inexplicable reason, I used CamelCase in their name. One recent evening I decided to change the capitalization for their account&amp;#8217;s main domain. Simple, right?&lt;/p&gt;
&lt;p&gt;I &lt;strong&gt;&lt;em&gt;did&lt;/em&gt;&lt;/strong&gt; say that I&amp;#8217;m using Plesk, did I not?&lt;/p&gt;
&lt;p&gt;Before I go any further, I know what you might be thinking. &amp;#8220;Domains aren&amp;#8217;t case sensitive! What nonsense are you on about?!&amp;#8221; They&amp;#8217;re not case sensitive when approaching domains from a DNS perspective. However, I&amp;#8217;m looking at this from a filesystem and Plesk user account perspective.&lt;/p&gt;
&lt;p&gt;To change something as simple as the case of a domain&amp;#8217;s vhost directory, one cannot merely rename it. There are many configuration files to consider as well as Plesk-specific tasks that rely on the domain&amp;#8217;s directory not being glibly swapped out from underneath it. To change a domain&amp;#8217;s name in Plesk, one has to go into the client&amp;#8217;s control panel, and click on the Websites &amp;amp; Domains tab.&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;aligncenter&quot; title=&quot;Plesk Websites and Domains&quot; src=&quot;http://thenubbyadmin.com/wp-content/uploads/2012/05/websites-and-domains.png&quot; alt=&quot;&quot; width=&quot;568&quot; height=&quot;35&quot; /&gt;&lt;/p&gt;
&lt;p&gt;From there you will find the domain that you want to change the case of (remember, this isn&amp;#8217;t about &amp;#8220;domain&amp;#8221; in the DNS sense, but rather the representation of that domain within Plesk and on the filesystem) and click on its link. From there you will come to the Host Settings page for that domain. Once on the Host Settings page, you&amp;#8217;ll have the option to change the domain name. Here comes the trouble: you can&amp;#8217;t change the name merely based on case. Even though Plesk sees the client domain differently in the backend based on case, in this Host Settings interface case is not taken into account. Plesk will complain that the domain already exists. You need to change the domain name to something different, then change it back to the original domain name, minus the capitalization. (Plesk FAIL #1)&lt;/p&gt;
&lt;p&gt;In my case, I wanted to swing it from AwesomeClient.com, to awesomeclienttemp.com, and then back to awesomeclient.com (sans the capital &amp;#8220;A&amp;#8221; and &amp;#8220;C&amp;#8221;).&lt;/p&gt;
&lt;h2&gt;Tipping Over the Edge of Doom&lt;/h2&gt;
&lt;p&gt;When trying to move from AwesomeClient.com to awesomeclienttemp.com I received this error:&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;html&quot;&gt;Internal error: [domain path] is out of webspace
Message is out of webspace
File Webspace.php
Line 334
Type PleskFatalException&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;After that error, the Websites &amp;amp; Domains tab is no longer accessible to that client account. Trying to use it receives the same &amp;#8220;Internal Error: [domain path] is out of webspace&amp;#8221; error.&lt;/p&gt;
&lt;p&gt;You see, it appears that Plesk, upon requesting a domain rename, copies the domain&amp;#8217;s existing files and then deletes the old ones. It does not perform a mere rename action (Plesk FAIL #2). This client uses quite a bit of space and it apparently maxed out their quota. I say &amp;#8220;apparently&amp;#8221; because, by a strict accounting for free space and quotas on the server, it should have been allowed &amp;#8211; but just barely. Perhaps there&amp;#8217;s more space that Plesk needs than a simple doubling of existing files. (Plesk FAIL #3?) Plesk certainly didn&amp;#8217;t perform any kind of filesystem or account limitation checking prior to attempting the move. (Plesk FAIL #4)&lt;/p&gt;
&lt;p&gt;The client site was still responsive; there didn&amp;#8217;t appear to be any negative effects. I needed to investigate further, but as the night wore on I decided to postpone a thorough examination until another day.&lt;/p&gt;
&lt;h2&gt;Ask Not For Whom Your Cell Phone Tolls&lt;/h2&gt;
&lt;p&gt;Bright and early the next morning, I got a call. It was from the client.&lt;/p&gt;
&lt;p&gt;&amp;#8220;Our website seems to be down, so&amp;#8230; uhh&amp;#8230; if you could look into that&amp;#8230;&amp;#8221;&lt;/p&gt;
&lt;p&gt;Super.&lt;/p&gt;
&lt;p&gt;Nothing was being served up in response to any page requests for this domain. Apache&amp;#8217;s error logs were showing requests for this client&amp;#8217;s files as hitting in the default vhost root, not their own. Then, it hit me.&lt;/p&gt;
&lt;p&gt;Plesk does not use the standard Apache configuration files. I mean, it &lt;em&gt;does&lt;/em&gt;, but not really. It auto-generates Apache configuration files based on the information that is stored in its own customer database within MySQL. That&amp;#8217;s why the domain was just fine the evening before, but didn&amp;#8217;t fail until the wee hours of the morning. The configuration files had been latently generated based on the failed attempt at changing the domain account name.&lt;/p&gt;
&lt;p&gt;Silly me&amp;#8230; I expected there to be rollback statements in any of the SQL DML statements made to the database. I expected that a fatal error would be caught and changes rolled back. They weren&amp;#8217;t. (Plesk FAIL #5) Silly, silly me.&lt;/p&gt;
&lt;p&gt;Of course, I wasn&amp;#8217;t going to be able to change the domain information because the Websites &amp;amp; Domains tab bombed out permanently with an internal error. I couldn&amp;#8217;t access the officially sanctioned means of modifying the domain account. This called for some database mangling.&lt;/p&gt;
&lt;h2&gt;Let Pry Through the Portage of the Database&lt;/h2&gt;
&lt;p&gt;I logged into &lt;code&gt;mysql&lt;/code&gt; and dumped the &lt;code&gt;psa&lt;/code&gt; database. From there, I used grep to scour the .sql file for any mention of &lt;code&gt;awesomeclienttemp&lt;/code&gt;. Sure enough, the bad change was recorded in the database. There were dozens of records in several tables that pointed to the bad domain. That was causing Apache configuration files to be written with bad data, among other applications. There was also mention of the original, unsullied domain. I guess not all of the SQL statements that are part and parcel of a domain change were able to be executed before the error condition was achieved. (Side note: &lt;em&gt;&lt;strong&gt;ROLLBACK!! ROLLBACK!! ROLLBACK!!&lt;/strong&gt;&lt;/em&gt;)&lt;/p&gt;
&lt;p&gt;Solving the problem was a simple as searching for and replacing the string awesomeclienttemp with AwesomeClient. I used mysql to perform that, but it could have been done on the dump file and then imported. For those interested, I used the replace() function and performed a select statement first just to make sure that I was changing the data that I expected to. Once satisfied with the results I performed an update statement also using the replace() function. Here&amp;#8217;s an example of changing some values in the &lt;code&gt;dns_recs&lt;/code&gt; table of Plesk&amp;#8217;s &lt;code&gt;psa&lt;/code&gt; database:&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;sql&quot;&gt;mysql&amp;amp;gt&lt;span&gt;&amp;gt;&lt;/span&gt; &lt;span&gt;SELECT&lt;/span&gt; &lt;span&gt;REPLACE&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;displayVal&lt;span&gt;,&lt;/span&gt;&lt;span&gt;'clienttemp'&lt;/span&gt;&lt;span&gt;,&lt;/span&gt; &lt;span&gt;'Client'&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;FROM&lt;/span&gt; dns_recs &lt;span&gt;WHERE&lt;/span&gt; displayVal &lt;span&gt;LIKE&lt;/span&gt; &lt;span&gt;'%clienttemp%'&lt;/span&gt;;
&lt;span&gt;+&lt;/span&gt;&lt;span&gt;--------------------------------------------+&lt;/span&gt;
&lt;span&gt;|&lt;/span&gt; &lt;span&gt;REPLACE&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;displayVal&lt;span&gt;,&lt;/span&gt;&lt;span&gt;'clienttemp'&lt;/span&gt;&lt;span&gt;,&lt;/span&gt; &lt;span&gt;'Client'&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;|&lt;/span&gt;
&lt;span&gt;+&lt;/span&gt;&lt;span&gt;--------------------------------------------+&lt;/span&gt;
&lt;span&gt;|&lt;/span&gt; mail&lt;span&gt;.&lt;/span&gt;AwesomeClient&lt;span&gt;.&lt;/span&gt;com&lt;span&gt;.&lt;/span&gt;                    &lt;span&gt;|&lt;/span&gt;
&lt;span&gt;|&lt;/span&gt; AwesomeClient&lt;span&gt;.&lt;/span&gt;com&lt;span&gt;.&lt;/span&gt;                         &lt;span&gt;|&lt;/span&gt;
&lt;span&gt;|&lt;/span&gt; AwesomeClient&lt;span&gt;.&lt;/span&gt;com&lt;span&gt;.&lt;/span&gt;                         &lt;span&gt;|&lt;/span&gt;
&lt;span&gt;|&lt;/span&gt; AwesomeClient&lt;span&gt;.&lt;/span&gt;com&lt;span&gt;.&lt;/span&gt;                         &lt;span&gt;|&lt;/span&gt;
&lt;span&gt;+&lt;/span&gt;&lt;span&gt;--------------------------------------------+&lt;/span&gt;
mysql&lt;span&gt;&amp;gt;&lt;/span&gt; &lt;span&gt;UPDATE&lt;/span&gt; dns_recs &lt;span&gt;SET&lt;/span&gt; displayVal&lt;span&gt;=&lt;/span&gt;&lt;span&gt;REPLACE&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;displayVal&lt;span&gt;,&lt;/span&gt;&lt;span&gt;'clienttemp'&lt;/span&gt;&lt;span&gt;,&lt;/span&gt; &lt;span&gt;'Client'&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;WHERE&lt;/span&gt; displayVal &lt;span&gt;LIKE&lt;/span&gt; &lt;span&gt;'%clienttemp%'&lt;/span&gt;;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;With the database in a better state, there is still one more thing left to do. Plesk doesn&amp;#8217;t dynamically look to the database for configuration information. It looks to regular files that have been dynamically generated from the database&amp;#8217;s information. That generation happens on a schedule, but can be expedited using the &lt;code&gt;httpdmng&lt;/code&gt; command. Specifically, I used:&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;bash&quot;&gt;&lt;span&gt;/&lt;/span&gt;usr&lt;span&gt;/&lt;/span&gt;local&lt;span&gt;/&lt;/span&gt;psa&lt;span&gt;/&lt;/span&gt;admin&lt;span&gt;/&lt;/span&gt;bin&lt;span&gt;/&lt;/span&gt;httpdmng &lt;span&gt;--reconfigure-domain&lt;/span&gt; AwesomeClient.com&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;You could also use the &amp;#8211;reconfigure-all option to perform a regeneration of all domain configuration files. After running &lt;code&gt;httpdmng&lt;/code&gt; the domain was up and running.&lt;/p&gt;
&lt;h2&gt;Apache Test Page or Blank Page Problems&lt;/h2&gt;
&lt;p&gt;I glossed over some of the troubleshooting techniques I used while tracing the problem to its root. If you&amp;#8217;re having trouble with seeing the Apache test page, then search through your httpd.conf file and make sure that your DirectoryIndex directive is set to look for all of the variants of an index.html page that you use. For example, index.html, index.htm. index.php, etc.&lt;/p&gt;
&lt;p&gt;Furthermore, just to reiterate, check all of your vhost conf files, such as yourdomain/conf/vhost.conf (or any conf files that reside in that directory) for the DocumentRoot directive and make sure that it&amp;#8217;s pointed to what you want it to be pointed at. Do not edit the files that are named similar to 13279881860.14852200_httpd.include. Those are auto-generated by Plesk and at worst you could cause destruction of files in your domain; at best you will have to re-edit those files every time a new one is generated.&lt;/p&gt;
&lt;p&gt;Of course, do a dummy check to make sure that the domain you are trying to access is really resolving to the IP address of your web server. Just&amp;#8230; do it. It takes 5 seconds and you have the outside chance of being pleasantly surprised.&lt;/p&gt;
&lt;h2&gt;The Takeaway&lt;/h2&gt;
&lt;p&gt;Plesk is rickety. If anyone has used a better control panel for client-facing servers, let me know. I&amp;#8217;ve worked with cPanel and Plesk, but never with any of the others that I&amp;#8217;ve listed in &lt;a href=&quot;http://thenubbyadmin.com/2011/12/06/definitive-list-of-web-based-server-control-panels/&quot;&gt;this giant list of web based server control panels&lt;/a&gt;. Most people will shout &amp;#8220;Just don&amp;#8217;t use a control panel!&amp;#8221; but that&amp;#8217;s not a terribly client friendly option. I&amp;#8217;m not categorically against control panels when used in the correct situations. I &lt;em&gt;&lt;strong&gt;am&lt;/strong&gt;&lt;/em&gt;, however, against misbehaving control panels.&lt;/p&gt;
&lt;p&gt;Let me know your experiences in the comments below.
&lt;div&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://www.thycotic.com/zSS_TheNubbyAdmin.html?utm_source=TheNubbyAdmin&amp;utm_medium=banner&amp;utm_content=rss&amp;utm_campaign=SSTheNubbyAdmin&quot;&gt;&lt;img src=&quot;http://thenubbyadmin.com/wp-content/wpads/SS468by60.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TheNubbyAdmin/~4/Bilx2Bt4wOM&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/p&gt;</content>
		<author>
			<name>The Nubby Admin</name>
			<uri>http://thenubbyadmin.com</uri>
		</author>
		<source>
			<title type="html">The Nubby Admin</title>
			<subtitle type="html">Just a nublet SysAdmin</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/TheNubbyAdmin"/>
			<id>http://feeds.feedburner.com/TheNubbyAdmin</id>
			<updated>2012-05-16T17:16:23+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">Upgrade paths to System Center 2012 Operations Manager</title>
		<link href="http://feedproxy.google.com/~r/techrepublic/networking/~3/AxEuNHHSYew/5650"/>
		<id>http://www.techrepublic.com/blog/networking/upgrade-paths-to-system-center-2012-operations-manager/5650</id>
		<updated>2012-05-15T17:55:59+00:00</updated>
		<content type="html">John Joyner explains the various upgrade paths to System Center Operations Manager 2012 for current users of SCOM 2007 R2. Find out the options before you decide if it's worth the effort right now.&lt;img src=&quot;http://feeds.feedburner.com/~r/techrepublic/networking/~4/AxEuNHHSYew&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>TechRepublic Network Administrator</name>
			<uri>http://www.techrepublic.com/blog/networking</uri>
		</author>
		<source>
			<title type="html">Data Center Blog | TechRepublic</title>
			<subtitle type="html">Network, server, and storage administrators get valuable advice and best practices to help meet the challenges they face in keeping systems connected, available, and running at high efficiency.</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/techrepublic/networking"/>
			<id>http://feeds.feedburner.com/techrepublic/networking</id>
			<updated>2012-05-18T07:15:38+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Some stuff on 'time since boot' timestamps</title>
		<link href="http://utcc.utoronto.ca/~cks/space/blog/tech/TimestampIssues"/>
		<id>tag:cspace@cks.mef.org,2009-03-24:/blog/tech/TimestampIssues</id>
		<updated>2012-05-15T16:21:26+00:00</updated>
		<content type="html">&lt;div class=&quot;wikitext&quot;&gt;&lt;h2&gt;Some stuff on 'time since boot' timestamps&lt;/h2&gt;

&lt;p&gt;From today on Twitter:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;a href=&quot;https://twitter.com/standaloneSA/status/202270218796548096&quot;&gt;@standaloneSA&lt;/a&gt;: Is it
just me, or does it seem silly that the #NetFlow timestamp field for
the flow references &quot;ms since the router booted&quot;. Seems obtuse.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://twitter.com/thatcks/status/202343112507527168&quot;&gt;@thatcks&lt;/a&gt;:
@standaloneSA It's probably easy to implement in the router and it
creates an absolute ordering w/o worries about time going backwards.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In the Twitter way, this is a little bit cryptic so I'm going to
elaborate on my guess here.&lt;/p&gt;

&lt;p&gt;Suppose that routers were supposed to generate an absolute timestamp
for their events instead of this relative one, for example UTC in
milliseconds. This would create two problems.&lt;/p&gt;

&lt;p&gt;First, routers would somehow need to know or acquire the
correct UTC time (with millisecond resolution) and then
maintain it. This is to some degree &lt;a href=&quot;http://en.wikipedia.org/wiki/Network_Time_Protocol&quot;&gt;a solved problem&lt;/a&gt; but it adds
complexity to the router. It also leads to the second problem, because
a router is unlikely to boot with the correct UTC time (down to the
millisecond).&lt;/p&gt;

&lt;p&gt;The second problem is that the moment you have a system generating
an absolute timestamp you need to deal with the certainty that the
correct time, as the system sees it, will jump around. The router will
boot will some idea of the UTC time but it's quite likely to be a bit
off (remember that we're calling for millisecond accuracy here), then
over time it will converge on the correct UTC time. As it does so, its
version of UTC time may go forward abruptly, go backwards abruptly, or
go forward more slowly than UTC time is really advancing.  Backwards
time jumps screw up event ordering completely, and all of the options
screw up the true relative time between events; if you have two events
timestamped UTC1 and UTC2, you actually have only a weak idea how long
it is between them.&lt;/p&gt;

&lt;p&gt;The valuable property that milliseconds since boot has is that it
is a clear &lt;em&gt;monotonic timestamp&lt;/em&gt;. It only ever goes forward and it
goes forward at what should be a very constant rate, which means
that it creates a clear order of events and a clear duration between
any two events (well, for events from the same stream of monotonic
timestamps). Monotonic timestamps are not a substitute for absolute time
but neither is absolute time a substitute for monotonic timestamps; you
really need both, which means that you need a map between them.&lt;/p&gt;

&lt;p&gt;There are two possible places to build such a map: each device can do
its own or it can be done in a central aggregator. I believe that the
right answer is to do it in the central aggregator because this means
that you have only a single version of absolute time, the aggregator's
view (each device, aggregator included, may have a slightly different
view of the current 'correct' absolute time for the reasons outlined
above). Using only a single version of absolute time means that you
have a single coherent map of all of the monotonic timestamps to (some)
absolute time.&lt;/p&gt;

&lt;p&gt;(Of course you need devices that generate monotonic timestamps to tell
you when they reset their timestamps, eg when they boot.)&lt;/p&gt;

&lt;p&gt;My impression is that using elapsed time since boot is actually common
in a number of environments. For example, Linux kernel messages are
&lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/linux/PrintkTimestampMeaning&quot;&gt;usually&lt;/a&gt; reported this way these days
(which has its own issues if you're trying to work backwards to roughly
when in absolute time something happened).&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt; (&lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/tech/TimestampIssues?showcomments#comments&quot;&gt;2 comments&lt;/a&gt;.) &lt;/div&gt;</content>
		<author>
			<name>cks</name>
			<uri>http://utcc.utoronto.ca/~cks/space/blog/</uri>
		</author>
		<source>
			<title type="html">Chris's Wiki :: blog</title>
			<subtitle type="html">Recently changed pages in Chris's Wiki :: blog.</subtitle>
			<link rel="self" href="http://utcc.utoronto.ca/~cks/space/blog/?atom"/>
			<id>http://utcc.utoronto.ca/~cks/space/blog/?atom</id>
			<updated>2012-05-17T21:15:32+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">SEC Guidance Is a Really Big Deal</title>
		<link href="http://taosecurity.blogspot.com/2012/05/sec-guidance-is-really-big-deal.html"/>
		<id>tag:blogger.com,1999:blog-4088979.post-3316820231664049183</id>
		<updated>2012-05-14T17:19:03+00:00</updated>
		<content type="html">&lt;a href=&quot;http://4.bp.blogspot.com/-1J1kPudO-Z8/TsgZpRAQ4SI/AAAAAAAACZA/ye4FvqZjY8s/s1600/u_s_sec_logo.jpg&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/-1J1kPudO-Z8/TsgZpRAQ4SI/AAAAAAAACZA/ye4FvqZjY8s/s200/u_s_sec_logo.jpg&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5676815527030350114&quot; /&gt;&lt;/a&gt;In November I wrote &lt;a href=&quot;http://taosecurity.blogspot.com/2011/11/sec-guidance-emphasizes-materiality-for.html&quot;&gt;SEC Guidance Emphasizes Materiality for Cyber Incidents&lt;/a&gt;, my thoughts after reading an article by Senator Jay Rockefeller and former DHS Secretary Michael Chertoff.  They explained why the &lt;a href=&quot;http://www.sec.gov/divisions/corpfin/guidance/cfguidance-topic2.htm&quot;&gt;CF Disclosure Guidance: Topic No. 2, Cybersecurity&lt;/a&gt; issued by the SEC in October is a big deal. &lt;p&gt;Since then I attended a conference on Director's and Officer's insurance in Connecticut, and spoke on a panel about that SEC guidance.  During the conference I learned that the SEC guidance isn't a big deal -- it's a &lt;b&gt;really big deal.&lt;/b&gt;  We're talking a game changer, potentially on three fronts.  Here's what I heard at the conference. &lt;ol&gt;&lt;li&gt;First, lawyers who read the language in the SEC guidance treated it as a &quot;&lt;b&gt;stop whatever you're doing and read this&lt;/b&gt;&quot; moment.  The lawyers I spoke to said the SEC guidance absolutely defined new reporting duties for companies, despite talk of it being merely a &quot;clarification&quot; or restatement of existing guidance.  &lt;p&gt;Clients bombarded insurance firms asking what language they should use in their SEC disclosure documents.  They asked &quot;what are other companies saying? What should we say?&quot;  The firms noted similar boiler plate shared among clients, most of which insufficiently met the SEC's requirements.   &lt;p&gt;One lawyer I spoke with said she expects the SEC to give publicly traded firms a &quot;one year pass&quot; before bringing &lt;b&gt;enforcement actions&lt;/b&gt; against them for insufficiently outlining digital risk, pre- and post-breach.&lt;/p&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;Second, the SEC language will encourage &lt;b&gt;shareholder lawsuits&lt;/b&gt; against companies by disgruntled parties who believe boards are not disclosing risks and actual breach details to investors.  This will probably not be the primary cause for a suit but it will likely be one of other factors a shareholder action uses to show that a board is not fulfilling their duties to investors.&lt;/li&gt;&lt;li&gt;Third, the SEC language may prompt &lt;b&gt;whistleblower reports from dissatisfied IT and security staff&lt;/b&gt; to organizations like the &lt;a href=&quot;http://www.sec.gov/whistleblower&quot;&gt;SEC Office of the Whistleblower&lt;/a&gt;.  (That is a real organization!)  In the seven weeks beginning with this new office's launch in August 2011, parties reported 334 tips from 37 states and 11 countries, with successful enforcement actions in up to 30% of cases.   &lt;p&gt;Although it doesn't appear that this new office has paid any whisteblowers yet, it is apparently gearing up to do so.  Imagine a case where &lt;b&gt;security staff believes that management is not treating a breach as the staff thinks it should be treated, and decides to report the incident to the SEC -- with the possibility of a payout&lt;/b&gt; waiting!&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;Right now Congress doesn't seem to think that the SEC rules are working.  Joe Menn reported in &lt;a href=&quot;http://www.reuters.com/article/2012/02/02/us-hacking-disclosures-idUSTRE8110YW20120202&quot;&gt;Hacked companies still not telling investors&lt;/a&gt; the following: &lt;p&gt;&lt;i&gt;At least a half-dozen major U.S. companies whose computers have been infiltrated by cyber criminals or international spies have not admitted to the incidents despite new guidance from securities regulators urging such disclosures. &lt;p&gt;Top U.S. cybersecurity officials believe corporate hacking is widespread, and the Securities and Exchange Commission issued a lengthy &quot;guidance&quot; document on October 13 outlining how and when publicly traded companies should report hacking incidents and cybersecurity risk. &lt;p&gt;But with one full quarter having elapsed since the SEC request, some major companies that are known to have had significant digital security breaches have said nothing about the incidents in their regulatory filings.&lt;/p&gt;&lt;/p&gt;&lt;/i&gt;&lt;p&gt;Now Senator Rockefeller is taking a closer look as reported by Jennifer Martinez of Politico this week: &lt;p&gt;&lt;i&gt;Senate Commerce Chairman Jay Rockefeller thinks the SEC needs to ensure hacked companies are adequately informing their investors about when they suffer a security breach or cybersecurity risk that could jeopardize their financial standing. &lt;p&gt;The West Virginia Democrat wants the full commission to issue guidance for companies — right now they only have staff-level instructions — on when they have to report cyber breaches or threats and what steps they’re taking to minimize the risks. &lt;p&gt; “It’s crucial that companies are disclosing to investors how cybersecurity risks affect their bottom lines, and what they are doing to address those risks,” Rockefeller said in a statement to POLITICO. &lt;p&gt;Rockefeller will soon introduce an amendment that calls on the SEC to issue interpretive guidance on when companies must disclose cybersecurity risks and intrusions. Staffers for the Commerce Committee are finalizing the amendment and aim to introduce it before Sen. Joe Lieberman’s (I-Conn.) cybersecurity bill goes to the floor.&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/i&gt;&lt;p&gt;This is the sort of activity that I think is going to mark a sea change in digital security over the coming years.  I don't expect engineering or technical developments to have anywhere near the same level of impact as issues that involve legislators, lawyers, insurers, and financiers.  Stay tuned! &lt;p&gt;&lt;a href=&quot;http://twitter.com/share&quot; class=&quot;twitter-share-button&quot;&gt;Tweet&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Copyright 2003-2012 Richard Bejtlich and TaoSecurity (taosecurity.blogspot.com and www.taosecurity.com)&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/4088979-3316820231664049183?l=taosecurity.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</content>
		<author>
			<name>Richard Bejtlich</name>
			<email>noreply@blogger.com</email>
			<uri>http://taosecurity.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">TaoSecurity</title>
			<subtitle type="html">Richard Bejtlich's blog on digital security and the practices of network security monitoring, intrusion detection, and incident response.</subtitle>
			<link rel="self" href="http://taosecurity.blogspot.com/feeds/posts/default"/>
			<id>tag:blogger.com,1999:blog-4088979</id>
			<updated>2012-05-17T12:45:42+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">Malware poses as software updates: Why the FBI is warning travelers</title>
		<link href="http://feedproxy.google.com/~r/techrepublic/security/~3/smF3VNYYI7c/7871"/>
		<id>http://www.techrepublic.com/blog/security/malware-poses-as-software-updates-why-the-fbi-is-warning-travelers/7871</id>
		<updated>2012-05-14T14:55:17+00:00</updated>
		<content type="html">Those &quot;critical update&quot; notices you get, especially while traveling, may not be what you think. Michael Kassner gets the low-down on this serious threat as well as the Evilgrade platform.&lt;img src=&quot;http://feeds.feedburner.com/~r/techrepublic/security/~4/smF3VNYYI7c&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>TechRepublic IT Security</name>
			<uri>http://www.techrepublic.com/blog/security</uri>
		</author>
		<source>
			<title type="html">IT Security Blog | TechRepublic</title>
			<subtitle type="html">Security bloggers help keep you up to date on how to protect your network through news, updates, advice, and opinions on how you can stay ahead of hackers.</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/techrepublic/security"/>
			<id>http://feeds.feedburner.com/techrepublic/security</id>
			<updated>2012-05-18T07:15:51+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Happy Blogiversary Standalone SysAdmin</title>
		<link href="http://feedproxy.google.com/~r/standalone-sysadmin/rWoU/~3/pVTySAjtcLM/"/>
		<id>http://www.standalone-sysadmin.com/blog/?p=2836</id>
		<updated>2012-05-14T14:47:41+00:00</updated>
		<content type="html">&lt;p&gt;Today is May 14th! Four years ago today, I wrote my &lt;a href=&quot;http://www.standalone-sysadmin.com/blog/2008/05/introduction-and-welcome/&quot;&gt;very first entry&lt;/a&gt; on the Standalone SysAdmin blog! &lt;/p&gt;
&lt;p&gt;In &lt;i&gt;&lt;a href=&quot;http://www.standalone-sysadmin.com/blog/2012/04/free-advice-is-worth-what-you-pay-for-it/&quot;&gt;Free advice is worth what you pay for it&lt;/a&gt;&lt;/i&gt;, I wrote about the genesis of my blogging &amp;#8211; it all started with my LiveJournal, and my friends complaining that they didn&amp;#8217;t &amp;#8220;get&amp;#8221; what I was writing&amp;#8230;so I moved to blogspot, then to my own VPS. &lt;/p&gt;
&lt;p&gt;The blog has really come a long way from &lt;a href=&quot;http://web.archive.org/web/20080818145908/http://standalone-sysadmin.blogspot.com/&quot;&gt;this look&lt;/a&gt;! &lt;/p&gt;
&lt;p&gt;Every once in a while, someone will ask me how to blog. My answer is almost always the same, and it sounds disingenuous, but it isn&amp;#8217;t. The answer is to write. Write. Write. Write. &lt;/p&gt;
&lt;p&gt;My theory behind blogging is that if you start a blog, you want to eventually be successful and have lots of people read it. If you want lots of people to read it, you want to have stuff for them to read, so you need to write a lot, especially in the beginning. Even if your writing is bad (especially if it&amp;#8217;s bad, because then you&amp;#8217;re getting practice, too!). Even if you don&amp;#8217;t have anything amazing to say. &lt;/p&gt;
&lt;p&gt;Just keep writing. Build a body of work, because some day, you&amp;#8217;re GOING to write something amazing, and people are going to wonder, &amp;#8220;gee, I wonder what else that person has written&amp;#8221;, but if you don&amp;#8217;t have a body of work, they&amp;#8217;re not going to have anything to read, and they&amp;#8217;ll leave. So you need to write. &lt;/p&gt;
&lt;p&gt;If you look at the early posts on Standalone SysAdmin, there are a few gems among a lot of cruft. But I kept writing anyway. Eventually I wrote better stuff, and more people read it. But it took time to build that body of work, and it took time to build a group of readers. &lt;/p&gt;
&lt;p&gt;When I celebrated my &lt;a href=&quot;http://www.standalone-sysadmin.com/blog/2009/05/happy-1st-blogiversary/&quot;&gt;first blogiversary&lt;/a&gt;, I had a bit over 500 subscribers, and I was highly impressed. Given how my writing was at that time, I&amp;#8217;m &lt;i&gt;still&lt;/i&gt; impressed ;-) &lt;/p&gt;
&lt;p&gt;As it stands right now, I have over 2,700 subscribers (thank you everyone who subscribes!), and in the past six months, I&amp;#8217;ve had around 2 million page views (!) according to &lt;a href=&quot;http://www.cloudflare.com&quot;&gt;CloudFlare&lt;/a&gt;. That is simply amazing. &lt;/p&gt;
&lt;p&gt;I want to thank all of my readers, whether they subscribe or just visit regularly (or even just find me on a Google search). Thanks to everyone who has emailed me over the years offering support, advice, and asking for help. I&amp;#8217;m thankful for all of the opportunities you all have given me, and I look forward to blogging for years to come. &lt;/p&gt;
&lt;p&gt;&lt;center&gt;&lt;br /&gt;
&lt;hr width=&quot;50%&quot; /&gt;&lt;/center&gt;&lt;br /&gt;
OK, enough navel gazing, let&amp;#8217;s get down to business. &lt;/p&gt;
&lt;p&gt;This past year at &lt;a href=&quot;http://usenix.org/events/lisa11&quot;&gt;LISA&amp;#8217;11&lt;/a&gt;, I won a drawing for a free pass to the Technical Sessions at &lt;a href=&quot;http://usenix.org/events/lisa12&quot;&gt;LISA&amp;#8217;12&lt;/a&gt; this year in San Diego. Now, that&amp;#8217;s kind of silly, because as a member of the &lt;a href=&quot;https://www.usenix.org/blog&quot;&gt;LISA Blog Team&lt;/a&gt;, I get free admission anyway. So what should I do with it? I guess I could put it on Ebay&amp;#8230;&lt;/p&gt;
&lt;p&gt;Or I could give it away! To one of you! &lt;/p&gt;
&lt;p&gt;So here&amp;#8217;s how it&amp;#8217;s going to go. You have to work for your entry, but only just. Fill out the following survey for a chance to win the pass to the LISA&amp;#8217;12 Tech Sessions pass. This doesn&amp;#8217;t get you into training, but it does include 3 days of tech sessions, plus the hallway track and BoFs. I don&amp;#8217;t know the value because the prices aren&amp;#8217;t up yet, but it&amp;#8217;s worth a lot of money. &lt;/p&gt;
&lt;p&gt;LISA&amp;#8217;12 is in San Diego, California from Sunday, December 9th through Friday, December 14th. The Technical Sessions (what this pass gets you into) is from Wednesady, December 12th through Friday, December 14th. It covers the conference pass only. No airfare, no hotel, no food (except that which may be provided by the conference itself). It&amp;#8217;s literally a pass to register for the tech sessions. &lt;/p&gt;
&lt;p&gt;&lt;center&gt;(note: you &lt;b&gt;do not&lt;/b&gt; have to be a member of LOPSA to win the contest)&lt;/center&gt;&lt;br /&gt;
Loading&amp;#8230;&lt;/p&gt;
&lt;p&gt;So there you go. Fill it out to throw your hat in the ring. Also, I included a thing for &amp;#8220;don&amp;#8217;t include me in the contest&amp;#8221;, since some of you may not want (or need) to win a free pass. &lt;/p&gt;
&lt;p&gt;If you have any questions, please throw them in the comments or email me directly at &lt;a href=&quot;mailto:standalone.sysadmin@gmail.com&quot;&gt;standalone.sysadmin@gmail.com&lt;/a&gt;. Thanks for 4 great years! &lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/JThNHkTSt1tPqAyzD-0x1ESN0Ck/0/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/JThNHkTSt1tPqAyzD-0x1ESN0Ck/0/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/JThNHkTSt1tPqAyzD-0x1ESN0Ck/1/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/JThNHkTSt1tPqAyzD-0x1ESN0Ck/1/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/standalone-sysadmin/rWoU?a=pVTySAjtcLM:8ijlrEDsfbk:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/standalone-sysadmin/rWoU?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/standalone-sysadmin/rWoU/~4/pVTySAjtcLM&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Standalone Sysadmin</name>
			<uri>http://www.standalone-sysadmin.com/blog</uri>
		</author>
		<source>
			<title type="html">Standalone Sysadmin</title>
			<subtitle type="html">A blog for IT Admins who do everything by an IT Admin who does everything</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/standalone-sysadmin/rWoU"/>
			<id>http://feeds.feedburner.com/standalone-sysadmin/rWoU</id>
			<updated>2012-05-14T19:45:18+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">Use vSphere Client to determine number of paths to a datastore</title>
		<link href="http://feedproxy.google.com/~r/techrepublic/networking/~3/XbQ7oEbvsHE/5606"/>
		<id>http://www.techrepublic.com/blog/networking/use-vsphere-client-to-determine-number-of-paths-to-a-datastore/5606</id>
		<updated>2012-05-14T13:00:31+00:00</updated>
		<content type="html">Ensuring that storage is properly provisioned is a key to a successful vSphere installation. Rickatron shows how to check the active number of paths for a datastore in this blog.&lt;img src=&quot;http://feeds.feedburner.com/~r/techrepublic/networking/~4/XbQ7oEbvsHE&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>TechRepublic Network Administrator</name>
			<uri>http://www.techrepublic.com/blog/networking</uri>
		</author>
		<source>
			<title type="html">Data Center Blog | TechRepublic</title>
			<subtitle type="html">Network, server, and storage administrators get valuable advice and best practices to help meet the challenges they face in keeping systems connected, available, and running at high efficiency.</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/techrepublic/networking"/>
			<id>http://feeds.feedburner.com/techrepublic/networking</id>
			<updated>2012-05-18T07:15:38+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">“My Neckbeard Grew Three Sizes That Day” or How I Beat a GNU tool with Perl</title>
		<link href="http://feedproxy.google.com/~r/TheNubbyAdmin/~3/QF8BcFNf9q0/"/>
		<id>http://thenubbyadmin.com/?p=2596</id>
		<updated>2012-05-14T09:32:58+00:00</updated>
		<content type="html">&lt;p&gt;&lt;em&gt;(Today is another guest post from security expert Scott Pack!)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I spend a lot of time doing text based data processing. A *lot* of time. During an analysis, I often want to do things like look at &amp;#8216;Top Talkers&amp;#8217;, &amp;#8216;Most Frequent Visitors&amp;#8217;, or really anything that comprises a list of unique identifiers sorted by count. As a result, I&amp;#8217;ve translated two actions into a series of pipes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;What&amp;#8217;s the count of events per thingy: &amp;#8220;&lt;span&gt; | sort | uniq -c | sort -n&lt;/span&gt;&amp;#8220;&lt;/li&gt;
&lt;li&gt;Who has been doing whatever: &amp;#8220;&lt;span&gt; | sort -u&lt;/span&gt;&amp;#8220;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This tends to work pretty well in most cases. Today, however, was not one of those cases. While attempting get a list of unique MACs I started out with a source (i.e. non-uniqued) 16GB text file with one MAC per line. This is where things got annoying. Muscle memory kicked in and since this matched Action #2, I ran the following command: &lt;span&gt;cat macs_all.txt | sort -u &amp;gt;; macs_unique.txt&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;I expected it to take a few minutes, so I went back to the other things I was doing and let it go. I checked back 15 minutes later, and it was still running. Waited 5 minutes&amp;#8230;still running. When the command had been running for 45 minutes, I got fed up and decided that I could do better. Perl, being my go to tool, came to the rescue in the form of hashes. I won&amp;#8217;t go into gritty detail, but a Perl hash is a data structure that consists of a list of key/value pairs. Whenever you assign a value to a key it will add an entry for the key if it doesn&amp;#8217;t exist, or update the value if it does. Since a key cannot be in the same hash multiple times, it makes for a pretty good hack to generate a unique list. This is what I ended up doing:&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;perl&quot;&gt;&lt;span&gt;#!/usr/bin/perl -w&lt;/span&gt;
&amp;nbsp;
&lt;span&gt;use&lt;/span&gt; strict&lt;span&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span&gt;my&lt;/span&gt; &lt;span&gt;%unique&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span&gt;while&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt; &lt;span&gt;my&lt;/span&gt; &lt;span&gt;$line&lt;/span&gt; &lt;span&gt;=&lt;/span&gt;  &lt;span&gt;&amp;#41;&lt;/span&gt;
&lt;span&gt;&amp;#123;&lt;/span&gt;
  &lt;span&gt;next&lt;/span&gt; &lt;span&gt;unless&lt;/span&gt; &lt;span&gt;$line&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;
  &lt;span&gt;chomp&lt;/span&gt; &lt;span&gt;$line&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;
  &lt;span&gt;$unique&lt;/span&gt;&lt;span&gt;&amp;#123;&lt;/span&gt;&lt;span&gt;$line&lt;/span&gt;&lt;span&gt;&amp;#125;&lt;/span&gt; &lt;span&gt;=&lt;/span&gt; &lt;span&gt;''&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;
&lt;span&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span&gt;for&lt;/span&gt; &lt;span&gt;my&lt;/span&gt; &lt;span&gt;$key&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt; &lt;span&gt;keys&lt;/span&gt; &lt;span&gt;%unique&lt;/span&gt; &lt;span&gt;&amp;#41;&lt;/span&gt;
&lt;span&gt;&amp;#123;&lt;/span&gt;
  &lt;span&gt;print&lt;/span&gt; &lt;span&gt;&amp;quot;$key&lt;span&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;
&lt;span&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This worked significantly better for me. The output was not sorted, but that&amp;#8217;s fine, I didn&amp;#8217;t need it sorted, only unique. The timing information looked a lot better too.&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;erlang&quot;&gt;packs@ node1:~&amp;amp;gt&lt;span&gt;;&lt;/span&gt; time cat macs_all&lt;span&gt;.&lt;/span&gt;txt | sort &lt;span&gt;-&lt;/span&gt;u &amp;amp;gt&lt;span&gt;;&lt;/span&gt; macs_unique&lt;span&gt;.&lt;/span&gt;txt
&amp;nbsp;
real    181m12&lt;span&gt;.&lt;/span&gt;417s
user    176m13&lt;span&gt;.&lt;/span&gt;926s
sys     1m42&lt;span&gt;.&lt;/span&gt;335s
packs@ node1:~&amp;amp;gt&lt;span&gt;;&lt;/span&gt; time cat macs_all&lt;span&gt;.&lt;/span&gt;txt | &lt;span&gt;.&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;fast_uniq&lt;span&gt;.&lt;/span&gt;pl &amp;amp;gt&lt;span&gt;;&lt;/span&gt; macs_fast_uniqed&lt;span&gt;.&lt;/span&gt;txt
&amp;nbsp;
real    8m9&lt;span&gt;.&lt;/span&gt;074s
user    7m28&lt;span&gt;.&lt;/span&gt;176s
sys     0m46&lt;span&gt;.&lt;/span&gt;271s&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The times can&amp;#8217;t really be directly compared, since output from fast_uniq.pl isn&amp;#8217;t actually sorted. Given the pretty substantial difference I think we can reasonably accept the fact that fast_uniq.pl is better in this use case. After seeing this, I&amp;#8217;m tempted to add some functionality so I stop using both sort and uniq entirely.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m interested to hear if anyone else has done something similar or explain to me how much my code sucks.
&lt;div&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://www.thycotic.com/zSS_TheNubbyAdmin.html?utm_source=TheNubbyAdmin&amp;utm_medium=banner&amp;utm_content=rss&amp;utm_campaign=SSTheNubbyAdmin&quot;&gt;&lt;img src=&quot;http://thenubbyadmin.com/wp-content/wpads/SS468by60.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TheNubbyAdmin/~4/QF8BcFNf9q0&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/p&gt;</content>
		<author>
			<name>The Nubby Admin</name>
			<uri>http://thenubbyadmin.com</uri>
		</author>
		<source>
			<title type="html">The Nubby Admin</title>
			<subtitle type="html">Just a nublet SysAdmin</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/TheNubbyAdmin"/>
			<id>http://feeds.feedburner.com/TheNubbyAdmin</id>
			<updated>2012-05-16T17:16:23+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">6 Disasters Caused by Poorly Designed User Interfaces</title>
		<link href="http://catless.ncl.ac.uk/Risks/26.83.html#subj1"/>
		<id>http://catless.ncl.ac.uk/Risks/26.83.html#subj1</id>
		<updated>2012-05-13T05:16:27+00:00</updated>
		<content type="html"></content>
		<author>
			<name>RISKS Digest</name>
			<uri>http://catless.ncl.ac.uk/Risks</uri>
		</author>
		<source>
			<title type="html">RISKS Digest</title>
			<subtitle type="html">The website of the RISKS Digest mailing list</subtitle>
			<link rel="self" href="http://catless.ncl.ac.uk/rdigest.rdf"/>
			<id>http://catless.ncl.ac.uk/rdigest.rdf</id>
			<updated>2012-05-16T21:46:06+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Never Trust a Robot</title>
		<link href="http://catless.ncl.ac.uk/Risks/26.83.html#subj2"/>
		<id>http://catless.ncl.ac.uk/Risks/26.83.html#subj2</id>
		<updated>2012-05-13T05:16:27+00:00</updated>
		<content type="html"></content>
		<author>
			<name>RISKS Digest</name>
			<uri>http://catless.ncl.ac.uk/Risks</uri>
		</author>
		<source>
			<title type="html">RISKS Digest</title>
			<subtitle type="html">The website of the RISKS Digest mailing list</subtitle>
			<link rel="self" href="http://catless.ncl.ac.uk/rdigest.rdf"/>
			<id>http://catless.ncl.ac.uk/rdigest.rdf</id>
			<updated>2012-05-16T21:46:06+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Robot Soldiers Will Be a Reality -- and a Threat</title>
		<link href="http://catless.ncl.ac.uk/Risks/26.83.html#subj3"/>
		<id>http://catless.ncl.ac.uk/Risks/26.83.html#subj3</id>
		<updated>2012-05-13T05:16:27+00:00</updated>
		<content type="html"></content>
		<author>
			<name>RISKS Digest</name>
			<uri>http://catless.ncl.ac.uk/Risks</uri>
		</author>
		<source>
			<title type="html">RISKS Digest</title>
			<subtitle type="html">The website of the RISKS Digest mailing list</subtitle>
			<link rel="self" href="http://catless.ncl.ac.uk/rdigest.rdf"/>
			<id>http://catless.ncl.ac.uk/rdigest.rdf</id>
			<updated>2012-05-16T21:46:06+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Automatic cars?  Not so fast..</title>
		<link href="http://catless.ncl.ac.uk/Risks/26.83.html#subj4"/>
		<id>http://catless.ncl.ac.uk/Risks/26.83.html#subj4</id>
		<updated>2012-05-13T05:16:27+00:00</updated>
		<content type="html"></content>
		<author>
			<name>RISKS Digest</name>
			<uri>http://catless.ncl.ac.uk/Risks</uri>
		</author>
		<source>
			<title type="html">RISKS Digest</title>
			<subtitle type="html">The website of the RISKS Digest mailing list</subtitle>
			<link rel="self" href="http://catless.ncl.ac.uk/rdigest.rdf"/>
			<id>http://catless.ncl.ac.uk/rdigest.rdf</id>
			<updated>2012-05-16T21:46:06+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">&quot;Fire risk: Lenovo expands recall of ThinkCentre all-in-ones&quot;</title>
		<link href="http://catless.ncl.ac.uk/Risks/26.83.html#subj5"/>
		<id>http://catless.ncl.ac.uk/Risks/26.83.html#subj5</id>
		<updated>2012-05-13T05:16:27+00:00</updated>
		<content type="html"></content>
		<author>
			<name>RISKS Digest</name>
			<uri>http://catless.ncl.ac.uk/Risks</uri>
		</author>
		<source>
			<title type="html">RISKS Digest</title>
			<subtitle type="html">The website of the RISKS Digest mailing list</subtitle>
			<link rel="self" href="http://catless.ncl.ac.uk/rdigest.rdf"/>
			<id>http://catless.ncl.ac.uk/rdigest.rdf</id>
			<updated>2012-05-16T21:46:06+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Disruptions: Indiscreet Photos, Glimpsed Then Gone</title>
		<link href="http://catless.ncl.ac.uk/Risks/26.83.html#subj6"/>
		<id>http://catless.ncl.ac.uk/Risks/26.83.html#subj6</id>
		<updated>2012-05-13T05:16:27+00:00</updated>
		<content type="html"></content>
		<author>
			<name>RISKS Digest</name>
			<uri>http://catless.ncl.ac.uk/Risks</uri>
		</author>
		<source>
			<title type="html">RISKS Digest</title>
			<subtitle type="html">The website of the RISKS Digest mailing list</subtitle>
			<link rel="self" href="http://catless.ncl.ac.uk/rdigest.rdf"/>
			<id>http://catless.ncl.ac.uk/rdigest.rdf</id>
			<updated>2012-05-16T21:46:06+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">USPS curtailing international lithium battery shipments... no iPads,  laptops, cameras...</title>
		<link href="http://catless.ncl.ac.uk/Risks/26.83.html#subj7"/>
		<id>http://catless.ncl.ac.uk/Risks/26.83.html#subj7</id>
		<updated>2012-05-13T05:16:27+00:00</updated>
		<content type="html"></content>
		<author>
			<name>RISKS Digest</name>
			<uri>http://catless.ncl.ac.uk/Risks</uri>
		</author>
		<source>
			<title type="html">RISKS Digest</title>
			<subtitle type="html">The website of the RISKS Digest mailing list</subtitle>
			<link rel="self" href="http://catless.ncl.ac.uk/rdigest.rdf"/>
			<id>http://catless.ncl.ac.uk/rdigest.rdf</id>
			<updated>2012-05-16T21:46:06+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Man jailed for accepting call in court</title>
		<link href="http://catless.ncl.ac.uk/Risks/26.83.html#subj8"/>
		<id>http://catless.ncl.ac.uk/Risks/26.83.html#subj8</id>
		<updated>2012-05-13T05:16:27+00:00</updated>
		<content type="html"></content>
		<author>
			<name>RISKS Digest</name>
			<uri>http://catless.ncl.ac.uk/Risks</uri>
		</author>
		<source>
			<title type="html">RISKS Digest</title>
			<subtitle type="html">The website of the RISKS Digest mailing list</subtitle>
			<link rel="self" href="http://catless.ncl.ac.uk/rdigest.rdf"/>
			<id>http://catless.ncl.ac.uk/rdigest.rdf</id>
			<updated>2012-05-16T21:46:06+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">FBI issues warning on hotel Internet connections</title>
		<link href="http://catless.ncl.ac.uk/Risks/26.83.html#subj9"/>
		<id>http://catless.ncl.ac.uk/Risks/26.83.html#subj9</id>
		<updated>2012-05-13T05:16:27+00:00</updated>
		<content type="html"></content>
		<author>
			<name>RISKS Digest</name>
			<uri>http://catless.ncl.ac.uk/Risks</uri>
		</author>
		<source>
			<title type="html">RISKS Digest</title>
			<subtitle type="html">The website of the RISKS Digest mailing list</subtitle>
			<link rel="self" href="http://catless.ncl.ac.uk/rdigest.rdf"/>
			<id>http://catless.ncl.ac.uk/rdigest.rdf</id>
			<updated>2012-05-16T21:46:06+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">&quot;.secure&quot; TLD proposed</title>
		<link href="http://catless.ncl.ac.uk/Risks/26.83.html#subj10"/>
		<id>http://catless.ncl.ac.uk/Risks/26.83.html#subj10</id>
		<updated>2012-05-13T05:16:27+00:00</updated>
		<content type="html"></content>
		<author>
			<name>RISKS Digest</name>
			<uri>http://catless.ncl.ac.uk/Risks</uri>
		</author>
		<source>
			<title type="html">RISKS Digest</title>
			<subtitle type="html">The website of the RISKS Digest mailing list</subtitle>
			<link rel="self" href="http://catless.ncl.ac.uk/rdigest.rdf"/>
			<id>http://catless.ncl.ac.uk/rdigest.rdf</id>
			<updated>2012-05-16T21:46:06+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">More details on the .secure TLD proposal -- and why I believe it is  fundamentally flawed</title>
		<link href="http://catless.ncl.ac.uk/Risks/26.83.html#subj11"/>
		<id>http://catless.ncl.ac.uk/Risks/26.83.html#subj11</id>
		<updated>2012-05-13T05:16:27+00:00</updated>
		<content type="html"></content>
		<author>
			<name>RISKS Digest</name>
			<uri>http://catless.ncl.ac.uk/Risks</uri>
		</author>
		<source>
			<title type="html">RISKS Digest</title>
			<subtitle type="html">The website of the RISKS Digest mailing list</subtitle>
			<link rel="self" href="http://catless.ncl.ac.uk/rdigest.rdf"/>
			<id>http://catless.ncl.ac.uk/rdigest.rdf</id>
			<updated>2012-05-16T21:46:06+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Re: The Campus Tsunami</title>
		<link href="http://catless.ncl.ac.uk/Risks/26.83.html#subj12"/>
		<id>http://catless.ncl.ac.uk/Risks/26.83.html#subj12</id>
		<updated>2012-05-13T05:16:27+00:00</updated>
		<content type="html"></content>
		<author>
			<name>RISKS Digest</name>
			<uri>http://catless.ncl.ac.uk/Risks</uri>
		</author>
		<source>
			<title type="html">RISKS Digest</title>
			<subtitle type="html">The website of the RISKS Digest mailing list</subtitle>
			<link rel="self" href="http://catless.ncl.ac.uk/rdigest.rdf"/>
			<id>http://catless.ncl.ac.uk/rdigest.rdf</id>
			<updated>2012-05-16T21:46:06+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Re: The Power of Individual Voters to Transform Their Government</title>
		<link href="http://catless.ncl.ac.uk/Risks/26.83.html#subj13"/>
		<id>http://catless.ncl.ac.uk/Risks/26.83.html#subj13</id>
		<updated>2012-05-13T05:16:27+00:00</updated>
		<content type="html"></content>
		<author>
			<name>RISKS Digest</name>
			<uri>http://catless.ncl.ac.uk/Risks</uri>
		</author>
		<source>
			<title type="html">RISKS Digest</title>
			<subtitle type="html">The website of the RISKS Digest mailing list</subtitle>
			<link rel="self" href="http://catless.ncl.ac.uk/rdigest.rdf"/>
			<id>http://catless.ncl.ac.uk/rdigest.rdf</id>
			<updated>2012-05-16T21:46:06+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html"></title>
		<link href="http://catless.ncl.ac.uk/Risks/26.83.html#subj14"/>
		<id>http://catless.ncl.ac.uk/Risks/26.83.html#subj14</id>
		<updated>2012-05-13T05:16:27+00:00</updated>
		<content type="html"></content>
		<author>
			<name>RISKS Digest</name>
			<uri>http://catless.ncl.ac.uk/Risks</uri>
		</author>
		<source>
			<title type="html">RISKS Digest</title>
			<subtitle type="html">The website of the RISKS Digest mailing list</subtitle>
			<link rel="self" href="http://catless.ncl.ac.uk/rdigest.rdf"/>
			<id>http://catless.ncl.ac.uk/rdigest.rdf</id>
			<updated>2012-05-16T21:46:06+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html"></title>
		<link href="http://catless.ncl.ac.uk/Risks/26.83.html#subj15"/>
		<id>http://catless.ncl.ac.uk/Risks/26.83.html#subj15</id>
		<updated>2012-05-13T05:16:27+00:00</updated>
		<content type="html"></content>
		<author>
			<name>RISKS Digest</name>
			<uri>http://catless.ncl.ac.uk/Risks</uri>
		</author>
		<source>
			<title type="html">RISKS Digest</title>
			<subtitle type="html">The website of the RISKS Digest mailing list</subtitle>
			<link rel="self" href="http://catless.ncl.ac.uk/rdigest.rdf"/>
			<id>http://catless.ncl.ac.uk/rdigest.rdf</id>
			<updated>2012-05-16T21:46:06+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">A basic step in measuring and improving network performance</title>
		<link href="http://utcc.utoronto.ca/~cks/space/blog/tech/NetworkPerfBasicStep"/>
		<id>tag:cspace@cks.mef.org,2009-03-24:/blog/tech/NetworkPerfBasicStep</id>
		<updated>2012-05-13T04:40:44+00:00</updated>
		<content type="html">&lt;div class=&quot;wikitext&quot;&gt;&lt;h2&gt;A basic step in measuring and improving network performance&lt;/h2&gt;

&lt;p&gt;There is a mistake that I have seen people make over and over again
when they attempt to improve, tune, or even check network performance
under unusual circumstances. Although what set me off now is &lt;a href=&quot;http://vyazici.blogspot.ca/2012/05/performance-of-linux-ip-aliased-network.html&quot;&gt;this
well intentioned article&lt;/a&gt;,
I've seen the same mistake in people setting off to improve their iSCSI
performance, NFS performance, and probably any number of other things
that I've forgotten by now.&lt;/p&gt;

&lt;p&gt;The mistake is skipping the most important basic step of network
performance testing: &lt;strong&gt;the first thing you have to do is make sure
that your network is working right&lt;/strong&gt;. Before you can start tuning to
improve your particular case or start measuring the effects of different
circumstances, you need to know that your base case is not suffering
from performance issues of its own. If you skip this step, you are
building all future results on a foundation of sand and none of them are
terribly meaningful.&lt;/p&gt;

&lt;p&gt;(They may be very meaningful for you in that they improve your system's
performance right now, but if your baseline performance is not up to
what it should be it's quite possible that you could do better by
addressing that.)&lt;/p&gt;

&lt;p&gt;In the very old days, the correct base performance level you could
expect was somewhat uncertain and variable; getting networks to run fast
was challenging for various reasons. Fortunately those days have long
since passed. Today we have a very simple performance measure, one valid
for any hardware and OS from at least the past half decade if not longer:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;Any system can saturate a gigabit link with TCP traffic&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/sysadmin/ISCSIPerformanceTroubleshooting&quot;&gt;As I've written before in passing&lt;/a&gt;, if you have two
machines with gigabit Ethernet talking directly to each other on a
single subnet you should be able to get gigabit wire rates between
them (approximately 110 MBytes/sec) with simple testing tools like
&lt;a href=&quot;http://en.wikipedia.org/wiki/Ttcp&quot;&gt;ttcp&lt;/a&gt;. If you cannot get this
rate between your two test machines, something is wrong somewhere
and you need to fix it before there's any point in going further.&lt;/p&gt;

&lt;p&gt;(There are any number of places where the problem could be, but one
definitely exists.)&lt;/p&gt;

&lt;p&gt;I don't have an answer for what the expected latency should be (as
measured either by &lt;code&gt;ping&lt;/code&gt; or by some user-level testing tool), beyond
that it should be negligible. Our servers range from around 150
microseconds down to 10 microseconds, but there's other traffic going
on, multiple switch hops, and so on. Bulk TCP tends to smooth all of
that out, which is part of why I like it for this sort of basic tests.&lt;/p&gt;

&lt;p&gt;As a side note, a properly functioning local network has basically no
packet loss whatsoever. If you see any more than a trace amount, you
have a problem (which may be that your network, switches, or switch
uplinks are oversaturated).&lt;/p&gt;

&lt;p&gt;The one area today where there's real uncertainty in the proper base
performance is 10G networking; we have not yet mastered the art of
casually saturating 10G networks and may not for a while. If you
have 10G networks you are going to have to do your own tuning and
measurements of basic network performance before you start with higher
level issues, and you may have to deliberately tune for your specific
protocol and situation in a way that makes other performance worse.&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt; (&lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/tech/NetworkPerfBasicStep?showcomments#comments&quot;&gt;2 comments&lt;/a&gt;.) &lt;/div&gt;</content>
		<author>
			<name>cks</name>
			<uri>http://utcc.utoronto.ca/~cks/space/blog/</uri>
		</author>
		<source>
			<title type="html">Chris's Wiki :: blog</title>
			<subtitle type="html">Recently changed pages in Chris's Wiki :: blog.</subtitle>
			<link rel="self" href="http://utcc.utoronto.ca/~cks/space/blog/?atom"/>
			<id>http://utcc.utoronto.ca/~cks/space/blog/?atom</id>
			<updated>2012-05-17T21:15:32+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">On working from home</title>
		<link href="http://blog.steve.org.uk/on_working_from_home.html"/>
		<id>http://blog.steve.org.uk/on_working_from_home.html</id>
		<updated>2012-05-12T08:23:29+00:00</updated>
		<content type="html">&lt;p&gt;Recently an ex-colleague of mine changed jobs and suggested that I write something about the pros and cons of working from home.   I've thought about this subject, off and on, for a few years and frustratingly I think most of the pros and the cons are the same:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When you work from home you're working from home.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I live in a two-bedroom flat in Edinburgh.  (Having just spent thousands on a new bathroom I don't expect I'll be moving any time soon.  A rough budget of &amp;pound;40-50,000 would let me convert my attic into two/three rooms.  So there is growth potential!)&lt;/p&gt;
&lt;p&gt;In my flat I have made one of the bedrooms an office.  The office contains:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A &lt;i&gt;huge&lt;/i&gt; desk with two PCs, and two telephones on it.&lt;/li&gt;
&lt;li&gt;Several book-cases.&lt;/li&gt;
&lt;li&gt;A wall-mounted fan.&lt;/li&gt;
&lt;li&gt;Very little else.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;One PC is for work.  One PC is for me.  One phone is for work.  One phone is my own.&lt;/p&gt;
&lt;p&gt;Every working day I switch on the work router, the work phone, the work PC around 09:30.  I then work, taking a lunch-break between either 12:00-13:00 or 13:00-14:00, until 18:00 at which point I switch off the work toys. &lt;/p&gt;
&lt;p&gt;I ignore my personal PC during the working day with the exception that it is the source of my music.   I can reach across and hit the appropriate multi-media keys to select Play/Pause/Next Track/Previous Track/Volume Up/Volume Down.    (When thenever the work-phone rings the first ring is ignored as I scramble to hit &quot;Mute&quot; or &quot;Pause&quot;..!)&lt;/p&gt;
&lt;p&gt;So what are some of the advantages/drawbacks?  Well I'm at home.  So the environment is one that I've made myself, and enjoy.  The music is mine.  The colour-scheme is mine.  The pictures on the walls are mine.  I have a Steve-loving chair.  There is no soulless air-conditioning, no horrible cubicles, and no noisy people talking.&lt;/p&gt;
&lt;p&gt;The downside?  No people talking.  If I didn't leave my house at lunchtime I'd speak to &lt;b&gt;zero people&lt;/b&gt; face to face in an average working day.  That took a while for me to notice, but it is not nice.&lt;/p&gt;
&lt;p&gt;Since I work from home &quot;the commute&quot; takes seconds.  I tend to get out of bed and wander straight to the desk.  I'll work non-stop, then get dressed around lunchtime so that I can go out for lunch.   Hail, Rain, Snow, or Sunshine I leave the house for lunch every single day (unless waiting for an atypical delivery).  Because if I didn't I'd have no human contact.  In the afternoon if it is a nice day I'll get undressed again, because I can, so why the hell not?&lt;/p&gt;
&lt;p&gt;Providing you're focussed working from home has several advantages that I can think of - I've no qualms about setting the washing machine going before I start work knowing that I can &quot;spare&quot; five minutes to empty it later in the day.  Similarly I've no concern about ordering (even large) items, because I know what time the postman comes, and I know I'm never going to be out and miss a delivery.&lt;/p&gt;
&lt;p&gt;When I first started working from home I had a laptop instead of a PC and there were mornings when I worked, lazily, from my bed, or from my sofa whilst watching TV.  That didn't last for long because I just didn't do a good job. I  think I got away with it in the sense that I don't think people noticed, but I expect if it had lasted for longer it would have been quickly apparent.  I stopped because the line was blurring between &quot;home life&quot; and &quot;work life&quot;.&lt;/p&gt;
&lt;p&gt;Having a dedicated working area is essential in keeping me focussed.  I don't do &quot;home things&quot; when I'm in &quot;work time&quot; - with very rare exceptions.  Yes I wander around and pace if I'm thinking, yes I make more tea and coffee than I would in a real office, and yes I might open windows, phone a friend, read my gas meter, washup dishes, or similar as I'm &quot;making coffee&quot;.  But on the whole it only works if I work when I'm working.&lt;/p&gt;
&lt;p&gt;I could save money by using my work-internet instead of paying for personal-internet, but keeping the two links separate is another way of being focussed.  I don't do &quot;dodgy&quot; things on the internet, on the whole (haha), but if I do I'd want to be damn sure that that was via my link and not the work-link - and having two PCs and two network links I know that is the case.  There have been times when the work link has broken and I've used my personal link + openvpn to continue working, or at the very least re-join our internal chatroom and say &quot;Internet down, brb&quot;.&lt;/p&gt;
&lt;p&gt;As a system administrator there are times when I have to do things either early in the morning, late at night, or even during a weekend.  I guess a final advantage is that this is not a struggle - providing I don't schedule such operations at times when I'm in the pub, meeting friends, or taking pictures of cute strangers, it isn't a struggle to say &quot;I'll do this after 8pm tonight&quot;, or set the alarm early.  No long walk to an office, and if I've already got food cooking for my tea I can eat it nearby whilst still configuring things and testing sites/services/machines.&lt;/p&gt;
&lt;p&gt;So pros:  I'm in my own environment, I don't worry about receiving parcels, meter-readings, and have wonderfully pleasant music all day.  Ancillory bonuses are really side-effects of being in my environment: I have my good coffee, my nice cups, I can eat food I enjoy.  etc, etc.&lt;/p&gt;
&lt;p&gt;Cons: You must be dedicated.  You must be focussed lest you give in to temptation and cease working for minutes/hours at a time.  You lose part of your home space - I can't turn this room into a childrens bedroom, for example.&lt;/p&gt;
&lt;p&gt;Nothing earth-shattering.  I've done this for five years now, and although I was a little skeptical initially I thought &quot;Why not?&quot;  It has worked out well and I think if I ever did need to leave my current position I'd have no hesitation about working from home in the future.&lt;/p&gt;
&lt;p&gt;Finally it has to be said that when I've had partners in my life they've traditionally been the type to wake up later than me.  I get significant brownie points for being able to wake them up around 10/11AM with a cup of hot coffee &amp;amp; breakfast in bed every morning.  By virtue of having a separate space I can close the door and not be disturbed by them walking around.&lt;/p&gt;
&lt;p&gt;I'm sure I've forgotten things - but as an initial pass the benefits and disadvantages of working from home are the same: You're in your own house.&lt;/p&gt;
&lt;p&gt;ObQuote: &quot;Explorers in the further regions of experience.&quot; - HellRaiser&lt;/p&gt;</content>
		<author>
			<name>Steve Kemp's Blog</name>
			<uri>http://blog.steve.org.uk/</uri>
		</author>
		<source>
			<title type="html">Steve Kemp's Blog</title>
			<subtitle type="html">Debian &amp;amp; Free Software</subtitle>
			<link rel="self" href="http://blog.steve.org.uk/index.rss"/>
			<id>http://blog.steve.org.uk/index.rss</id>
			<updated>2012-05-14T16:46:39+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">The death of paging on the web</title>
		<link href="http://utcc.utoronto.ca/~cks/space/blog/web/WebPagingDeath"/>
		<id>tag:cspace@cks.mef.org,2009-03-24:/blog/web/WebPagingDeath</id>
		<updated>2012-05-12T06:13:34+00:00</updated>
		<content type="html">&lt;div class=&quot;wikitext&quot;&gt;&lt;h2&gt;The death of paging on the web&lt;/h2&gt;

&lt;p&gt;I've written about &lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/web/OverlaysProblem&quot;&gt;the problem of permanent headers and footers&lt;/a&gt; before (around a year ago), but I'm seeing more and
more of them these days. What this confirms for me is that paging is
dead on the modern web.&lt;/p&gt;

&lt;p&gt;By this I don't mean long pages; I'm not one of those people who think
that all of your content has to be 'above the fold', immediately
visible as what people see (and the available evidence from actual
experimentation apparently says otherwise). What I mean is getting
to that content by paging, advancing in nearly full page increments
(usually by hitting the space bar in your browser). Given that permanent
headers or footers (or both) screw this up, and given that permanent
headers and footers are increasingly popular, I can only conclude that
paging isn't really used any more; otherwise, header and footer based
designs would be wretched experiences and test badly (and on the modern
web, people do at least do A/B tests).&lt;/p&gt;

&lt;p&gt;Instead, I think that on the modern web everyone has scroll wheels
(or some other way of scrolling, for example on tablets) and they
scroll through articles and pages with them. Only an insignificant
number of people still navigate with paging.&lt;/p&gt;

&lt;p&gt;Now I'll add a personal confession here: since I started &lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/sysadmin/ScrollMouseExperiment&quot;&gt;my scroll
wheel mouse experiment&lt;/a&gt;, I've found
myself increasingly scrolling web pages instead of paging them. I don't
know why, but there's just something about it that feels right (and this
is on pages without obnoxious headers and footers). I think that part of
it is that the boundaries of things on the web page often don't align
naturally with what I'd get by paging; by partially scrolling the page
I can make things line up right (this is especially visible to me if the
page content includes images).&lt;/p&gt;

&lt;p&gt;(Looking back, I've had middle mouse button based scrolling in my
browser for years and have used it too instead of paging. So I should
have seen this one coming.)&lt;/p&gt;

&lt;p&gt;I don't know what this means for web page design going forward, but
I suspect that it means something (I also suspect that current web
designers do know what it implies; I am not exactly current on the
field). There have to be things you design differently if you expect
almost everyone to scroll your page around so that things can catch
their eye as they move past.&lt;/p&gt;

&lt;p&gt;(I probably won't ever put a permanent header or footer on a page I
design (at least not a full-width one), but that's a personal thing.
Also it would have to be something awfully important to the page to
deserve a permanent full-time presence in front of the viewer. My bias
is that almost all headers and footers I've seen aren't that important;
in fact, they're often rather presumptuous that way, which is part of
the reason I dislike them.)&lt;/p&gt;
&lt;/div&gt;</content>
		<author>
			<name>cks</name>
			<uri>http://utcc.utoronto.ca/~cks/space/blog/</uri>
		</author>
		<source>
			<title type="html">Chris's Wiki :: blog</title>
			<subtitle type="html">Recently changed pages in Chris's Wiki :: blog.</subtitle>
			<link rel="self" href="http://utcc.utoronto.ca/~cks/space/blog/?atom"/>
			<id>http://utcc.utoronto.ca/~cks/space/blog/?atom</id>
			<updated>2012-05-17T21:15:32+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Lesser-known but extremely handy Linux tools</title>
		<link href="http://rackerhacker.com/2012/05/11/lesser-known-but-extremely-handy-linux-tools/"/>
		<id>http://rackerhacker.com/?p=3318</id>
		<updated>2012-05-11T21:28:58+00:00</updated>
		<content type="html">&lt;p&gt;Kristóf Kovács &lt;a href=&quot;http://kkovacs.eu/cool-but-obscure-unix-tools&quot;&gt;has a fantastic post&lt;/a&gt; about some lesser-known Linux tools that can really come in handy in different situations.&lt;/p&gt;
&lt;p&gt;If you haven't tried &lt;code&gt;dstat&lt;/code&gt; (I hadn't until I saw Kristóf's post), this is a great one to try.  You can keep a running tally on various server metrics including load average, network transfer, and disk operations.&lt;/p&gt;
&lt;p&gt;Here is some sample output:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;html&quot;&gt;----total-cpu-usage---- ---paging-- ---load-avg--- ------memory-usage----- -net/total- ---procs--- --io/total- ---system-- ----tcp-sockets----
usr sys idl wai hiq siq|  in   out | 1m   5m  15m | used  buff  cach  free| recv  send|run blk new| read  writ| int   csw |lis act syn tim clo
  0   0 100   0   0   0|   0     0 |0.07 0.25 0.25| 866M  249M  537M  387M|1314B  180B|  0   0   0|   0     0 |  70    80 | 13   7   0   0   5
  0   0 100   0   0   0|   0     0 |0.07 0.25 0.25| 866M  249M  537M  387M|1779B 1004B|  0   0   0|   0     0 |  84    78 | 13   7   0   0   5
  0   0 100   0   0   0|   0     0 |0.07 0.25 0.25| 866M  249M  537M  387M| 904B  362B|1.0   0 1.0|   0     0 |  75    86 | 13   9   0   0   5
  0   0 100   0   0   0|   0     0 |0.07 0.25 0.25| 866M  249M  537M  386M|2203B 1559B|  0   0   0|   0     0 | 180   127 | 13   7   0   0   5
  0   0 100   0   0   0|   0     0 |0.07 0.25 0.25| 866M  249M  537M  386M| 260B  130B|  0   0   0|   0     0 |  53    66 | 13   7   0   0   5
  0   0 100   0   0   0|   0     0 |0.07 0.25 0.25| 866M  249M  537M  387M|  52B  114B|  0   0   0|   0     0 |  54    77 | 13   7   0   0   5
  0   0 100   0   0   0|   0     0 |0.07 0.25 0.25| 866M  249M  537M  387M|2271B  872B|  0   0   0|   0     0 |  94    79 | 13   7   0   0   5
  0   0 100   0   0   0|   0     0 |0.07 0.25 0.25| 866M  249M  537M  387M|  52B  130B|  0   0   0|   0     0 |  54    74 | 13   7   0   0   5
  0   0 100   0   0   0|   0     0 |0.07 0.25 0.25| 866M  249M  537M  387M|1126B 1254B|  0   0   0|   0  24.0 |  80    87 | 13   7   0   0   5
  0   0 100   0   0   0|   0     0 |0.07 0.25 0.25| 866M  249M  537M  387M|1030B  130B|  0   0   0|   0     0 |  88    82 | 13   7   0   0   5
  0   0 100   0   0   0|   0     0 |0.06 0.24 0.25| 866M  249M  537M  387M| 578B  114B|  0   0   0|   0     0 |  53    64 | 13   7   0   0   5
  0   0 100   0   0   0|   0     0 |0.06 0.24 0.25| 866M  249M  537M  387M|1597B  890B|  0   0   0|   0     0 |  85    79 | 13   7   0   0   5
  0   0 100   0   0   0|   0     0 |0.06 0.24 0.25| 866M  249M  537M  387M| 552B  114B|  0   0   0|   0     0 |  63    77 | 13   7   0   0   5
  0   0 100   0   0   0|   0     0 |0.06 0.24 0.25| 866M  249M  537M  387M|1624B 1254B|  0   0   0|   0     0 |  81    75 | 13   7   0   0   5
  0   0 100   0   0   0|   0     0 |0.06 0.24 0.25| 866M  249M  537M  387M| 478B  114B|  0   0   0|   0     0 |  67    73 | 13   7   0   0   5
  0   0 100   0   0   0|   0     0 |0.06 0.24 0.25| 866M  249M  537M  387M| 418B  114B|  0   0   0|   0     0 |  59    74 | 13   7   0   0   5
  0   0 100   0   0   0|   0     0 |0.06 0.24 0.25| 866M  249M  537M  387M|1265B  874B|  0   0   0|   0     0 |  82    73 | 13   7   0   0   5
  0   0 100   0   0   0|   0     0 |0.06 0.24 0.25| 866M  249M  537M  387M| 758B  114B|  0   0   0|   0     0 |  60    80 | 13   7   0   0   5
  0   0 100   0   0   0|   0     0 |0.06 0.24 0.25| 866M  249M  537M  387M|1236B 1255B|  0   0   0|   0  4.00 |  93    79 | 13   7   0   0   5
  0   0 100   0   0   0|   0     0 |0.06 0.24 0.25| 866M  249M  537M  387M|  52B  130B|  0   0   0|   0     0 |  71    70 | 13   7   0   0   5
  0   0 100   0   0   0|   0     0 |0.05 0.23 0.25| 866M  249M  537M  387M| 214B  114B|  0   0   0|   0     0 |  55    73 | 13   7   0   0   5
  0   0 100   0   0   0|   0     0 |0.05 0.23 0.25| 866M  249M  537M  387M|1201B  890B|  0   0   0|   0     0 |  80    80 | 13   7   0   0   5
  0   0 100   0   0   0|   0     0 |0.05 0.23 0.25| 866M  249M  537M  387M| 108B  114B|  0   0   0|   0     0 |  53    66 | 13   7   0   0   5
  0   0 100   0   0   0|   0     0 |0.05 0.23 0.25| 866M  249M  537M  387M|1344B 1254B|  0   0   0|   0  10.0 | 119    85 | 13   7   0   0   5
  0   0 100   0   0   0|   0     0 |0.05 0.23 0.25| 866M  249M  537M  387M| 172B  130B|  0   0   0|   0  8.00 |  80    82 | 13   7   0   0   5&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Learn more about &lt;code&gt;dstat&lt;/code&gt; on &lt;a href=&quot;http://dag.wieers.com/home-made/dstat/&quot;&gt;Dag Wieërs' site&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://rackerhacker.com/2012/05/11/lesser-known-but-extremely-handy-linux-tools/&quot;&gt;Lesser-known but extremely handy Linux tools&lt;/a&gt; is a post from: Major Hayden's &lt;a href=&quot;http://rackerhacker.com&quot;&gt;Racker Hacker&lt;/a&gt; blog. 
&lt;p&gt;Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.&lt;/p&gt;&lt;/p&gt;</content>
		<author>
			<name>Racker Hacker</name>
			<uri>http://rackerhacker.com</uri>
		</author>
		<source>
			<title type="html">Racker Hacker</title>
			<subtitle type="html">Words of wisdom from a server administrator</subtitle>
			<link rel="self" href="http://rackerhacker.com/feed/"/>
			<id>http://rackerhacker.com/feed/</id>
			<updated>2012-05-18T07:15:10+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Restricting and Automating User Commands Through SSH and the authorized_keys File</title>
		<link href="http://feedproxy.google.com/~r/TheNubbyAdmin/~3/gC6pWrf6XCk/"/>
		<id>http://thenubbyadmin.com/?p=2582</id>
		<updated>2012-05-11T10:45:19+00:00</updated>
		<content type="html">&lt;p&gt;Previously I explored &lt;a href=&quot;http://thenubbyadmin.com/2012/04/11/how-to-restrict-a-users-sudo-rights-to-only-specific-commands/&quot;&gt;how to limit a user&amp;#8217;s ability to runs commands with sudo&lt;/a&gt;. As a tangential topic, I needed to restrict the commands that a user account had access to when they connected to the server via SSH. Specifically, I needed just a few commands to be strung together and executed every time this account connected.&lt;/p&gt;
&lt;p&gt;The mechanism that I used to do this was with the authorized_keys file. For a thorough explanation of that file, take a peak at the &lt;a href=&quot;http://linux.die.net/man/8/sshd&quot;&gt;man page for sshd&lt;/a&gt;. To explain it very simply, the authorized_keys file holds the public keys of other users/systems that are allowed to connect to that machine. For example, I place my main user account&amp;#8217;s public RSA key into the authorized_keys file on the Linux servers that I manage. When I connect to the remote servers using SSH, it checks to see if I&amp;#8217;m who I say I am by challenging me with the public key that it has stored. The user account on my laptop uses the private key to validate itself (yes, the private key is password protected) and I am then allowed to haxor on the servers to my heart&amp;#8217;s content.&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s an example of a public key:&lt;/p&gt;
&lt;div class=&quot;wp_syntax&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;bash&quot;&gt;ssh-rsa AAAB3NzaC1yc2EAAAADAQABAAABAQDclBxY7lOaolHGaogdcc9GaTQLWMcn2PK4hnQfWlJgeeGqgS66jL4XJyiR9HcgaebBW88Z2sevUxd7g25WhuuRAazfOcElEaE+h6MMPZ94gHY+x+iVAdlNKxLT&lt;span&gt;/&lt;/span&gt;bTvCUXLEft&lt;span&gt;/&lt;/span&gt;yZFpnknnv7jX4ChfSiII9OiAiCzuSdyHt1&lt;span&gt;/&lt;/span&gt;1LgEHgvDIwKMzvTgImm5X&lt;span&gt;/&lt;/span&gt;3IhtOitjJY3Q6yhKQ6LdenQtG&lt;span&gt;/&lt;/span&gt;v+ANqKe6opDuUKc3k9hRmj7aHROxL52paQTEgEMoVLbIoZY4&lt;span&gt;/&lt;/span&gt;yGUzmrZQU45jNqMrbXdAxG4XexZxb7bpTLu91s0DJQGx43JNXwhJVinPgxHLmfyoCSqR1WPqn8E3 testuser&lt;span&gt;@&lt;/span&gt;testserver&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The public key, when placed in a system&amp;#8217;s authorized_keys file, can have some extra tidbits added to it that sshd honors. An SSH protocol 2 public key follows this format:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;options, keytype, base64-encoded key, comment&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;In the above public key, you see the keytype as &amp;#8216;ssh-rsa&amp;#8217; followed by a space, then the key itself followed by a space and finally a comment, which in this case is a username and hostname combination. That&amp;#8217;s a helpful hint to know who this key supposedly belongs to. Notice that there are no options included in the above key, which would come before the keytype.&lt;/p&gt;
&lt;p&gt;Some of the options that are available to be parsed by sshd include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;environment=&lt;/code&gt;&lt;/strong&gt; Changes an environmental variable for the user that is on the receiving end of the connection.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;from=&lt;/code&gt;&lt;/strong&gt; Only allows connections that use this public key to be initiated from certain hosts. Helpful for the extremely paranoid or the very security conscious (the only difference between the two being pay grade).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;no-X11-forwarding&lt;/code&gt;&lt;/strong&gt; Because we don&amp;#8217;t need users installing xorg and then browsing the web on a remote instance of Chrome.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There are plenty of other options, however the final one that I&amp;#8217;ll mention is the most crucial to this topic: &lt;code&gt;command=&quot;command&quot;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;With the &lt;code&gt;command=&lt;/code&gt; option, you can cause a command to be run immediately upon a successful connection to a remote host. Once the command is run, the connection is closed. Notice how that works. The command is immediately run and then once the command finishes, the connection is closed. This is not something that you&amp;#8217;d want to do to a key that is intended to be used interactively by a human.&lt;/p&gt;
&lt;p&gt;What could this be good for? In my specific scenario, I am using a backup tool that moves all of the data to stdout which is then piped to ssh for a secure transfer to remote storage. The remote connection would normally look like this: ssh remoteuser@remoteserver &amp;#8221; cat &amp;gt; backupfile.zip&amp;#8221; However, if I edit the authorized keys file, I can restrict the incoming ssh connection to only be allowed to use that specific command.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s just another layer of security to keep people from doing things that they shouldn&amp;#8217;t be doing. Have different ways of achieving a similar goal? Any caveats you know about? Let me know in the comments.
&lt;div&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://www.thycotic.com/zSS_TheNubbyAdmin.html?utm_source=TheNubbyAdmin&amp;utm_medium=banner&amp;utm_content=rss&amp;utm_campaign=SSTheNubbyAdmin&quot;&gt;&lt;img src=&quot;http://thenubbyadmin.com/wp-content/wpads/SS468by60.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TheNubbyAdmin/~4/gC6pWrf6XCk&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/p&gt;</content>
		<author>
			<name>The Nubby Admin</name>
			<uri>http://thenubbyadmin.com</uri>
		</author>
		<source>
			<title type="html">The Nubby Admin</title>
			<subtitle type="html">Just a nublet SysAdmin</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/TheNubbyAdmin"/>
			<id>http://feeds.feedburner.com/TheNubbyAdmin</id>
			<updated>2012-05-16T17:16:23+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">All your servers should have Linux's magic SysRq enabled</title>
		<link href="http://utcc.utoronto.ca/~cks/space/blog/linux/ServersEnableMagicSysrq"/>
		<id>tag:cspace@cks.mef.org,2009-03-24:/blog/linux/ServersEnableMagicSysrq</id>
		<updated>2012-05-10T20:29:04+00:00</updated>
		<content type="html">&lt;div class=&quot;wikitext&quot;&gt;&lt;h2&gt;All your servers should have Linux's magic SysRq enabled&lt;/h2&gt;

&lt;p&gt;This is effectively another &lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/sysadmin/PowerdownLessonsLearnedII&quot;&gt;lesson learned&lt;/a&gt; from our recent building power
shutdown.  I will put it simply:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;All of your servers should have &lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/linux/UsingMagicSysrq&quot;&gt;magic SysRq&lt;/a&gt;
enabled.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There are reasons to not do this on client machines (but not necessarily
very good ones), but none on your servers (which certainly should have
their hardware and consoles in a secure location).&lt;/p&gt;

&lt;p&gt;What magic SysRq is good for on servers (above everything else) is
giving you a last ditch chance to shut down or reboot the machine
in something approaching an orderly way. I'm not just talking about
&lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/linux/SerialConsoleLove&quot;&gt;if the system goes&lt;/a&gt; &lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/linux/RatelimitMessages&quot;&gt;crazy&lt;/a&gt;,
because it's also quite possible for ordinary system shutdowns to hang,
especially if you're shutting down a group of systems that have complex
NFS filesystem relationships and something went down out of order. If
this happens and you don't have magic SysRq support available, you're
plain out of luck; all you can do is pull the power and hope that
nothing is going to explode because it hasn't been killed, had its data
synced to disk, or whatever.&lt;/p&gt;

&lt;p&gt;With magic SysRq you have at least a chance of doing something about
this. You can force a kernel level sync, a kernel level unmount of as
many filesystems as possible, and even hit processes with signals if you
think it's going to do any good. And then you can reboot the machine
(and afterwards, possibly pull the power to keep the machine down).&lt;/p&gt;

&lt;p&gt;PS: you should explicitly enabled magic SysRq in your standard server
install setup, even if your distribution normally defaults to leaving it
on; distribution defaults can change over time. Also, note that if you
have a serial console &lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/linux/SerialConsolesNeedGetty&quot;&gt;you generally need a getty listening on it in
order to make magic SysRq work&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;(You can check to see if magic SysRq is enabled by looking at the value
of /proc/sys/kernel/sysrq; a &lt;code&gt;1&lt;/code&gt; means that it is, a &lt;code&gt;0&lt;/code&gt; means that it
isn't.)&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt; (&lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/linux/ServersEnableMagicSysrq?showcomments#comments&quot;&gt;2 comments&lt;/a&gt;.) &lt;/div&gt;</content>
		<author>
			<name>cks</name>
			<uri>http://utcc.utoronto.ca/~cks/space/blog/</uri>
		</author>
		<source>
			<title type="html">Chris's Wiki :: blog</title>
			<subtitle type="html">Recently changed pages in Chris's Wiki :: blog.</subtitle>
			<link rel="self" href="http://utcc.utoronto.ca/~cks/space/blog/?atom"/>
			<id>http://utcc.utoronto.ca/~cks/space/blog/?atom</id>
			<updated>2012-05-17T21:15:32+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Installing Windows 8 Consumer Preview</title>
		<link href="http://feedproxy.google.com/~r/semicomplete/main/~3/PK2Xz8iRi08/installing-windows-8-consumer-preview.html"/>
		<id>http://www.semicomplete.com/blog/geekery/installing-windows-8-consumer-preview.html</id>
		<updated>2012-05-10T06:50:00+00:00</updated>
		<content type="html">I have a fresh workstation and am running through the windows 8 installer on USB.

When choosing the drive to install to, I get an error:

&lt;blockquote&gt;
We couldn't create a new partition or locate an existing one
&lt;/blockquote&gt;

Lots of googling and I didn't find any hints for windows 8, but windows 7 has a
similar error and folks pointed at diskpart nonsense to fix it. So let's do that -

&lt;ul&gt;
&lt;li&gt; At the installer, choose &quot;Repair your computer&quot;&lt;/li&gt;
&lt;li&gt; Choose &quot;troubleshoot&quot; &lt;/li&gt;
&lt;li&gt; Choose &quot;advanced options&quot; &lt;/li&gt;
&lt;li&gt; Choose &quot;command prompt&quot;&lt;/li&gt;
&lt;li&gt; Run diskpart.
&lt;/li&gt;&lt;/ul&gt;

In diskpart, you'll want to make sure your target drive is formatted and active.

&lt;pre&gt;
list disk

# now pick your disk
select disk 0
clear
create partition
format fs=ntfs compress quick
active
&lt;/pre&gt;

Now reboot and try the installer again, it worked for me.

&lt;img src=&quot;http://feeds.feedburner.com/images/spacer.gif?geekery/installing-windows-8-consumer-preview&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/semicomplete/main?a=PK2Xz8iRi08:NW6osc0mv_E:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/semicomplete/main?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/semicomplete/main?a=PK2Xz8iRi08:NW6osc0mv_E:F7zBnMyn0Lo&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/semicomplete/main?i=PK2Xz8iRi08:NW6osc0mv_E:F7zBnMyn0Lo&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/semicomplete/main?a=PK2Xz8iRi08:NW6osc0mv_E:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/semicomplete/main?i=PK2Xz8iRi08:NW6osc0mv_E:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/semicomplete/main/~4/PK2Xz8iRi08&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Jordan Sissel</name>
			<uri>http://www.semicomplete.com/blog</uri>
		</author>
		<source>
			<title type="html">semicomplete.com - Jordan Sissel</title>
			<subtitle type="html">Projects, articles, tips, and experiences on topics ranging from AJAX to Network Security.</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/semicomplete/main"/>
			<id>http://feeds.feedburner.com/semicomplete/main</id>
			<updated>2012-05-10T07:16:07+00:00</updated>
			<rights type="html">Copyright 2009 Jordan Sissel</rights>
		</source>
	</entry>

	<entry>
		<title type="html">Using rsync to pull a directory tree to client machines</title>
		<link href="http://utcc.utoronto.ca/~cks/space/blog/sysadmin/RsyncReplicationSetup"/>
		<id>tag:cspace@cks.mef.org,2009-03-24:/blog/sysadmin/RsyncReplicationSetup</id>
		<updated>2012-05-10T03:54:57+00:00</updated>
		<content type="html">&lt;div class=&quot;wikitext&quot;&gt;&lt;h2&gt;Using rsync to pull a directory tree to client machines&lt;/h2&gt;

&lt;p&gt;Suppose that you have &lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/sysadmin/OurPasswordPropagation&quot;&gt;a decent sized directory tree&lt;/a&gt; that you want some number of clients to mirror
from a master server (with the clients pulling updates instead of the
master pushing them), perhaps because &lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/sysadmin/PowerdownLessonsLearnedII&quot;&gt;you've just noticed undesired
NFS dependencies&lt;/a&gt;. Things in the directory
tree are potentially sensitive (so you want access control), it's updated
at random, and it's not in a giant VCS tree or something; this is your
typical medium-sized ball of local stuff. The straightforward brute
force approach is to use rsync with SSH; give the clients special SSH
identities, put them in the server's authorized_keys, and have them
run '&lt;code&gt;rsync -a --delete&lt;/code&gt;' (or some close variant) to pull the directory
tree over. However, this has the problem that normal rsync is symmetric;
if you allow a client to pull from you, you also allow a client to push
to you (assuming that the server side login has write access to the
directory tree, and yes let's make that assumption for now).&lt;/p&gt;

&lt;p&gt;(You also have to set the SSH access up so that the clients can't run
arbitrary commands on the server.)&lt;/p&gt;

&lt;p&gt;Rsync's solution to this is its daemon mode, which can restricted to
operate in read only mode. Normally rsync wants to be run this way as an
actual daemon (listening on a port and so on), but that requires us to
use rsync's weaker and harder to manage authentication, access control,
and other things. I would rather continue to run daemon mode rsync over
plain SSH and take advantage of all of the existing, proven SSH features
for various things.&lt;/p&gt;

&lt;p&gt;(The rsync manpage suggests hacks like binding the rsync daemon to only
listen on localhost on the server and then using SSH port forwarding
to give clients access to it. But those are hacks and require making
various assumptions.)&lt;/p&gt;

&lt;p&gt;How to to do this is not obvious from the documentation, so here is
the setup I have come up with for doing this on both the server and
the clients.  First, you need an &lt;code&gt;rsyncd.conf&lt;/code&gt; configuration file on
the server.  Don't use the normal &lt;code&gt;/etc/rsyncd.conf&lt;/code&gt;; it's much more
controllable to use your own in a different place. It should look
something like:&lt;/p&gt;

&lt;blockquote&gt;&lt;pre&gt;
use chroot = no
&lt;/pre&gt;

&lt;pre&gt;
[somepath]
comment = Replication module
path = /some/path
read only = true
# if necessary:
uid = 0
gid = 0
&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;(The '&lt;code&gt;[somepath]&lt;/code&gt;' bit is what rsync calls the module name and can be
anything meaningful for you; you'll need it on the client later. The
comment is optional but potentially useful. You need to explicitly
specify &lt;code&gt;uid&lt;/code&gt; and &lt;code&gt;gid&lt;/code&gt; if the server login is UID 0 for access to the
directory tree and you need to keep that; otherwise &lt;code&gt;rsync&lt;/code&gt; will drop
privileges to a default UID.)&lt;/p&gt;

&lt;p&gt;Next, you need a script on the server that will force an incoming SSH
login to run rsync in daemon mode against this configuration file and do
nothing else.  We will set this as the &lt;code&gt;command=&lt;/code&gt; value in the server
login's authorized_keys to restrict what the incoming SSH connection
from clients can do.  This looks like:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;#!/bin/sh&lt;/code&gt; &lt;br /&gt;
&lt;code&gt;exec /usr/bin/rsync --server --daemon --config=/your/rsyncd.conf .&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Note that this completely ignores any arguments that the client attempts
to supply. However, this doesn't matter; as far as I can tell, the
command line that the clients send will always be '&lt;code&gt;rsync --server
--daemon .&lt;/code&gt;', regardless of what command line options and paths you use
on the clients. (Certainly this is the only command line that clients
seem to send for requests that you actually want to pay attention to.)&lt;/p&gt;

&lt;p&gt;On the server, the login that you're using for this should have
a &lt;code&gt;.ssh/authorized_keys&lt;/code&gt; file with entries for the client SSH
identities. These entries should all force incoming logins to run
the command above and block various other activities (especially
port forwarding, which could otherwise be done without command
execution at all as Dan Astoorian mentioned in a comment &lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/sysadmin/DisablingAccountChallenge&quot;&gt;here&lt;/a&gt;):&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;command=&quot;/your/rsyncd-shell&quot;,no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty [...]&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A &lt;code&gt;from=&quot;...&quot;&lt;/code&gt; restriction is optional but &lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/sysadmin/SshIdentitiesSuggestions&quot;&gt;potentially recommended&lt;/a&gt;. Even a broad one may limit the fallout from
problems.&lt;/p&gt;

&lt;p&gt;Finally, on the client you need to run rsync with all of the necessary
arguments.  You probably want to put this in a script:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;#!/bin/sh&lt;/code&gt; &lt;br /&gt;
&lt;code&gt;rsync -a --delete --rsh=&quot;/usr/bin/ssh -i /client/identity&quot;
&lt;strong&gt;LOGIN@MASTER-HOST&lt;/strong&gt;::somepath /some/path/&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Potentially useful additional arguments for &lt;code&gt;rsync&lt;/code&gt; are &lt;code&gt;-q&lt;/code&gt; and
&lt;code&gt;--timeout=&amp;lt;something&gt;&lt;/code&gt;. In a production script you probably also
want an option to mirror the directory tree to somewhere other than
&lt;code&gt;/some/path&lt;/code&gt; on the client.&lt;/p&gt;

&lt;p&gt;If you run this from cron, remember to add &lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/unix/ShellScriptLocking&quot;&gt;some locking&lt;/a&gt; to prevent two copies from running at
once. If the directory tree is large and you have enough clients, you
may want to add some amount of randomization of the start times for the
replication in order to keep load down on the master server.&lt;/p&gt;

&lt;p&gt;(There may be a better way to do this with rsync; if you know of one,
let me know in the comments. For various reasons we're probably not
interested in doing this with any other tool, partly because we already
have rsync and not the other tools. Another tool would have to be very
much better than rsync to really be worth switching to.)&lt;/p&gt;
&lt;/div&gt;</content>
		<author>
			<name>cks</name>
			<uri>http://utcc.utoronto.ca/~cks/space/blog/</uri>
		</author>
		<source>
			<title type="html">Chris's Wiki :: blog</title>
			<subtitle type="html">Recently changed pages in Chris's Wiki :: blog.</subtitle>
			<link rel="self" href="http://utcc.utoronto.ca/~cks/space/blog/?atom"/>
			<id>http://utcc.utoronto.ca/~cks/space/blog/?atom</id>
			<updated>2012-05-17T21:15:32+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">Infographic: How cyber-secure are public companies?</title>
		<link href="http://feedproxy.google.com/~r/techrepublic/security/~3/-9yl7uzPeQI/7857"/>
		<id>http://www.techrepublic.com/blog/security/infographic-how-cyber-secure-are-public-companies/7857</id>
		<updated>2012-05-09T16:00:20+00:00</updated>
		<content type="html">This infographic presents some less-than-stellar numbers illustrating how well public companies are securing their web applications.&lt;img src=&quot;http://feeds.feedburner.com/~r/techrepublic/security/~4/-9yl7uzPeQI&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>TechRepublic IT Security</name>
			<uri>http://www.techrepublic.com/blog/security</uri>
		</author>
		<source>
			<title type="html">IT Security Blog | TechRepublic</title>
			<subtitle type="html">Security bloggers help keep you up to date on how to protect your network through news, updates, advice, and opinions on how you can stay ahead of hackers.</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/techrepublic/security"/>
			<id>http://feeds.feedburner.com/techrepublic/security</id>
			<updated>2012-05-18T07:15:51+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">Use ExDeploy to help plan your Exchange deployment</title>
		<link href="http://feedproxy.google.com/~r/techrepublic/networking/~3/-he4loVQt6E/5637"/>
		<id>http://www.techrepublic.com/blog/networking/use-exdeploy-to-help-plan-your-exchange-deployment/5637</id>
		<updated>2012-05-09T13:00:19+00:00</updated>
		<content type="html">Scott Lowe illustrates how the planning and deployment tool, ExDeploy, helps you get ready for your Exchange 2010 upgrade.&lt;img src=&quot;http://feeds.feedburner.com/~r/techrepublic/networking/~4/-he4loVQt6E&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>TechRepublic Network Administrator</name>
			<uri>http://www.techrepublic.com/blog/networking</uri>
		</author>
		<source>
			<title type="html">Data Center Blog | TechRepublic</title>
			<subtitle type="html">Network, server, and storage administrators get valuable advice and best practices to help meet the challenges they face in keeping systems connected, available, and running at high efficiency.</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/techrepublic/networking"/>
			<id>http://feeds.feedburner.com/techrepublic/networking</id>
			<updated>2012-05-18T07:15:38+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">The Downfall of a Meta Server or “Why a Mac Mini Makes a Terrible NMS Server”</title>
		<link href="http://feedproxy.google.com/~r/TheNubbyAdmin/~3/oyQo2wRyzcw/"/>
		<id>http://thenubbyadmin.com/?p=2562</id>
		<updated>2012-05-09T10:51:55+00:00</updated>
		<content type="html">&lt;p&gt;In a recent post named &lt;a href=&quot;http://thenubbyadmin.com/2012/04/25/the-making-of-a-meta-server-or-why-i-bought-a-mac-mini-as-a-nms/&quot;&gt;The Making of a Meta Server or “Why I Bought a Mac Mini as a NMS”&lt;/a&gt; I explained why I had chosen a brand new, 2012 Mac Mini as my NMS hardware. After two weeks of mind numbing work, I have officially declared the Mac-Mini-as-a-NMS project a failure.&lt;/p&gt;
&lt;p&gt;The main problem surrounded Apple&amp;#8217;s custom &lt;a href=&quot;http://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface&quot;&gt;EFI&lt;/a&gt;. Apple hardware does not use a BIOS, but instead uses EFI (note: not, specifically speaking, UEFI). Or rather, it uses an ancient, bastardized version of EFI 1.1. There is a BIOS compatibility layer that allows OSs that can only communicate with a BIOS to operate on the hardware. Most notably Windows. Apple&amp;#8217;s OS also runs on a hard disk that has been partitioned using the GPT partitioning scheme, which isn&amp;#8217;t itself a huge deal, but you might be surprised at the anemic support for GPT boot disks in even modern operating systems.&lt;/p&gt;
&lt;p&gt;To use the Mac Mini to boot an OS that needs BIOS compatibility and a MBR disk should be relatively easy. Right? Right!&lt;/p&gt;
&lt;h2&gt;Unless Apple is involved.&lt;/h2&gt;
&lt;p&gt;There are several things that Apple has mutated away from the EFI standard, one of them being not using the EFI system partition for anything except firmware updates. Their custom EFI implementation has the boot process (as well as some extra filesystem drivers) baked in. The whole EFI experience just never worked like I expected it to. The other trouble is that Boot Camp has been changed in OS X Lion. If you wanted to be hand held through the partitioning process and the creation of a hybrid GPT/MBR disk, you&amp;#8217;re invited to use Boot Camp. However the latest alterations only allow media with Windows images to be accepted. You can no longer (from my ability to understand) use Boot Camp to install non-Windows OSs. Of course, it was always unsupported, but at least it was doable.&lt;/p&gt;
&lt;p&gt;During the whole process, I used the EFI boot manager &lt;a href=&quot;http://refit.sourceforge.net/&quot;&gt;rEFIt&lt;/a&gt; which apparently only recently works with OS X Lion. I read more about the GPT partitioning scheme than I ever have previously. I learned more about EFI than I ever wanted to know (although all of that information will come in very handy in the near future). I hand-rolled bootable USB thumbdrives. I tweaked partition tables. I did very nearly everything I could think of except rolling my own EFI boot partition. After the hours had steadily ticked away I decided it was no longer worth it.&lt;/p&gt;
&lt;p&gt;After countless errors concerning boot media, partition problems, and blinking cursors, I concede that the latest Mac Mini has defeated me. It has been shipped back to Amazon and I can go back to my Apple-less existence. Speaking of Amazon, I believe that they deserve some praise in this.&lt;/p&gt;
&lt;p&gt;Amazon made the returns process easier than any return I have ever made. Anywhere. I stated that the reason I returned it was because software I had intended to use with it was not compatible. As a result of the return not being their fault, I had to pay return shipping. Within just a few clicks, Amazon created a return label. I printed it out, boxed the mini up, taped the label to the box and handed it over to the man behind the UPS Store counter. Within 15 seconds I was walking out of the store. I have the fortune of living just a few hundred miles from an Amazon return center located in the Las Vegas area so the return was processed and money credited back within two days. Thank you, Amazon. You were the only bright spot in this debacle.&lt;/p&gt;
&lt;p&gt;I am now investigating other pieces of hardware for this project based on the recommendations of several colleagues. If you have a recommendation, share it with me and the rest of my readers in the comments below. I&amp;#8217;ll certainly write about my second attempt at this project as it happens.&lt;/p&gt;
&lt;p&gt;In the end, I&amp;#8217;m not mad. The Apple wasn&amp;#8217;t designed to do what I was asking it to do. It was my fault. My only lingering frustration is that the Mac seems to take any standard technology that it uses and twists it in new and different ways so that your familiairty with a standard becomes more of a liability than an asset. Sound like another familiar company that SysAdmins like to pick on? Then again, Apple isn&amp;#8217;t intended to be in the business market. Let us pause and mourn the passing of the Xserve (I handed my G5 Xserve over to Best Buy for free recycling last year. So, so sad&amp;#8230;).&lt;/p&gt;
&lt;p&gt;Any similar experiences with an Apple product? Have you managed to wedge an alternate OS on 2012 Apple hardware? Let me know in the comments below.
&lt;div&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://www.thycotic.com/zSS_TheNubbyAdmin.html?utm_source=TheNubbyAdmin&amp;utm_medium=banner&amp;utm_content=rss&amp;utm_campaign=SSTheNubbyAdmin&quot;&gt;&lt;img src=&quot;http://thenubbyadmin.com/wp-content/wpads/SS468by60.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TheNubbyAdmin/~4/oyQo2wRyzcw&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/p&gt;</content>
		<author>
			<name>The Nubby Admin</name>
			<uri>http://thenubbyadmin.com</uri>
		</author>
		<source>
			<title type="html">The Nubby Admin</title>
			<subtitle type="html">Just a nublet SysAdmin</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/TheNubbyAdmin"/>
			<id>http://feeds.feedburner.com/TheNubbyAdmin</id>
			<updated>2012-05-16T17:16:23+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Links for 2012-05-08 [del.icio.us]</title>
		<link href="http://feedproxy.google.com/~r/AntonChuvakinPersonalBlog/~3/AloD8atlzrQ/anton18"/>
		<id>http://del.icio.us/anton18#2012-05-08</id>
		<updated>2012-05-09T07:00:00+00:00</updated>
		<content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.mcafee.com/us/about/mcafee-insightix.aspx&quot;&gt;Announcement - McAfee Has Acquired Insightix | McAfee&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/AntonChuvakinPersonalBlog/~4/AloD8atlzrQ&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Dr Anton Chuvakin</name>
			<email>noreply@blogger.com</email>
			<uri>http://chuvakin.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Dr Anton Chuvakin Blog PERSONAL Blog</title>
			<subtitle type="html">LogChat: Andrew Hay and Anton Chuvakin talk about logging, log management and related topics</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/AntonChuvakinPersonalBlog"/>
			<id>tag:blogger.com,1999:blog-19553129</id>
			<updated>2012-05-18T07:16:08+00:00</updated>
			<rights type="html">(C) Anton Chuvakin and Andrew Hay</rights>
		</source>
	</entry>

	<entry>
		<title type="html">Things I will do differently in the next building power shutdown (part 2)</title>
		<link href="http://utcc.utoronto.ca/~cks/space/blog/sysadmin/PowerdownLessonsLearnedII"/>
		<id>tag:cspace@cks.mef.org,2009-03-24:/blog/sysadmin/PowerdownLessonsLearnedII</id>
		<updated>2012-05-09T04:37:47+00:00</updated>
		<content type="html">&lt;div class=&quot;wikitext&quot;&gt;&lt;h2&gt;Things I will do differently in the next building power shutdown (part 2)&lt;/h2&gt;

&lt;p&gt;Back at the start of last September, we had an overnight building wide
power shutdown in the building with our machine room and I wrote &lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/sysadmin/PowerdownLessonsLearned&quot;&gt;a
lessons-learned entry&lt;/a&gt; in the aftermath. Well,
we just had another one and apparently I didn't learn all of the lessons
that I needed to learn the first time around. So here's another set of
things that I've now learned.&lt;/p&gt;

&lt;p&gt;Next time around I will:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;explicitly save the previous time's checklist. If nothing else,
the 'power up' portion makes a handy guide for what to do if you
abruptly lose building power some day.&lt;p&gt;
(I sort of did this last time, not through active planning but
just because I reflexively don't delete basically any of this
sort of stuff. But I should do it deliberately and put it somewhere
where I can easily find it, instead of just leaving it lying around.)&lt;p&gt;
Having last time's list isn't the end of the work, because things have
undoubtedly changed since then. But it's a starting point and a jog to
the memory.&lt;p&gt;
&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;start preparing the checklist well in advance, like more than a day
beforehand. Things worked out in the end but doing things at the last
moment was a bit nerve wracking.&lt;p&gt;
(There's always stuff to do around here and somehow it always felt
like there was plenty of time right up until it was Friday and we
had a Monday night shutdown.)&lt;p&gt;
&lt;/p&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;update and correct the checklist immediately afterwards to cover
things that we missed&lt;/strong&gt;.
&lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/sysadmin/PowerdownLessonsLearned&quot;&gt;My entry from last time&lt;/a&gt; is kind of
vague; I'm sure I knew the specifics I was thinking of at the
time, but I didn't write them down so they slipped away. I was
able to reconstruct a few things from notes and email in the wake
of last time, but others I only realized in the aftermath of this
one.&lt;p&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;add explanatory notes about why things are being done in a certain
order and what the dependencies are. Especially in the bustle of
trying to get everything down or up as fast as possible, it's
useful to have something to jog our minds about why something is
the way it is and whether or not it's that important.&lt;p&gt;
(Our checklists for this sort of thing are not fixed; they're more
guidelines than requirements. We deviate from them on the fly and
thus it's really useful to have some indication of how flexible or
rigid things are.)&lt;p&gt;
&lt;/p&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;if any machines are being brought down and then deliberately not
being brought back up, explicitly mention this so that people don't
get potentially confused about a 'missing' machine.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/sysadmin/PowerdownLessonsLearned&quot;&gt;My entry from last time&lt;/a&gt; was very useful in several ways. I reread
it when I was preparing our checklist for this time and it jogged my
memory about several important issues; as a result our checklist for
this time around was (I think) significantly better than for last time
(and also noticeably longer and more verbose). This time I at least made
new mistakes, which is progress that I can live with.&lt;/p&gt;

&lt;p&gt;I will also probably try to put more explanation into the checklist
the next time around. I'm sure it's possible to put too much of it in,
but I don't think that's been our problem so far. In the heat of the
moment we're going to skim anyways, so the thing to do is to break the
checklist up into skimmable blocks with actions and things to check off
and then chunks of additional explanation after them.&lt;/p&gt;

&lt;p&gt;(In a sense a checklist like this serves two purposes at once. During
the power down or power up it is mostly a catalog of actions and
ordering, but beforehand it's a discussion and a rationale for what
needs to be done and why. Without the logic behind it being written out
explicitly, you can't have that discussion; once you have that logic
written out, you might as well leave it in to jog people's memories on
the spot.)&lt;/p&gt;

&lt;p&gt;On a side note, a full power up is an interesting and useful way to find
problematic dependencies that have quietly worked their way into your
overall network, ones that are not so noticeable when your systems are
in their normal steady state. For example, DHCP service for several of
our networks now depends on our core fileserver, which means that it
can only come up fairly late in the power up process. We're going to be
fixing that.&lt;/p&gt;

&lt;p&gt;(There is a chain of dependencies that made this make sense in a steady
state environment.)&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt; (&lt;a href=&quot;http://utcc.utoronto.ca/~cks/space/blog/sysadmin/PowerdownLessonsLearnedII?showcomments#comments&quot;&gt;One comment&lt;/a&gt;.) &lt;/div&gt;</content>
		<author>
			<name>cks</name>
			<uri>http://utcc.utoronto.ca/~cks/space/blog/</uri>
		</author>
		<source>
			<title type="html">Chris's Wiki :: blog</title>
			<subtitle type="html">Recently changed pages in Chris's Wiki :: blog.</subtitle>
			<link rel="self" href="http://utcc.utoronto.ca/~cks/space/blog/?atom"/>
			<id>http://utcc.utoronto.ca/~cks/space/blog/?atom</id>
			<updated>2012-05-17T21:15:32+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">The Duck Always Bites Twice</title>
		<link href="http://paperairoplane.net/?p=411"/>
		<id>http://paperairoplane.net/?p=411</id>
		<updated>2012-05-08T19:25:53+00:00</updated>
		<content type="html">&lt;p&gt;These days I&amp;#8217;m noticing myself saying more and more frequently that Duck Typing is great, except when it&amp;#8217;s not.&lt;/p&gt;
&lt;p&gt;An amusing issue that briefly cropped up this afternoon was when we failed to correctly negotiate a data structure inside of a Rake task. Consider the following basic task:&lt;br /&gt;
&lt;code&gt;
&lt;pre&gt;
desc &quot;a test task&quot;
task :test, :glob do |t,args|
  if args[:glob].nil?
    args[:glob] = 'some default value'
  end
  puts args[:glob]
end
&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;&lt;/code&gt;&lt;br /&gt;
What kind of output would you expect would happen if you ran &lt;i&gt;rake test&lt;/i&gt; right now? If you said &lt;b&gt;nil&lt;/b&gt; you&amp;#8217;d be right! That&amp;#8217;s odd, I wonder what is going on here?&lt;/p&gt;
&lt;p&gt;&lt;code&gt;
&lt;pre&gt;
...
puts args
...
&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;&lt;/code&gt;&lt;br /&gt;
Some debugging code later&amp;#8230; what is the output? That&amp;#8217;s right, it&amp;#8217;s an empty hash &amp;#8211; &lt;b&gt;{}&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;You could forgive us for thinking it might behave as one. Anyway, needless to say we then tried &lt;i&gt;args.class&lt;/i&gt; and it turns out to be a &lt;b&gt;Rake::TaskArguments&lt;/b&gt;, which evidently decides to make the arguments immutable but in such a way that you never know about it.&lt;/p&gt;
&lt;p&gt;What usually happens?&lt;br /&gt;
&lt;code&gt;
&lt;pre&gt;
$ irb
irb(main):001:0&gt; class Foo
irb(main):002:1&gt; attr_reader :bar
irb(main):003:1&gt; def initialize(value)
irb(main):004:2&gt; @bar = value
irb(main):005:2&gt; end
irb(main):006:1&gt; end
=&gt; nil
irb(main):007:0&gt; f = Foo.new(5)
=&gt; #
irb(main):008:0&gt; f.bar
=&gt; 5
irb(main):009:0&gt; f.bar = 6
NoMethodError: undefined method `bar=' for #
	from (irb):9
&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;If you&amp;#8217;ve seen the WAT video then you know what&amp;#8217;s coming next:&lt;br /&gt;
&lt;code&gt;
&lt;pre&gt;
    def method_missing(sym, *args, &amp;#038;block)
      lookup(sym.to_sym)
    end

...

    protected

    def lookup(name)
      if @hash.has_key?(name)
        @hash[name]
      elsif ENV.has_key?(name.to_s)
        ENV[name.to_s]
      elsif ENV.has_key?(name.to_s.upcase)
        ENV[name.to_s.upcase]
      elsif @parent
        @parent.lookup(name)
      end
    end
&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;&lt;/code&gt;&lt;br /&gt;
To be fair, this is actually kinda cool. Not only can you do something like &lt;b&gt;args.glob&lt;/b&gt; you can also do &lt;b&gt;args[:pwd]&lt;/b&gt; or &lt;b&gt;args.term&lt;/b&gt; or &lt;b&gt;args.USERNAME&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;Unfortunately it lets you do completely unexpected things as in the above example, which is handily translated into the symbol &lt;i&gt;:[]=&lt;/i&gt; (which I like to call the Cookie Monster symbol), which doesn&amp;#8217;t exist, returns nothing and throws away the value you attempted to assign to it. Because it is handled by &lt;i&gt;method_missing&lt;/i&gt;, the additional value we supplied was accepted but not used, unlike any typical situation where it will cause a compile error.&lt;/p&gt;</content>
		<author>
			<name>Geek and Artist - Tech</name>
			<uri>http://paperairoplane.net</uri>
		</author>
		<source>
			<title type="html">Geek and Artist » Tech</title>
			<subtitle type="html">The personal blog of Oliver Hookins and Angela Collins</subtitle>
			<link rel="self" href="http://paperairoplane.net/?feed=rss2&amp;cat=3"/>
			<id>http://paperairoplane.net/?feed=rss2&amp;cat=3</id>
			<updated>2012-05-12T21:16:18+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">Preparing for the DNSChanger Internet outage</title>
		<link href="http://feedproxy.google.com/~r/techrepublic/security/~3/u2yFYOR9e_Y/7863"/>
		<id>http://www.techrepublic.com/blog/security/preparing-for-the-dnschanger-internet-outage/7863</id>
		<updated>2012-05-08T13:42:45+00:00</updated>
		<content type="html">Alfonso Barreiro tells all you need to know to clean up the DNSChanger malware that has affected millions of users. Make sure your organization is prepared for the July 9, 2012 deadline that the...&lt;img src=&quot;http://feeds.feedburner.com/~r/techrepublic/security/~4/u2yFYOR9e_Y&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>TechRepublic IT Security</name>
			<uri>http://www.techrepublic.com/blog/security</uri>
		</author>
		<source>
			<title type="html">IT Security Blog | TechRepublic</title>
			<subtitle type="html">Security bloggers help keep you up to date on how to protect your network through news, updates, advice, and opinions on how you can stay ahead of hackers.</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/techrepublic/security"/>
			<id>http://feeds.feedburner.com/techrepublic/security</id>
			<updated>2012-05-18T07:15:51+00:00</updated>
		</source>
	</entry>

</feed>

