<?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; personal</title>
	<atom:link href="http://www.barneyb.com/barneyblog/category/personal/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>A Final Note</title>
		<link>https://www.barneyb.com/barneyblog/2012/01/01/a-final-note/</link>
		<comments>https://www.barneyb.com/barneyblog/2012/01/01/a-final-note/#comments</comments>
		<pubDate>Sun, 01 Jan 2012 08:00:26 +0000</pubDate>
		<dc:creator>barneyb</dc:creator>
				<category><![CDATA[meta]]></category>
		<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://www.barneyb.com/barneyblog/?p=1756</guid>
		<description><![CDATA[The past years, months and weeks have had a huge amount of change wrapped up within them for me.  Much of that change had immediate effects, but some of it has been more subtle.  There are three major effects which are manifesting at the present time: a new career, a new job, and a new [...]]]></description>
			<content:encoded><![CDATA[<p>The past years, months and weeks have had a huge amount of change wrapped up within them for me.  Much of that change had immediate effects, but some of it has been more subtle.  There are three major effects which are manifesting at the present time: a new career, a new job, and a new blog.  All are manifesting at the year boundary which is, for some reason, the usual for major change in my life.</p>
<p>First, I am embarking on a new career, that of a software craftsman.  I have been a CFML developer for over a decade, and while it has earned me a nice income, it hasn't been terribly fulfilling.  CFML itself is part of the problem, but the places where CFML is widely accepted and adopted are a bigger portion.  I seem to be quite proficient at using CFML to build web applications  above spec and under budget, but I've come to realize over the years that my objectives are within the craft of software development, not in making piles of money.</p>
<p>Facilitating this shift of focus is a change of jobs.  I've worked at Mentor Graphics for just over five years and the team I have been a part of has grown in leaps and bounds.  We have morphed from a group of CommonSpot hackers to a team responsible for a pile of CFML, Python, and PHP applications, along with all the infrastructure to run it scalably and reliably.  It's worth mentioning that our team is a chunk of Mentor's corporate marketing department, and our IT department comes to us for expert opinions.   I have given my notice and my last day at Mentor will be January 6<sup>th</sup>, 2012.</p>
<p>On the 9<sup>th</sup> I will be starting a new job with a company providing healthcare information management and analytics software.  The company (ARMUS) recently was acquired by Burr Pilger Mayer (the largest accounting firm in California), though it still runs as a largely autonomous division within.  The team is small, the projects are fast, the impact is huge, and the business puts the focus is on internal quality not just external deliverables.  Plus it's centered around huge masses of data and the extraction of interesting information, which is something I'm quite fond of.  I don't think it's coincidence that Kim is an epidemiologist, doing the job ARMUS's software is intended to facilitate.</p>
<p>Finally, I'm moving my online home to <a href="http://programmerluddite.com/">programmerluddite.com</a> instead of barneyb.com.  You can read more about the reasons <a href="http://programmerluddite.com/2012/01/programmer-luddite/">over there</a>.  I'll still be writing about software development and whatever else suits my fancy, but starting afresh.  This will be the final post I make on this blog, excepting a couple  updates to a couple open source projects in the coming month.</p>
<p>This sort of "leave everything behind" transition is very uncharacteristic of my nature.  However, in this case I feel that a transition would be exactly the opposite of what is needed.  Yes, that means you'll need to update your feed readers, but no content is changing homes.  The downloads, post links, and comment subscriptions here on BarneyBlog will remain exactly as before, as will all the other bits and pieces on barneyb.com.</p>
<p>Hope to see you all over at my new home, though I will probably be rather quiet for a bit as the rest of this welling change stabilizes.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.barneyb.com/barneyblog/2012/01/01/a-final-note/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Migration Complete!</title>
		<link>https://www.barneyb.com/barneyblog/2011/09/28/migration-complete/</link>
		<comments>https://www.barneyb.com/barneyblog/2011/09/28/migration-complete/#comments</comments>
		<pubDate>Wed, 28 Sep 2011 22:56:19 +0000</pubDate>
		<dc:creator>barneyb</dc:creator>
				<category><![CDATA[amazon]]></category>
		<category><![CDATA[meta]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[potd]]></category>

		<guid isPermaLink="false">http://www.barneyb.com/barneyblog/?p=1738</guid>
		<description><![CDATA[This morning I cut barneyb.com and all it's associated properties over from my old CentOS 5 box at cari.net to a new Amazon Linux "box" in Amazon Web Service's us-east-1 region.Â  Migration was pretty painless.Â  I followed the "replace hardware with cloud resources" approach that I advocate and have spoken on at various places.Â  The [...]]]></description>
			<content:encoded><![CDATA[<p>This morning I cut <code>barneyb.com</code> and all it's associated properties over from my old CentOS 5 box at cari.net to a new Amazon Linux "box" in Amazon Web Service's <code>us-east-1</code> region.Â  Migration was pretty painless.Â  I followed the "replace hardware with cloud resources" approach that I advocate and have spoken on at various places.Â  The process looks like this:</p>
<ol>
<li>launch a virgin EC2 instance (I used the console and based it on <code>ami-7f418316</code>).</li>
<li>create a data volume and attach it to the instance.</li>
<li>allocate an Elastic IP and associate it with the instance.</li>
<li>set up an A record for the Elastic IP.</li>
<li>build a setup script which will configure the instance as needed.Â  I feel it's important to use a script for this so that if your instance dies for some reason you can create a new one without too much fuss.Â  It's not strictly necessary, but part of the cloud mantra is "don't repair, replace" because new resources are so inexpensive.Â  Don't forget to store it on your volume, not the root drive or an ephemeral store.Â  Here's one useful snippet for modifying /etc/sudoers that took me a little digging to figure out:
<pre>bash -c "chmod 660 /etc/sudoers;sed -i -e 's/^\# \(%wheel.*NOPASSWD.*\)/\1/' /etc/sudoers;chmod 440 /etc/sudoers"</pre>
</li>
<li>rsync all the various data files from the current server to the new one (everything goes on the volume; symlink &#8211; via your setup script &#8211; where necessary).Â  Again, use a script.</li>
<li>once you're happy that your scripts work, kill your instance,</li>
<li>launch a new virgin EC2 instance,</li>
<li>attach your data volume,</li>
<li>associate your Elastic IP,</li>
<li>run your setup script,</li>
<li>if anything didn't turn out the way you wanted, fix it, and go back to step 8.</li>
<li>shut down all the state-mutating daemons on the old box.</li>
<li>shut down all the daemons on the new instance.</li>
<li>set up a downtime message in Apache on the old box.Â  I used these directives:
<pre>RewriteEngine  On
RewriteRule    ^/.+/.*    /index.html    [R]
DocumentRoot   /var/www/downtime</pre>
</li>
<li>run the rsync script.</li>
<li>turn on all the daemons on your new instance.</li>
<li>add <code>/etc/hosts</code> records to the old box and update DNS with the Elastic IP.</li>
<li>change Apache on the old box to proxy to the new instance (so people will get the new site without having to wait for DNS to flush).
<pre>ProxyPreserveHostÂ Â  On
ProxyPassÂ Â          /Â Â  http://www.barneyb.com/
ProxyPassReverseÂ Â Â  /Â Â  http://www.barneyb.com/</pre>
<p>These directives are why you need the rules in <code>/etc/hosts</code>, otherwise you'll be in an endless proxy loop.Â  You'll need to tweak them slightly for your SSL vhost.Â  The ProxyPreserveHost directive is important so that the new instance still gets the original Host header, allowing it to serve from the proper virtual host.Â  This lets you proxy all your traffic with a single directive and still have it split by host on the new box.</li>
</ol>
<p>The net result was a nearly painless transition.Â  There was a bit of downtime during the rsync copy (I had to sync about 4GB of data), but only a few minutes.Â  Once the new box was populated and ready to go, the proxy rules allowed everyone to keep using the sites, even before DNS was fully propagated.Â  Now, a few hours later, the only traffic still going to my old box is from <code>Baiduspider/2.0; +http://www.baidu.com/search/spider.html</code>, whatever that is.Â  Hopefully it'll update it's DNS cache like a well-behaved spider should, but not according to my TTLs.Â  Hmph.</p>
<p>Steps 1-12 (the setup) took me about 4 hours to do for my box.Â  Just for reference, I host a couple Magnolia-backed sites, about 10 WordPress sites (including this one), a WordPressMU site, and a whole pile of CFML apps (all running within a single Railo).Â  I also host MySQL on the same box which everything uses for storage.Â  Steps 13-19 took about an hour, most of that being waiting for the rsync and then running through all the DNS changes (about 20 domains with between 1 and 10 records each).</p>
<p>And now I have extra RAM.Â  Which is a good thing.Â  I'm sure a few little bits and pieces will turn up broken over the next few days, but I'm quite happy with both the process and the result.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.barneyb.com/barneyblog/2011/09/28/migration-complete/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Need A Job?</title>
		<link>https://www.barneyb.com/barneyblog/2011/05/26/do-you-need-a-job/</link>
		<comments>https://www.barneyb.com/barneyblog/2011/05/26/do-you-need-a-job/#comments</comments>
		<pubDate>Thu, 26 May 2011 23:54:11 +0000</pubDate>
		<dc:creator>barneyb</dc:creator>
				<category><![CDATA[coldfusion]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://www.barneyb.com/barneyblog/?p=1695</guid>
		<description><![CDATA[I have a need.Â  A pressing need.Â  I need new coworkers.Â  Three of them.
Boring stuff first.Â  Mentor Graphics Corp is the EDA industry leader and makes all kinds of crazy design and simulation software for electrical engineers, and now embedded developers.Â  If you have a cell phone or a computer, it's almost guaranteed that you're [...]]]></description>
			<content:encoded><![CDATA[<p>I have a need.Â  A pressing need.Â  I need new coworkers.Â  Three of them.</p>
<p>Boring stuff first.Â  Mentor Graphics Corp is the EDA industry leader and makes all kinds of crazy design and simulation software for electrical engineers, and now embedded developers.Â  If you have a cell phone or a computer, it's almost guaranteed that you're using something which either embeds Mentor IP or was designed/tested/manufactured with the help of Mentor products.Â  The company is about a billion dollars in annual revenue and publicly traded.Â  Our team is currently seven application developers plus a designer, a  front-end developer, a multimedia guy, a content editor, and a couple of  operations people.Â  Plus Ron, our boss.Â  We're hiring three more  application developers.Â  The positions are full-time, on-site, in  Wilsonville OR.Â  Blah, blah, blah.</p>
<p>I work in the corporate marketing department (which is weird, but bear with me) on the web services team which is responsible for pretty much all the public-facing web infrastructure for the company.Â  <a href="http://www.mentor.com/">www.mentor.com</a> is the primary property, but we run the support portal, an internal business intelligence application, corporate blog hosting, and a couple industry journal sites.Â  We own everything that comes after the business requirements; divisions in the company come to us with business problems, and we spec, architect, implement, and host the solutions.Â  Despite the fact we're in the marketing department, IT comes to us for expertise.Â  Our primary platform is Adobe ColdFusion, but we support Groovy, Java,  PHP, and Python for different applications where there was a compelling case to not choose a CFML-based solution.</p>
<p>Now the interesting stuff.</p>
<p>There is a formal job description somewhere, but I don't know where, and I wouldn't link to it even if I did.Â  If you want to work here, you need two things:</p>
<ul>
<li>technical competence</li>
<li>a passion for development</li>
</ul>
<p>We expect you to be able to not only implement a spec, but also design solutions.Â  You shouldn't have to be reminded that not everyone speaks English and that clocks around the world don't all say the same time.Â  You should know why pure functional languages don't have <tt>synchronized</tt> blocks.Â  You should have a preference between <tt>emacs</tt> and <tt>vi</tt> and be able to articulate in two sentences or less.Â  You should have commits to some public VCS repository somewhere.Â  You want to be part of a large non-hierarchical team working on a variety of projects.Â  You should know what MVCC stands for without looking it up.Â  You should want to help the six-months-from-now you have less pain, even if it takes a little more work today.Â  You shouldn't be proficient in all of Java, C#, JavaScript, Python, Ruby, and Lisp.Â  You should be proficient in at least one of them, and be competent in at least one more, and be able to compare and contrast the merits of the rest.</p>
<p>If that sounds like you, drop me an email at barney_boisvert@mentor.com or bboisvert@gmail.com.Â  Ron wants a resume, but I want two paragraphs and ~30 lines of interesting code.Â  Not 40, not 20.</p>
<p>Our hiring process is straightforward: get your info, quick mini-interview via phone, a simple code test, and an on-site interview to  meet the team.Â  Mentor pays competitively, and has exceptional benefits  beyond the salary.Â  Positions are full time, relocation assistance is  likely available if you're not in the area &#8211; working remote is not an option.Â  Ron is very reasonable: if  you're the right person, he'll go to bat for you/him/me to ensure things  work.Â  Everyone here understands that spending a little cash to get the right people pays off every time.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.barneyb.com/barneyblog/2011/05/26/do-you-need-a-job/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Myths about Introverts</title>
		<link>https://www.barneyb.com/barneyblog/2011/05/17/myths-about-introverts/</link>
		<comments>https://www.barneyb.com/barneyblog/2011/05/17/myths-about-introverts/#comments</comments>
		<pubDate>Tue, 17 May 2011 19:42:52 +0000</pubDate>
		<dc:creator>barneyb</dc:creator>
				<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://www.barneyb.com/barneyblog/?p=1686</guid>
		<description><![CDATA[Myth #1 â€“ Introverts donâ€™t like to talk.
This is  not true. Introverts just donâ€™t talk unless they have something to say.  They hate small talk. Get an introvert talking about something they are  interested in, and they wonâ€™t shut up for days.
Myth #2 â€“ Introverts are shy.
Shyness has nothing  to do [...]]]></description>
			<content:encoded><![CDATA[<p style="padding-left: 30px;"><strong>Myth #1 â€“ Introverts donâ€™t like to talk</strong>.<br />
This is  not true. Introverts just donâ€™t talk unless they have something to say.  They hate small talk. Get an introvert talking about something they are  interested in, and they wonâ€™t shut up for days.</p>
<p style="padding-left: 30px;"><strong>Myth #2 â€“ Introverts are shy.</strong><br />
Shyness has nothing  to do with being an Introvert. Introverts are not necessarily afraid of  people. What they need is a reason to interact. They donâ€™t interact for  the sake of interacting. If you want to talk to an Introvert, just  start talking. Donâ€™t worry about being polite.</p>
<p style="padding-left: 30px;"><strong>Myth #3 â€“ Introverts are rude</strong>.<br />
Introverts often  donâ€™t see a reason for beating around the bush with social pleasantries.  They want everyone to just be real and honest. Unfortunately, this is  not acceptable in most settings, so Introverts can feel a lot of  pressure to fit in, which they find exhausting.</p>
<p style="padding-left: 30px;"><strong>Myth #4 â€“ Introverts donâ€™t like people</strong>.<br />
On the  contrary, Introverts intensely value the few friends they have. They can  count their close friends on one hand. If you are lucky enough for an  introvert to consider you a friend, you probably have a loyal ally for  life. Once you have earned their respect as being a person of substance,  youâ€™re in.</p>
<p style="padding-left: 30px;"><strong>Myth #5 â€“ Introverts donâ€™t like to go out in public</strong>.<br />
Nonsense.  Introverts just donâ€™t like to go out in public FOR AS LONG. They also  like to avoid the complications that are involved in public activities.  They take in data and experiences very quickly, and as a result, donâ€™t  need to be there for long to â€œget it.â€ Theyâ€™re ready to go home,  recharge, and process it all. In fact, recharging is absolutely crucial  for Introverts.</p>
<p style="padding-left: 30px;"><strong>Myth #6 â€“ Introverts always want to be alone</strong>.<br />
Introverts  are perfectly comfortable with their own thoughts. They think a lot.  They daydream. They like to have problems to work on, puzzles to solve.  But they can also get incredibly lonely if they donâ€™t have anyone to  share their discoveries with. They crave an authentic and sincere  connection with ONE PERSON at a time.</p>
<p>Reading through these was quite remarkable.Â  Clear, concise, precise, and accurate.</p>
<p>From <a href="http://suzywire.tumblr.com/">http://suzywire.tumblr.com/</a> (and deliberately truncated at six).</p>
]]></content:encoded>
			<wfw:commentRss>https://www.barneyb.com/barneyblog/2011/05/17/myths-about-introverts/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>cf.objective: Replace Your Iron With a Cloud</title>
		<link>https://www.barneyb.com/barneyblog/2011/05/13/cf-objective-replace-your-iron-with-a-cloud/</link>
		<comments>https://www.barneyb.com/barneyblog/2011/05/13/cf-objective-replace-your-iron-with-a-cloud/#comments</comments>
		<pubDate>Fri, 13 May 2011 19:50:01 +0000</pubDate>
		<dc:creator>barneyb</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://www.barneyb.com/barneyblog/?p=1671</guid>
		<description><![CDATA[My second talk from cf.objective 2011 is currently underway: Replace Your Iron With a Cloud.Â  Again, a slides-only presentation which you can get either as PPTX or PDF.
]]></description>
			<content:encoded><![CDATA[<p>My second talk from cf.objective 2011 is currently underway: Replace Your Iron With a Cloud.Â  Again, a slides-only presentation which you can get either as <a href="http://www.barneyb.com/barneyblog/wp-content/uploads/2011/05/slides1.pptx">PPTX</a> or <a href="http://www.barneyb.com/barneyblog/wp-content/uploads/2011/05/slides1.pdf">PDF</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.barneyb.com/barneyblog/2011/05/13/cf-objective-replace-your-iron-with-a-cloud/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>cf.objective: Progressive Enhancement</title>
		<link>https://www.barneyb.com/barneyblog/2011/05/12/cf-objective-progressive-enhancement/</link>
		<comments>https://www.barneyb.com/barneyblog/2011/05/12/cf-objective-progressive-enhancement/#comments</comments>
		<pubDate>Thu, 12 May 2011 16:20:34 +0000</pubDate>
		<dc:creator>barneyb</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://www.barneyb.com/barneyblog/?p=1666</guid>
		<description><![CDATA[For those of you following along at home, I'm current presenting on Progressive Enhancement at cf.objective 2011.Â  This presentation is slides-only, and I've made them available as both PPTX and PDF if you want to take a look.
]]></description>
			<content:encoded><![CDATA[<p>For those of you following along at home, I'm current presenting on Progressive Enhancement at cf.objective 2011.Â  This presentation is slides-only, and I've made them available as both <a href="http://www.barneyb.com/barneyblog/wp-content/uploads/2011/05/slides.pptx">PPTX</a> and <a href="http://www.barneyb.com/barneyblog/wp-content/uploads/2011/05/slides.pdf">PDF</a> if you want to take a look.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.barneyb.com/barneyblog/2011/05/12/cf-objective-progressive-enhancement/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>cf.objective Tomorrow!</title>
		<link>https://www.barneyb.com/barneyblog/2011/05/10/cf-objective-tomorrow/</link>
		<comments>https://www.barneyb.com/barneyblog/2011/05/10/cf-objective-tomorrow/#comments</comments>
		<pubDate>Tue, 10 May 2011 22:33:41 +0000</pubDate>
		<dc:creator>barneyb</dc:creator>
				<category><![CDATA[cfml]]></category>
		<category><![CDATA[coldfusion]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://www.barneyb.com/barneyblog/?p=1661</guid>
		<description><![CDATA[Tomorrow I'll be in Minneapolis for the 2011 iteration of cf.objective.Â  If you've looked at the schedule, you'll know I'm speaking twice: one about progressive enhancement first thing Thursday morning after the keynote, and again Friday right after lunch about migrating your apps to the cloud.Â  You'll also know that there are a hell of [...]]]></description>
			<content:encoded><![CDATA[<p>Tomorrow I'll be in Minneapolis for the 2011 iteration of <a href="http://www.cfobjective.com/">cf.objective</a>.Â  If you've looked at the schedule, you'll know I'm speaking twice: one about progressive enhancement first thing Thursday morning after the keynote, and again Friday right after lunch about migrating your apps to the cloud.Â  You'll also know that there are a hell of a lot of good sessions, so I'm really excited about it.</p>
<p>As is often the case with internet folks, I know a whole lot of people by name and/or handle, but far fewer in person.Â  So if you see me &#8211; I'm the tall, furry guy who isn't Andy Matthews &#8211; please say hello.Â  And as if you didn't need even more incentive, the company I work (Mentor Graphics Corp) for is currently looking to hire a couple more full-time developers out in beautiful Portland, OR.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.barneyb.com/barneyblog/2011/05/10/cf-objective-tomorrow/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Quadrilla</title>
		<link>https://www.barneyb.com/barneyblog/2010/12/21/quadrilla/</link>
		<comments>https://www.barneyb.com/barneyblog/2010/12/21/quadrilla/#comments</comments>
		<pubDate>Wed, 22 Dec 2010 07:48:07 +0000</pubDate>
		<dc:creator>barneyb</dc:creator>
				<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://www.barneyb.com/barneyblog/?p=1604</guid>
		<description><![CDATA[If you don't know, Quadrilla is a simple modular wooden marble run.  The kids spent much of the day running marbles through a couple of the instructions-included models.  Not just one at a time either; the only thing constraining the number of marbles running at any given time was the speed which they could pick [...]]]></description>
			<content:encoded><![CDATA[<p>If you don't know, <a ="http://www.quadrilla.com/">Quadrilla</a> is a simple modular wooden marble run.  The kids spent much of the day running marbles through a couple of the instructions-included models.  Not just one at a time either; the only thing constraining the number of marbles running at any given time was the speed which they could pick them up off the floor and the number they could hold in their hands.  I'd wager max concurrency at somewhere around 70 marbles.  The kids are obviously fascinated by making the marbles go all crazy, but after knocking down the first setup, their attempts at building one on their own were quickly abandoned.  I cracked open the instructions and built another model, and they kept playing.</p>
<p>After they were in bed, however, I thought I'd try my hand at building a totally custom model.  You remember when I said "simple" earlier?  I was <em>totally</em> lying.  The rules for construction are incredibly simple, but the complexity enforced by the modules themselves is rather high.  It seems like there is a lot of flexibility with the different blocks, but while that's not inaccurate, the flexibility is within a world of draconian constraints.</p>
<p>Anyway, after 83 test marbles over the course of about an hour and a half, I managed to assemble a model that I'm reasonably pleased with.  I had a few design goals  in mind from the get-go:</p>
<ol>
<li>must have a single marble entry</li>
<li>must have a single marble exit</li>
<li>must use the 90° flip-flop (none of the instructions-provided models did)</li>
<li>must use a bunch of 180° flip-flops</li>
<li>every bit of raceway must be reachable (no dead or partially dead segments)</li>
<li>no bit of raceway may be reshared after splitting (all the instructions-provided models rejoined before resplitting)</li>
<li>minimize the number of test runs (both the kids and my parents was already asleep)</li>
</ol>
<p>The 90° flip-flop was a pain in the butt to use, but that's mostly due to the fact that the set I was using was the Twist set, so the segments were all curves.  If the segments were linear (as in the Rail set), it probably would have been easier.  I only used two 180° flip-flops for their intended purposes (the rest served as "dumb" support blocks in the unused levels of the columns).  I'd hoped to use more, but goal #6 prevented it with the pieces I had available.</p>
<p>I won't know until morning if I succeeded at #7, but I think I did.  At the very least, I wasn't louder than the howling winds outside.</p>
<p>The trickiest part was managing vertical space while still meeting goal #6.  I managed to only have two columns with three layers of "dead" modules, and one of those was just so I could use the second helix (spiral, frying pan, whatever) as a launch point.  The module which would have made it far easier would have been a <em>vertical</em> 90° flip-flop, but there is no such thing.</p>
<p>Overall, however, I managed to build what I'd hoped to.  After the first fifteen or twenty minutes, I wasn't so sure I was going to be able to pull it off.  It seemed like everything I wanted to do wasn't allowed by the modules available.  But I managed to figure out how to solve the problems other ways, or at least reroute to avoid the problems, and got it done.</p>
<p>Here's a few pictures I took of the finished product:</p>
<p><a href="http://www.barneyb.com/barneyblog/wp-content/uploads/2010/12/IMG_01891.jpg"><img class="size-thumbnail wp-image-1608 alignright" title="front" src="http://www.barneyb.com/barneyblog/wp-content/uploads/2010/12/IMG_01891-150x150.jpg" alt="" width="150" height="150" /></a>This is the front of the model.  The marble exit is the green module at the center of the bottom curved section.  Since there are four paths, there are four ways to get to that block: from the left, from the right, from the helix, and from the raceway that ends under the helix.  The first natural module above the exit module is shared between routes three and four, but it's not raceway, so it doesn't violate goal #6.</p>
<p>The exist was the first bit I threw together.  I liked the concavity, so I kept it.  It was a pain to maintain that arrangement as I got further along, but I got it to work.  It also makes for a nice pile of marbles in that cavity after you run a bunch through.</p>
<p>You can see all three flip-flops here as well: the two 180° flip-flops are the red modules with the large grey dots (center-center and right-rear columns), and then 90° flip-flop is the red module spitting out onto the lower helix.</p>
<p>You'll also notice the purple spacers in the center-center and center-front columns &#8211; they could have been placed below the lower helix in both columns without interfering with any raceways and avoid the unnecessary two-plate drop out the front of the 90° flip-flop (there would still be a one-plate drop).  As you'll see in the left-side photo, it would also have allowed me to use a module in the center-center column instead of five spacer place.  But by the time I had it all working, I didn't really want to tear it apart enough to make that change.</p>
<p><a href="http://www.barneyb.com/barneyblog/wp-content/uploads/2010/12/IMG_01871.jpg"><img class="size-thumbnail wp-image-1606 alignleft" title="left side" src="http://www.barneyb.com/barneyblog/wp-content/uploads/2010/12/IMG_01871-150x150.jpg" alt="" width="150" height="150" /></a>The left side of model shows route four (the raceway under the lower helix) better.  It originates in the right-rear column, and passes through the center-center column.</p>
<p>Marbles are introduced in the uppermost module, and all go through the first helix.  Exiting the helix they hit the first 180° flip-flop and are either routed to the right side (more later), or sent through a short out-n-back to come to the 90° flip-flop and either be sent to the lower helix or out to the left side to run the serpentine race to the front and exit.</p>
<p><a href="http://www.barneyb.com/barneyblog/wp-content/uploads/2010/12/IMG_01861.jpg"><img class="size-thumbnail wp-image-1605 alignright" title="right side" src="http://www.barneyb.com/barneyblog/wp-content/uploads/2010/12/IMG_01861-150x150.jpg" alt="" width="150" height="150" /></a>The right side has the second 180° flip-flop which either sends marbles along the right-side serpentine race to the front, or through another short out-n-back to the center-rear column before sending them through the central raceway to exit beneath the lower helix.</p>
<p>You can clearly see all three flip-flops from this view as well, though the 90° one just looks like a plain red module (other than the accelerator at it's front).</p>
<p>The final view of the back isn't terribly exciting aside from giving a <a href="http://www.barneyb.com/barneyblog/wp-content/uploads/2010/12/IMG_01881.jpg"><img class="size-thumbnail wp-image-1607 alignleft" title="back" src="http://www.barneyb.com/barneyblog/wp-content/uploads/2010/12/IMG_01881-150x150.jpg" alt="" width="150" height="150" /></a>better perspective on where exactly the right-rear, center-rear, and left-rear columns are in relation to one another.</p>
<p>Interestingly, the center-rear column (closest to the camera) is completely floating.  It has a single anchor point: the right-rear column.  However, it's geometry is rigidly enforced by the 180° flip-flop that feeds it.  So it has to be pretty much exactly where it is.  I'd originally hoped to have the short out-n-back that it provides go all the way over to the left-rear column (eliminating the need for a center-rear column at all), but I couldn't interleave the two out-n-backs without that aforementioned vertical 90° flip-flop.</p>
<p>The rest of the structure is locked in it's relative arrangement because of the incompatibility of the large curved segments and the serpentine segments to mutually realign their vertices.  If the lower exit raceway (right-rear to center-front) wasn't there, then the whole thing could pivot (as it'd be basically a parallelogram), but that raceway locks a triangle into one of the corners, thereby locking the whole structure.</p>
<p>Here's to spiked eggnog and an evening playing with toys!  Happy Christmas, or whatever you're celebrating as this year draws to a close.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.barneyb.com/barneyblog/2010/12/21/quadrilla/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Return of the Das Keyboard</title>
		<link>https://www.barneyb.com/barneyblog/2010/10/27/return-of-the-das-keyboard/</link>
		<comments>https://www.barneyb.com/barneyblog/2010/10/27/return-of-the-das-keyboard/#comments</comments>
		<pubDate>Wed, 27 Oct 2010 20:58:48 +0000</pubDate>
		<dc:creator>barneyb</dc:creator>
				<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://www.barneyb.com/barneyblog/?p=1602</guid>
		<description><![CDATA[About a year and half ago I got a Das Keyboard Ultimate for work, but immediately had some major issues using it.Â  Fortunately, the 10-year-old keyboard it was replacing wasn't completely unusable, so I just switched back.Â  That keyboard finally gave up the ghost a couple weeks ago, unfortunately, so I was stuck with the [...]]]></description>
			<content:encoded><![CDATA[<p>About a year and half ago I got a <a href="http://www.daskeyboard.com/model-s-ultimate/">Das Keyboard Ultimate</a> for work, but immediately had <a href="http://www.barneyb.com/barneyblog/2009/05/12/das-most-disappointing-keyboard/">some major issues using it</a>.Â  Fortunately, the 10-year-old keyboard it was replacing wasn't completely unusable, so I just switched back.Â  That keyboard finally gave up the ghost a couple weeks ago, unfortunately, so I was stuck with the Das Keyboard.Â  And even though they say it'll work across a PS/2 adapter (though not the built-in USB hub, of course), I couldn't get my machine to recognize it through PS/2.Â  Not sure what the issue is there.</p>
<p>After a couple weeks, I've actually adapted most of the common "scan-inverse pairs" and type them more slowly to avoid errors.Â  Unfortunately, there are a lot of such pairs, and some of them occur fairly infrequently (e.g., "oa").Â  So I still have a lot of screwups with the infrequent ones, but the common ones (e.g., "th") have been addressed with muscle memory.Â  Kind of pisses me off my "ultimate" keyboard has trained my muscles to type <em>sssllllooooowwwwweeerrrr</em> instead of faster.Â  But whatever.Â  Probably the most damning inversion, however, is due to BACKSPACE being late in the scan order.Â  So if you have a one-character typo and hit  BACKSPACE followed by the correct character (especially a left hand character) in rapid succession,  it almost invariably types the new character first and immediately  deletes it, leaving the typo untouched.Â  Arrrgh.</p>
<p>I've also noticed a suprising amount of wear on the keys for a couple  weeks usage.Â  The spacebar has already completely lost it's texture  along the bottom edge and the letters (especially the home row) are  noticeably polished.Â  Same for BACKSPACE (which I end up using a lot  now), ENTER, and the left-side SHIFT, CTRL, and ALT keys.</p>
<p>On the positive, the action is really nice.Â  I'm a fan.Â  I think the weighting of the keys is a little light, but I type hard.Â  The keyboard as a whole is also really heavy so it doesn't slide around on my desk, particularly when my right hand is dancing around between letters, the numeric keypad, and the arrow keys.</p>
<p>Their site says that they've redone the electronics to not have such issues with concurrency, so hopefully that's true.Â  It looks like they may have also reved their switches, which probably will change the action to some degree, as well as making a less clicky version available.Â  I'm certainly not going to spend $130 for a next gen version without getting to test drive the new hardware first, but in the meantime I'll probably keep using this one.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.barneyb.com/barneyblog/2010/10/27/return-of-the-das-keyboard/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Tulsa CFUG Presentation (CFGroovy)</title>
		<link>https://www.barneyb.com/barneyblog/2010/05/26/tulsa-cfug-cfgroovy/</link>
		<comments>https://www.barneyb.com/barneyblog/2010/05/26/tulsa-cfug-cfgroovy/#comments</comments>
		<pubDate>Wed, 26 May 2010 15:35:35 +0000</pubDate>
		<dc:creator>barneyb</dc:creator>
				<category><![CDATA[cfml]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://www.barneyb.com/barneyblog/?p=1526</guid>
		<description><![CDATA[Yesterday I presented CFGroovy to the Tulsa CFUG via Connect.Â  The recording is now available on Connect, thanks to Steve.Â  You can also grab the slidedeck (as a PDF) I skimmed through, and of course, the CFGroovy framework itself (project page, core SVN, demo SVN), including the demo files that I showed. Â Note that the [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday I presented CFGroovy to the Tulsa CFUG via Connect.Â  The recording is now <a href="http://adobechats.adobe.acrobat.com/p20888993/">available on Connect</a>, thanks to Steve.Â  You can also grab the <a href="http://www.barneyb.com/barneyblog/wp-content/uploads/2010/04/Polyglot_Programming.pdf">slidedeck (as a PDF)</a> I skimmed through, and of course, the CFGroovy framework itself (<a href="http://www.barneyb.com/barneyblog/projects/cfgroovy2/">project page</a>, <a href="https://ssl.barneyb.com/svn/barneyb/cfgroovy2/trunk/engine/">core SVN</a>, <a href="https://ssl.barneyb.com/svn/barneyb/cfgroovy2/trunk/demo/">demo SVN</a>), including the demo files that I showed. Â Note that the slidedeck is actually titled 'Polyglot Programming' and served as an introduction as to <em>why</em> you might want to use Groovy (or another language) before delving into <em>how</em> you'd actually do it.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.barneyb.com/barneyblog/2010/05/26/tulsa-cfug-cfgroovy/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
