<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-4309841775553874099</id><updated>2010-02-17T09:39:51.109-08:00</updated><title type='text'>Matthew Jude Brown</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.matthewjudebrown.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4309841775553874099/posts/default'/><link rel='alternate' type='text/html' href='http://www.matthewjudebrown.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Matthew Brown</name><uri>http://www.blogger.com/profile/16635166205916243972</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>16</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4309841775553874099.post-5538428698137391938</id><published>2010-02-17T09:28:00.001-08:00</published><updated>2010-02-17T09:39:51.115-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Response'/><category scheme='http://www.blogger.com/atom/ns#' term='Restaurant'/><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>Restaurant Websites</title><content type='html'>Dan Wineman posts (HT @&lt;a href="http://daringfireball.net/"&gt;Daring Fireball&lt;/a&gt;) about &lt;a href="http://venomousporridge.com/post/389785000/a-conversation-i-have-every-month-or-so"&gt;his frustration with restaurant websites&lt;/a&gt;. An experience any Net-savvy person has several times a month: restaurant websites are Flash-heavy mobile-unfriendly messes of static content that tell you almost nothing useful about the business whatsoever, especially opening hours.&lt;br /&gt;&lt;br /&gt;Commentators are right that restaurant websites are created once and then forgotten in almost all cases.  It's worse, though; restaurant owners and managers hate committing to opening hours at all.  A lot of them &lt;em&gt;hate putting opening and especially closing hours even outside the door on the actual building&lt;/em&gt;.  How often does one try and note a place's closing time and see only an opening time, or nothing at all?&lt;br /&gt;&lt;br /&gt;I find the only reliable way to find out a restaurant's hours is to call them.  Sucks if you have problems with that, whether it's phone-phobia, disabilities, or simply that the time you want to know this information is outside of their opening hours.  In the latter case, &lt;em&gt;if you're lucky&lt;/em&gt;, there'll be an answering-machine message telling the hours.  Maybe.&lt;br /&gt;&lt;br /&gt;One restaurant that does do better on that: the seafood chain McCormick &amp; Schmick's.  Their website is updated with each individual restaurant's daily specials — which, in a seafood restaurant, can vary a lot day to day — and the opening hours for each restaurant.  I'm not sure about mobile accessibility, but at the very least this is a chain that "gets it" about keeping things up to date.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4309841775553874099-5538428698137391938?l=www.matthewjudebrown.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.matthewjudebrown.com/feeds/5538428698137391938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4309841775553874099&amp;postID=5538428698137391938' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4309841775553874099/posts/default/5538428698137391938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4309841775553874099/posts/default/5538428698137391938'/><link rel='alternate' type='text/html' href='http://www.matthewjudebrown.com/2010/02/restaurant-websites.html' title='Restaurant Websites'/><author><name>Matthew Brown</name><uri>http://www.blogger.com/profile/16635166205916243972</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03928082765727538461'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4309841775553874099.post-842170483822138020</id><published>2009-07-30T18:01:00.001-07:00</published><updated>2009-07-30T18:01:49.269-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UNIX'/><category scheme='http://www.blogger.com/atom/ns#' term='SysAdmin'/><category scheme='http://www.blogger.com/atom/ns#' term='Annoyance'/><category scheme='http://www.blogger.com/atom/ns#' term='Solaris'/><title type='text'>In Solaris 10, $EDITOR cannot contain arguments.</title><content type='html'>Some people got into the habit of setting the UNIX environment variable $EDITOR to a command and its arguments, for example "&lt;code&gt;emacs -nw&lt;/code&gt;".  This is no longer supported by &lt;code&gt;crontab(1)&lt;/code&gt;, as of Solaris 10.  It doesn't seem to be documented anywhere, but Solaris 9 executed the editor command by running "&lt;code&gt;sh -c&lt;/code&gt;", but Solaris 10's &lt;code&gt;crontab&lt;/code&gt; command, instead, splits $PATH, joins $EDITOR to it, and runs &lt;code&gt;execve(2)&lt;/code&gt; on each in turn until one works.  Thus, it will try and run a program named "&lt;code&gt;emacs -nw&lt;/code&gt;", not a program named "&lt;code&gt;emacs&lt;/code&gt;" with an argument "&lt;code&gt;-nw&lt;/code&gt;".&lt;br /&gt;&lt;br /&gt;Nice undocumented change, Sun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4309841775553874099-842170483822138020?l=www.matthewjudebrown.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.matthewjudebrown.com/feeds/842170483822138020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4309841775553874099&amp;postID=842170483822138020' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4309841775553874099/posts/default/842170483822138020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4309841775553874099/posts/default/842170483822138020'/><link rel='alternate' type='text/html' href='http://www.matthewjudebrown.com/2009/07/in-solaris-10-editor-cannot-contain.html' title='In Solaris 10, $EDITOR cannot contain arguments.'/><author><name>Matthew Brown</name><uri>http://www.blogger.com/profile/16635166205916243972</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03928082765727538461'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4309841775553874099.post-2182769065603577334</id><published>2009-07-08T15:24:00.001-07:00</published><updated>2009-07-28T15:18:29.830-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UNIX'/><category scheme='http://www.blogger.com/atom/ns#' term='ZFS'/><category scheme='http://www.blogger.com/atom/ns#' term='SysAdmin'/><category scheme='http://www.blogger.com/atom/ns#' term='Solaris'/><title type='text'>NFSv4 ACLs and chmod annoyances</title><content type='html'>The implementation of &lt;code&gt;chmod -R&lt;/code&gt; with NFSv4 ACLs is very broken.  Particularly when removing them.  You can only remove ACL entries recursively if they are present at &lt;b&gt;all&lt;/b&gt; levels of the path.  If they're not there at any level, chmod will error out as soon as it finds one.&lt;br /&gt;&lt;br /&gt;So the only way to reliably remove an ACL entry across a set of files is with &lt;code&gt;find . -exec  chmod A-&lt;i&gt;&amp;lt;acl entry&amp;gt;&lt;/i&gt; {} \;&lt;/code&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4309841775553874099-2182769065603577334?l=www.matthewjudebrown.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.matthewjudebrown.com/feeds/2182769065603577334/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4309841775553874099&amp;postID=2182769065603577334' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4309841775553874099/posts/default/2182769065603577334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4309841775553874099/posts/default/2182769065603577334'/><link rel='alternate' type='text/html' href='http://www.matthewjudebrown.com/2009/07/nfsv4-acls-and-chmod-annoyances.html' title='NFSv4 ACLs and chmod annoyances'/><author><name>Matthew Brown</name><uri>http://www.blogger.com/profile/16635166205916243972</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03928082765727538461'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4309841775553874099.post-8957556563799117609</id><published>2009-02-09T22:04:00.001-08:00</published><updated>2009-02-09T22:04:00.705-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Perl'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>Obfuscated perl</title><content type='html'>For my own amusement, I like writing Perl as if it were a functional language, with lots of map()s, grep()s and join()s.  Here's a fun example, commented up.  What it does is print out all the capitalized words in a document that are not found in the system dictionary. &lt;br /&gt;&lt;br /&gt;I was using this for &lt;a href="http://kencyr.wikia.org/"&gt;the Kencyr Wiki&lt;/a&gt; on the HTML versions of the E-books, looking for proper names I hadn't defined in the Wiki.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;#!/usr/bin/perl -w&lt;br /&gt;&lt;br /&gt;# We just use a hash for its side-effect of quick keyed lookup&lt;br /&gt;my %dictionary = map {chomp; tr/A-Z/a-z/; $_, 1} `cat /usr/share/dict/words`;&lt;br /&gt;&lt;br /&gt;# Here, a hash is used for its side-effect of key uniqueness.  The list returned by the first&lt;br /&gt;# map() contains duplicates, but they are "flattened" when assigned to a hash.&lt;br /&gt;my %allcapwords = &lt;br /&gt;  (map {$_ =&gt; 1}	# Make hashy&lt;br /&gt;    (grep {not defined $dictionary{$_}} # sieve out only the undefined ones&lt;br /&gt;      (map {tr/A-Z/a-z/;s/\W+$//;$_}  # Post-massage; lowercase; remove trailing garbage&lt;br /&gt;        (grep {/^[A-Z][a-z]/} 		# Only capital-then-lowercase words&lt;br /&gt;          # pre-massage; remove HTML and then split into words&lt;br /&gt;          (map {chomp; s/&lt;[^&lt;]+($|&gt;)//g; s/&amp;\w+;/ /g; split /\s+/; } &lt;&gt;)))));&lt;br /&gt;&lt;br /&gt;# And output it all.  We only ever were interested in the keys; the values were always 1&lt;br /&gt;print((join "\n", keys %allcapwords) . "\n");&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4309841775553874099-8957556563799117609?l=www.matthewjudebrown.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.matthewjudebrown.com/feeds/8957556563799117609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4309841775553874099&amp;postID=8957556563799117609' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4309841775553874099/posts/default/8957556563799117609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4309841775553874099/posts/default/8957556563799117609'/><link rel='alternate' type='text/html' href='http://www.matthewjudebrown.com/2009/02/obfuscated-perl.html' title='Obfuscated perl'/><author><name>Matthew Brown</name><uri>http://www.blogger.com/profile/16635166205916243972</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03928082765727538461'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4309841775553874099.post-6045931504653182162</id><published>2008-12-31T04:04:00.001-08:00</published><updated>2008-12-31T04:04:08.501-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Wiki'/><category scheme='http://www.blogger.com/atom/ns#' term='Fantasy'/><category scheme='http://www.blogger.com/atom/ns#' term='Fiction'/><title type='text'>Kencyr Wiki</title><content type='html'>I've launched a new Wikia project: the &lt;a href="http://kencyr.wikia.com/"&gt;Kencyr Wiki&lt;/a&gt;, which is a Wiki on the Kencyr novels by &lt;a href="http://www.pchodgell.com/"&gt;P. C. Hodgell&lt;/a&gt; that follow Jame, AKA Jamethiel Priest's-bane, who's a wonderful female anti-hero.  This is a series of four novels and a short story collection, with a fifth novel in the works, and is a bit of a underground, cult fandom—the series has had a very spotty publication history.  Pat now has &lt;a href="http://www.baen.com/"&gt;Baen&lt;/a&gt; signed up to publish her works, though; they've released them all as ebooks and will be re-releasing the old books in new paperback form.  The first comes out this month, so take a look!&lt;br /&gt;&lt;br /&gt;Anyway, we're now at over 200 articles; granted, most are quite stubby so far, but there are several longer treatments already.  I've picked up a few other contributors and am hoping for more; I've also had a promise of a logo from an artist, and Pat Hodgell herself has pointed to our new baby Wiki from her blog at &lt;a href="http://tagmeth.livejournal.com/"&gt;tagmeth.livejournal.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Our aim is an obsessive, totally geeky level of detail.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4309841775553874099-6045931504653182162?l=www.matthewjudebrown.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.matthewjudebrown.com/feeds/6045931504653182162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4309841775553874099&amp;postID=6045931504653182162' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4309841775553874099/posts/default/6045931504653182162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4309841775553874099/posts/default/6045931504653182162'/><link rel='alternate' type='text/html' href='http://www.matthewjudebrown.com/2008/12/kencyr-wiki.html' title='Kencyr Wiki'/><author><name>Matthew Brown</name><uri>http://www.blogger.com/profile/16635166205916243972</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03928082765727538461'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4309841775553874099.post-8100746555178668420</id><published>2008-10-16T19:56:00.001-07:00</published><updated>2008-10-16T19:56:45.184-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Band'/><category scheme='http://www.blogger.com/atom/ns#' term='Photography'/><title type='text'>The Crüxshadows at The Knitting Factory, Hollywood</title><content type='html'>&lt;a href="http://www.flickr.com/photos/65901644@N00/2942833653" title="View 'Brittany Bindrim of I:Scintilla' on Flickr.com"&gt;&lt;img src="http://farm4.static.flickr.com/3225/2942833653_0b930b0518_m.jpg" alt="Brittany Bindrim of I:Scintilla" border="0" width="159" height="240" /&gt;&lt;/a&gt; &lt;a href="http://www.flickr.com/photos/65901644@N00/2942757919" title="View 'Jennifer Parkin of Ayria' on Flickr.com"&gt;&lt;img src="http://farm4.static.flickr.com/3172/2942757919_f9c4a6b3c6_m.jpg" alt="Jennifer Parkin of Ayria" border="0" width="240" height="240" /&gt;&lt;/a&gt; &lt;a href="http://www.flickr.com/photos/65901644@N00/2943279230" title="View 'Rogue of The Crüxshadows' on Flickr.com"&gt;&lt;img src="http://farm4.static.flickr.com/3226/2943279230_ab5547639b_m.jpg" alt="Rogue of The Crüxshadows" border="0" width="159" height="240" /&gt;&lt;/a&gt; &lt;a href="http://www.flickr.com/photos/65901644@N00/2942513381" title="View 'Porcelain Doll' on Flickr.com"&gt;&lt;img src="http://farm4.static.flickr.com/3153/2942513381_c6c9fca244_m.jpg" alt="Porcelain Doll" border="0" width="159" height="240" /&gt;&lt;/a&gt; &lt;a href="http://www.flickr.com/photos/65901644@N00/2942619999" title="View 'Valerie Gentile, Ayria fan' on Flickr.com"&gt;&lt;img src="http://farm4.static.flickr.com/3213/2942619999_fbdfeb0db6_m.jpg" alt="Valerie Gentile, Ayria fan" border="0" width="160" height="240" /&gt;&lt;/a&gt; &lt;a href="http://www.flickr.com/photos/65901644@N00/2942738153" title="View 'Sarah Stewart of The Crüxshadows' on Flickr.com"&gt;&lt;img src="http://farm4.static.flickr.com/3016/2942738153_0d58dfd7f6_m.jpg" alt="Sarah Stewart of The Crüxshadows" border="0" width="159" height="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;My photos from Monday's The Crüxshadows show with I:Scintilla and Ayria at The Knitting Factory, Hollywood are now up on &lt;a href="http://flickr.com/photos/morven/"&gt;my Flickr photostream&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4309841775553874099-8100746555178668420?l=www.matthewjudebrown.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.matthewjudebrown.com/feeds/8100746555178668420/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4309841775553874099&amp;postID=8100746555178668420' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4309841775553874099/posts/default/8100746555178668420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4309841775553874099/posts/default/8100746555178668420'/><link rel='alternate' type='text/html' href='http://www.matthewjudebrown.com/2008/10/crxshadows-at-knitting-factory.html' title='The Crüxshadows at The Knitting Factory, Hollywood'/><author><name>Matthew Brown</name><uri>http://www.blogger.com/profile/16635166205916243972</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03928082765727538461'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4309841775553874099.post-5762138746604083036</id><published>2008-10-06T13:18:00.001-07:00</published><updated>2008-10-06T13:18:24.310-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Photography'/><title type='text'>Tamron 70–300mm f/4–5.6: Great cheap lens, but choppy bokeh.</title><content type='html'>The &lt;b&gt;Tamron 70–300mm f/4–5.6 Di LD MACRO 1:2&lt;/b&gt;, to give it its rather unwieldy full name, is a wonderful lens for a very bargain price: only about $150 street, for a lens that's really quite impressively sharp, rendering very fine detail, and with good color reproduction besides.  Take it from me, you will be &lt;i&gt;blown away&lt;/i&gt; comparing it to your kit lens—I was—or, for that matter, to your camera maker of choice's budget 75-200+ offering, for less money than that lens too.  It also stays at f/4 for longer—not dropping to f/4.5 until 135mm.&lt;br /&gt;&lt;br /&gt;Of course, you don't get perfection for only $150.  (It could be argued that you don't get perfection for $1,500 either; lenses are by their nature compromised to greater or lesser degree).  &lt;br /&gt;&lt;br /&gt;The bokeh wide open is a little compromised; it's bright-ringed around the outside of the out-of-focus circle, which makes the overall look of the bokeh a little choppy:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/65901644@N00/2919634600" title="View 'Fern setting up for the performance' on Flickr.com"&gt;&lt;img src="http://farm4.static.flickr.com/3155/2919634600_14115ea097_m.jpg" alt="Fern setting up for the performance" border="0" width="159" height="240" /&gt;&lt;/a&gt; &lt;a href="http://www.flickr.com/photos/65901644@N00/2919523874" title="View 'Angela at Pagan Pride '08' on Flickr.com"&gt;&lt;img src="http://farm4.static.flickr.com/3250/2919523874_8da6a95f94_m.jpg" alt="Angela at Pagan Pride '08" border="0" width="160" height="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The objectionability depends on the nature of the background, of course; here, the second image blends together much better. &lt;br /&gt;&lt;br /&gt;Stopped down, though, the bokeh improves.&lt;br /&gt;&lt;br /&gt;The other issue is chromatic aberration on specular highlights, which is obvious but not objectionably so IMO; others might disagree.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4309841775553874099-5762138746604083036?l=www.matthewjudebrown.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.matthewjudebrown.com/feeds/5762138746604083036/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4309841775553874099&amp;postID=5762138746604083036' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4309841775553874099/posts/default/5762138746604083036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4309841775553874099/posts/default/5762138746604083036'/><link rel='alternate' type='text/html' href='http://www.matthewjudebrown.com/2008/10/tamron-70300mm-f456-great-cheap-lens.html' title='Tamron 70–300mm f/4–5.6: Great cheap lens, but choppy bokeh.'/><author><name>Matthew Brown</name><uri>http://www.blogger.com/profile/16635166205916243972</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03928082765727538461'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4309841775553874099.post-3087509988764948829</id><published>2008-10-03T09:58:00.001-07:00</published><updated>2008-10-03T09:58:36.039-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Photography'/><title type='text'>Flickr encourages square format</title><content type='html'>The squarer the format, the larger the total area of photograph displayed in Flickr; this is especially important when only the Small size of photos is displayed.  The tinier the photo, the less the impact, I find; thus, there is pressure towards the square format there (as there is anywhere that photos are fitted into a square bounding box).  &lt;br /&gt;&lt;br /&gt;I thus find myself looking for the square crop in the viewfinder and especially during editing.  Moreover, I'm &lt;i&gt;liking&lt;/i&gt; the square crop.&lt;br /&gt;&lt;br /&gt;Anyone else?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4309841775553874099-3087509988764948829?l=www.matthewjudebrown.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.matthewjudebrown.com/feeds/3087509988764948829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4309841775553874099&amp;postID=3087509988764948829' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4309841775553874099/posts/default/3087509988764948829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4309841775553874099/posts/default/3087509988764948829'/><link rel='alternate' type='text/html' href='http://www.matthewjudebrown.com/2008/10/flickr-encourages-square-format.html' title='Flickr encourages square format'/><author><name>Matthew Brown</name><uri>http://www.blogger.com/profile/16635166205916243972</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03928082765727538461'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4309841775553874099.post-1358108975520662020</id><published>2008-09-29T16:48:00.001-07:00</published><updated>2008-09-29T16:49:18.694-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Nightclub'/><category scheme='http://www.blogger.com/atom/ns#' term='Band'/><category scheme='http://www.blogger.com/atom/ns#' term='Photography'/><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>Photos: Neon Kross at Release the Bats, Long Beach, CA</title><content type='html'>&lt;a href="http://www.flickr.com/photos/65901644@N00/2893978599" title="View 'Daniel deLeon of Neon Kross' on Flickr.com"&gt;&lt;img src="http://static.flickr.com/3228/2893978599_58f8c7202c_m.jpg" alt="Daniel deLeon of Neon Kross" border="0" width="" height="" /&gt;&lt;/a&gt; &lt;a href="http://www.flickr.com/photos/65901644@N00/2894669868" title="View 'Adrian of Neon Kross' on Flickr.com"&gt;&lt;img src="http://farm4.static.flickr.com/3037/2894669868_0ce2856280_m.jpg" alt="Adrian of Neon Kross" border="0" width="180" height="240" /&gt;&lt;/a&gt; &lt;a href="http://www.flickr.com/photos/65901644@N00/2893985539" title="View 'John of Neon Kross' on Flickr.com"&gt;&lt;img src="http://static.flickr.com/3239/2893985539_6b3c52f69b_m.jpg" alt="John of Neon Kross" border="0" width="" height="" /&gt;&lt;/a&gt; &lt;a href="http://www.flickr.com/photos/65901644@N00/2894378310" title="View 'Drummer Jake of Neon Kross' on Flickr.com"&gt;&lt;img src="http://farm4.static.flickr.com/3202/2894378310_42c541c7ce_m.jpg" alt="Drummer Jake of Neon Kross" border="0" width="240" height="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I spent Friday night at Release the Bats, the long-running Death Rock club in Long Beach (at Que Sera, 7th St. at Cherry Ave.)  That night's band was &lt;a href="http://myspace.com/neonkross"&gt;Neon Kross&lt;/a&gt;, a delightfully retro New Wave / post-punk band "Still Living in the 80s", as their MySpace page puts it.  I've seen some of these guys before; Daniel deLeon, the lead vocals, is also in &lt;a href="http://www.myspace.com/rezurex"&gt;Rezurex&lt;/a&gt;, a more psychobilly / deathrock kind of band that I've caught at Bats before.  Some of the other band members are in &lt;a href="http://www.myspace.com/pinsandneedles"&gt;Pins and Needles&lt;/a&gt;, which I don't think I've seen.&lt;br /&gt;&lt;br /&gt;Anyway, Neon Kross kicked ass, and I'd recommend seeing them.  Pretty damn photogenic too.&lt;br /&gt;&lt;br /&gt;Catch &lt;a href="http://flickr.com/photos/morven/sets/72157607546185515/"&gt;the rest of the set on Flickr&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4309841775553874099-1358108975520662020?l=www.matthewjudebrown.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.matthewjudebrown.com/feeds/1358108975520662020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4309841775553874099&amp;postID=1358108975520662020' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4309841775553874099/posts/default/1358108975520662020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4309841775553874099/posts/default/1358108975520662020'/><link rel='alternate' type='text/html' href='http://www.matthewjudebrown.com/2008/09/photos-neon-kross-at-release-bats-long.html' title='Photos: Neon Kross at Release the Bats, Long Beach, CA'/><author><name>Matthew Brown</name><uri>http://www.blogger.com/profile/16635166205916243972</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03928082765727538461'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4309841775553874099.post-5775636435768597204</id><published>2008-09-29T16:24:00.001-07:00</published><updated>2008-09-29T16:24:30.842-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='Annoyance'/><title type='text'>Another Apple irritation</title><content type='html'>Related to my previous complaint about losing sliding Spaces switching occasionally when switching between internal and external displays on a MacBook Pro, here's another one.  I sometimes lose Hot Corners too.  I have a hot corner set up to enable screen lock. I need this.  I haven't found a way short of rebooting to fix it, either.  Grr.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4309841775553874099-5775636435768597204?l=www.matthewjudebrown.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.matthewjudebrown.com/feeds/5775636435768597204/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4309841775553874099&amp;postID=5775636435768597204' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4309841775553874099/posts/default/5775636435768597204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4309841775553874099/posts/default/5775636435768597204'/><link rel='alternate' type='text/html' href='http://www.matthewjudebrown.com/2008/09/another-apple-irritation.html' title='Another Apple irritation'/><author><name>Matthew Brown</name><uri>http://www.blogger.com/profile/16635166205916243972</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03928082765727538461'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4309841775553874099.post-4907552695642526122</id><published>2008-09-23T11:29:00.001-07:00</published><updated>2008-09-23T11:29:27.317-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tip'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='Email'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>Little Apple Mail.app hint</title><content type='html'>Something I just discovered by accident:&lt;br /&gt;&lt;br /&gt;If you select some text in an email, and then hit reply, just the text in the email will be quoted in the reply.  Nothing else.&lt;br /&gt;&lt;br /&gt;That's a &lt;b&gt;great&lt;/b&gt; feature!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4309841775553874099-4907552695642526122?l=www.matthewjudebrown.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.matthewjudebrown.com/feeds/4907552695642526122/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4309841775553874099&amp;postID=4907552695642526122' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4309841775553874099/posts/default/4907552695642526122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4309841775553874099/posts/default/4907552695642526122'/><link rel='alternate' type='text/html' href='http://www.matthewjudebrown.com/2008/09/little-apple-mailapp-hint.html' title='Little Apple Mail.app hint'/><author><name>Matthew Brown</name><uri>http://www.blogger.com/profile/16635166205916243972</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03928082765727538461'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4309841775553874099.post-4705394606861692980</id><published>2008-09-22T11:42:00.001-07:00</published><updated>2008-09-22T11:42:30.177-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Nightclub'/><category scheme='http://www.blogger.com/atom/ns#' term='Photography'/><category scheme='http://www.blogger.com/atom/ns#' term='Goth'/><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>Photos: Club Xile, Garden Grove, CA, September 18 2008</title><content type='html'>&lt;a href="http://www.flickr.com/photos/65901644@N00/2879956128" title="View 'Clubgoers at Xile' on Flickr.com"&gt;&lt;img src="http://farm4.static.flickr.com/3101/2879956128_680300dda7_m.jpg" alt="Clubgoers at Xile" border="0" width="192" height="240" /&gt; &lt;a href="http://www.flickr.com/photos/65901644@N00/2879901964" title="View 'Dancers at Club Xile' on Flickr.com"&gt;&lt;img src="http://farm4.static.flickr.com/3235/2879901964_a8d9d66763_m.jpg" alt="Dancers at Club Xile" border="0" width="160" height="240" /&gt;&lt;/a&gt; &lt;/a&gt;&lt;a href="http://www.flickr.com/photos/65901644@N00/2879094863" title="View 'Being dragged' on Flickr.com"&gt;&lt;img src="http://farm4.static.flickr.com/3132/2879094863_c99314a333_m.jpg" alt="Being dragged" border="0" width="160" height="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Alana, Richie and I visited &lt;a href="http://www.clubxile.com/"&gt;Club Xile&lt;/a&gt;, the weekly Wednesday night event in Garden Grove, CA.  Is this the only weekly Goth/Industrial night in Orange County?  Seems to be.  We've attended this club before, but a while ago, and it seems to have evolved a bit.  A very young crowd; it's 18 and over, and there seems to be a &lt;i&gt;very&lt;/i&gt; large number of 18–21s in there.  I think they've hit on an under-served market segment.&lt;br /&gt;&lt;br /&gt;Sets from the club's resident DJs were high-energy and definitely got the good-sized crowd moving, although I could fault them a little on the originality and variety.  I guess they play what works, though.  Later sets by guest DJs on this night tended towards harder Industrial and saw fewer dancers, though this might have been due to exhaustion as well; it was warm in there.&lt;br /&gt;&lt;br /&gt;Drinks are not cheap, though not Hollywood prices either.  The bar seems well-stocked and reasonably quick on the service.  Richie's Long Island Iced Tea set him back a ten but was reasonably good by his account.&lt;br /&gt;&lt;br /&gt;As well as the main dancefloor, there was a stage near the DJ setup upon which several young women (and a man or two) performed as go-go dancers for much of the night.  This seemed to be somewhat amateur and impromptu but encouraged by the club organizers, who referred to them as the "Ladies of Xile".  A similar square stage at the back of the dancefloor saw more dancing from the exhibitionist set.&lt;br /&gt;&lt;br /&gt;Speaking of exhibitionism, it's easy to photograph here; people want to be looked at, and welcome the attention.&lt;br /&gt;&lt;br /&gt;Catch the rest of &lt;a href="http://flickr.com/photos/morven/sets/72157607367268378/"&gt;my set on Flickr&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4309841775553874099-4705394606861692980?l=www.matthewjudebrown.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.matthewjudebrown.com/feeds/4705394606861692980/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4309841775553874099&amp;postID=4705394606861692980' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4309841775553874099/posts/default/4705394606861692980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4309841775553874099/posts/default/4705394606861692980'/><link rel='alternate' type='text/html' href='http://www.matthewjudebrown.com/2008/09/photos-club-xile-garden-grove-ca.html' title='Photos: Club Xile, Garden Grove, CA, September 18 2008'/><author><name>Matthew Brown</name><uri>http://www.blogger.com/profile/16635166205916243972</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03928082765727538461'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4309841775553874099.post-1832854063699475484</id><published>2008-09-22T09:42:00.001-07:00</published><updated>2008-09-22T09:42:44.876-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>Software buying habits, before and after switching to a Mac</title><content type='html'>I started my serious computer use on a Commodore Amiga back in 1989, and over the years purchased a fair number of programs for it, mostly development tools (the assembler DevPac 2, and Lattice C) and word-processing tools (ProText and some other whose name escapes me).  I also bought AREXX and a text editor or two, and a bunch of games of course.&lt;br /&gt;&lt;br /&gt;I was introduced to UNIX at college, but I don't think I've ever spent a cent on a UNIX program, despite using it heavily - it's all been either free software or provided with the system.&lt;br /&gt;&lt;br /&gt;After graduation, working for a mainly Microsoft software house (Sophos) made me a Windows user by default, as it were.  I spent money on Windows software only very rarely.  Things were either employer-bought or ripped off.  I spent money on some games and one or two shareware utilities and that was it.&lt;br /&gt;&lt;br /&gt;After switching to a Mac two and a half years ago, I've bought software package after software package.  Let's see:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;MarsEdit, in which I'm writing this&lt;br /&gt;&lt;li&gt;Yojimbo&lt;br /&gt;&lt;li&gt;OmniFocus&lt;br /&gt;&lt;li&gt;Aperture&lt;br /&gt;&lt;li&gt;TextMate&lt;br /&gt;&lt;li&gt;OmniGraffle Pro&lt;br /&gt;&lt;li&gt;SuperDuper&lt;br /&gt;&lt;li&gt;Scrivener&lt;br /&gt;&lt;li&gt;Acrobat 8 Professional&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;… and possibly a few more.  A couple of these have been with my employer's money, but most have been out of my own pocket.&lt;br /&gt;&lt;br /&gt;What this says to me is that I feel at home in this environment as I did on the Amiga way-back-when, and that the Macintosh and Mac developers are producing products that I am pleased to pay for and support.  Programs I actually enjoy using, not just tolerate.&lt;br /&gt;&lt;br /&gt;I have a feeling a lot of us are doing the same.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4309841775553874099-1832854063699475484?l=www.matthewjudebrown.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.matthewjudebrown.com/feeds/1832854063699475484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4309841775553874099&amp;postID=1832854063699475484' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4309841775553874099/posts/default/1832854063699475484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4309841775553874099/posts/default/1832854063699475484'/><link rel='alternate' type='text/html' href='http://www.matthewjudebrown.com/2008/09/software-buying-habits-before-and-after.html' title='Software buying habits, before and after switching to a Mac'/><author><name>Matthew Brown</name><uri>http://www.blogger.com/profile/16635166205916243972</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03928082765727538461'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4309841775553874099.post-1681068567406296881</id><published>2008-09-16T13:16:00.001-07:00</published><updated>2008-09-16T13:17:15.633-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UNIX'/><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='ZFS'/><category scheme='http://www.blogger.com/atom/ns#' term='SysAdmin'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><category scheme='http://www.blogger.com/atom/ns#' term='Solaris'/><category scheme='http://www.blogger.com/atom/ns#' term='DBMS'/><title type='text'>Start a MySQL instance on a snapshot</title><content type='html'>OK, so we have snapshotted past instances of the data filesystem.  That's useful to wholly restore a damaged file.  What if, however, one only needs a small bit of that data, or wants to simply see what's changed since the snapshot on a table, or wants to run a mysqldump?&lt;br /&gt;&lt;br /&gt;This code creates a ZFS cloned filesystem from the snapshot using &lt;code&gt;zfs clone&lt;/code&gt;.  A ZFS clone is a writable filesystem created from a snapshot.  ZFS's copy-on-write semantics mean that data is only taken up by that data which was changed from within the clone.&lt;br /&gt;&lt;br /&gt;It then creates a MySQL configuration in /tmp, including a my.cnf and other stuff, and starts up a MySQL instance using those and the cloned filesystem.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/bin/sh&lt;br /&gt;&lt;br /&gt;SNAPGROUP=$1&lt;br /&gt;SNAPNUM=$2&lt;br /&gt;if [ -z "$SNAPNUM" ]; then&lt;br /&gt;	SNAPNUM=`date +%H`&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;echo "Starting MySQL snapshot for $SNAPGROUP-$SNAPNUM"&lt;br /&gt;&lt;br /&gt;BASEDIR=/var/local/mysql/default&lt;br /&gt;BINDIR=$BASEDIR/bin&lt;br /&gt;DATADIR=/mysql/data/4.1.12/$SNAPGROUP-$SNAPNUM/var&lt;br /&gt;LOGDIR=/tmp/mysql-logs-$SNAPGROUP-$SNAPNUM&lt;br /&gt;if [ $SNAPGROUP = "hour" ] ; then&lt;br /&gt;	PORT=34$SNAPNUM&lt;br /&gt;else&lt;br /&gt;	PORT=35$SNAPNUM&lt;br /&gt;fi&lt;br /&gt;SOCKET=/tmp/mysqld-backup-$SNAPGROUP-$SNAPNUM.sock&lt;br /&gt;PIDFILE=/tmp/mysqld-backup-$SNAPGROUP-$SNAPNUM.pid&lt;br /&gt;&lt;br /&gt;# Create clone FS to run MySQL&lt;br /&gt;zfs clone mysql/data/4.1.12@$SNAPGROUP.$SNAPNUM mysql/data/4.1.12/$SNAPGROUP-$SNAPNUM&lt;br /&gt;&lt;br /&gt;# Make directory for logs&lt;br /&gt;if [ -d $LOGDIR ] ; then&lt;br /&gt;	rm -rf $LOGDIR&lt;br /&gt;fi&lt;br /&gt;mkdir $LOGDIR&lt;br /&gt;chmod 777 $LOGDIR&lt;br /&gt;&lt;br /&gt;# Generate my.cnf with correct info&lt;br /&gt;/usr/ccs/bin/m4 -DBASEDIR=$BASEDIR -DBINDIR=$BINDIR \&lt;br /&gt;	-DDATADIR=$DATADIR -DLOGDIR=$LOGDIR \&lt;br /&gt;	-DSOCKET=$SOCKET -DPORT=$PORT -DPIDFILE=$PIDFILE \&lt;br /&gt;	$BASEDIR/var/mybackup.cnf \&lt;br /&gt;		&amp;gt; /tmp/mybackup-$SNAPGROUP-$SNAPNUM.cnf&lt;br /&gt;cd $LOGDIR&lt;br /&gt;nohup $BINDIR/mysqld_safe \&lt;br /&gt;	--defaults-file=/tmp/mybackup-$SNAPGROUP-$SNAPNUM.cnf &lt;br /&gt;		&amp;gt;&amp;gt;/dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;It uses a skeleton &lt;code&gt;my.cnf&lt;/code&gt; that is filled in by &lt;code&gt;m4&lt;/code&gt;:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;[mysqld]&lt;br /&gt;basedir=BASEDIR&lt;br /&gt;datadir=DATADIR&lt;br /&gt;ft_min_word_len=2&lt;br /&gt;ft_stopword_file=DATADIR/fulltextstopwords.cnf&lt;br /&gt;default-character-set=utf8&lt;br /&gt;default-collation=utf8_general_ci&lt;br /&gt;max_connections=10000&lt;br /&gt;query_cache_size=32000000&lt;br /&gt;log-bin=LOGDIR/web-mysql1-bin&lt;br /&gt;server-id=3&lt;br /&gt;read-only&lt;br /&gt;#log=LOGDIR/web-mysql1-query.log&lt;br /&gt;log-slow-queries=LOGDIR/web-mysql1-slow.log&lt;br /&gt;log-error=LOGDIR/web-mysql1.usc.edu.err&lt;br /&gt;port=PORT&lt;br /&gt;socket=SOCKET&lt;br /&gt;pid-file=PIDFILE&lt;br /&gt;&lt;br /&gt;[myisamchk]&lt;br /&gt;ft_min_word_len=2&lt;br /&gt;ft_stopword_file=DATADIR/fulltextstopwords.cnf&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4309841775553874099-1681068567406296881?l=www.matthewjudebrown.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.matthewjudebrown.com/feeds/1681068567406296881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4309841775553874099&amp;postID=1681068567406296881' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4309841775553874099/posts/default/1681068567406296881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4309841775553874099/posts/default/1681068567406296881'/><link rel='alternate' type='text/html' href='http://www.matthewjudebrown.com/2008/09/start-mysql-instance-on-snapshot.html' title='Start a MySQL instance on a snapshot'/><author><name>Matthew Brown</name><uri>http://www.blogger.com/profile/16635166205916243972</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03928082765727538461'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4309841775553874099.post-6075696191527663525</id><published>2008-09-16T12:42:00.001-07:00</published><updated>2008-09-16T13:17:27.886-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UNIX'/><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='ZFS'/><category scheme='http://www.blogger.com/atom/ns#' term='SysAdmin'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><category scheme='http://www.blogger.com/atom/ns#' term='Solaris'/><category scheme='http://www.blogger.com/atom/ns#' term='DBMS'/><title type='text'>Expanded version for hourly snapshots</title><content type='html'>I then expanded that version for hourly snapshots, with this as the result:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/usr/bin/bash&lt;br /&gt;# author: Matthew Brown&lt;br /&gt;# date: 2008-09-16&lt;br /&gt;&lt;br /&gt;#---------------------------&lt;br /&gt;# Variable Initialization&lt;br /&gt;#---------------------------&lt;br /&gt;cHour=`/usr/bin/date +%H`&lt;br /&gt;#loc1=/var/local/backups/mysql_hourly&lt;br /&gt;loc1=/mysql-backup/`hostname`/hourly&lt;br /&gt;archBase=mysql_var-hour.&lt;br /&gt;archNM=$archBase$cHour&lt;br /&gt;dumpSpot=$loc1/$archNM&lt;br /&gt;tempF=/tmp/mysqldumpStart&lt;br /&gt;tempF1=/tmp/mysqldumpStart1&lt;br /&gt;x=$(((`date +%H`) - 1 | bc))&lt;br /&gt;fqdn=`/bin/hostname`&lt;br /&gt;hostname=`basename $fqdn .usc.edu`&lt;br /&gt;&lt;br /&gt;#--------------------------------------&lt;br /&gt;# Record the mysqldump start time&lt;br /&gt;#--------------------------------------&lt;br /&gt;echo "Hourly mysql data backup began `date`"&amp;gt; $tempF &amp;&lt;br /&gt;&lt;br /&gt;#--------------------------------------&lt;br /&gt;# Perform the mysqldump &lt;br /&gt;#--------------------------------------&lt;br /&gt;/var/local/mysql/default/bin/mysqldump --opt --force \&lt;br /&gt;  --user=root --password='notreally' --all-databases \&lt;br /&gt;  &amp;gt; $dumpSpot&lt;br /&gt;&lt;br /&gt;#--------------------------------------&lt;br /&gt;# Remove the previous day's hourly backup&lt;br /&gt;#--------------------------------------&lt;br /&gt;rm $dumpSpot.gz&lt;br /&gt;&lt;br /&gt;#--------------------------------------&lt;br /&gt;# Compress the backup using gzip&lt;br /&gt;#--------------------------------------&lt;br /&gt;/usr/bin/gzip $dumpSpot&lt;br /&gt;&lt;br /&gt;#--------------------------------------&lt;br /&gt;# Record long listing of new hourly backup&lt;br /&gt;#--------------------------------------&lt;br /&gt;ls -ltr $loc1/$archBase* &gt; $tempF1&lt;br /&gt;&lt;br /&gt;#--------------------------------------&lt;br /&gt;# Compose and email backup completion report&lt;br /&gt;#--------------------------------------&lt;br /&gt;cat $tempF $tempF1 | mailx -s "$hostname `date +%Y.%m.%d` hour: `date +%H` mysql data dump complete" backup-reports&lt;br /&gt;&lt;br /&gt;#--------------------------------------&lt;br /&gt;# cleanup temp files&lt;br /&gt;#--------------------------------------&lt;br /&gt;rm $tempF $tempF1&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4309841775553874099-6075696191527663525?l=www.matthewjudebrown.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.matthewjudebrown.com/feeds/6075696191527663525/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4309841775553874099&amp;postID=6075696191527663525' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4309841775553874099/posts/default/6075696191527663525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4309841775553874099/posts/default/6075696191527663525'/><link rel='alternate' type='text/html' href='http://www.matthewjudebrown.com/2008/09/expanded-version-for-hourly-snapshots.html' title='Expanded version for hourly snapshots'/><author><name>Matthew Brown</name><uri>http://www.blogger.com/profile/16635166205916243972</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03928082765727538461'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4309841775553874099.post-3912407720178555272</id><published>2008-09-15T15:15:00.001-07:00</published><updated>2008-09-16T13:17:34.453-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UNIX'/><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='ZFS'/><category scheme='http://www.blogger.com/atom/ns#' term='SysAdmin'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><category scheme='http://www.blogger.com/atom/ns#' term='Solaris'/><category scheme='http://www.blogger.com/atom/ns#' term='DBMS'/><title type='text'>ZFS snapshots of a running MySQL instance</title><content type='html'>I run a group of MySQL servers on Solaris 10 with their data on a ZFS filesystem.  I snapshot this data hourly, and this is the basic script I use to do it.  I build upon this script to do other things after the snapshotting.&lt;br /&gt;&lt;br /&gt;The script is called mysql_DataSnapshot, and is called with two parameters, SNAPGROUP and SNAPNUM.  These are used to form a snapshot name.  The intent is that SNAPGROUP is something like "hourly" or "daily", while SNAPNUM is an identifier within that group – the hour number for hourly snapshots, the day number for daily snapshots, or suchlike.&lt;br /&gt;&lt;br /&gt;I make no claim to great code quality, but publish this in the hope that it might help someone else trying to do this.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/usr/bin/bash&lt;br /&gt;# author: Matt Brown&lt;br /&gt;# date: June 2, 2008&lt;br /&gt;# Creates a snapshot of a MySQL instance's filesystem.&lt;br /&gt;&lt;br /&gt;#---------------------------&lt;br /&gt;# Variable Initialization&lt;br /&gt;#---------------------------&lt;br /&gt;&lt;br /&gt;# The script takes two arguments: the snapshot group &lt;br /&gt;# and the snapshot number. These are encoded into&lt;br /&gt;# the snapshot name as filesystem@group.number, e.g.&lt;br /&gt;# mysql/data/4.1.12@hour.12&lt;br /&gt;SNAPGROUP=$1&lt;br /&gt;SNAPNUM=$2&lt;br /&gt;&lt;br /&gt;filesystem=mysql/data/4.1.12&lt;br /&gt;snapname=$filesystem@$SNAPGROUP.$SNAPNUM&lt;br /&gt;&lt;br /&gt;#--------------------------------------&lt;br /&gt;# Remove any pre-existing snapshot&lt;br /&gt;#--------------------------------------&lt;br /&gt;zfs destroy -R $snapname&lt;br /&gt;&lt;br /&gt;#--------------------------------------&lt;br /&gt;# Perform the mysqldump &lt;br /&gt;#--------------------------------------&lt;br /&gt;/var/local/mysql/default/bin/mysql --user=root \&lt;br /&gt;	--password='notreally' &amp;lt;&amp;lt;EOF&lt;br /&gt;FLUSH TABLES WITH READ LOCK;&lt;br /&gt;\! zfs snapshot $snapname&lt;br /&gt;UNLOCK TABLES;&lt;br /&gt;EOF&lt;br /&gt;&lt;br /&gt;#--------------------------------------&lt;br /&gt;# List the snapshot&lt;br /&gt;#--------------------------------------&lt;br /&gt;zfs list $snapname&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4309841775553874099-3912407720178555272?l=www.matthewjudebrown.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.matthewjudebrown.com/feeds/3912407720178555272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4309841775553874099&amp;postID=3912407720178555272' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4309841775553874099/posts/default/3912407720178555272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4309841775553874099/posts/default/3912407720178555272'/><link rel='alternate' type='text/html' href='http://www.matthewjudebrown.com/2008/09/zfs-snapshots-of-running-mysql-instance.html' title='ZFS snapshots of a running MySQL instance'/><author><name>Matthew Brown</name><uri>http://www.blogger.com/profile/16635166205916243972</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03928082765727538461'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>