<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Seven steps</title>
    <link>http://blog.trevoke.net/</link>
    <description>Recent content on Seven steps</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Sun, 13 Apr 2025 21:12:27 -0400</lastBuildDate>
    <atom:link href="http://blog.trevoke.net/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>GenAI Is a Power Tool — Don’t Use It Like a Crutch</title>
      <link>http://blog.trevoke.net/post/using-genai-without-losing-your-critical-thinking-skills/</link>
      <pubDate>Sun, 13 Apr 2025 21:12:27 -0400</pubDate>
      <guid>http://blog.trevoke.net/post/using-genai-without-losing-your-critical-thinking-skills/</guid>
      <description>&lt;div id=&#34;outline-container-headline-1&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-1&#34;&gt;&#xA;You&amp;#39;re knee-deep in a sprint.&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-1&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;p&gt;A teammate is out sick. Product wants the filtering module updated by EOD. You’re juggling two different refactors and a Slack thread that just won’t die. You think:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;“I’ll just ask ChatGPT for the price filtering logic — it’ll save me an hour.”&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;&#xA;Fast forward: the code runs, the tests pass. Ship it.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;A week later, someone opens a defect. Turns out the AI-generated logic doesn&amp;#39;t account for tiered discounts already applied upstream in the pricing engine. Nobody caught it in review — you assumed it “looked right.” The system is now fragile in a new place, and no one owns the debt.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Agile and lean art delivery</title>
      <link>http://blog.trevoke.net/post/agile-and-lean-art-delivery/</link>
      <pubDate>Sat, 05 Sep 2020 10:26:00 -0400</pubDate>
      <guid>http://blog.trevoke.net/post/agile-and-lean-art-delivery/</guid>
      <description>&lt;p&gt;&#xA;I&amp;#39;ve been helping teams and organizations improve their approach to agile and lean delivery for a decade now, and by far one of the most difficult things to wrap one&amp;#39;s head around is the idea of iterative delivery of value. I don&amp;#39;t know about you, but I&amp;#39;m tired of these various hypothetical images depicting what agile delivery is supposed to look like. Is it a skateboard that becomes a car? Is it a tree swing? Fortunately, I came across a real-world example, and it&amp;#39;s actually images! It&amp;#39;s wonderful because you can literally &lt;strong&gt;see&lt;/strong&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Slack time explained</title>
      <link>http://blog.trevoke.net/post/slack-time-explained/</link>
      <pubDate>Mon, 18 Nov 2019 18:10:10 -0500</pubDate>
      <guid>http://blog.trevoke.net/post/slack-time-explained/</guid>
      <description>&lt;div id=&#34;outline-container-headline-1&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-1&#34;&gt;&#xA;What problem are we trying to solve?&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-1&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;p&gt;You&amp;#39;re a software product team. Your job is to steadily deliver working product. Generally this means there&amp;#39;s two types of work you&amp;#39;re going to do:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Work that directly correlates to delivering value to the customer&lt;/li&gt;&#xA;&lt;li&gt;Work that directly correlates to the ability to keep on delivering value at the same pace&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;In &amp;#34;agile&amp;#34; terminology, those categories are labeled, respectively, &amp;#34;stories&amp;#34; and &amp;#34;tech debt&amp;#34;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>GenStage demystified</title>
      <link>http://blog.trevoke.net/post/genstage_demystified/</link>
      <pubDate>Sun, 23 Jun 2019 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/genstage_demystified/</guid>
      <description>&lt;p&gt;&#xA;GenStage is a miracle of UX for developers. There&amp;#39;s only one catch: because of its purpose, it&amp;#39;s built for the machine, not for the developer. Let&amp;#39;s go over what GenStage is for, and see just how simple it is to start using it.&lt;/p&gt;&#xA;&lt;div id=&#34;outline-container-headline-1&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-1&#34;&gt;&#xA;Why would you use GenStage?&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-1&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;p&gt;&#xA;GenStage is what you would use if you had &amp;#34;some work&amp;#34; (&lt;code class=&#34;verbatim&#34;&gt;events&lt;/code&gt;) that needed to go through one or more transformations, which you could easily split into multiple parallelizable steps.&#xA;In the world of GenStage, the &lt;code class=&#34;verbatim&#34;&gt;producer&lt;/code&gt; is what will hold the &lt;code class=&#34;verbatim&#34;&gt;events&lt;/code&gt; that the &lt;code class=&#34;verbatim&#34;&gt;consumers&lt;/code&gt; will then work on.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Choosing the right editor</title>
      <link>http://blog.trevoke.net/post/import-choosing-the-right-editor/</link>
      <pubDate>Sat, 08 Jun 2019 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-choosing-the-right-editor/</guid>
      <description>&lt;div id=&#34;outline-container-headline-1&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-1&#34;&gt;&#xA;Choosing the right editor&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-1&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;div id=&#34;outline-container-headline-2&#34; class=&#34;outline-3&#34;&gt;&#xA;&lt;h3 id=&#34;headline-2&#34;&gt;&#xA;Intro: My editor history&#xA;&lt;/h3&gt;&#xA;&lt;div id=&#34;outline-text-headline-2&#34; class=&#34;outline-text-3&#34;&gt;&#xA;&lt;p&gt;&#xA;Here are my &amp;#34;credentials&amp;#34;. You know, establishing why you should be reading this at all.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;When it comes to editors, I&amp;#39;ve honestly fumbled around quite a bit in the past fifteen years or so. I had not encountered an editor until some dude taught my Comp Sci 6/9 class and straight-up went to the GNU webpage and downloaded emacs for Windows. That looked really badass. Unfortunately I had no idea how to use it, so I stuck to whatever C++ IDE I was using for my homework.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The first step in learning any new programming language</title>
      <link>http://blog.trevoke.net/post/learn-a-new-prog/</link>
      <pubDate>Thu, 06 Jun 2019 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/learn-a-new-prog/</guid>
      <description>&lt;p&gt;&#xA;Part of being a professional programmer is learning new languages (seriously — past a certain point, you should be fluent in a couple of languages, but that&amp;#39;s another blog post), and part of being a good programmer is being effective at doing so. The very first step in learning a new language is being able to write some code with it. Further steps usually involve mastering the syntax as well as whatever new paradigms the language may throw at you, BUT! If you are able to write some fundamental code with the language, then all other doors open to you, largely because it&amp;#39;s so much easier to understand all other resources.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Maintainability Is Relative</title>
      <link>http://blog.trevoke.net/post/maintainability-is-relative/</link>
      <pubDate>Sun, 23 Oct 2016 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/maintainability-is-relative/</guid>
      <description>&lt;p&gt;&#xA;I just found a great example of the variability of the need of creating maintainable code.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;Somewhere around 2006, I created a script that posts to the Livejournal community &lt;span style=&#34;text-decoration: underline;&#34;&gt;daily_tao&lt;/span&gt; a new chapter of the Tao Te Ching every day. Today in 2016, I had a need to look for the script, the second time in maybe the last eight years that I had to look at it.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;I temporarily wasn&amp;#39;t sure of where that script was. I remembered it was running off of a cronjob, so… Some machine with a *nix-like OS. Then I remembered and found it. I&amp;#39;m going to offer two versions of the code to you: the one that is in the cronjob, and .. A rewrite that I never deleted (and now of course, I have no idea why I never did).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Benefits of a rapid test suite</title>
      <link>http://blog.trevoke.net/post/benefits-of-a-rapid-test-suite/</link>
      <pubDate>Mon, 18 Apr 2016 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/benefits-of-a-rapid-test-suite/</guid>
      <description>&lt;div id=&#34;outline-container-headline-1&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-1&#34;&gt;&#xA;The value of a rapid test suite&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-1&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;div id=&#34;outline-container-headline-2&#34; class=&#34;outline-3&#34;&gt;&#xA;&lt;h3 id=&#34;headline-2&#34;&gt;&#xA;Developers and codebases&#xA;&lt;/h3&gt;&#xA;&lt;div id=&#34;outline-text-headline-2&#34; class=&#34;outline-text-3&#34;&gt;&#xA;&lt;p&gt;&#xA;The bare minimum required of a developer is &amp;#34;make this change without breaking anything else in the code&amp;#34;, and if you&amp;#39;ve been around software development for any period of time, you know that&amp;#39;s harder than it seems.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;Most of the time that a developer spends on any given codebase is spent on an existing codebase, adding new features on top of existing code.&#xA;The understanding of the core domain and/or the early code remains mostly intellectual and abstract, not based on really reading and understanding the code.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Why Elixir is the next Great Tech</title>
      <link>http://blog.trevoke.net/post/elixir/</link>
      <pubDate>Thu, 31 Mar 2016 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/elixir/</guid>
      <description>&lt;div id=&#34;outline-container-headline-1&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-1&#34;&gt;&#xA;Elixir, because:&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-1&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;p&gt;&#xA;I think of Elixir as an idea whose time has come; or rather, a great gathering of ideas.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Erlang has solved the problem of distributed computing (and therefore, of concurrency) decades ago, and now concurrency is a very desirable tool, as the amount of data we crunch regularly has increased exponentially.&lt;/li&gt;&#xA;&lt;li&gt;TDD has brought a more functional approach to a lot code, and that is the paradigm Elixir espouses.&lt;/li&gt;&#xA;&lt;li&gt;Elixir takes all of the syntax niceness from Ruby, so it&amp;#39;s pretty and easy to read.&lt;/li&gt;&#xA;&lt;li&gt;Elixir makes OTP incredibly convenient to use, which means that one is able to create and communicate with processes with concise and expressive code.&lt;/li&gt;&#xA;&lt;li&gt;Elixir&amp;#39;s Phoenix Framework makes both stateless (traditional request/response) and stateful (anything from long-polling to websockets) connections very simple to use, by providing powerful abstractions based on OTP. The code remains readable.&lt;/li&gt;&#xA;&lt;li&gt;The websocket connections are easy to set up and easy to scale, maintaining a single state via the socket: a tempting idea for folks using the Flux architecture in the front-end.&lt;/li&gt;&#xA;&lt;li&gt;Elixir&amp;#39;s Phoenix Framework takes from all the lessons of Rails and Javascript of the past decade and has created a testable, maintainable, and extendable web MVC framework that in reality, is just another OTP application.&lt;/li&gt;&#xA;&lt;li&gt;As we depend more and more on external services (API, either internal or external), fault tolerance becomes top-of-mind when building robust systems. This is another problem Erlang solved years ago through supervisors and managing how to handle failures.&lt;/li&gt;&#xA;&lt;li&gt;Elixir/OTP allows for incredible uptime by letting you write code in such a way you can actually do hot reloading.&lt;/li&gt;&#xA;&lt;li&gt;Elixir is one of the few non-lisp languages to implement real macros. This allows you to create your own domain language in your code should you need it.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;As we move more towards microservices, and given that a microservice is the unit of thought in Elixir (an OTP app is just a service that can receive messages, send messages, and hold state), it will become a de-facto choice, because it is a superior abstraction to the existing options.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The value of estimates for a team</title>
      <link>http://blog.trevoke.net/post/the-value-of-estimates-for-a-team/</link>
      <pubDate>Thu, 02 Apr 2015 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/the-value-of-estimates-for-a-team/</guid>
      <description>&lt;div id=&#34;outline-container-headline-1&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-1&#34;&gt;&#xA;What this entry is and is not about&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-1&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;p&gt;&#xA;This entry talks about estimates in a relatively perfect world. This entry does &lt;em&gt;not&lt;/em&gt; talk about problems that teams run into when dealing with estimates in a world where estimates are often misunderstood and where parties try to pile up additional meanings and metrics to estimates.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;outline-container-headline-2&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-2&#34;&gt;&#xA;Why talk about estimating at all&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-2&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;p&gt;Estimating work to be done before it is done. Great if you know what the work is. Software development teams often have no idea what the work really will be until they do it. Give a sculptor a block of wood and they&amp;#39;ll have to work carefully, as they uncover the imperfections within the wood. How long will it take to reveal a bust of Artemis drawing an arrow? The sculptor doesn&amp;#39;t really know beforehand.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The code showed that I understood a wall existed</title>
      <link>http://blog.trevoke.net/post/code-i-understood-a-wall-existed/</link>
      <pubDate>Wed, 18 Mar 2015 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/code-i-understood-a-wall-existed/</guid>
      <description>&lt;p&gt;&#xA;Someone I worked with once said, &amp;#34;The code didn&amp;#39;t demonstrate that I hit a wall, just that I understood a wall existed.&amp;#34;&lt;/p&gt;&#xA;&lt;p&gt;&#xA;This colleague had been using the technique of Test-Driven Design (TDD) to methodically get the codebase up to a point where it could be refactorable and, at the same time, to a point where a problem with the current design decisions could surface.&#xA;He was happy because now that he was up to that point, the future decisions for the refactors were much more clear.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Lesson from emacs: keep data easy to manipulate and easy to present</title>
      <link>http://blog.trevoke.net/post/separate-manipulation-from-presentation/</link>
      <pubDate>Tue, 27 Jan 2015 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/separate-manipulation-from-presentation/</guid>
      <description>&lt;div id=&#34;outline-container-headline-1&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-1&#34;&gt;&#xA;Spreadsheets&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-1&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;p&gt;&#xA;Spreadsheets are evil. And do you know why? Because they&amp;#39;re too powerful. Here is the sweet spot of spreadsheets: &lt;strong&gt;tables of related data on which calculations need to be made&lt;/strong&gt;. Here is not the sweet spot of spreadsheets: &lt;strong&gt;everything else&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;Spreadsheet software is so powerful nowadays that you can make visualizations for almost anything. And some people are happy to spend a really long time creating and maintaing those, but I am WAY, WAY lazier than those people are. I&amp;#39;ve also learned that there was such a thing as the Single Responsibility Principle.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Shu ha ri and evolution of a skill</title>
      <link>http://blog.trevoke.net/post/import-shu-ha-ri-and-evolution-of-a-skill-publish/</link>
      <pubDate>Tue, 18 Feb 2014 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-shu-ha-ri-and-evolution-of-a-skill-publish/</guid>
      <description>&lt;p&gt;&#xA;Shu Ha Ri comes from the world of Japanese Noh theater, and has been since attached to the world of martial arts and &amp;lt;a title=&amp;#34;Alistair Cockburn&amp;#39;s words on Shu Ha Ri&amp;#34; href=&amp;#34;&lt;a href=&#34;http://alistair.cockburn.us/Shu+Ha+Ri&#34;&gt;http://alistair.cockburn.us/Shu+Ha+Ri&lt;/a&gt;&amp;#34;&amp;gt;Agile development&amp;lt;/a&amp;gt;. Roughly, &amp;#34;shu ha ri&amp;#34; means &amp;#34;learn / detach / transcend&amp;#34;. The link has some words about that meaning. I&amp;#39;d like to talk about my particular take on Shu Ha Ri, which came out of a parking-lot&#xA;conversation with a martial arts teacher friend of mine:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Learning and fear</title>
      <link>http://blog.trevoke.net/post/import-learning-and-fear-publish/</link>
      <pubDate>Mon, 18 Nov 2013 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-learning-and-fear-publish/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;“Life is going to present to you a series of transformations. And the point of education should be to transform you. To teach you how to be transformed so you can ride the waves as they come. But today, the point of education is not education. It’s accreditation. The more accreditation you have, the more money you make. That’s the instrumental logic of neoliberalism. And this instrumental logic comes wrapped in an envelope of fear. And my Ivy League, my MIT students are the same. All I feel coming off of my students is fear. That if you slip up in school, if you get one bad grade, if you make one fucking mistake, the great train of wealth will leave you behind. And that’s the logic of accreditation. If you’re at Yale, you’re in the smartest 1% in the world. […] And the brightest students in the world are learning in fear. I feel it rolling off of you in waves. But you can’t learn when you’re afraid. You cannot be transformed when you are afraid.”&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Litany Against Fear</title>
      <link>http://blog.trevoke.net/post/import-the-litany-against-fear-publish/</link>
      <pubDate>Mon, 18 Nov 2013 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-the-litany-against-fear-publish/</guid>
      <description>&lt;p&gt;&#xA;So, the litany against fear goes like this:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. And when it has gone past I will turn the inner eye to see its path. Where the fear has gone there will be nothing. Only I will remain.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;&#xA;And here&amp;#39;s my attempt at an interpretation of its meaning.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ruby is alive and well</title>
      <link>http://blog.trevoke.net/post/import-ruby-is-alive-and-well-publish/</link>
      <pubDate>Mon, 11 Nov 2013 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-ruby-is-alive-and-well-publish/</guid>
      <description>&lt;p&gt;&#xA;I&amp;#39;m back from Rubyconf.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;Some people say Ruby is dead. We can probably gloss over Zed Shaw&amp;#39;s famous &amp;lt;a title=&amp;#34;Zed Shaw&amp;#39;s famous rant on the Rails community&amp;#34; href=&amp;#34;&lt;a href=&#34;http://web.archive.org/web/20080103072111/http://www.zedshaw.com/rants/rails_is_a_ghetto.html&#34;&gt;http://web.archive.org/web/20080103072111/http://www.zedshaw.com/rants/rails_is_a_ghetto.html&lt;/a&gt;&amp;#34; target=&amp;#34;_blank&amp;#34;&amp;gt;rant&amp;lt;/a&amp;gt;, since it&amp;#39;s from roundabout 2007. My understanding is that the thought came about because of the many new trends in programming languages: first node, then Erlang&amp;#39;s comeback and the birth of Elixir. Evented programming, non-blocking IO, all the fancy buzzwords, and everyone craps on Ruby&amp;#39;s Global Interpreter Lock.&lt;/p&gt;</description>
    </item>
    <item>
      <title>First Class</title>
      <link>http://blog.trevoke.net/post/import-first-class-private/</link>
      <pubDate>Tue, 11 Jun 2013 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-first-class-private/</guid>
      <description>&lt;p&gt;&#xA;The first class went really well.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;My teaching tempo is still pretty good, though I did underestimate how much information I was giving the new students. Next time, I need to make sure I don&amp;#39;t overwhelm them, and keep them to a smaller set of basics.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;This feels right. I know it&amp;#39;s what I&amp;#39;m going to keep doing. Now I need to balance continued growth with proper teaching time. If I can do this twice a week, I&amp;#39;ll have a good next step. For now, the current step is, getting once a week solid.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sparring</title>
      <link>http://blog.trevoke.net/post/import-sparring-publish/</link>
      <pubDate>Wed, 15 May 2013 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-sparring-publish/</guid>
      <description>&lt;p&gt;&#xA;&amp;lt;h1&amp;gt;What Sparring Is&amp;lt;/h1&amp;gt;&#xA;Sparring is a playful and explorative interaction.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;Sparring is an exercise, a drill. The Japanese use the word KUMITE - which basically means &amp;#34;grouped hands&amp;#34; or &amp;#34;pair hands&amp;#34;, &amp;#34;joined hands&amp;#34;, &amp;#34;hands together&amp;#34; (the Wikipedia article suggests &amp;#34;grappling hands&amp;#34;).&lt;/p&gt;&#xA;&lt;p&gt;&#xA;Sparring is a two-person free-form exercise wherein you get to examine scenarios involving combinations, footwork, distancing, rhythm, controlled power, and focus to improve yourself and your partner.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;&amp;lt;!–more–&amp;gt;&lt;/p&gt;&#xA;&lt;p&gt;&#xA;&amp;lt;strong&amp;gt;Combinations&amp;lt;/strong&amp;gt;: you get to play first-hand with things you have learned and put them in an environment where there is no set response. You learn what the combination does and what it does not do. You get a feel for when to use it, when not to use it. You will also learn not to stop after a single strike. WOOHOO you got a strike in! So what? Get in another one and another one! Learn how to use feints and setups for your combinations.&lt;/p&gt;</description>
    </item>
    <item>
      <title>School creed</title>
      <link>http://blog.trevoke.net/post/import-school-creed-publish/</link>
      <pubDate>Sat, 27 Apr 2013 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-school-creed-publish/</guid>
      <description>&lt;p&gt;&#xA;In the dojo where I spent my formative years as a martial artist, there is a school creed. A quick search online has revealed that many schools have a similar creed. Every class says it as we begin, after bowing in, before calisthenics. I hear it and/or say it about three times per dojo night.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;It&amp;#39;s a simple creed, and clearly not unique. Here&amp;#39;s what it says:&lt;/p&gt;&#xA;&lt;p&gt;&#xA;&amp;lt;blockquote&amp;gt;I intend to develop myself in a positive manner&#xA;and avoid anything that would reduce my mental&#xA;growth or physical health.&#xA;I intend to develop self-discipline, in order to&#xA;bring out the best in myself and others.&#xA;I intend to use what I learn in class&#xA;constructively and defensively, to help myself&#xA;and others and never be abusive or offensive.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Add a user to the wheel group in OSX</title>
      <link>http://blog.trevoke.net/post/import-add-a-user-to-the-wheel-group-in-osx-publish/</link>
      <pubDate>Thu, 07 Feb 2013 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-add-a-user-to-the-wheel-group-in-osx-publish/</guid>
      <description>&lt;p&gt;&#xA;Why are these things always so weird? Someday I&amp;#39;ll understand why OSX is set up that way. And on that day, I&amp;#39;ll probably weep.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;&amp;lt;blockquote&amp;gt;$ sudo /usr/bin/dscl . -append /groups/wheel GroupMembership &amp;lt;em&amp;gt;username&amp;lt;/em&amp;gt;&#xA;&amp;lt;p style=&amp;#34;padding-left: 30px;&amp;#34;&amp;gt;&amp;lt;/p&amp;gt;&#xA;&amp;lt;/blockquote&amp;gt;&lt;/p&gt;&#xA;&lt;p&gt;&#xA;This was found here : &lt;a href=&#34;https://discussions.apple.com/thread/1230828?start=0&amp;amp;amp;tstart=0&#34;&gt;https://discussions.apple.com/thread/1230828?start=0&amp;amp;amp;tstart=0&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Is Rails dying?</title>
      <link>http://blog.trevoke.net/post/import-is-rails-dying-publish/</link>
      <pubDate>Sat, 02 Feb 2013 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-is-rails-dying-publish/</guid>
      <description>&lt;p&gt;&#xA;More to the point, should Rails die?&lt;/p&gt;&#xA;&lt;p&gt;&#xA;Rails brought a lot of great things - it made it dumb easy to package an entire app together. It abstracted the complexity of the storage layer. It created an entire market. Things like Heroku, Railsonfire/codeship and other companies turned a profit by extending the benefits of Rails. And things like Capistrano were born.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;Everything that can be automated should be automated.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;&amp;amp;nbsp;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hard-and-fast, black-and-white rules for getting started with Object-Oriented Programming</title>
      <link>http://blog.trevoke.net/post/object-oriented-programming-for-beginners/</link>
      <pubDate>Thu, 18 Oct 2012 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/object-oriented-programming-for-beginners/</guid>
      <description>&lt;ol&gt;&#xA;&lt;li&gt;No object should have more than three public methods&lt;/li&gt;&#xA;&lt;li&gt;Objects should not have getters or setters&lt;/li&gt;&#xA;&lt;li&gt;Everything else must be private&lt;/li&gt;&#xA;&lt;li&gt;If three private methods are doing something similar, then maybe those are the public methods of another class&lt;/li&gt;&#xA;&lt;li&gt;Never inherit&lt;/li&gt;&#xA;&lt;li&gt;Always compose&lt;/li&gt;&#xA;&lt;li&gt;Changeability is the most important thing&lt;/li&gt;&#xA;&lt;li&gt;A &amp;#34;good&amp;#34; variable name is a name that describes unambiguously what the variable contains, without describing the implementation&lt;/li&gt;&#xA;&lt;li&gt;If you don’t use good variable names, I will look for you. I will find you. And I will kill you.&lt;sup class=&#34;footnote-reference&#34;&gt;&lt;a id=&#34;footnote-reference-1&#34; href=&#34;#footnote-1&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;footnotes&#34;&gt;&#xA;&lt;hr class=&#34;footnotes-separatator&#34;&gt;&#xA;&lt;div class=&#34;footnote-definitions&#34;&gt;&#xA;&lt;div class=&#34;footnote-definition&#34;&gt;&#xA;&lt;sup id=&#34;footnote-1&#34;&gt;&lt;a href=&#34;#footnote-reference-1&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&#xA;&lt;div class=&#34;footnote-body&#34;&gt;&#xA;&lt;p&gt;This is a reference to the movie &amp;#34;Taken&amp;#34;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ruby: gem ffi on OSX Mountain Lion 10.8</title>
      <link>http://blog.trevoke.net/post/import-ruby-gem-ffi-on-osx-mountain-lion-10-8-publish/</link>
      <pubDate>Tue, 21 Aug 2012 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-ruby-gem-ffi-on-osx-mountain-lion-10-8-publish/</guid>
      <description>&lt;p&gt;&#xA;EASY!&lt;/p&gt;&#xA;&lt;p&gt;&#xA;&lt;code&gt;sudo ln -s /usr/bin/gcc /usr/bin/gcc-4.2&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;&#xA;&amp;amp;nbsp;&lt;/p&gt;&#xA;&lt;p&gt;&#xA;That&amp;#39;s it. You can now install ffi 1.5.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hear no evil. See no evil. Speak no evil.</title>
      <link>http://blog.trevoke.net/post/import-hear-no-evil-see-no-evil-speak-no-evil-publish/</link>
      <pubDate>Thu, 12 Jul 2012 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-hear-no-evil-see-no-evil-speak-no-evil-publish/</guid>
      <description>&lt;p&gt;&#xA;I had an epiphany tonight about something that just about everyone knows: the three monkeys. And I wanted to share it with you.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;The three monkeys are accompanied by the words: &amp;#34;See no evil. Hear no evil. Speak no evil.&amp;#34; The funny thing is that one monkey is covering his eyes, one monkey is covering his ears, and one monkey is covering his mouth! Let&amp;#39;s examine that for a second.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The schism in martial training paradigms</title>
      <link>http://blog.trevoke.net/post/import-the-schism-in-martial-training-paradigms-publish/</link>
      <pubDate>Tue, 19 Jun 2012 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-the-schism-in-martial-training-paradigms-publish/</guid>
      <description>&lt;p&gt;&#xA;&amp;lt;h2&amp;gt;You&amp;#39;re training wrong! No, YOU&amp;#39;re training wrong!&amp;lt;/h2&amp;gt;&lt;/p&gt;&#xA;&lt;p&gt;&#xA;A recent set of conversations have led me to examine the major difference in martial training. I&amp;#39;m going to start by separating training in two categories, making an imperfect black-and-white model of the martial world:&lt;/p&gt;&#xA;&lt;p&gt;&#xA;&amp;lt;ul&amp;gt;&#xA;        &amp;lt;li&amp;gt;Traditional eastern training&amp;lt;/li&amp;gt;&#xA;        &amp;lt;li&amp;gt;Jeet Kune Do-like training&amp;lt;/li&amp;gt;&#xA;&amp;lt;/ul&amp;gt;&lt;/p&gt;&#xA;&lt;p&gt;&#xA;Now, let&amp;#39;s start to talk about the &amp;lt;em&amp;gt;&amp;lt;strong&amp;gt;PURPOSE&amp;lt;/strong&amp;gt;&amp;lt;/em&amp;gt;&amp;lt;strong&amp;gt;&amp;lt;em&amp;gt; &amp;lt;/em&amp;gt;&amp;lt;/strong&amp;gt;of each, in a fairly roundabout way.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;Let&amp;#39;s talk about the traditional drill which has become sort of a standard: &amp;#34;Grab my wrist&amp;#34;. The joint lock. Many people have images of rows of people in white uniforms with colored belts, all standing there, grabbing one of their partner&amp;#39;s wrists, and waiting. Then the partner tries to do some kind of fancy something-or-other and ideally, the person grabbing the wrist is now very sorry for themselves.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Devise &#43; rspec error: undefined method &#39;name&#39;</title>
      <link>http://blog.trevoke.net/post/import-devise-rspec-error-undefined-method-name-publish/</link>
      <pubDate>Mon, 11 Jun 2012 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-devise-rspec-error-undefined-method-name-publish/</guid>
      <description>&lt;p&gt;&#xA;If you&amp;#39;re using Devise and rspec on Rails 3, and you want to override a controller, and you end up with an error that makes no sense whatsoever:&lt;/p&gt;&#xA;&lt;div class=&#34;src src-text&#34;&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Undefined method &amp;#39;name&amp;#39; for nil:NilClass&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;&#xA;well then, you probably want to add the following line to your tests:&lt;/p&gt;&#xA;&lt;div class=&#34;src src-ruby&#34;&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;vi&#34;&gt;@request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;env&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;devise.mapping&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;Devise&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mappings&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;ss&#34;&gt;:admin&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;&#xA;Yeah… That took me way longer than expected.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;On a COMPLETELY UNRELATED SIDE NOTE, pry is pretty cool when you end up having to step through code…&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Tooth of Knowledge (Lyrics)</title>
      <link>http://blog.trevoke.net/post/import-the-tooth-of-knowledge-lyrics-publish/</link>
      <pubDate>Thu, 26 Apr 2012 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-the-tooth-of-knowledge-lyrics-publish/</guid>
      <description>&lt;p&gt;&#xA;This song is at least as old as 1973 and is originally from Italy (Giorgio Gaber - Dente della conoscenza). If you like finding patterns, making analogies and metaphors, and overall pondering, then examine the tooth of knowledge in the contexts of: science, religion, culture, society (etiquette, etc), and finally, the internet.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;&amp;amp;nbsp;&lt;/p&gt;&#xA;&lt;p&gt;&#xA;(note : &amp;#39;SHHH&amp;#39; is an inhaling sound)&lt;/p&gt;&#xA;&lt;p&gt;&#xA;‘TICK’ and then ‘SHHH’,&#xA;‘TICK’ and then ‘SHHH’,&#xA;‘TICK’ and then ‘SHHH’,&#xA;‘TICK’ and then ‘SHHH’,&#xA;‘TICK’ and then ‘SHHH’.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ruby: What is at_exit and how to write tests for it.</title>
      <link>http://blog.trevoke.net/post/import-ruby-what-is-at_exit-and-how-to-write-tests-for-it-publish/</link>
      <pubDate>Fri, 06 Jan 2012 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-ruby-what-is-at_exit-and-how-to-write-tests-for-it-publish/</guid>
      <description>&lt;p&gt;&#xA;Ruby has a neat feature called &lt;code&gt;at_exit&lt;/code&gt; which takes a block and then executes the contents of this block when the program ends. There are a couple of VERY important details:&lt;/p&gt;&#xA;&lt;p&gt;&#xA;&amp;lt;ol&amp;gt;&#xA;        &amp;lt;li&amp;gt;It takes a block and converts it into a &lt;code&gt;Proc&lt;/code&gt; object at the time of parsing. This means that the data has to be available in the binding, or you&amp;#39;ll run into errors. Example: instance variables need to be set before you can use them in that block. Better idea: don&amp;#39;t use instance variables in there at all.&amp;lt;/li&amp;gt;&#xA;        &amp;lt;li&amp;gt;You can &amp;#39;chain&amp;#39; &lt;code&gt;at_exit&lt;/code&gt; calls, and they will be resolved in a First In, Last Out (FILO) order.&amp;lt;/li&amp;gt;&#xA;&amp;lt;/ol&amp;gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Art of Agile Planning / Art of Agile Delivery, by James Shore and Diana Larsen</title>
      <link>http://blog.trevoke.net/post/import-art-of-agile-planning-art-of-agile-delivery-by-james-shore-and-diana-larsen-publish/</link>
      <pubDate>Wed, 02 Nov 2011 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-art-of-agile-planning-art-of-agile-delivery-by-james-shore-and-diana-larsen-publish/</guid>
      <description>&lt;p&gt;&#xA;The Art of Agile Planning (#aoap on Twitter, and AOAP from now on) is a 2-day course. The focus is on understanding the higher-level constructs of Agile and how they imbricate. In the course, one learns how the ideal Agile team is composed (hint: it&amp;#39;s cross-functional and co-located) and what practices and techniques will be used to organize at all levels, from the developers&amp;#39; standup to the customers&amp;#39; research for the next best value-delivering feature, including how to properly create a feature that developers can work on and how to best break it down into stories (and then into tasks).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Society&#39;s focus on knowledge</title>
      <link>http://blog.trevoke.net/post/import-society-focus-on-knowledge-draft/</link>
      <pubDate>Thu, 20 Oct 2011 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-society-focus-on-knowledge-draft/</guid>
      <description>&lt;p&gt;&#xA;Here is a thought with which I&amp;#39;ve been wrestling for quite a while - the focus of society on knowledge and what it could be doing to us as people, human beings, and members of society, as well as to society itself.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;&amp;lt;h4&amp;gt;&amp;lt;strong&amp;gt;Knowledge is power&amp;lt;/strong&amp;gt;&amp;lt;em&amp;gt; - knowing more can only help you&amp;lt;/em&amp;gt;&amp;lt;/h4&amp;gt;&#xA;In the West (bounded to the east by Russia and to the west by the Americas), the focus has historically been on developing more knowledge, more science. Two interesting examples could be the game Civilization, where you need to develop science to be able to stay afloat with the other competitions, or the Cold War, where both the US and the USSR were struggling to stay ahead of each other in an arms race, because the better weapon would force the opponent to abdicate.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Grepping a single file for &#39;dynamic&#39; content</title>
      <link>http://blog.trevoke.net/post/import-grepping-a-single-file-for-dynamic-content-publish/</link>
      <pubDate>Wed, 31 Aug 2011 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-grepping-a-single-file-for-dynamic-content-publish/</guid>
      <description>&lt;p&gt;&#xA;You can use xargs to grep the same word through different files. But how do you use xargs to grep different words through the same file?&#xA;Like this:&lt;/p&gt;&#xA;&lt;p&gt;&#xA;&lt;code class=&#34;verbatim&#34;&gt;echo &amp;#34;your fancy word finder stuff here&amp;#34; | xargs -i bash -c &amp;#39;grep -n &amp;#34;{}&amp;#34; your/file/here&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;&#xA;Not something that&amp;#39;s useful every day, but when you want it, hot damn is it nice to have.&lt;/p&gt;</description>
    </item>
    <item>
      <title>git usage conventions</title>
      <link>http://blog.trevoke.net/post/import-git-usage-conventions-publish/</link>
      <pubDate>Tue, 30 Aug 2011 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-git-usage-conventions-publish/</guid>
      <description>&lt;p&gt;&#xA;We&amp;#39;ve been using git at work for a greenfield project and, so far, this has worked for us. It could be a useful template to get another team started.&#xA;We have gotten rid of the name &amp;#39;master&amp;#39;, which is only a convention anyway, and instead are using a few permanent branches:&#xA;&amp;lt;ul&amp;gt;&#xA;        &amp;lt;li&amp;gt;production (only stable code which gets deployed to production goes there. The only branch to be merged in, EVER, is &amp;#39;stable&amp;#39;)&amp;lt;/li&amp;gt;&#xA;        &amp;lt;li&amp;gt;stable (only stable code which goes to the staging environment goes there. The only branch to be merged in, EVER, is &amp;#39;integration&amp;#39;))&amp;lt;/li&amp;gt;&#xA;        &amp;lt;li&amp;gt;integration (code from other branches goes here - tests should, of course, pass before merging in.)&amp;lt;/li&amp;gt;&#xA;&amp;lt;/ul&amp;gt;&#xA;And then we have, of course, other branches for work in progress and other stuff. we&amp;#39;ve used these prefixes to help with the naming, and called this the &amp;#39;buffers&amp;#39; convention (look at the first letters - BFRS):&#xA;&amp;lt;ul&amp;gt;&#xA;        &amp;lt;li&amp;gt;bug_&amp;lt;/li&amp;gt;&#xA;        &amp;lt;li&amp;gt;feature_&amp;lt;/li&amp;gt;&#xA;        &amp;lt;li&amp;gt;refactor_&amp;lt;/li&amp;gt;&#xA;        &amp;lt;li&amp;gt;spike_&amp;lt;/li&amp;gt;&#xA;&amp;lt;/ul&amp;gt;&#xA;&amp;lt;div&amp;gt;How have you organized your git repositories?&amp;lt;/div&amp;gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Matt Damon&#39;s Speech at the Save Our Schools Rally</title>
      <link>http://blog.trevoke.net/post/import-matt-damons-speech-at-the-save-our-schools-rally-publish/</link>
      <pubDate>Thu, 04 Aug 2011 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-matt-damons-speech-at-the-save-our-schools-rally-publish/</guid>
      <description>&lt;p&gt;&#xA;I flew overnight from Vancouver to be with you today. I landed in New York a few hours ago and caught a flight down here because I needed to tell you all in person that I think you’re awesome.&#xA;I was raised by a teacher. My mother is a professor of early childhood education. And from the time I went to kindergarten through my senior year in high school, I went to public schools. I wouldn’t trade that education and experience for anything.&#xA;I had incredible teachers. As I look at my life today, the things I value most about myself — my imagination, my love of acting, my passion for writing, my love of learning, my curiosity — all come from how I was parented and taught.&#xA;And none of these qualities that I’ve just mentioned — none of these qualities that I prize so deeply, that have brought me so much joy, that have brought me so much professional success — none of these qualities that make me who I am … can be tested.&#xA;I said before that I had incredible teachers. And that’s true. But it’s more than that. My teachers were EMPOWERED to teach me. Their time wasn’t taken up with a bunch of test prep — this silly drill and kill nonsense that any serious person knows doesn’t promote real learning. No, my teachers were free to approach me and every other kid in that classroom like an individual puzzle. They took so much care in figuring out who we were and how to best make the lessons resonate with each of us. They were empowered to unlock our potential. They were allowed to be teachers.&#xA;Now don’t get me wrong. I did have a brush with standardized tests at one point. I remember because my mom went to the principal’s office and said, ‘My kid ain’t taking that. It’s stupid, it won’t tell you anything and it’ll just make him nervous.’ That was in the ’70s when you could talk like that.&#xA;I shudder to think that these tests are being used today to control where funding goes.&#xA;I don’t know where I would be today if my teachers’ job security was based on how I performed on some standardized test. If their very survival as teachers was based on whether I actually fell in love with the process of learning but rather if I could fill in the right bubble on a test. If they had to spend most of their time desperately drilling us and less time encouraging creativity and original ideas; less time knowing who we were, seeing our strengths and helping us realize our talents.&#xA;I honestly don’t know where I’d be today if that was the type of education I had. I sure as hell wouldn’t be here. I do know that.&#xA;This has been a horrible decade for teachers. I can’t imagine how demoralized you must feel. But I came here today to deliver an important message to you: As I get older, I appreciate more and more the teachers that I had growing up. And I’m not alone. There are millions of people just like me.&#xA;So the next time you’re feeling down, or exhausted, or unappreciated, or at the end of your rope; the next time you turn on the TV and see yourself called “overpaid;” the next time you encounter some simple-minded, punitive policy that’s been driven into your life by some corporate reformer who has literally never taught anyone anything. … Please know that there are millions of us behind you. You have an army of regular people standing right behind you, and our appreciation for what you do is so deeply felt. We love you, we thank you and we will always have your back.&lt;/p&gt;</description>
    </item>
    <item>
      <title>L&#39;inventaire - Jacques Prevert</title>
      <link>http://blog.trevoke.net/post/import-linventaire-jacques-prevert-publish/</link>
      <pubDate>Sun, 10 Jul 2011 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-linventaire-jacques-prevert-publish/</guid>
      <description>&lt;p&gt;&#xA;Une pierre&lt;/p&gt;&#xA;&lt;p&gt;&#xA;deux maisons&lt;/p&gt;&#xA;&lt;p&gt;&#xA;trois ruines&lt;/p&gt;&#xA;&lt;p&gt;&#xA;quatre fossoyeurs&lt;/p&gt;&#xA;&lt;p&gt;&#xA;un jardin&lt;/p&gt;&#xA;&lt;p&gt;&#xA;des fleurs&lt;/p&gt;&#xA;&lt;p&gt;&#xA;et un raton laveur&lt;/p&gt;&#xA;&lt;p&gt;&#xA;une douzaine d&amp;#39;huitres un citron un pain&lt;/p&gt;&#xA;&lt;p&gt;&#xA;un rayon de soleil&lt;/p&gt;&#xA;&lt;p&gt;&#xA;une lame de fond&lt;/p&gt;&#xA;&lt;p&gt;&#xA;six musiciens&lt;/p&gt;&#xA;&lt;p&gt;&#xA;une porte avec son paillasson&lt;/p&gt;&#xA;&lt;p&gt;&#xA;un monsieur décoré de la légion d&amp;#39;honneur&lt;/p&gt;&#xA;&lt;p&gt;&#xA;et un autre raton laveur&lt;/p&gt;&#xA;&lt;p&gt;&#xA;un sculpteur qui sculpte des Napoléon&lt;/p&gt;&#xA;&lt;p&gt;&#xA;la fleur qu&amp;#39;on appelle souci&lt;/p&gt;&#xA;&lt;p&gt;&#xA;deux amoureux sur un grand lit&lt;/p&gt;&#xA;&lt;p&gt;&#xA;un receveur des contributions &lt;/p&gt;</description>
    </item>
    <item>
      <title>Get started with Ruby</title>
      <link>http://blog.trevoke.net/post/import-ruby-publish/</link>
      <pubDate>Thu, 27 Jan 2011 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-ruby-publish/</guid>
      <description>&lt;p&gt;&#xA;First, &amp;lt;a title=&amp;#34;official Ruby site&amp;#34; href=&amp;#34;&lt;a href=&#34;http://www.ruby-lang.org/en/&#34;&gt;http://www.ruby-lang.org/en/&lt;/a&gt;&amp;#34; target=&amp;#34;_blank&amp;#34;&amp;gt;get Ruby&amp;lt;/a&amp;gt;. Install it as explained on the website. Once you&amp;#39;re more comfortable with it, in a few weeks, you can check out &amp;lt;a href=&amp;#34;&lt;a href=&#34;http://rvm.beginrescueend.com/&#34;&gt;http://rvm.beginrescueend.com/&lt;/a&gt;&amp;#34; target=&amp;#34;_blank&amp;#34;&amp;gt;RVM&amp;lt;/a&amp;gt;. Not now though - you&amp;#39;d just confuse yourself.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;The two important command-line tools are going to be &amp;#34;irb&amp;#34; and &amp;#34;ruby&amp;#34;. For development, you will be able to use tools like emacs, vim, Jetbrains Rubymine, or Eclipse. Ruby support is quite widespread.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A scene from a story: martial arts training</title>
      <link>http://blog.trevoke.net/post/import-inspiration-publish/</link>
      <pubDate>Mon, 18 Oct 2010 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-inspiration-publish/</guid>
      <description>&lt;p&gt;&#xA;The Master had been clear on this point - the room was treated so the five physical senses would be useless. When Scott asked how, the Master laughed and told him it was magic. Scott had chuckled and shaken his head. Clearly, no point in arguing - not today&amp;#39;s knowledge.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;Scott blinked and the test began. He relaxed and extended his consciousness into the ground below him and around him. He knew his limit well: no more than a five-foot radius around him. This meant that by the time he felt the opponent, it would be almost too late. Almost. The Master was sometimes annoyingly cl-&lt;/p&gt;</description>
    </item>
    <item>
      <title>Punches and the lower back</title>
      <link>http://blog.trevoke.net/post/import-punches-and-lower-back/</link>
      <pubDate>Mon, 10 May 2010 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-punches-and-lower-back/</guid>
      <description>&lt;p&gt;&#xA;Sensei helped me figure out that my punches are all wrong, and the issue has been traced to lower back muscles. Thankfully, I&amp;#39;ve got tons of subway time now, so I can practice standing. For those of you who don&amp;#39;t study martial arts… That last sentence is not a joke.&lt;/p&gt;</description>
    </item>
    <item>
      <title>New position at Cyrus</title>
      <link>http://blog.trevoke.net/post/import-new-position-at-cyrus-publish/</link>
      <pubDate>Thu, 22 Apr 2010 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-new-position-at-cyrus-publish/</guid>
      <description>&lt;p&gt;&#xA;On Monday, April 26th, I am starting a new job at Cyrus Innovation. It may well be fair that I am starting a new career - it&amp;#39;s a hop, skip and jump for me. I&amp;#39;m switching from Systems Administration / Tech Support / Hell desk (not a typo, sadly) to Development / Programming.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;I am very much looking forward to it. It means a hobby/job switch: I will now do sysadmin stuff as a hobby, and programming as a full-time job. We&amp;#39;ll see how it works out :)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ruby callbacks (hooks)</title>
      <link>http://blog.trevoke.net/post/import-ruby-callbacks-hooks-publish/</link>
      <pubDate>Wed, 31 Mar 2010 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-ruby-callbacks-hooks-publish/</guid>
      <description>&lt;p&gt;&#xA;Hooks are a fascinating bit of Ruby magic. They are methods you can define with actions to run when something happens. You can put triggers in your code.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;&amp;lt;a href=&amp;#34;&lt;a href=&#34;https://web.archive.org/web/20130210090846/http://www.khelll.com/blog/ruby/ruby-callbacks/&#34;&gt;https://web.archive.org/web/20130210090846/http://www.khelll.com/blog/ruby/ruby-callbacks/&lt;/a&gt;&amp;#34;&amp;gt;This blog post&amp;lt;/a&amp;gt; explains them very well; and for more information, get &amp;#34;Metaprogramming Ruby&amp;#34;, which is a great book - not only about the callbacks, but about a host of information.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Nidan test</title>
      <link>http://blog.trevoke.net/post/import-nidan-test-publish/</link>
      <pubDate>Fri, 19 Mar 2010 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-nidan-test-publish/</guid>
      <description>&lt;p&gt;&#xA;On February 28th, 2010, I took the test to become a second-degree black belt.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;Here is a summary of what I had to do, besides the calisthenics:&lt;/p&gt;&#xA;&lt;p&gt;&#xA;&amp;lt;ul&amp;gt;&#xA;        &amp;lt;li&amp;gt;All my empty-hand forms, opposite side. There are eight of them. This meant that if the first step was with the left foot, I had to do it with the right foot. I suppose you could also call that &amp;#39;mirror&amp;#39;. The names are : seisan, seiuchin, naihanchi, wonsu, chinto, kusanku, sunsu, and sanchin. I admit we did not do sanchin opposite side, but that&amp;#39;s not too surprising. It&amp;#39;s not a complex form, but there&amp;#39;s nothing to be gained from being able to do it regular and opposite side.&amp;lt;/li&amp;gt;&#xA;        &amp;lt;li&amp;gt;My first weapon form, opposite side. This is a bo (long staff) form. The name is tokumine no kun.&amp;lt;/li&amp;gt;&#xA;        &amp;lt;li&amp;gt;My third weapon form. This is a bo form. The name is urashi bo (sometimes called urashi no kun).&amp;lt;/li&amp;gt;&#xA;        &amp;lt;li&amp;gt;My fourth weapon form. This is a sai form. the name is chatan yara no sai.&amp;lt;/li&amp;gt;&#xA;        &amp;lt;li&amp;gt;The fifth weapon form. Note that I said &amp;#34;The&amp;#34; and not &amp;#34;My&amp;#34; … Because I hadn&amp;#39;t learned it. I was told to stay with the group and keep up. I did. That is my proud moment. :) It is a tonfa form. The name is hamahiga no tonfa.&amp;lt;/li&amp;gt;&#xA;        &amp;lt;li&amp;gt;Self-defense, including bunkai (analysis) from the various empty-hand forms.&amp;lt;/li&amp;gt;&#xA;        &amp;lt;li&amp;gt;Knife defenses&amp;lt;/li&amp;gt;&#xA;        &amp;lt;li&amp;gt;Sparring. This was actually rather fun, about thirty people in line and we (everyone testing for nidan) fought them one after another.&amp;lt;/li&amp;gt;&#xA;&amp;lt;/ul&amp;gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Github&#39;s customer service: bad review</title>
      <link>http://blog.trevoke.net/post/import-githubs-customer-service-bad-review-publish/</link>
      <pubDate>Fri, 12 Mar 2010 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-githubs-customer-service-bad-review-publish/</guid>
      <description>&lt;p&gt;&#xA;I will readily admit that I don&amp;#39;t know all that much about Github or Git for that matter. I use them, they&amp;#39;re handy, and that&amp;#39;s where it stops. I read about a git feature called &amp;#34;smart HTTP&amp;#34;, which would allow to communicate both ways with git (push and pull) with HTTP or HTTPS. So, I asked Github about it - it would be nice for them to have this feature, because I currently can&amp;#39;t push to Github from work. Here&amp;#39;s how the exchange went.&#xA;(this first message is from memory, as I used the web interface, so I don&amp;#39;t have a copy of it)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Teaching kusanku to sankyu</title>
      <link>http://blog.trevoke.net/post/import-teaching-kusanku-to-sankyu-publish/</link>
      <pubDate>Thu, 11 Mar 2010 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-teaching-kusanku-to-sankyu-publish/</guid>
      <description>&lt;p&gt;&#xA;Last night, after some kicking drills and sparring, sensei entrusted the adult class to me and told us to work on kusanku. The &amp;#39;adult class&amp;#39; yesterday consisted of three sankyu.&#xA;I looked at the clock, rubbed my hands together and said &amp;#34;Alright everyone, we have twenty-five minutes&amp;#39; worth of kusanku. Let me know if you have questions or doubts.&amp;#34;&lt;/p&gt;&#xA;&lt;p&gt;&#xA;When we had finished walking through it, I looked at the clock. I&amp;#39;d spent twenty minutes on the form, and they all looked happy. I don&amp;#39;t think I really stood still for more than a few seconds at a time during those twenty minutes.&#xA;It reminded me of the first time I led the adult class, and I spent twenty-five minutes on seisan kata. I distinctly remember that it did not go quite as smoothly. It is usually hard to convince ranks under shodan that seisan is a very important, subtle kata, full of knowledge to be examined ;-) It&amp;#39;s a realization they must come to by themselves.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Gentoo on a Dell Inspiron Mini 10</title>
      <link>http://blog.trevoke.net/post/import-gentoo-on-a-dell-inspiron-mini-10-publish/</link>
      <pubDate>Mon, 01 Mar 2010 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-gentoo-on-a-dell-inspiron-mini-10-publish/</guid>
      <description>&lt;p&gt;&#xA;There are a few gotchas:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;If you have a SSD drive, you need to &amp;lt;em&amp;gt;modprobe pata_sch&amp;lt;/em&amp;gt; to see it.&lt;/li&gt;&#xA;&lt;li&gt;when using GRUB, install it on whatever drive the hard drive is, even if it&amp;#39;s /dev/sdc – and let your FSTAB use /dev/sda. Chances are that /dev/sda is your liveUSB.&lt;/li&gt;&#xA;&lt;li&gt;In the kernel, in the I2C options, don&amp;#39;t let it pick automatically - instead, select the algorithm options in the menu that appears (I don&amp;#39;t know it off-hand, will edit this post later to add the important information). This will allow you to install the kernel driver for the poulsbo card (kmod-psb, I believe).&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;For the rest, so far, it seems that the howto on the Gentoo wiki is good. I installed e17 very painlessly.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Country alert levels</title>
      <link>http://blog.trevoke.net/post/import-country-alert-levels-funny-publish/</link>
      <pubDate>Wed, 20 Jan 2010 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-country-alert-levels-funny-publish/</guid>
      <description>&lt;p&gt;&#xA;Let&amp;#39;s break the monotony with something funny:&lt;/p&gt;&#xA;&lt;p&gt;&#xA;The English are feeling the pinch in relation to recent terrorist threats and have raised their security level from &lt;em&gt;Miffed&lt;/em&gt; to &lt;em&gt;Peeved&lt;/em&gt;&amp;#34; Soon, though, security levels may be raised yet again to &lt;em&gt;Irritated&lt;/em&gt; or even &lt;em&gt;A Bit Cross.&lt;/em&gt; The English have not been &lt;em&gt;A Bit Cross&lt;/em&gt; since the blitz in 1940 when tea supplies all but ran out.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;Terrorists have been re-categorized from &lt;em&gt;Tiresome&lt;/em&gt; to a &lt;em&gt;Bloody Nuisance&lt;/em&gt;&amp;#34; The last time the British issued a &lt;em&gt;Bloody Nuisance&lt;/em&gt; warning level was in 1588 when threatened by the Spanish Armada.&lt;/p&gt;</description>
    </item>
    <item>
      <title>New gem: ListBrowser</title>
      <link>http://blog.trevoke.net/post/import-new-gem-listbrowser-publish/</link>
      <pubDate>Fri, 15 Jan 2010 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-new-gem-listbrowser-publish/</guid>
      <description>&lt;p&gt;&#xA;I was working on a parser for a very specific tree structure, and was frustrated that there wasn’t a simple way to parse it in irb. &amp;#34;What??&amp;#34;, I thought. &amp;#34;I have to use my brain?! God forbid!&amp;#34;. So I set to using my brain a little more to create this tool. It’s not much, but maybe it’ll make someone’s life a little easier.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;Install: (set up gemcutter)&#xA;&lt;code&gt;gem install ListBrowser&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Git : moving a remote branch</title>
      <link>http://blog.trevoke.net/post/import-git-moving-a-remote-branch-publish/</link>
      <pubDate>Tue, 29 Dec 2009 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-git-moving-a-remote-branch-publish/</guid>
      <description>&lt;p&gt;&#xA;One can&amp;#39;t actually move a remote branch, but you can copy a branch and delete a branch, so…&lt;/p&gt;&#xA;&lt;p&gt;&#xA;Copy &lt;code&gt;oldbranch&lt;/code&gt; in repo to &lt;code&gt;newbranch&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;div class=&#34;src src-text&#34;&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git push {repo} {oldbranch}:heads/{newbranch}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;&#xA;Ex: &lt;code&gt;git push origin foobranch:barbranch&lt;/code&gt;&#xA;renames &lt;code&gt;foobranch to barbranch&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;&#xA;Remove a remote branch: it’s all about the colon!&lt;/p&gt;&#xA;&lt;div class=&#34;src src-text&#34;&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git push &amp;lt;remote_repo&amp;gt; :heads/&amp;lt;branch&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;&#xA;Example: &lt;code&gt;git push origin :heads/some-branch&lt;/code&gt; removes &lt;code&gt;some-branch&lt;/code&gt; from the remote repo (apparently &lt;code&gt;git push origin :some-branch&lt;/code&gt; works as well).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Inter-array permutations in Ruby</title>
      <link>http://blog.trevoke.net/post/import-inter-array-permutations-in-ruby-publish/</link>
      <pubDate>Thu, 17 Dec 2009 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-inter-array-permutations-in-ruby-publish/</guid>
      <description>&lt;p&gt;&#xA;I don&amp;#39;t really have a better name for this. It&amp;#39;s also not completely clean, but it works. I had, almost a year ago (362 days ago), written a blog post about &amp;lt;a href=&amp;#34;&lt;a href=&#34;http://trevoke.net/blog/2008/12/20/lexicographic-permutations-in-ruby&#34;&gt;http://trevoke.net/blog/2008/12/20/lexicographic-permutations-in-ruby&lt;/a&gt;&amp;#34;&amp;gt;lexicographic permutations&amp;lt;/a&amp;gt;. That was about permutations of elements within one array.&#xA;Someone on ruby-forum asked about permutations between multiple arrays. I &amp;lt;a href=&amp;#34;&lt;a href=&#34;http://stackoverflow.com/questions/710670/c-permutation-of-an-array-of-arraylists&#34;&gt;http://stackoverflow.com/questions/710670/c-permutation-of-an-array-of-arraylists&lt;/a&gt;&amp;#34;&amp;gt;found something in C#&amp;lt;/a&amp;gt;, which I was happy to transcribe to Ruby and tweak a little.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Random constrained permutations in Ruby</title>
      <link>http://blog.trevoke.net/post/import-random-constrained-permutations-in-ruby-publish/</link>
      <pubDate>Thu, 17 Dec 2009 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-random-constrained-permutations-in-ruby-publish/</guid>
      <description>&lt;p&gt;&#xA;Look, Ma, these are my baby steps in algorithms!&lt;/p&gt;&#xA;&lt;div class=&#34;src src-ruby&#34;&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# list is the elements to be permuted&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# y is the number of results desired&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# z is the number of elements per result&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# equalizer keeps track of who got used how many times&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;constrained_permutations&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;z&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;uniq!&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# Never trust the user. We want no repetitions.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;equalizer&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;each&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;element&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;equalizer&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;element&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;results&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;# Do this until we get as many results as desired&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;results&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;size&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;pool&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;puts&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pool&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;least_used&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;equalizer&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;each_value&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;min&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# Find how used the least used element was&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pool&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;size&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;z&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;c1&#34;&gt;# Do this until we have enough elements in this resultset&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;n&#34;&gt;element&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kp&#34;&gt;nil&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;element&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nil?&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;# If we run out of &amp;#39;least used elements&amp;#39;, then we need to increment&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;# our definition of &amp;#39;least used&amp;#39; by 1 and keep going.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;element&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;shuffle&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;find&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;o&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pool&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;include?&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;equalizer&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;least_used&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;least_used&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;element&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nil?&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;k&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;n&#34;&gt;equalizer&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;element&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;c1&#34;&gt;# This element has now been used one more time.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;n&#34;&gt;pool&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;element&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;results&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pool&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;results&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;constrained_permutations&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#=&amp;gt; [[4, 0], [1, 3], [2, 5], [6, 0], [2, 5], [3, 6]]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;constrained_permutations&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#=&amp;gt; [[4, 5], [6, 3], [0, 2], [1, 6], [5, 4], [3, 0]]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Calling Rake tasks within the Rails env</title>
      <link>http://blog.trevoke.net/post/import-open-source-is-wide-open-calling-rake-tasks-publish/</link>
      <pubDate>Tue, 15 Dec 2009 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-open-source-is-wide-open-calling-rake-tasks-publish/</guid>
      <description>&lt;p&gt;&#xA;&amp;lt;a href=&amp;#34;&lt;a href=&#34;http://railsblogger.blogspot.com/2009/03/in-queue_15.html&#34;&gt;http://railsblogger.blogspot.com/2009/03/in-queue_15.html&lt;/a&gt;&amp;#34;&amp;gt;Calling RAKE tasks within the Rails environment&amp;lt;/a&amp;gt;.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;Good to know.&lt;/p&gt;</description>
    </item>
    <item>
      <title>On re-reading old code</title>
      <link>http://blog.trevoke.net/post/import-on-re-reading-old-code-publish/</link>
      <pubDate>Wed, 09 Dec 2009 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-on-re-reading-old-code-publish/</guid>
      <description>&lt;p&gt;&#xA;I came across this beauty in some old code of mine:&lt;/p&gt;&#xA;&lt;div class=&#34;src src-ruby&#34;&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;same_modality?&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;list&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;check&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;each&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kp&#34;&gt;false&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;check&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kp&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;end&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;This was &amp;#34;necessary&amp;#34; because I got an array of one-element arrays back, and I wanted to check whether or not that one element was the same across the array.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;Three seconds of thinking made me realize that just maybe, I could do this:&lt;/p&gt;&#xA;&lt;div class=&#34;src src-ruby&#34;&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;uniq&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;size&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;&#xA;I &lt;span style=&#34;text-decoration: underline;&#34;&gt;like&lt;/span&gt; Ruby.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Monday night training</title>
      <link>http://blog.trevoke.net/post/import-monday-night-training-publish/</link>
      <pubDate>Thu, 26 Nov 2009 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-monday-night-training-publish/</guid>
      <description>&lt;p&gt;&#xA;I received an email from sensei on Monday (sent to every student) - if you&amp;#39;ll be here tonight, bring your fighting gear. Uh-oh. Her sensei was there and taught a few classes, including the adults. The entire class turned out to be pretty much a blur of drills. I&amp;#39;ll be able to dredge them out of my body memory, I think.&#xA;A drill about basics - chain two basics together, using shifting. Then up to six basics together, by series of two.&#xA;A couple of kicking drills. A few fighting drills - these are important. shift, step back, kick, finish, disengage.&#xA;Come in and jam, elbow, finish.&#xA;I am obfuscating these on purpose. &#xA;This was a harder training session than I&amp;#39;ve experienced in a while, as evidenced by the appearance after 40-some hours of a slight tightness in my upper abs and shoulder muscles.. Oh, and the fact that my lower legs were one solid body, instead of having a freely moving calf muscle.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Auto-vivifying hashes in Ruby</title>
      <link>http://blog.trevoke.net/post/import-auto-vivifying-hashes-in-ruby-publish/</link>
      <pubDate>Fri, 06 Nov 2009 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-auto-vivifying-hashes-in-ruby-publish/</guid>
      <description>&lt;p&gt;&#xA;An auto-vivifying hash is a hash that lets you create sub-hashes automatically. This means that the following code becomes possible:&lt;/p&gt;&#xA;&lt;div class=&#34;src src-ruby&#34;&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;cnh&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# silly name &amp;#34;create nested hash&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;no&#34;&gt;Hash&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;h&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;k&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;h&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;k&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;Hash&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;new&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;h&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;default_proc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;my_hash&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cnh&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;my_hash&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;my_hash&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# =&amp;gt; { 1 =&amp;gt; { 2 =&amp;gt; { 3 =&amp;gt; 4 } } }&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;&#xA;This is useful because it reduces the amount of logic in the code. No more &amp;#34;If sub-hash doesn&amp;#39;t exist, create it!&amp;#34;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Closures in Ruby</title>
      <link>http://blog.trevoke.net/post/import-closures-in-ruby-publish/</link>
      <pubDate>Wed, 28 Oct 2009 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-closures-in-ruby-publish/</guid>
      <description>&lt;p&gt;&#xA;I found a &amp;lt;a href=&amp;#34;&lt;a href=&#34;http://innig.net/software/ruby/closures-in-ruby.rb&#34;&gt;http://innig.net/software/ruby/closures-in-ruby.rb&lt;/a&gt;&amp;#34;&amp;gt;script&amp;lt;/a&amp;gt; that explains everything really well.&#xA;Credit goes to:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;&#xA;Along with &amp;lt;a href=&amp;#34;&lt;a href=&#34;http://eli.thegreenplace.net/2006/04/18/understanding-ruby-blocks-procs-and-methods/&#34;&gt;http://eli.thegreenplace.net/2006/04/18/understanding-ruby-blocks-procs-and-methods/&lt;/a&gt;&amp;#34;&amp;gt;this blog entry&amp;lt;/a&amp;gt;, it&amp;#39;s made the whole deal much easier to figure out.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;Now.. Why didn&amp;#39;t I get that when I was looking at LISP?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Extending Ruby for Fun and Profit</title>
      <link>http://blog.trevoke.net/post/import-extending-ruby-for-fun-and-profit-publish/</link>
      <pubDate>Tue, 27 Oct 2009 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-extending-ruby-for-fun-and-profit-publish/</guid>
      <description>&lt;p&gt;&#xA;Wow. I just watched Dave Thomas&amp;#39; talk &amp;lt;a href=&amp;#34;&lt;a href=&#34;http://www.infoq.com/presentations/metaprogramming-ruby&#34;&gt;http://www.infoq.com/presentations/metaprogramming-ruby&lt;/a&gt;&amp;#34;&amp;gt;Ruby Metaprogramming: Extending Ruby for Fun and Profit&amp;lt;/a&amp;gt; and it explained so many things.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;It&amp;#39;s quite worth watching if you like Ruby and don&amp;#39;t know about metaprogramming and Ruby hooks and what &amp;#39;self&amp;#39; means, fully.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hologic R2 service password</title>
      <link>http://blog.trevoke.net/post/import-hologic-r2-service-password-publish/</link>
      <pubDate>Wed, 14 Oct 2009 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-hologic-r2-service-password-publish/</guid>
      <description>&lt;p&gt;&#xA;I feel kinda bad plaintexting this.. You can contact me if you can&amp;#39;t figure it out yourself.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;The service password for the R2 unit is in this sentence.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Why do I study martial arts?</title>
      <link>http://blog.trevoke.net/post/import-why-do-i-study-martial-arts-publish/</link>
      <pubDate>Sat, 03 Oct 2009 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-why-do-i-study-martial-arts-publish/</guid>
      <description>&lt;p&gt;&#xA;I am watching Rocky III and IV (the only ones I really like), and the driving theme is the power of the human spirit. Rewatching it now, I see a lot of other ideas. They&amp;#39;re not particularly hidden, but I never really noticed them before. This started to make me think about my choices.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;My lasting decision to study martial arts was made in college, and I took a Physical Education class of self-defense taught by shifu Christopher Goedecke, who studies and teaches isshin kempo. During the first class, we sat and he asked us why we chose to study martial arts. My answer was, &amp;#34;I want to develop discipline over my mind and body.&amp;#34;&#xA;I can tell you today that this answer was probably not the truth. It was probably what I thought shifu wanted to hear so he&amp;#39;d think that I was special, or would be a good, dedicated student.&#xA;Why this behavior? Saying that everyone wants to be special would be a bit of a cop-out answer here. I always, always liked the idea of the martial arts, and the dedication, the Way.&#xA;A more refined thought is that I wanted a mentor. A senior figure I could respect, who could teach me and guide me. For all my mental independence and ambition, I want to be somebody&amp;#39;s pupil.&#xA;When I was barely beginning, I had the self-centered thought that shifu Goedecke would instantly take a liking to me and take me under his wing. I was, what, 20 years old or so? Most of my thoughts back then were self-centered. For that matter, most of them now are, too.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tonight&#39;s training (good AGAIN!)</title>
      <link>http://blog.trevoke.net/post/import-tonights-training-good-again-publish/</link>
      <pubDate>Wed, 23 Sep 2009 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-tonights-training-good-again-publish/</guid>
      <description>&lt;p&gt;&#xA;It was surprisingly good. I didn&amp;#39;t feel very good tonight - slight headache, slight tingle in the throat. I wasn&amp;#39;t going to stay for my class, just help teach and then go home, get tea, get sleep.. But &amp;lt;!–more–&amp;gt;only two other adults showed up and sensei was upstairs, so I started the class and took it easy on the calisthenics and the stretches. Those two adults are the two with the most issues of muscle contractions (as in, they have no idea what relaxing means). So I started off real, real easy, taking them back to the basics.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Another awesome training evening</title>
      <link>http://blog.trevoke.net/post/import-another-awesome-training-evening-publish/</link>
      <pubDate>Thu, 17 Sep 2009 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-another-awesome-training-evening-publish/</guid>
      <description>&lt;p&gt;&#xA;So tonight, I went to train 35 minutes away from home, at the dojo where my sensei&amp;#39;s sensei teaches. Warmups / stretches, kicking drills, calisthenics, sparring, then fighting drills.&#xA;Sensei&amp;#39;s sensei has a son who is now 48. Now – I am fast by normal people&amp;#39;s standards. This guy is really fast by my standards. He also has a really positive energy - very friendly eyes, a great disposition.. And he can dislocate your jaw before you can blink or think &amp;#34;oh sh..!&amp;#34;, so don&amp;#39;t piss him off.&#xA;Anyway, as much as shihan (sensei&amp;#39;s sensei) is amazing, tall, skilled, talented, dedicated to his art, as much his son inherited many of the traits, has been training under his dad a long time, and has learned a lot from a ton of sparring and tournaments and just .. being there.&#xA;So now he imparts his wisdom and skills, and it&amp;#39;s WONDERFUL to watch him in action, and learn from him, and listen to his way of explaining things. Just like in Dune, &amp;#34;A process cannot be understood by stopping it&amp;#34;, he explains action and reaction within the context of a moving match, which is AWESOME.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Dojo tonight</title>
      <link>http://blog.trevoke.net/post/import-dojo-tonight-publish/</link>
      <pubDate>Wed, 16 Sep 2009 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-dojo-tonight-publish/</guid>
      <description>&lt;p&gt;&#xA;I had a good time in the dojo tonight. Managed to bring a kid back from the verge of tears to feeling good and performing kata with solid focus and intent.. And then good sparring. Kid&amp;#39;s 6, by the way.&#xA;My class wasn&amp;#39;t that good, though I got a compliment on my push-ups from sensei. Went through my kicks.. Then sparred..&lt;/p&gt;&#xA;&lt;p&gt;&#xA;I fleetingly get a grasp of efficient body movement, and then it disappears, and then I have to train a lot more to make it happen again, and then more again, etc etc, until I can make it happen effortlessly.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rails, HAML, alternatible CSS for tables</title>
      <link>http://blog.trevoke.net/post/import-rails-haml-alternatible-css-for-tables-publish/</link>
      <pubDate>Wed, 02 Sep 2009 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-rails-haml-alternatible-css-for-tables-publish/</guid>
      <description>&lt;p&gt;&#xA;If you&amp;#39;ve done any kind of table display in Rails, you&amp;#39;ve probably discovered the useful &amp;#39;cycle&amp;#39; method:&lt;/p&gt;&#xA;&lt;p&gt;&#xA;&lt;code&gt;&amp;lt;tr class=&amp;#34;&amp;lt;%= cycle(&amp;#34;even&amp;#34;, &amp;#34;odd&amp;#34;) %&amp;gt;&amp;#34;&amp;gt;&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;&#xA;This works after you&amp;#39;ve set two CSS classes between which you want to alternate - in my example, even and odd, because I have such amazing imagination. Come to think of it, to make my code more readable, it should be &amp;#39;lightbg&amp;#39; and &amp;#39;darkbg&amp;#39;, or something similar. I&amp;#39;ll fix that.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Spending energy uselessly</title>
      <link>http://blog.trevoke.net/post/import-spending-energy-uselessly-publish/</link>
      <pubDate>Tue, 01 Sep 2009 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-spending-energy-uselessly-publish/</guid>
      <description>&lt;p&gt;&#xA;I live on an island. It only took me until last week (10 years and change) to take my dad&amp;#39;s advice to go to the beach when I felt like it. So I did that, last week and today, and went swimming. Good for the muscles, good all-around body work. Great stretching. Different way of using the muscles.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;Besides the fact that I could really only swim for 10-15 minutes before I was tired and a part of my arms started to ache (indicating, clearly, that I&amp;#39;d been ignoring it), I noticed on my way home that even just 30 minutes at the beach drained me of energy. The &amp;#39;new&amp;#39; situation was interesting, I was very aware of everything, and I spent a lot of energy on focus which did not need to be spent. It&amp;#39;ll be a learning curve. It&amp;#39;s a shame autumn is upon us.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ruby on Rails &#43; Sybase</title>
      <link>http://blog.trevoke.net/post/import-ruby-on-rails-sybase-publish/</link>
      <pubDate>Fri, 31 Jul 2009 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-ruby-on-rails-sybase-publish/</guid>
      <description>&lt;p&gt;&#xA;Caveat: This adapter may only work with the enterprise edition of Sybase (i.e. Sybase ASE) not with SQLAnywhere (Sybase ASA)&lt;/p&gt;&#xA;&lt;p&gt;&#xA;=gem install activerecord-sybase-adapter -s &lt;a href=&#34;http://gems.rubyonrails.org&#34;&gt;http://gems.rubyonrails.org&lt;/a&gt;&#xD;=&lt;/p&gt;&#xA;&lt;div class=&#34;src src-ruby&#34;&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;no&#34;&gt;ActiveRecord&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;no&#34;&gt;Base&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;establish_connection&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;ss&#34;&gt;:adapter&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;sybase&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;ss&#34;&gt;:database&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;test&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;ss&#34;&gt;:host&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;www.yourdbserver.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;ss&#34;&gt;:username&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;kevin&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;ss&#34;&gt;:password&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;test&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;&#xA;Play!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Passwords, passwords</title>
      <link>http://blog.trevoke.net/post/import-passwords-passwords-publish/</link>
      <pubDate>Tue, 09 Jun 2009 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-passwords-passwords-publish/</guid>
      <description>&lt;p&gt;&#xA;Default passwords for MSSQL, Sybase, and mySQL:&lt;/p&gt;&#xA;&lt;p&gt;&#xA;, , ,&lt;/p&gt;&#xA;&lt;p&gt;&#xA;That&amp;#39;s right.. All three have blank root / sa passwords by default. Talk about secure! That&amp;#39;s the kind of knowledge that can come in handy.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Lisp on OSX</title>
      <link>http://blog.trevoke.net/post/import-lisp-on-osx-publish/</link>
      <pubDate>Fri, 15 May 2009 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-lisp-on-osx-publish/</guid>
      <description>&lt;p&gt;&#xA;Just a link to a page.. Got me started with barely any trouble (just make sure you know how to read a .emacs file - I learned on the fly on his page, it wasn&amp;#39;t too tricky).&lt;/p&gt;&#xA;&lt;p&gt;&#xA;&lt;a href=&#34;http://www.david-steuber.com/Lisp/OSX/&#34;&gt;http://www.david-steuber.com/Lisp/OSX/&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>install the mysql gem on Ubuntu</title>
      <link>http://blog.trevoke.net/post/import-install-the-mysql-gem-on-ubuntu-publish/</link>
      <pubDate>Sun, 19 Apr 2009 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-install-the-mysql-gem-on-ubuntu-publish/</guid>
      <description>&lt;div class=&#34;src src-bash&#34;&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get install libmysqlclient15-dev&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo gem install mysql&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;&#xA;Easy! But .. gotta know it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Installing the mysql gem on OSX</title>
      <link>http://blog.trevoke.net/post/import-installing-the-mysql-gem-on-osx-publish/</link>
      <pubDate>Fri, 17 Apr 2009 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-installing-the-mysql-gem-on-osx-publish/</guid>
      <description>&lt;p&gt;&#xA;Taken straight from &amp;lt;a href=&amp;#34;&lt;a href=&#34;http://www.eclips3media.com/workshop/2008/10/installing-the-mysql-gem-on-os-x/&#34;&gt;http://www.eclips3media.com/workshop/2008/10/installing-the-mysql-gem-on-os-x/&lt;/a&gt;&amp;#34;&amp;gt;this blog&amp;lt;/a&amp;gt;&lt;/p&gt;&#xA;&lt;p&gt;&#xA;in a terminal.. First do a &lt;code&gt;locate mysql_config&lt;/code&gt; and then replace the path in the following command with where that file is.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;&lt;code&gt;$ sudo gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config&lt;/code&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;src src-text&#34;&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Building native extensions.  This could take a while...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Successfully installed mysql-2.7&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1 gem installed&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>The world is shrinking: two videos</title>
      <link>http://blog.trevoke.net/post/import-two-videos-a-change-in-the-world-publish/</link>
      <pubDate>Tue, 31 Mar 2009 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-two-videos-a-change-in-the-world-publish/</guid>
      <description>&lt;p&gt;&#xA;Those two videos have been brought to my attention within maybe two weeks of each other, and I hate thinking of random coincidences.. So here they are, together so I can find them again in several years.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;&amp;lt;a href=&amp;#34; &lt;a href=&#34;http://www.youtube.com/watch?v=Us-TVg40ExM&#34;&gt;http://www.youtube.com/watch?v=Us-TVg40ExM&lt;/a&gt;&amp;#34;&amp;gt;Playing for change: Stand by me&amp;lt;/a&amp;gt;&#xA;&amp;lt;a href=&amp;#34;&lt;a href=&#34;http://www.youtube.com/watch?v=zlfKdbWwruY&#34;&gt;http://www.youtube.com/watch?v=zlfKdbWwruY&lt;/a&gt;&amp;#34;&amp;gt;Where the hell is Matt?&amp;lt;/a&amp;gt;&lt;/p&gt;&#xA;&lt;p&gt;&#xA;The first one fills my heart with a warm feeling - the song was recorded by all these people around the world simultaneously (or so they say, but it sure is well edited in any case).&#xA;The second one brings tears to my eyes, I&amp;#39;m not sure why.. I&amp;#39;ll let you guys watch it&lt;/p&gt;</description>
    </item>
    <item>
      <title>Who follows who?</title>
      <link>http://blog.trevoke.net/post/import-who-follows-who-publish/</link>
      <pubDate>Thu, 26 Mar 2009 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-who-follows-who-publish/</guid>
      <description>&lt;p&gt;&#xA;In the past couple of weeks, I&amp;#39;d gotten to spar progressively harder with a blue belt who is twice my age, but has been in dojos where sparring and self-defense were more important than kata. As a result, I consider him somewhat dangerous to spar with.. And, well, I let myself get caught up. I stopped being the watcher..&lt;/p&gt;&#xA;&lt;p&gt;&#xA;I hid behind the excuse that I was just sparring as hard as he wanted to spar, and so it just escalated.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Relaxing the upper body.. aka &#34;drop your shoulders&#34;</title>
      <link>http://blog.trevoke.net/post/import-relaxing-the-upper-body-aka-drop-your-shoulders-publish/</link>
      <pubDate>Tue, 24 Feb 2009 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-relaxing-the-upper-body-aka-drop-your-shoulders-publish/</guid>
      <description>&lt;p&gt;&#xA;A friend of mine wrote about shoulder relaxation.. Apparently we both had the same mental block, but he solved it first - shoulder relaxation (and by extension, all relaxation) can be done up/down and … forward/back!&lt;/p&gt;&#xA;&lt;p&gt;&#xA;At first I didn&amp;#39;t think I had that issue, my western mind automatically went &amp;#34;Nah, I don&amp;#39;t have that issue, my shoulders are nice and straight!&amp;#34; .. And then training kicked in and the answer came : &amp;#34;Well, maybe they&amp;#39;re not supposed to be straight!&amp;#34;&#xA;So, I let my shoulders round forward a little, which required some spinal and pelvic adjustments.. But the result is that I suddenly &amp;#39;stopped feeling&amp;#39; my shoulders and upper back.&#xA;For my friend, who is more advanced than I am, the effect was more drastic, and he became aware quickly of more changes, like his arms being properly connected to the body, and feeling better rooted in spite of not having his legs bent as much.&#xA;I&amp;#39;m still playing with the feeling, the muscles around my spine don&amp;#39;t know what to do with this weight, I think.. I&amp;#39;ve got to work on this some more ;-)&#xA;Still, this is a good discovery.&lt;/p&gt;</description>
    </item>
    <item>
      <title>More stances and some testing</title>
      <link>http://blog.trevoke.net/post/import-more-stances-and-some-testing-publish/</link>
      <pubDate>Thu, 05 Feb 2009 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-more-stances-and-some-testing-publish/</guid>
      <description>&lt;p&gt;&#xA;So, I&amp;#39;ve been trying to keep my stances down a lot more now - it&amp;#39;s making me much more aware of when I get tense.. Because I rise, because my ankles, hips and knees just don&amp;#39;t flex. It&amp;#39;s an interesting experience.&#xA;Two people are testing.. During sparring, that evening was the first time that I made a conscious point of &amp;#34;the first thing I do is move - and then answer&amp;#34;. I&amp;#39;m feeling good about this change, in addition to keeping slightly lower stances during sparring - mobility much increased and there is a lot more potential there.&#xA;Something to work on…&lt;/p&gt;</description>
    </item>
    <item>
      <title>Grouping directories by name</title>
      <link>http://blog.trevoke.net/post/import-grouping-directories-by-name-publish/</link>
      <pubDate>Tue, 27 Jan 2009 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-grouping-directories-by-name-publish/</guid>
      <description>&lt;p&gt;&#xA;As is, this code will create an array of arrays - Directories with the same 6 first characters will be grouped in the same sub-array. I am using this for log directories, name format 20081125 for instance - you can just replace the logic to be whatever you need, of course.&lt;/p&gt;&#xA;&lt;div class=&#34;src src-ruby&#34;&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;dirs&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;no&#34;&gt;Dir&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;*&amp;#39;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;each&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;item&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;File&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;directory?&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;item&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dirs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;empty?&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;n&#34;&gt;dirs&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;item&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;k&#34;&gt;next&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;inserted&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kp&#34;&gt;false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;dirs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;each_with_index&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;list_of_folders&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;index&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;list_of_folders&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;to_s&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;..&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;item&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;..&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;dirs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;index&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;item&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;inserted&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kp&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;k&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;dirs&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;item&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;inserted&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;end&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>stances</title>
      <link>http://blog.trevoke.net/post/import-stances-publish/</link>
      <pubDate>Tue, 27 Jan 2009 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-stances-publish/</guid>
      <description>&lt;p&gt;&#xA;Tonight we had training on stances. It came about more or less accidentally - proper stances are -hard- !! But I am now flexible enough hip-wise to get there.. Now to train my leg muscles, mostly the quads, to follow suit…&lt;/p&gt;</description>
    </item>
    <item>
      <title>Making a ruby script into a stand-alone executable</title>
      <link>http://blog.trevoke.net/post/import-making-a-ruby-script-into-a-stand-alone-executable-publish/</link>
      <pubDate>Fri, 23 Jan 2009 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-making-a-ruby-script-into-a-stand-alone-executable-publish/</guid>
      <description>&lt;p&gt;&#xA;Erik Veenstra created two scripts, tar2rubyscript and rubyscript2exe, which essentially grab what you wrote, wrap it up with some other code, bundle it with the ruby executable, and spit out a finished, executable package - which will run on that same OS – so compile it on Windows, get a Windows executable, compile on Linux, get Linux executable, etc.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;&amp;lt;a href=&amp;#34;&lt;a href=&#34;http://www.erikveen.dds.nl/tar2rubyscript/index.html&#34;&gt;http://www.erikveen.dds.nl/tar2rubyscript/index.html&lt;/a&gt;&amp;#34;&amp;gt;tar2rubyscript&amp;lt;/a&amp;gt;&lt;/p&gt;&#xA;&lt;p&gt;&#xA;&amp;lt;a href=&amp;#34;&lt;a href=&#34;http://www.erikveen.dds.nl/rubyscript2exe/&#34;&gt;http://www.erikveen.dds.nl/rubyscript2exe/&lt;/a&gt;&amp;#34;&amp;gt;rubyscript2exe&amp;lt;/a&amp;gt;&lt;/p&gt;&#xA;&lt;p&gt;&#xA;As I&amp;#39;m a newb, it took me a while to figure out that I need .. &amp;#39;stuff&amp;#39; in the init.rb file. Since I&amp;#39;m writing scripts, I just stuffed the whole simple script in init.rb.. This also means I don&amp;#39;t really understand how to do bigger programs, but I think that with more knowledge than mine, these pages are worth their weight in pixels. Made of gold.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Nidan... ?</title>
      <link>http://blog.trevoke.net/post/import-nidan-publish/</link>
      <pubDate>Tue, 06 Jan 2009 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-nidan-publish/</guid>
      <description>&lt;p&gt;&#xA;Well, sensei hinted last month that maybe I should start gearing up for a nidan test. I&amp;#39;ve been getting used to being shodan, which maybe is a bad thing, but I haven&amp;#39;t stopped looking for things I could do better. I&amp;#39;m becoming more sensitive to the muscles in my back, and I think my shoulders are finally beginning to open up…&lt;/p&gt;&#xA;&lt;p&gt;&#xA;So, I have something like 5 months to prepare.. Or, you know, whenever it turns out sensei thinks I&amp;#39;m ready. I&amp;#39;d better start doing more pushups.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Recursively iterate through every file/subfolder  - VBScript</title>
      <link>http://blog.trevoke.net/post/import-recursively-iterate-through-every-filesubfolder-vbscript-publish/</link>
      <pubDate>Tue, 30 Dec 2008 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-recursively-iterate-through-every-filesubfolder-vbscript-publish/</guid>
      <description>&lt;p&gt;&#xA;This is actually a lot simpler than I expected (gimme a break, this is my second foray into VBS!)&lt;/p&gt;&#xA;&lt;div class=&#34;src src-vbscript&#34;&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Set fs = WScript.CreateObject (&amp;#34;Scripting.FileSystemObject&amp;#34;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Sub ShowSubFolders(Folder)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        For Each Subfolder In Folder.SubFolders&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                Set files = SubFolder.Files&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                For Each file In files&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        WScript.Echo file.Name, file.Size&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                Next&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                ShowSubFolders Subfolder&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Next&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;End Sub&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ShowSubFolders fs.GetFolder(&amp;#34;C:\your\path\here&amp;#34;)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>(Lexicographic) Permutations in Ruby</title>
      <link>http://blog.trevoke.net/post/import-lexicographic-permutations-in-ruby-publish/</link>
      <pubDate>Sat, 20 Dec 2008 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-lexicographic-permutations-in-ruby-publish/</guid>
      <description>&lt;p&gt;&#xA;Taking the code from &amp;lt;a title=&amp;#34;Permutations in Ruby and Python&amp;#34; href=&amp;#34;&lt;a href=&#34;http://abachman.disqus.com/simple_permutations_in_python_and_ruby/&#34;&gt;http://abachman.disqus.com/simple_permutations_in_python_and_ruby/&lt;/a&gt;&amp;#34; target=&amp;#34;_blank&amp;#34;&amp;gt;this other blog&amp;lt;/a&amp;gt; … It&amp;#39;s pretty elegant Ruby!&lt;/p&gt;&#xA;&lt;p&gt;&#xA;I won&amp;#39;t waste your time repeating what the guy wrote in his blog - you&amp;#39;re welcome to go read it. I just felt that I should help spread a little this elegant implementation of the standard permutation algorithm, fixing a small bug within it in the process. If, like me, you have issues understanding how to use this, well - you have to use this function and call a block of code on it. It runs the block of code on each permutation it finds.&lt;/p&gt;</description>
    </item>
    <item>
      <title>More students testing</title>
      <link>http://blog.trevoke.net/post/import-more-students-testing-publish/</link>
      <pubDate>Fri, 19 Dec 2008 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-more-students-testing-publish/</guid>
      <description>&lt;p&gt;&#xA;This week two more students tested. We have a new green belt and a new blue belt. They did pretty well, but I am completely amazed at how many excuses adults have. Their heads are full of them. Can&amp;#39;t they just listen and say &amp;#39;yes&amp;#39; like they were taught when they were kids? Talking back is a privilege, not a right.&#xA;Ooh.. That&amp;#39;s good.. I&amp;#39;ll reuse that.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Windows Vista : Corrupt user profile</title>
      <link>http://blog.trevoke.net/post/import-windows-vista-corrupt-user-profile-publish/</link>
      <pubDate>Sun, 07 Dec 2008 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-windows-vista-corrupt-user-profile-publish/</guid>
      <description>&lt;p&gt;&#xA;I&amp;#39;m taking this from &amp;lt;a href=&amp;#34;&lt;a href=&#34;http://blog.tiensivu.com/aaron/archives/932-Dealing-with-corrupt-user-profiles-in-Vista-and-saving-the-contents.html&#34;&gt;http://blog.tiensivu.com/aaron/archives/932-Dealing-with-corrupt-user-profiles-in-Vista-and-saving-the-contents.html&lt;/a&gt;&amp;#34; target=&amp;#34;_blank&amp;#34;&amp;gt;this page&amp;lt;/a&amp;gt; but thought I should try to propagate it a little since it took me forever to find it.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;Assume in this example that the username is &lt;code&gt;atiensivu&lt;/code&gt;, the domain is &lt;code&gt;staff&lt;/code&gt;, and the user profile is located in &lt;code&gt;%systemdrive%\users\atiensivu&lt;/code&gt;. &lt;code&gt;%systemdrive%&lt;/code&gt; is typically &lt;code&gt;C:&lt;/code&gt; on standard Vista installs. Replace every instance of &lt;code&gt;atiensivu&lt;/code&gt; with the username of the corrupt profile.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;If you can log into the profile, make note of the &lt;code&gt;%USERPROFILE%&lt;/code&gt; environment variable value. Most likely it will be &lt;code&gt;C:\Users\atiensivu&lt;/code&gt; or &lt;code&gt;C:\Users\atiensivu.staff&lt;/code&gt;. Logoff.&lt;/li&gt;&#xA;&lt;li&gt;If you have logged in with the profile at any point since your last reboot or you suspect there are files in use within the profile, reboot. The important part is to make sure there are no open files within the broken profile directory.&lt;/li&gt;&#xA;&lt;li&gt;Login as administrator or another account with local admin rights.&lt;/li&gt;&#xA;&lt;li&gt;Run &lt;code&gt;takeown /r /a /d y /f %systemdrive%\users\atiensivu&lt;/code&gt;.&#xD; (Note : before doing step 4, remove things like the IE cache if you can, save yourself some time).&lt;/li&gt;&#xA;&lt;li&gt;From &lt;code&gt;%systemdrive%\users&lt;/code&gt;, rename &lt;code&gt;atiensivu&lt;/code&gt; to &lt;code&gt;atiensivu.old&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Within !%systemdrive%\users~, create a directory called &lt;code&gt;atiensivu&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Run &lt;code&gt;takeown /r /u staff\atiensivu /f %systemdrive%\users\atiensivu&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Run &lt;code&gt;regedit&lt;/code&gt; and go to &lt;code&gt;HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList&lt;/code&gt; and delete the SID key for the corrupt profile. Easiest way to find the correct SID is to search from the &amp;#39;ProfileList&amp;#39; key for the directory mentioned in %USERPROFILE% in step #1.&lt;/li&gt;&#xA;&lt;li&gt;Logoff.&lt;/li&gt;&#xA;&lt;li&gt;Log into the &lt;code&gt;atiensivu&lt;/code&gt; account. A new profile should be created. Copy over any files you might want from the old profile directory.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;The &amp;#39;takeown&amp;#39; commands might be overkill but I don&amp;#39;t like getting permission errors.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Martial arts while sick</title>
      <link>http://blog.trevoke.net/post/import-martial-arts-while-sick-publish/</link>
      <pubDate>Wed, 12 Nov 2008 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-martial-arts-while-sick-publish/</guid>
      <description>&lt;p&gt;&#xA;On Monday I went to the dojo as usual, though I&amp;#39;d had a cold over the week-end and wasn&amp;#39;t quite over it (I&amp;#39;m still not over it now..). During form practice, I was constantly correcting myself - I guess that goes to show I need to practice a lot more, if I dedicate this much mindpower to each form.. :)&lt;/p&gt;</description>
    </item>
    <item>
      <title>An old-school 6th dan</title>
      <link>http://blog.trevoke.net/post/import-an-old-school-6th-dan-publish/</link>
      <pubDate>Tue, 04 Nov 2008 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-an-old-school-6th-dan-publish/</guid>
      <description>&lt;p&gt;&#xA;Yesterday evening a man who trained about as long as sensei came to train with us. Black obi, rather frayed to white. He&amp;#39;d trained a long time under his uncle, and then ~15 years under sensei&amp;#39;s sensei. He&amp;#39;d taken a break for a while, so he was a bit out of shape, but his mindset, his attitude, his devotion were 100% into everything he did - an important lesson which I forget all too often.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to delete all files older than a day recursively in a directory and its subdirectories</title>
      <link>http://blog.trevoke.net/post/import-how-to-delete-all-files-older-than-a-day-recursively-in-a-directory-and-its-subdirectories-publish/</link>
      <pubDate>Tue, 04 Nov 2008 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-how-to-delete-all-files-older-than-a-day-recursively-in-a-directory-and-its-subdirectories-publish/</guid>
      <description>&lt;p&gt;&#xA;Whoo! I haven&amp;#39;t done a post that long in a while!&lt;/p&gt;&#xA;&lt;p&gt;&#xA;I put &amp;#39;activerecord&amp;#39; in there to take advantage of the &amp;#39;24.hours.ago&amp;#39; notation, which makes life much easier. The cost is a little less than 2 seconds to load the library, so I think it&amp;#39;s worth it. It runs as a daily job before backup to tape, to clear old backups from the directory tree.&lt;/p&gt;&#xA;&lt;div class=&#34;src src-ruby&#34;&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;require&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;activerecord&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;delete_recursively&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;in_here&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;no&#34;&gt;Dir&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;chdir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;in_here&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;no&#34;&gt;Dir&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;glob&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;*&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;filename&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;File&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;directory?&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;filename&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;n&#34;&gt;delete_recursively&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;filename&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;File&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mtime&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;filename&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;24&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;hours&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ago&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;no&#34;&gt;File&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;delete&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;filename&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;k&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;no&#34;&gt;Dir&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;chdir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;..&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;delete_recursively&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;your/path/here&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>MIMVista and auto-deletion of archived studies</title>
      <link>http://blog.trevoke.net/post/import-mimvista-and-auto-deletion-of-archived-studies-publish/</link>
      <pubDate>Tue, 04 Nov 2008 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-mimvista-and-auto-deletion-of-archived-studies-publish/</guid>
      <description>&lt;p&gt;&#xA;The MIM keeps 60 days by default. That may be too much for you..&lt;/p&gt;&#xA;&lt;p&gt;&#xA;By default, the folder C:Program Files\MIM\config should make you really happy, it&amp;#39;s got lots of plain text files with configuration for all kinds of settings.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;cleanup.txt has &amp;#34;ARCHIVE LEFTOVER AGE (DAYS) := 60&lt;/p&gt;&#xA;&lt;p&gt;&#xA;Change that to whatever you feel is appropriate for you needs.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Kali sticks</title>
      <link>http://blog.trevoke.net/post/import-kali-sticks-publish/</link>
      <pubDate>Thu, 15 May 2008 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-kali-sticks-publish/</guid>
      <description>&lt;p&gt;&#xA;Yesterday we had a small class, so we were able to each work on what we needed. I, hopefully, now have the full chatan yara no sai form, so I just need to work it..&lt;/p&gt;&#xA;&lt;p&gt;&#xA;We did some kali stick work. The yellow and blue belt had never seen those drills before so we started with a simple high-low-high, but we did try for a little bit the sinawali drills, specifically heaven, because that one&amp;#39;s fun :) Kali sticks are very good to work follow-through, speed and flow, and god knows I need that.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Testing for purple</title>
      <link>http://blog.trevoke.net/post/import-testing-for-purple-publish/</link>
      <pubDate>Thu, 01 May 2008 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-testing-for-purple-publish/</guid>
      <description>&lt;p&gt;&#xA;Monday and yesterday, two blue belts were to test for purple. They went through their calisthenics and basics; I did not see their forms on Monday, but I did see them on Wednesday. They were bad enough sensei wanted to see them again, that much I understood, but not sure how bad until I saw them both.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;Neither of them broke a sweat until fighting, not for the 100 jumping jacks, not for the 60 push-ups, not for the multiple kick combinations. They did get out of breath when doing all the forms in a row, at least…&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solved my left shoulder pain?</title>
      <link>http://blog.trevoke.net/post/import-solved-my-left-shoulder-pain-publish/</link>
      <pubDate>Tue, 15 Apr 2008 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-solved-my-left-shoulder-pain-publish/</guid>
      <description>&lt;p&gt;&#xA;Is it a worrying trend that I write mostly about pain in here? :)&lt;/p&gt;&#xA;&lt;p&gt;&#xA;Every once in a while, usually while doing a high block with my left arm, I&amp;#39;d feel a pain in my left shoulder. It felt like a part was rolling over another one.. Muscle over bone, or something like that. It&amp;#39;s not pleasant and is the kind of pain that stops your movement quite short and quite abruptly.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hurt my mid-back...</title>
      <link>http://blog.trevoke.net/post/import-hurt-my-mid-back-publish/</link>
      <pubDate>Tue, 08 Apr 2008 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-hurt-my-mid-back-publish/</guid>
      <description>&lt;p&gt;&#xA;I don&amp;#39;t know how I did it, but at some point during my empty hand class, I hurt my back. Think of a line going horizontally across the middle of the back (under the shoulderblades), and you have it. I didn&amp;#39;t stay for weapons past my bo class and went home. I was OK during my sword class, which means either I wasn&amp;#39;t paying attention, or I wasn&amp;#39;t using those muscles..&lt;/p&gt;</description>
    </item>
    <item>
      <title>Found the solar plexus yet?</title>
      <link>http://blog.trevoke.net/post/import-found-the-solar-plexus-yet-publish/</link>
      <pubDate>Mon, 24 Mar 2008 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-found-the-solar-plexus-yet-publish/</guid>
      <description>&lt;p&gt;&#xA;We have a move in a form that requires holding a hand in front of the solar plexus. One of the kids was holding his hand a little low, so I mentioned it to him.. He start hitting his chest a few times with his hand, so I laugh. &amp;#34;Think you got it?&amp;#34; He does it a few more times and starts coughing. &amp;#34;Ah, now you got it.&amp;#34;&lt;/p&gt;</description>
    </item>
    <item>
      <title>So, you want to spar?</title>
      <link>http://blog.trevoke.net/post/import-so-you-want-to-spar-publish/</link>
      <pubDate>Fri, 21 Mar 2008 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-so-you-want-to-spar-publish/</guid>
      <description>&lt;p&gt;&#xA;Sparring can be one of the many reasons one wants to join a martial arts school, sometimes even their only interest. Unless you join a school based on street defense, you may not do as much as you&amp;#39;d like. Besides, the insurances and legality issues being what they are, usually you are limited to sparring gear which lets you mostly throw punches and kicks.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;The teacher of a traditional school probably won&amp;#39;t let you spar until after you get a belt or two, because you need to break in your body and the techniques you are learning – besides, you don&amp;#39;t have enough control to know when to stop your strikes, so if your opponent fails to block, you could hurt him quite a bit. It&amp;#39;s more dangerous to spar a beginner than an advanced student :) Sparring will teach you footwork and will get you used to seeing strikes come at you. It&amp;#39;ll also get you used to working out combinations of strikes, pacing yourself, and speed of action.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Which martial arts school is right for you?</title>
      <link>http://blog.trevoke.net/post/import-which-martial-arts-school-is-right-for-you-publish/</link>
      <pubDate>Thu, 20 Mar 2008 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/import-which-martial-arts-school-is-right-for-you-publish/</guid>
      <description>&lt;p&gt;&#xA;So, you&amp;#39;ve decided to start taking a martial arts class. Good for you!&lt;/p&gt;&#xA;&lt;p&gt;&#xA;Why do you want to join? Is it to fight, to learn to defend yourself, to develop self-discipline, to learn kata (&amp;#39;forms&amp;#39;), for health reasons? All of the above?&lt;/p&gt;&#xA;&lt;p&gt;&#xA;For the purpose of this article (if nothing else), I will make a differentiation between a fighting style and a martial art. In a fighting style, you are learning to fight, and that is it. Martial arts involve other lessons.&lt;/p&gt;</description>
    </item>
    <item>
      <title></title>
      <link>http://blog.trevoke.net/post/xp-and-dewey/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>http://blog.trevoke.net/post/xp-and-dewey/</guid>
      <description>&lt;p&gt;codebase is like a library and a programming team is like a librarian.&#xA;A good codebase is a library that uses the Dewey decimal system, and a good programming team is a librarian that knows the Dewey decimal system.&#xA;Also, the Dewey decimal system is XP practices. (duh :p)&#xA;As the library grows, it becomes literally impossible to find your way around without using some version of the Dewey decimal system. If your first engineer was named Matt, it’s possible that the library is using the Matt decimal system, and that means only Matt can find his way around or even make changes safely.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
