<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>BarneyBlog &#187; random</title>
	<atom:link href="http://www.barneyb.com/barneyblog/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.barneyb.com/barneyblog</link>
	<description>Thoughts, rants, and even some code from the mind of Barney Boisvert.</description>
	<lastBuildDate>Mon, 02 Mar 2020 13:20:35 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Boggle Boards</title>
		<link>https://www.barneyb.com/barneyblog/2011/07/20/boggle-board/</link>
		<comments>https://www.barneyb.com/barneyblog/2011/07/20/boggle-board/#comments</comments>
		<pubDate>Thu, 21 Jul 2011 05:13:24 +0000</pubDate>
		<dc:creator>barneyb</dc:creator>
				<category><![CDATA[cfml]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[random]]></category>

		<guid isPermaLink="false">http://www.barneyb.com/barneyblog/?p=1710</guid>
		<description><![CDATA[In case anyone wants to know, here are the specs for Boggle &#8211; both for Original Boggle and for Big Boggle &#8211; in a handy machine-readable format.  The format is line oriented with each line representing a single die, and the sides of the dice delimited by spaces.  Note that there is a [...]]]></description>
			<content:encoded><![CDATA[<p>In case anyone wants to know, here are the specs for Boggle &#8211; both for Original Boggle and for Big Boggle &#8211; in a handy machine-readable format.  The format is line oriented with each line representing a single die, and the sides of the dice delimited by spaces.  Note that there is a side with 'Qu' on it, so you must allow for a multi-letter side in your parser.</p>
<table>
<tbody>
<tr>
<td><a href="http://www.barneyb.com/boggle/original_boggle.txt">original_boggle.txt</a></p>
<pre>A A C I O T
A B I L T Y
A B J M O Qu
A C D E M P
A C E L R S
A D E N V Z
A H M O R S
B F I O R X
D E N O S W
D K N O T U
E E F H I Y
E G I N T V
E G K L U Y
E H I N P S
E L P S T U
G I L R U W</pre>
</td>
<td><a href="http://www.barneyb.com/boggle/big_boggle.txt">big_boggle.txt</a></p>
<pre>A A A F R S
A A E E E E
A A F I R S
A D E N N N
A E E E E M
A E E G M U
A E G M N N
A F I R S Y
B J K Qu X Z
C C E N S T
C E I I L T
C E I L P T
C E I P S T
D D H N O T
D H H L O R
D H L N O R
D H L N O R
E I I I T T
E M O T T T
E N S S S U
F I P R S Y
G O R R V W
I P R R R Y
N O O T U W
O O O T T U</pre>
</td>
</tr>
</tbody>
</table>
<h2>Usage</h2>
<p>Here is a simple CFML function which accepts a board definition and returns an array representing a "roll" of the grid:</p>
<pre>&lt;cffunction name="roll" output="false" returntype="array"&gt;

   &lt;cfargument name="board" type="string" required="true" /&gt;
   &lt;cfset var result = [] /&gt;
   &lt;cfloop list="#board#" index="die" delimiters="#chr(10)#"&gt;

      &lt;cfset die = listToArray(die, ' ') /&gt;
      &lt;cfset arrayAppend(result, die[randRange(1, arrayLen(die))]) /&gt;
   &lt;/cfloop&gt;
   &lt;cfset createObject('java', 'java.util.Collections').shuffle(result) /&gt;
   &lt;cfreturn result /&gt;
&lt;/cffunction&gt;
</pre>
<p>And the result of executing it on the original board:</p>
<pre>[N, T, W, A, B, Qu, B, D, L, M, D, H, D, L, G, V]
</pre>
<p>Here's a Groovy Closure which does the same thing:</p>
<pre>{
   it = it.tokenize('\n')
      .collect{ it.tokenize(' ') }
      .collect{ it[new Random().nextInt(it.size)] }
   Collections.shuffle(it) // icky!
   it
}
</pre>
<p>And the result of executing it on the big board:</p>
<pre>[N, E, G, N, N, C, S, A, F, E, U, N, H, I, P, H, C, T, T, O, I, O, Qu, T, T]
</pre>
<p>NB: The source for this post can be found at <a href="http://www.barneyb.com/boggle/">http://www.barneyb.com/boggle/</a>.Â  Any updates I may have will go there.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.barneyb.com/barneyblog/2011/07/20/boggle-board/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>UPDATE: Route 53 API Regression</title>
		<link>https://www.barneyb.com/barneyblog/2011/05/26/update-route-53-api-regression/</link>
		<comments>https://www.barneyb.com/barneyblog/2011/05/26/update-route-53-api-regression/#comments</comments>
		<pubDate>Thu, 26 May 2011 15:13:21 +0000</pubDate>
		<dc:creator>barneyb</dc:creator>
				<category><![CDATA[random]]></category>

		<guid isPermaLink="false">http://www.barneyb.com/barneyblog/?p=1692</guid>
		<description><![CDATA[Yesterday I posted about an apparent regression in the AWS Route 53 API, but it appears that it was a documentation issue, not an actual regression.Â  A member of the AWS team contacted me and confirmed that the docs for the 2010-10-01 version of the API erroneously listed the parameter names with initial caps, even [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday I posted about <a href="http://www.barneyb.com/barneyblog/2011/05/25/route-53-api-regression/">an apparent regression in the AWS Route 53 API</a>, but it appears that it was a documentation issue, not an actual regression.Â  A member of the AWS team contacted me and confirmed that the docs for the 2010-10-01 version of the API erroneously listed the parameter names with initial caps, even though the implementation only respected lowercase parameter names (which is what the current version &#8211; 2011-05-05 &#8211; both respects and documents).</p>
<p>So if you followed the docs and didn't test in the wild, code built atop the 2010-10-01 API will not page correctly.Â  In addition to clarifying the specifics of the problem, AWS indicated the API docs for the 2010-10-01 version had been updated as well, but I pulled them down this morning and they still list initial caps on the parameter names.</p>
<p>In any case, lowercase names for parameters are the way to go, regardless of which version of the API you're using.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.barneyb.com/barneyblog/2011/05/26/update-route-53-api-regression/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lego Ad</title>
		<link>https://www.barneyb.com/barneyblog/2011/01/28/lego-ad/</link>
		<comments>https://www.barneyb.com/barneyblog/2011/01/28/lego-ad/#comments</comments>
		<pubDate>Fri, 28 Jan 2011 19:45:37 +0000</pubDate>
		<dc:creator>barneyb</dc:creator>
				<category><![CDATA[random]]></category>

		<guid isPermaLink="false">http://www.barneyb.com/barneyblog/?p=1632</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-1633" title="lego_ad" src="http://www.barneyb.com/barneyblog/wp-content/uploads/2011/01/lego_ad.jpg" alt="Lego Ad" width="535" height="700" /></p>
]]></content:encoded>
			<wfw:commentRss>https://www.barneyb.com/barneyblog/2011/01/28/lego-ad/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OSX-Ordered Buttons</title>
		<link>https://www.barneyb.com/barneyblog/2011/01/19/osx-ordered-buttons/</link>
		<comments>https://www.barneyb.com/barneyblog/2011/01/19/osx-ordered-buttons/#comments</comments>
		<pubDate>Wed, 19 Jan 2011 18:15:09 +0000</pubDate>
		<dc:creator>barneyb</dc:creator>
				<category><![CDATA[random]]></category>

		<guid isPermaLink="false">http://www.barneyb.com/barneyblog/?p=1623</guid>
		<description><![CDATA[If you've used both Windows and OSX, you've probably noticed that the standard button ordering is different.Â  For a simple confirm dialog, Windows typically renders the buttons centered at the bottom of the dialog, with the 'OK' button to the left of the 'Cancel' button.Â  On OSX, the buttons are rendered to the right at [...]]]></description>
			<content:encoded><![CDATA[<p>If you've used both Windows and OSX, you've probably noticed that the standard button ordering is different.Â  For a simple confirm dialog, Windows typically renders the buttons centered at the bottom of the dialog, with the 'OK' button to the left of the 'Cancel' button.Â  On OSX, the buttons are rendered to the right at the bottom of the dialog, with the 'OK' button to the right of the 'Cancel' button.Â  This corresponds to the inversion of window minimize/maximize/close buttons as well (Windows to the top right and OSX to the top left).</p>
<p>If you're building a web app, you're necessarily trying to serve all your customers with a single interface, but you can still give them a familiar user experience with a minimum of fuss.Â  Not only can you, but you <em>should</em>.Â  The best part is that you can do much of it purely with CSS and JS, without having to touch your serverside at all.</p>
<p>Here's a jQuery snippet that deals with the button order problem:</p>
<pre>jQuery(function() {
  var c = jQuery("<span style="color: #0000ff;">.osx</span> input[type=submit]").parent()
  c.css("text-align", "right")
    .children().each(function() {
      c.prepend(" ").prepend(jQuery(this).remove())
  })
})
</pre>
<p>As you can see I simply grab any element directly containing a submit button, invert the order of it's children, and right align them.Â  Note the "<span style="color: #0000ff;">.osx</span>" in there &#8211; that's really important.Â  Somewhere else (maybe JS, maybe serverside, whatever) the OS of the user will be checked and the "osx" class will be added to the HTML element if appropriate, allowing me to target only OSX visitors with custom stuff.Â  You could just as easily do it in the other direction (emit HTML w/ OSX ordering and flip it around to Windows ordering).</p>
<p>Here's some CSS to style buttons a little differently:</p>
<pre><span style="color: #0000ff;">.osx</span> input[type=submit] {
  border: 1px solid #2b269a;
  background-image: url(osx-button-bg.png);
  border-radius: 6px;
  font-family: Verdana;
}
</pre>
<p>These are trivial examples, but they illustrates just how simple it is to help make your users feel more at home.Â  Foisting an inconsistent user experience on your application's users does them a disservice.Â  People are unfortunately used to having to think extra hard when they cross over into a browser, but there's no reason to make them pay that price.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.barneyb.com/barneyblog/2011/01/19/osx-ordered-buttons/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Amazon S3 CFC Now Supports Paged Lists</title>
		<link>https://www.barneyb.com/barneyblog/2010/12/23/amazon-s3-cfc-paged-lists/</link>
		<comments>https://www.barneyb.com/barneyblog/2010/12/23/amazon-s3-cfc-paged-lists/#comments</comments>
		<pubDate>Fri, 24 Dec 2010 00:42:10 +0000</pubDate>
		<dc:creator>barneyb</dc:creator>
				<category><![CDATA[random]]></category>

		<guid isPermaLink="false">http://www.barneyb.com/barneyblog/?p=1612</guid>
		<description><![CDATA[The initial implementation of the listObjects method on my Amazon S3 CFC didn't include any means for paging through records.Â  The default behaviour of S3 when doing a listObjects request (a GET of the bucket) is to return the first 1000 keys in alphabetical order, and then truncate the result.
There are now two more parameters [...]]]></description>
			<content:encoded><![CDATA[<p>The initial implementation of the listObjects method on my <a href="http://www.barneyb.com/barneyblog/projects/amazon-s3-cfc/">Amazon S3 CFC</a> didn't include any means for paging through records.Â  The default behaviour of S3 when doing a listObjects request (a GET of the bucket) is to return the first 1000 keys in alphabetical order, and then truncate the result.</p>
<p>There are now two more parameters to the listObjects method on the CFC:</p>
<ul>
<li>startAfter[""] &#8211; The object key to start the listing after (corresponding to the 'marker' parameter in the raw S3 API), defaulting to the empty string (which is before the first object key).</li>
<li>maxResults[1000] &#8211; The number of results to return (corresponding to the 'max-keys' parameter in the raw S3 API), defaulting to 1000.</li>
</ul>
<p>This is a simple, but rather atypical way to do paging, so a brief bit of psuedo-code is in order:</p>
<pre>s3 = new S3("MY_AWS_KEY", "MY_AWS_SECRET");
pageSize = 10;
items1To10 = s3.listObjects('s3.test.com', '', '/', '', pageSize);
items11To20 = s3.listObjects('s3.test.com', '', '/',
  <span style="color: #0000ff;">items1To10.objectKey[items1To10.recordCount]</span>, pageSize);
</pre>
<p>As you can see, the second page of results is retrieved by passing the last object key from the first page as the 'startAfter' parameter.Â  Note that S3 <strong>always</strong> returns object keys in alphabetical order, so all paging operations are using that ordering.</p>
<p>In addition to these two new parameters to listObjects, both listObjects and listBuckets now return extended metadata including both the standard fields (executionTime, cached, recordCount, and columnList) and extra S3-specific metadata.Â  In particular, listObjects returns an 'isTruncated' field indicating whether the listing was truncated (meaning there are more keys to retrieve).Â  Very helpful in determining whether you need to look for another page of records.</p>
<p>Some psuedocode for this might look like this:</p>
<pre>s3 = new S3("MY_AWS_KEY", "MY_AWS_SECRET");
pageSize = 10;
items1To10 = s3.listObjects('s3.test.com', '', '/', '', pageSize);
if (items1To10.getMetadata().getExtendedMetadata().isTruncated) {
  // ... fetch next page ...
}
</pre>
<p>Just for reference, the extended metadata is what is returned when you use the 'result' attribute on a normal CFQUERY tag.Â  That same data is available from the query result (what you pass to the 'name' attribute of CFQUERY) via the syntax above.Â  So you can always get the SQL, execution time, cache status, etc from any query result, even if you don't have a reference to the 'result' attribute's variable.Â  Forgive the confusing nomenclature, the attribute names are really screwed up, so here's some psuedocode that will hopefully illustrate:</p>
<pre>&lt;cfquery name="myQuery" result="myMetadata"&gt;
  select ...
  from ...
&lt;/cfquery&gt;
md = myQuery.getMetadata().getExtendedMetadata();
assert md.sql EQ myMetadata.sql;
assert md.executionTime EQ myMetadata.executionTime;
assert md.equals(myMetadata);
</pre>
<p>This is handy for query results which are returned from CFC methods, for example, where you can't use the 'result' attribute.</p>
<p>Development of these new features was sponsored by Gaurav Malik and <a href="http://www.csstc.com/">CSSTC</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.barneyb.com/barneyblog/2010/12/23/amazon-s3-cfc-paged-lists/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Medians and Quartiles</title>
		<link>https://www.barneyb.com/barneyblog/2010/09/19/medians-and-quartiles/</link>
		<comments>https://www.barneyb.com/barneyblog/2010/09/19/medians-and-quartiles/#comments</comments>
		<pubDate>Mon, 20 Sep 2010 06:43:07 +0000</pubDate>
		<dc:creator>barneyb</dc:creator>
				<category><![CDATA[random]]></category>

		<guid isPermaLink="false">http://www.barneyb.com/barneyblog/?p=1589</guid>
		<description><![CDATA[A number of years ago I build this little app called EventLog.Â  It's a really simple data journal: you enter a set of a tags and a timestamp (defaulting to "now"), and it saves it off to a database.Â  Then you can build all kinds of reports and such based on your data to help [...]]]></description>
			<content:encoded><![CDATA[<p>A number of years ago I build this little app called <a href="http://eventlog.barneyb.com/">EventLog</a>.Â  It's a really simple data journal: you enter a set of a tags and a timestamp (defaulting to "now"), and it saves it off to a database.Â  Then you can build all kinds of reports and such based on your data to help you track "stuff".Â  As an example, here's a chart about my benadryl (which helps my skin enormously) consumption since mid-July (click it for the full report):</p>
<p><a href="https://ssl.barneyb.com/eventlog/report/30/2AA3643FB42097586BEABD06CD2017959DD42BB2DB9B0AAF80A0F2B8829DC016"><img class="aligncenter" title="Benadryl by Location" src="https://ssl.barneyb.com/eventlog/chart/426/2AA3643FB42097586BEABD06CD2017959DD42BB2DB9B0AAF80A0F2B8829DC016/650/325" alt="" width="650" height="325" /></a></p>
<p>All kinds of neat, you might say.</p>
<p>One of the other reports that you can access if you're logged in (the report above was made publicly available) is called a hiatus reports, which instead of reporting on the events themselves, reports on the length of the hiatuses between events.Â  For example, I aim to haveÂ  a benadryl every 8 hours or so, so monitoring my hiatuses is more useful than the actual data points themselves.Â  However, the raw hiatuses aren't terribly interesting as the number of events goes up &#8212; you want stats on them (average, median, deviation, etc.) so I added that this evening.</p>
<p>And then Kim (aka Dr. Repp, microbiologist and bio-statistician) wanted quartiles as well as median.</p>
<p>Quartiles are kind of a pain.Â  It's not obvious how exactly they are computed.Â  Median is easy, just line up your points in ascending order and take either the middle one (if there is one), or average the middle two (if there isn't).Â  Quartiles are <em>not</em> the same algorithm applied to the 25% and 75% points (the 50% quartile is the median, of course).Â  Rather, they are the medians of the two halves of the data on either side of the median.Â  In particular, the median value (is there is one) is not part of either half; it's the pivot.Â  Think quicksort.</p>
<p>An example will make this more clear.Â  Consider this set of values (already sorted):</p>
<pre>[1, 2, 3, 4, 5, 6, 7, 8, 9]</pre>
<p>The median is obviously five, which leaves four points on either side of it which will be used to compute the quartiles.Â  So the 25% quartile is the median of this subset:</p>
<pre>[1, 2, 3, 4]</pre>
<p>The 75% quartile is the median of this subset:</p>
<pre>[6, 7, 8, 9]</pre>
<p>Note that five isn't in either one.Â  These subsets yield medians of 2.5 and 7.5, which correspond to the 25% and 75% quartile values.</p>
<p>Now consider this set of values (also already sorted):</p>
<pre>[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]</pre>
<p>Here the median in 5.5 (the average of 5 and 6), and as that isn't an actual value in the set, the entire set will be represented in the two quartile subsets:</p>
<pre>[1, 2, 3, 4, 5]
[6, 7, 8, 9, 10]</pre>
<p>This yields quartiles of 3 and 8.</p>
<p>Not a difficultÂ  algorithm, but a bit tricky since you don't actually figure out the quartiles directly on the data, you have to compute the median, split the data, and then figure out the quartiles from the subsets.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.barneyb.com/barneyblog/2010/09/19/medians-and-quartiles/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Cron for CFML.  Again</title>
		<link>https://www.barneyb.com/barneyblog/2010/08/16/cron-for-cfml-again/</link>
		<comments>https://www.barneyb.com/barneyblog/2010/08/16/cron-for-cfml-again/#comments</comments>
		<pubDate>Tue, 17 Aug 2010 06:27:49 +0000</pubDate>
		<dc:creator>barneyb</dc:creator>
				<category><![CDATA[random]]></category>
		<category><![CDATA[cfml]]></category>

		<guid isPermaLink="false">http://www.barneyb.com/barneyblog/2010/08/16/cron-for-cfml-again/</guid>
		<description><![CDATA[So tonight I built cron in CFML.  Again. Because it's missing from both the language framework and every runtime.  Am I the only one who constantly fights this battle?  In the past four years I've built four distinct cron implementations in CFML and it's completely retarded.
The JRE provides TimerTask, but it's a [...]]]></description>
			<content:encoded><![CDATA[<p>So tonight I built cron in CFML.  Again. Because it's missing from both the language framework and every runtime.  Am I the only one who constantly fights this battle?  In the past four years I've built four distinct cron implementations in CFML and it's completely retarded.</p>
<p>The JRE provides TimerTask, but it's a huge pain in the ass to use with CFML because the Java-to-CFML bridges are laughably weak.  OpenSymphony has Quartz (which is awesome), but being Java, it suffers the same problem.  Yes, even with the bennies CFGroovy offers in the Java space.</p>
<p>CFSCHEDULE is lame, especially on ColdFusion with it's 61 second frequency limit.  Even with an optimal implementation the entire mechanism is flawed because it's a) stuck with equal iteration periods, and b) can only invoke URLs.  Every distinct task requires punching a hole in your URL security, making a UI-layer facade for the task, etc. </p>
<p>The Java mechinisms are much better because they stay in-JVM (i.e., don't go through HTTP), but the statelessness of CFCProxy is a huge burden.  You can't access already-instantiated CFCs, which means you end up writing a massive pile of custom facade/proxy code to interface with your already-running business model.</p>
<p>The natural solution, of course, is implementing cron in CFML.  It allows you to pay either the HTTP or CFCProxy cost exactly once, as well as have cron's incredibly flexible scheduling format.  This fact, in it's various manifestations, drives me to drink rather ridiculous amounts.</p>
<p>The flip side, of course, is the dynamic reloading nature that CFML servers offer.  I simply cannot understand why other JVM frameworks have not copied this feature.  The complete avoidance of all the JVM restarts and classloading hell is a benefit worth enormous sacrifice.  Which, I suppose, is why I write CFML both for my salary and for personal projects.</p>
<p>Am I the only one who thinks this is a problem?  With both CFML and other JVM frameworks.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.barneyb.com/barneyblog/2010/08/16/cron-for-cfml-again/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>The Cookie Militia</title>
		<link>https://www.barneyb.com/barneyblog/2009/03/22/the-cookie-militia/</link>
		<comments>https://www.barneyb.com/barneyblog/2009/03/22/the-cookie-militia/#comments</comments>
		<pubDate>Sun, 22 Mar 2009 18:44:50 +0000</pubDate>
		<dc:creator>barneyb</dc:creator>
				<category><![CDATA[random]]></category>

		<guid isPermaLink="false">http://www.barneyb.com/barneyblog/?p=742</guid>
		<description><![CDATA[Saw this on pictureisunrelated.com and had to share:

]]></description>
			<content:encoded><![CDATA[<p>Saw this on <a href="http://pictureisunrelated.com/2009/03/22/who-loves-cookies-more-than-this-guy/">pictureisunrelated.com</a> and had to share:</p>
<p><a href="http://www.barneyb.com/barneyblog/wp-content/uploads/2009/03/wtf_pics-cookie-militia.jpg"><img class="aligncenter size-full wp-image-743" title="wtf_pics-cookie-militia" src="http://www.barneyb.com/barneyblog/wp-content/uploads/2009/03/wtf_pics-cookie-militia.jpg" alt="wtf_pics-cookie-militia" width="500" height="333" /></a></p>
]]></content:encoded>
			<wfw:commentRss>https://www.barneyb.com/barneyblog/2009/03/22/the-cookie-militia/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Fast Music</title>
		<link>https://www.barneyb.com/barneyblog/2008/12/13/fast-music/</link>
		<comments>https://www.barneyb.com/barneyblog/2008/12/13/fast-music/#comments</comments>
		<pubDate>Sat, 13 Dec 2008 22:20:43 +0000</pubDate>
		<dc:creator>barneyb</dc:creator>
				<category><![CDATA[random]]></category>

		<guid isPermaLink="false">http://www.barneyb.com/barneyblog/?p=568</guid>
		<description><![CDATA[As a musician, is it strictly necessary to blaze through every piece of music you play?Â  Listening to Christmas music on Pandora and probably 2/3rds of tunes, particularly non-orchestral pieces, are at about 125% the speed they should be played.Â  It doesn't make you a better player just because you can flail your fingers and/or [...]]]></description>
			<content:encoded><![CDATA[<p>As a musician, is it strictly necessary to blaze through every piece of music you play?Â  Listening to Christmas music on Pandora and probably 2/3rds of tunes, particularly non-orchestral pieces, are at about 125% the speed they should be played.Â  It doesn't make you a better player just because you can flail your fingers and/or lips at a ridiculous pace and remain on rhythm.Â  Perhaps more technically competent, but if that was the goal, we'd only listen to sequenced music and no one would ever play it for real.</p>
<p>Yay for Trans-Siberian Orchestra and Mannheim Steamroller &#8211; two notable exceptions.Â Â  For the rest of you:Â  slow down.Â  Creating music is a gift.Â  Enjoy it.Â  We will too.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.barneyb.com/barneyblog/2008/12/13/fast-music/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Summer&#8230;.</title>
		<link>https://www.barneyb.com/barneyblog/2008/06/16/summer/</link>
		<comments>https://www.barneyb.com/barneyblog/2008/06/16/summer/#comments</comments>
		<pubDate>Tue, 17 Jun 2008 04:04:37 +0000</pubDate>
		<dc:creator>barneyb</dc:creator>
				<category><![CDATA[random]]></category>

		<guid isPermaLink="false">http://www.barneyb.com/barneyblog/?p=423</guid>
		<description><![CDATA[Here I am just out of the shower, sitting on the back patio with bare feet and a t-shirt, sunset behind the trees, listening to the babbling fountain and some Leaves Eyes', and finishing up a bag of Mother's Circus Animal cookies.Â  If only I had a fruity drink with a little umbrella in it&#8230;
]]></description>
			<content:encoded><![CDATA[<p>Here I am just out of the shower, sitting on the back patio with bare feet and a t-shirt, sunset behind the trees, listening to the babbling fountain and some Leaves Eyes', and finishing up a bag of Mother's Circus Animal cookies.Â  If only I had a fruity drink with a little umbrella in it&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>https://www.barneyb.com/barneyblog/2008/06/16/summer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
