{
    "version": "https://jsonfeed.org/version/1",
    "title": "Tyler Butler",
    "home_page_url": "https://tylerbutler.com/",
    "feed_url": "http://feed.tylerbutler.com/AllPosts",
    "items": [
        {
            "id": "https://tylerbutler.com/trellis/",
            "url": "http://feed.tylerbutler.com/link/18607/17382103/trellis",
            "title": "Trellis: workspace tooling for Gleam monorepos",
            "content_html": "<p>As I\u2019ve been building more libraries in the Gleam ecosystem, I\u2019ve taken advantage of Gleam\u2019s support for file system dependencies.\nPath deps let you create local workspaces with multiple Gleam packages linked and built together. It\u2019s great!</p>\n<p>The first workspace I set up was for my <a href=\"https://lattice.tylerbutler.com\">lattice</a> project, a collection of CRDT implementations.\nEach data structure is packaged individually, so you can depend on just the counter or just the OR-set without pulling in everything else, and each package can version and release on its own schedule.\nThis is clearly the right shape for lattice.</p>\n<p>It also surfaced two problems.</p>\n<p><strong>Running things in the right order.</strong> Within a single package, Gleam handles path deps well \u2014 edit a dependency\u2019s source and the consumer\u2019s next build picks it up. But that\u2019s where the workspace awareness ends: <code>gleam build</code>, <code>gleam test</code>, and <code>gleam publish</code> each operate on one package directory at a time. Running tests across the whole workspace \u2014 or just across the packages a change actually affected \u2014 meant hand-maintaining the package list in topological order in a justfile and looping over it serially in bash. Every new package had to be added to the list by hand, and nothing verified the ordering as the dependency graph evolved. That\u2019s fine with two packages and increasingly not fine after that.</p>\n<p><strong>Releasing.</strong> Publishing a multi-package workspace to Hex meant a pile of bash glue: computing publish order by hand, and \u2014 the worst part \u2014 rewriting each package\u2019s path dependencies into valid Hex version requirements at publish time, then putting the originals back afterward. That step was the most annoying and error-prone thing to automate, because a half-failed release leaves your repo in a rewritten state.</p>\n<p>I also initially struggled with how to handle versioning across the packages, which I believe should work a specific way: every user-facing change gets recorded as a small fragment file when it lands, and releases batch the accumulated fragments into version bumps and changelog entries. Fortunately there\u2019s an excellent tool called <a href=\"https://changie.dev/\">Changie</a> that automates exactly this workflow, and I highly recommend it. I use it for my Rust projects \u2014 including, as it happens, this one.</p>\n<p>After running into my third project that needed the same Gleam workspace infrastructure, I decided it was time to solve the problem properly.</p>\n<h2><a href=\"https://tylerbutler.com#enter-trellis\">Enter trellis</a></h2>\n<p>I happen to have quite a bit of professional experience in this area, so I wrote down the scenarios and sketched the\nCLI, then dispatched Fable 5 to put it together.\nI was reasonably impressed with what it produced, and I\u2019m already using it in my projects.</p>\n<p>The result is <a href=\"https://trellis.tylerbutler.com\">trellis</a> \u2014 a trellis being, of course, the frame a lattice grows on.</p>\n<p>The design principle: <strong>configure nothing that can be derived, verify anything that must be duplicated.</strong> There\u2019s no separate workspace config file. A <code>[tools.trellis]</code> table in the root <code>gleam.toml</code> marks the workspace and lists member globs; everything else \u2014 the dependency graph, build order, publish order, change impact, the path-dep rewrite map \u2014 is computed from the members\u2019 own <code>gleam.toml</code> files, never declared.</p>\n<div><figure><figcaption></figcaption><pre><code><div><div><span># gleam.toml at the repo root</span></div></div><div><div><span>[</span><span>tools</span><span>.</span><span>trellis</span><span>]</span></div></div><div><div><span>members </span><span>=</span><span> [</span><span>\"packages/*\"</span><span>,</span><span> </span><span>\"examples/*\"</span><span>]</span></div></div><div><div><span>exclude </span><span>=</span><span> { \"@release\" </span><span>=</span><span> [</span><span>\"examples/*\"</span><span>] }</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>That\u2019s enough for the day-to-day commands:</p>\n<div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><span>trellis</span><span> </span><span>run</span><span> </span><span>test</span><span>                     </span><span># graph-parallel: a package runs as soon</span></div></div><div><div><span>                                     </span><span># as its workspace deps have finished</span></div></div><div><div><span>trellis</span><span> </span><span>run</span><span> </span><span>test</span><span> </span><span>--since</span><span> </span><span>origin/main</span><span> </span><span>--with-dependents</span></div></div><div><div><span>                                     </span><span># only what a PR touched, plus dependents</span></div></div><div><div><span>trellis</span><span> </span><span>graph</span><span> </span><span>--format</span><span> </span><span>mermaid</span><span>       </span><span># see the topology</span></div></div><div><div><span>trellis</span><span> </span><span>doctor</span><span>                       </span><span># check every workspace invariant at once</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>And for releases, the part I actually built it for:</p>\n<div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><span>trellis</span><span> </span><span>changelog</span><span> </span><span>new</span><span> </span><span>--kind</span><span> </span><span>Added</span><span> </span><span>--body</span><span> </span><span>\"...\"</span><span>   </span><span># record a fragment</span></div></div><div><div><span>trellis</span><span> </span><span>release</span><span> </span><span>pr</span><span>                                </span><span># fragments -&gt; release PR</span></div></div><div><div><span>trellis</span><span> </span><span>tag</span><span> </span><span>create</span><span> </span><span>--push</span><span> </span><span>--github-release</span><span>        </span><span># tag merged versions</span></div></div><div><div><span>trellis</span><span> </span><span>publish</span><span> </span><span>--all-untagged</span><span>                    </span><span># publish to Hex, in order</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p><code>publish</code> handles the path-dep rewrite that used to be my least favorite bash script: each workspace path dependency becomes a Hex requirement derived from that dep\u2019s current version, <code>gleam publish</code> runs, and the original <code>gleam.toml</code> is restored \u2014 even on failure. Already-published versions are skipped, so re-running a partially failed release is safe.</p>\n<h2><a href=\"https://tylerbutler.com#opinionated-but-modular\">Opinionated but modular</a></h2>\n<p>Trellis is opinionated, but the pieces are modular, so you can adopt only the ones you want. If you just want <code>run</code> and\n<code>graph</code>, use those and keep your existing release process. I also built the changelog engine in as a native,\nChangie-compatible feature \u2014 fragments in <code>.changes/unreleased/</code>, configurable kinds and bump rules \u2014 because it\u2019s\nnice to have a single binary that handles the whole workspace scenario end to end, in CI and locally alike. But if you\ndon\u2019t like how it works, sub it out.</p>\n<p>I also welcome bug reports, feature requests, pull requests, etc. on the <a href=\"https://github.com/tylerbutler/trellis\">trellis\nrepo</a>. It\u2019s MIT-licensed open source.</p>\n<p>It ships as a single prebuilt binary (shell installer, Homebrew, mise, or <code>cargo install</code>), so it installs in CI in\nabout a second. There are comprehensive docs at <a href=\"https://trellis.tylerbutler.com\">trellis.tylerbutler.com</a>. If you\u2019re building more than one Gleam package in a repo, take it for a spin.</p><img src=\"http://feed.tylerbutler.com/link/18607/17382103.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2026-07-17T04:32:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17382103.gif"
        },
        {
            "id": "https://tylerbutler.com/introducing-ccl/",
            "url": "http://feed.tylerbutler.com/link/18607/17307800/introducing-ccl",
            "title": "Introducing CCL",
            "content_html": "<p>In <a href=\"https://tylerbutler.com/packagejson-considered-harmful/\">package.json considered harmful</a>, I made the case that JSON is a\npoor config format and that JSONC and JSON5 don\u2019t actually fix the problem \u2014 they just extend the lifespan of a bad bet.\nIf comments are a requirement (and I think they are), and if simplicity matters, then the JavaScript ecosystem\u2019s default\nconfig story is genuinely broken.</p>\n<p>But pointing out what\u2019s wrong is the easy part. What should you use instead?</p>\n<p>I\u2019ve been thinking about this for a while, and I want to tell you about a language I stumbled onto recently that I think\ngets it right \u2014 or at least, gets closer than anything else I\u2019ve tried.</p>\n<h2><a href=\"https://tylerbutler.com#the-second-criterion\">The second criterion</a></h2>\n<p>I said in <a href=\"https://tylerbutler.com/packagejson-considered-harmful/\">package.json considered harmful</a> that comment support is the\nminimum bar for a config language. But there\u2019s a second criterion I didn\u2019t spend much time on: <strong>simplicity</strong>. It needs\nto be simple to hand-author, simple to read, and simple to understand.</p>\n<p>This sounds obvious, but it\u2019s surprisingly easy to fail. Which brings me to my first encounter on the road to finding\nsomething better.</p>\n<h2><a href=\"https://tylerbutler.com#discovering-pkl-and-rejecting-it\">Discovering PKL (and rejecting it)</a></h2>\n<p>I\u2019ve been using <a href=\"https://mise.jdx.dev\">mise</a> for managing dev tools \u2014 it\u2019s excellent for polyglot environments where you\u2019re juggling Rust\nand Node.js toolchains simultaneously. The same author released a tool called HK, a Git hook manager. I tried it out,\nand the way HK is configured is using a language called <a href=\"https://pkl-lang.org\">PKL</a>.</p>\n<p>I\u2019d never heard of it. So I started researching, and wow \u2014 PKL is <em>not</em> a configuration language. PKL is a programming\nlanguage <em>disguised</em> as a configuration language. It\u2019s far too complicated. It has far too many features.</p>\n<p>PKL does support comments, so it clears the first bar. But it fails the second one badly. At the point where your config\nlanguage needs a runtime and an execution model, the honest question is: why aren\u2019t you just writing code? The\ncomplexity cost is real; the benefit over simply using a programming language is not.</p>\n<p>Machines are, in some ways, secondary to this conversation. We believe this about programming languages \u2014 nobody designs\na language to make it easier for the computer. We design syntax and semantics to help the programmer, then do extra work\nin the compiler. We go to all that trouble because we believe people are more productive in languages that are easier to\nread and write.</p>\n<p>Config languages carry the same obligation. They should be easy to read, easy to write by hand. PKL seems to have\nforgotten this.</p>\n<h2><a href=\"https://tylerbutler.com#finding-ccl\">Finding CCL</a></h2>\n<p>While I was working through PKL\u2019s documentation and finding new things to be frustrated by, I came across a <a href=\"https://chshersh.com/blog/2025-01-06-the-most-elegant-configuration-language.html\">blog\npost</a> by Dmitrii Kovanikov. I found myself nodding along, saying \u201cyes, this all makes sense.\u201d It was about a\nconfiguration language Dmitrii called <em>Categorical Configuration Language</em>.</p>\n<h2><a href=\"https://tylerbutler.com#what-makes-ccl-elegant\">What makes CCL elegant</a></h2>\n<p>Consider how you\u2019d jot down a list on paper. You\u2019d probably write a heading, indent a bit underneath it, maybe use a\ndash for items. If something belongs under another item, you\u2019d indent further. Maybe it would look something like this:</p>\n<div><figure><figcaption></figcaption><pre><code><div><div><span>Errands</span></div></div><div><div><span>- Groceries</span></div></div><div><div><span><span>  </span></span><span>Fruit</span></div></div><div><div><span><span>    </span></span><span>- Apples - 2 lb</span></div></div><div><div><span><span>    </span></span><span>- Bananas - 1 bunch</span></div></div><div><div><span><span>  </span></span><span>- Crudite platter</span></div></div><div><div><span><span>  </span></span><span>- Cereal</span></div></div><div><div><span><span>  </span></span><span>- Milk</span></div></div><div><div><span>- Vet - Spot's surgery ($500 deposit, ask about \"recovery diet\")</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>Here\u2019s what a basic CCL config looks like:</p>\n<div><figure><figcaption></figcaption><pre><code><div><div><span>/= Errands</span></div></div><div><div><span>Groceries </span><span>=</span></div></div><div><div><span><span>  </span></span><span>Fruit </span><span>=</span></div></div><div><div><span><span>    </span></span><span>Apples </span><span>=</span><span> 2 lb</span></div></div><div><div><span><span>    </span></span><span>Bananas </span><span>=</span><span> 1 bunch</span></div></div><div><div><span>  </span><span>=</span><span> </span><span>Crudite platter</span></div></div><div><div><span>  </span><span>=</span><span> </span><span>Cereal</span></div></div><div><div><span>  </span><span>=</span><span> </span><span>Milk</span></div></div><div><div><span>Vet </span><span>=</span><span> Spot's surgery ($500 deposit, ask about \"recovery diet\")</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>That\u2019s it. Keys and values separated by <code>=</code>. Comments are just entries with <code>/</code> as the key \u2014 not special syntax, just a\nconvention. Nested values are indented. Lists are created by empty keys \u2014 much like the human-made list might use a dash\nto denote a list item. There\u2019s nothing else to learn.</p>\n<p>I know there\u2019s a cohort of programmers for whom significant indentation is an unforgivable sin. I have genuinely mixed feelings about YAML, which also uses indentation for structure, and I understand the frustration. But in CCL, the indentation is doing something different \u2014 and the distinction matters.</p>\n<p>The key insight is this: every time a language uses a special character to delimit structure \u2014 <code>{</code>, <code>}</code>, <code>[</code>, <code>]</code>, <code>\"</code>,\n<code>|</code> \u2014 it creates an escaping problem. What if your value <em>contains</em> that character? Now you need escape sequences. And\nif your value is a shell command that already contains escaping, you end up double-escaping, which is a special kind of\nmisery.</p>\n<p>Whitespace doesn\u2019t have this problem. You rarely need to escape a space. Nobody writes a shell command and worries it\ncontains too many leading spaces. Dmitrii calls whitespace \u201csilent ninjas\u201d \u2014 they do structural work without being\nvisible characters anyone would ever need to include literally in a value. YAML uses indentation too, but pairs it with\na large surface area of other syntax. CCL uses indentation <em>instead</em> of that other syntax. That\u2019s a meaningful\ndistinction.</p>\n<p>There\u2019s also a deeper mathematical elegance here that I\u2019ll only gesture at: CCL configs compose associatively, and an empty config is a valid identity element, which means the whole thing forms a monoid. If that means something to you, <a href=\"https://chshersh.com/blog/2025-01-06-the-most-elegant-configuration-language.html\">Dmitrii\u2019s post</a> goes much further down that road \u2014 it\u2019s one of the more satisfying things I\u2019ve read about config design.</p>\n<h2><a href=\"https://tylerbutler.com#minimal-syntax-in-practice\">Minimal syntax in practice</a></h2>\n<p>There\u2019s something else really powerful about CCL. The only characters that are processed in a special way are a newline\nand an equals sign. And the equals sign is only special when it\u2019s the first one on a line \u2014 every other equals is not\nspecial.</p>\n<p>This means you can use CCL to embed other languages quite easily. But it also happens to be really useful for apps that\nneed to store shell commands. Escaping is always a pain when you have a shell command that also needs to do escaping in\nthe shell \u2014 double escaping is hard.</p>\n<p>CCL solves that because there\u2019s no escaping. You get a string that represents the exact string you need to run in the\nshell. I make heavy use of this in my app <a href=\"https://github.com/tylerbutler/santa\">Santa</a>, where every package source is essentially a set of shell commands.\nIt\u2019s very easy to configure in CCL with no weird escaping rules to explain.</p>\n<h2><a href=\"https://tylerbutler.com#building-with-llms\">Building with LLMs</a></h2>\n<p>The other reason I found CCL interesting is that it\u2019s been a fun project to explore with LLMs and different programming\nlanguages. I have an interest in lots of languages but I\u2019m not fluent in all of them. I can read code and understand\nwhat the code does, but I couldn\u2019t necessarily write it from scratch without a lot of references.</p>\n<p>So I had fun creating a <a href=\"https://github.com/CatConfLang/ccl-test-data\">library of test cases</a>, then a test harness, then instructions for how to build a test\nharness in any language. I used that harness to build CCL parser implementations in Rust, Gleam, Go, and TypeScript.\nEach one was a chance to learn something about the language while also building something genuinely useful.</p>\n<h2><a href=\"https://tylerbutler.com#ccl-isnt-competing-with-json\">CCL isn\u2019t competing with JSON</a></h2>\n<p>Before I go further, I want to be direct about something: I\u2019m not arguing that CCL should replace JSON. That\u2019s not the\npoint, and it\u2019s not a realistic claim.</p>\n<p>JSON\u2019s ubiquity comes from being a data interchange format \u2014 something every language can produce and consume, with a\nspec stable enough that parsers written a decade apart still agree. That\u2019s genuinely valuable, and CCL doesn\u2019t offer it.\nCCL has no ambitions there, and it shouldn\u2019t. The two formats are solving different problems.</p>\n<p>The argument I\u2019m making is narrower: when you\u2019re choosing a config language and you actually have a choice, CCL deserves\nserious consideration. Most of the time when we reach for JSON as a config format, we\u2019re not making a deliberate choice\n\u2014 we\u2019re just following the path of least resistance. npm did it, the tools around npm did it, and now the question feels\nsettled before it\u2019s been asked.</p>\n<p>But there are plenty of contexts where the question isn\u2019t settled. You\u2019re building a new tool. You\u2019re designing the\nconfig format for an app you own. You\u2019re starting a project that isn\u2019t already embedded in the JSON ecosystem. In those\nmoments, you have a real choice, and the default answer isn\u2019t necessarily the right one.</p>\n<p>CCL will likely never be as popular as JSON, and that\u2019s fine. Popularity follows adoption, and adoption follows\necosystem gravity \u2014 JSON has decades of that. What CCL has instead is a set of properties that make it genuinely\nwell-suited to the specific job of human-authored configuration: minimal syntax, no escaping problems, comments as a\nfirst-class concept. Those properties don\u2019t help you interchange data between microservices. They do help you write and\nmaintain config files that real people have to read and edit.</p>\n<p>That\u2019s a smaller job than what JSON does. It\u2019s also the job JSON has always been bad at.</p>\n<h2><a href=\"https://tylerbutler.com#whats-next\">What\u2019s next</a></h2>\n<p>After spending time with this, I wanted to do more than just build parsers for my own use. I\u2019ve created a GitHub\norganization \u2014 <a href=\"https://github.com/CatConfLang\">CatConfLang</a> \u2014 to collect CCL implementations across languages and\nbuild out the ecosystem a bit. The reference implementation is <a href=\"https://github.com/chshersh/ccl\">Dmitrii\u2019s OCaml\nversion</a>, but there are now parsers in Rust, Go, TypeScript, and Gleam, each developed\nagainst a shared test suite so behavior stays consistent.</p>\n<p>I also built a <a href=\"https://github.com/CatConfLang/ccl-test-data\">comprehensive test suite</a> that I continue to improve and a\nwebsite, <a href=\"https://ccl.tylerbutler.com\">ccl.tylerbutler.com</a> including LLM prompts for folks who want to explore LLM\ncoding agents on a \u201creal project.\u201d</p>\n<p>If you find CCL interesting, take a look and get in touch! The spec is simple enough that you could implement a parser in an afternoon in whatever language you know best. That\u2019s kind of the point.</p><img src=\"http://feed.tylerbutler.com/link/18607/17307800.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2026-03-27T20:27:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17307800.gif"
        },
        {
            "id": "https://tylerbutler.com/packagejson-considered-harmful/",
            "url": "http://feed.tylerbutler.com/link/18607/17307801/packagejson-considered-harmful",
            "title": "package.json considered harmful",
            "content_html": "<p>Any web developer over the last 15 years or so has encountered <a href=\"https://www.json.org\">JSON</a>. It stands for JavaScript Object Notation, and\nit is one of the most ubiquitous data formats on the web today. It is, as they say, literally everywhere.</p>\n<p>You\u2019d be forgiven for thinking its ubiquity is evidence of its quality. You would be wrong.</p>\n<h2><a href=\"https://tylerbutler.com#what-json-is-actually-for\">What JSON is actually for</a></h2>\n<p>Before I make that case, let\u2019s establish what JSON was designed to do, because value judgments need context.</p>\n<p>From Wikipedia:</p>\n<blockquote>\n<p>JSON grew out of a need for a real-time server-to-browser session communication protocol without using\nbrowser plugins such as Flash or Java applets, the dominant methods used in the early 2000s.\u201d</p>\n</blockquote>\n<p>JSON is JavaScript\u2019s serialization format. It\u2019s how JavaScript takes in-memory data and represents it as text, then\nconverts that text back into an in-memory object. That\u2019s it. That\u2019s the job. It happens that a textual format for data interchange has use beyond JavaScript, and accordingly JSON has spread far beyond JavaScript, and far beyond the web.</p>\n<p>Lots of languages have something like this. Python has <a href=\"https://docs.python.org/3/library/pickle.html\">pickle</a> \u2014 a binary format, notably not portable, and not designed\nfor interchange between languages. Importantly, <strong>JSON was not designed for humans</strong>. Or at least not <em>primarily</em> for\nhumans. It\u2019s a machine-to-machine format. It exists to transfer data between systems where that data is consumed and\ncreated largely by machines.</p>\n<p>Sounds reasonable, no? The problem is that we don\u2019t use it for that.</p>\n<h2><a href=\"https://tylerbutler.com#to-be-fair-to-json\">To be fair to JSON</a></h2>\n<p>None of this is to say JSON is a bad format. It\u2019s genuinely good at what it was designed for, and it\u2019s worth being clear\nabout that before I make the case against its misuse.</p>\n<p>The security argument for JSON is real. Because JSON can only represent data \u2014 strings, numbers, booleans, arrays,\nobjects \u2014 there\u2019s nothing to execute. You parse it, you get a data structure, and that\u2019s the end of the story. Compare\nthat to executable config formats like vite.config.ts or <a href=\"https://dhall-lang.org\">Dhall</a>, where loading the config means running code. That\u2019s\na meaningful attack surface, and JSON simply doesn\u2019t have it.</p>\n<p>JSON is also genuinely universal. Every language has a JSON parser, and they all agree on the format. That\ninteroperability is not something you get for free \u2014 it\u2019s the result of a simple, stable spec that hasn\u2019t changed in\ndecades. When you need two systems written in different languages to exchange data reliably, JSON is still the\nlowest-friction option most of the time.</p>\n<p>And the tooling is exceptional. JSON Schema, formatters, validators, editor support \u2014 the ecosystem around JSON is\nmature in a way that most config formats can\u2019t match. If you need to validate the structure of a file, or provide IDE\nautocomplete for it, JSON has a well-worn path for that.</p>\n<p>So JSON is fast to parse, safe to load, universally supported, and well-tooled. The problem isn\u2019t JSON. The problem is\nthat none of those strengths matter much when you\u2019re hand-authoring a config file that you\u2019ll be maintaining for years.\nFor that job, the things JSON is good at are largely irrelevant, and the thing it\u2019s missing \u2014 comments \u2014 is not.</p>\n<h2><a href=\"https://tylerbutler.com#original-sin\">Original Sin</a></h2>\n<p>The most prevalent place you\u2019ll find JSON files in the JavaScript ecosystem is <code>package.json</code> \u2014 the formal location for\npackage metadata in <a href=\"https://www.npmjs.com\">npm</a>. And \u201cpackage metadata\u201d might <em>sound</em> like machine-generated data, except almost nothing in\n<code>package.json</code> is machine-managed. The package name, the version, the keywords, the description, the scripts, the\ndependencies \u2014 all hand-authored. All human-maintained. This is not machine-machine data exchange. And then there\u2019s the\nsprawl of tool configurations that have followed npm\u2019s example, carrying this cursed seed to far-off lands.</p>\n<p>This is the original sin: npm chose a comment-less serialization format as the <em>de facto</em> config format for an entire\necosystem, before anyone realized what that would cost over time.</p>\n<h2><a href=\"https://tylerbutler.com#comments-are-not-optional\">Comments are not optional</a></h2>\n<p>Here\u2019s the core of my argument: <strong>a config format without comment support cannot be a good config format</strong>. Full stop.</p>\n<p>This sounds like a simple complaint, but follow it through. Configuration is rarely self-explanatory. There are settings\nthat were made for very particular reasons \u2014 learned by some engineer long before your time, under constraints you no\nlonger remember. That context needs to live somewhere. It needs to be in the file, near the thing it explains, findable\nyears later when someone is wondering why this dependency is pinned to a version three years old.</p>\n<p>The same rules apply to config that apply to code. If a programming language didn\u2019t support comments, we\u2019d call it\nuntenable. We\u2019d refuse to use it in production. So why do we accept that from a config format? The implicit assumption\nis that config is somehow simpler or less important than code. It should be simpler \u2014 but it is absolutely not less\nimportant.</p>\n<p>Let me give you a concrete example:</p>\n<p>You notice a dependency in <code>package.json</code> that looks outdated. Not just outdated\u2026 <em>three years old and deprecated!</em>\nShould it be upgraded? You don\u2019t know. There\u2019s nothing there to tell you. Nothing in the release notes seems like it\napplies to you. So you decide to try, briefly forgetting the Ferengi maxim, \u201cNo good deed goes unpunished.\u201d Hours later, after running CI and chasing down failures, you find a comment on a bug that\nseems completely unrelated to your issue but nonetheless contains the info you need.</p>\n<p>A gracious fellow engineer has found the key: your setup is one of the rare ones in which upgrading the dependency is a\nmulti-day project. You weep in thanks. Who knew you would owe such a debt to <em>FroyoIsMyFirstLove37</em>? Who can count the\nnumber of engineers who came before you and learned this sad lesson \u2014 not to mention <em>FroyoIsMyFirstLove37</em> themselves \u2014\nbut had no <em>obviously correct</em> place to record what they learned? You count yourself lucky that <em>FroyoIsMyFirstLove37</em>\nwasn\u2019t, in that moment, lazy.</p>\n<p>Because software engineers, we\u2019re ultimately a lazy bunch, and often the comment doesn\u2019t get added because it\u2019s too much\nwork to figure out where to put it. \u201cOh well!\u201d is what many engineers will say. Don\u2019t fool yourself into thinking that\nthis is just a cultural problem. When there aren\u2019t <em>obvious</em> places to put things, many engineers will stall out. Even\nexperienced ones. This scenario plays out every day, across repos and projects worldwide, involving countless engineers\nwho likely know better but, like me, are lazy.</p>\n<p>Imagine if instead you saw a comment above that dependency \u2014 <em>\u201cpinned at 2.x, API incompatibility in 3.x, see issue\n#1234\u201d</em> \u2014 it probably would have saved all of that effort. And even without the bug number, it\u2019s still useful!</p>\n<h2><a href=\"https://tylerbutler.com#jsonc-and-json5-are-not-solutions\">JSONC and JSON5 are not solutions</a></h2>\n<p>You might be thinking: but what about <a href=\"https://code.visualstudio.com/docs/languages/json#_json-with-comments\">JSONC</a>? What about <a href=\"https://json5.org\">JSON5</a>? These formats add comment support to JSON \u2014\ndoesn\u2019t that address the problem?</p>\n<p>No. And I argue they make it worse.</p>\n<p>The challenge is that JSON is now so embedded in the ecosystem that there are countless tools \u2014 parsers, validators,\nformatters, editors \u2014 that expect JSON to be JSON. When these tools add \u201csupport\u201d for JSONC, they typically do it by\nstripping the comments before parsing. They\u2019re not actually treating your comments as meaningful data. They\u2019re\ndiscarding them and reading standard JSON underneath.</p>\n<p>This creates several downstream problems. Some tools support JSONC for reading but write back standard JSON, silently\ndeleting every comment you\u2019ve written. Hope you committed those comments before running the tool! (I\u2019m looking at you, <a href=\"https://nx.dev\">NX</a>.) Others support JSON but not JSONC, forcing you to\nmaintain comment-less files for compatibility. The fragmentation is real and ongoing.</p>\n<p>But the deeper issue is this: JSONC and JSON5 extend the lifespan of a bad bet. They let the ecosystem keep using an\nunsuitable format rather than forcing a reckoning. They are patches on a design that was wrong from the start.</p>\n<h2><a href=\"https://tylerbutler.com#other-ecosystems-learned-this\">Other ecosystems learned this</a></h2>\n<p>The good news is that newer ecosystems largely got this right. Rust uses <code>Cargo.toml</code>. Gleam uses <code>gleam.toml</code>. Python\nhas <code>pyproject.toml</code>. None of these chose a comment-less format for human-authored configuration.</p>\n<p>I\u2019ll be honest: I have complicated feelings about <a href=\"https://toml.io\">TOML</a>. It has a reputation for being obvious to Tom, and I am not\nTom. I can never quite remember what double brackets mean without checking the docs. But at least it supports comments.\nAt least I can write a note in <code>Cargo.toml</code> explaining why a particular version is pinned, and that note will still be\nthere the next time I open the file, after other tools have already read and modified the file.</p>\n<p>I\u2019d hoped <a href=\"https://deno.com\">Deno</a> represented a clean break from this history. They built a new JavaScript runtime and had the\nopportunity to make different choices. And then there are <code>deno.json</code> files. Here we go again.</p>\n<h2><a href=\"https://tylerbutler.com#the-false-comfort-of-executable-config\">The false comfort of executable config</a></h2>\n<p>To be fair, the ecosystem has found one legitimate escape valve: executable config. Many modern tools allow\nconfiguration via a JavaScript or TypeScript module \u2014 <code>vite.config.ts</code>, <code>eslint.config.js</code>, and so on. These formats\nsupport comments, obviously, and offer additional benefits: strong typing, IDE intelligence, composability.</p>\n<p>I actually prefer these when they\u2019re available, precisely because of those conveniences. But they come with a real\ntradeoff that I think is underappreciated.</p>\n<p>Executable config is executable. That means it can only be loaded in an environment that can run JavaScript. I opened a\nPR on a project once to add CommonJS config support, and it was rejected for two legitimate reasons: the tool ran in\nenvironments where JavaScript might not be available, and as I mentioned, executing arbitrary code during config loading\nis a real security concern, not just a theoretical one.</p>\n<p>This is also, incidentally, part of why I\u2019m skeptical of <a href=\"https://pkl-lang.org\">PKL</a> and similar \u201cprogrammable configuration languages.\u201d At\nthe point where your config language is sophisticated enough to need a runtime and an execution model, the honest\nquestion is: why aren\u2019t you just using a programming language? The complexity cost is there, but the power isn\u2019t\nmeaningfully greater than just writing code.</p>\n<h2><a href=\"https://tylerbutler.com#a-simple-test\">A simple test</a></h2>\n<p>Here\u2019s a heuristic I\u2019ve found useful for thinking about your own JSON usage.</p>\n<p>Ask yourself: could all of your JSON data be replaced by <a href=\"https://msgpack.org\">MessagePack</a> tomorrow, and would your workflows notice a\nsignificant difference?</p>\n<p>MessagePack is a binary format that\u2019s largely a drop-in replacement for JSON over the wire \u2014 more compact, and without\nthe human readability overhead. (Whether it\u2019s actually faster to parse in practice depends heavily on your runtime \u2014\nV8\u2019s JSON handling is remarkably optimized \u2014 but the size savings are real.) If you could make that swap without much\ndisruption, your JSON usage is probably fine. You\u2019re using it for what it was designed for: machine-readable data\nexchange.</p>\n<p>But if that question fills you with dread \u2014 if you\u2019re thinking \u201cbut we need to <em>read</em> those files\u201d \u2014 then you\u2019re relying\non JSON as a human-readable format, and you should use a format fully designed for messy humans.</p>\n<p>There\u2019s also a more obvious tell: if your JSON data contains comment fields. You know the pattern \u2014 <code>field_one_comment: \"this value is set because...\"</code>. If you\u2019ve ever done that, or inherited a system that does, that\u2019s a distress signal.\nThat\u2019s a human need (annotation) trying to escape through whatever cracks it can find in a format that didn\u2019t plan for\nit.</p>\n<h2><a href=\"https://tylerbutler.com#what-to-do-instead\">What to do instead</a></h2>\n<p>If you\u2019re maintaining a JavaScript project and have any flexibility in your config choices, here\u2019s my rough hierarchy:</p>\n<p><strong>Use executable config</strong> (TypeScript or ESM modules) when the tool supports it and you can guarantee a JavaScript\nenvironment. The developer experience is genuinely excellent.</p>\n<p><strong>Use TOML or YAML</strong> for static config that needs to be portable or loaded outside a JavaScript context. Either one\nsupports comments. Neither one is JSON.</p>\n<p><strong>If you\u2019re stuck with JSON</strong>, my honest advice is to accept the limitation and compensate elsewhere. Some teams work\naround it with special comment fields \u2014 \u201c_comment\u201d or \u201cfield_name_comment\u201d \u2014 but these suffer from the same\nfundamental problem as JSONC: they\u2019re fragile conventions, not first-class features. Any tool that rewrites the file may\ndrop them, reorder them away from the thing they\u2019re annotating, or simply not recognize them. For configuration that\ngenuinely needs annotation, put that documentation in your README or a docs/ file and link to it. It\u2019s not elegant, but\nit\u2019s more durable than workarounds that depend on every tool in your chain playing along.</p>\n<p>The honest bottom line is that <code>package.json</code> is a blight on the Node ecosystem \u2014 not because JSON is a bad format, but\nbecause it\u2019s a format that was pressed into service it was never meant for. We made an early choice that calcified into\ninfrastructure, and now we\u2019re all living with the consequences.</p>\n<p>Newer ecosystems know better. But even knowing better, the alternatives I\u2019ve described are compromises: executable\nconfig ties you to a runtime, TOML is fine but never quite obvious, YAML trades one set of problems for another. None of\nthem feel like the right answer \u2014 they feel like the least-wrong answer. That nagging dissatisfaction is what led me to\nstart looking harder, and eventually to a configuration language I\u2019d never heard of that\u2019s built on an idea so simple it\nalmost seems like it shouldn\u2019t work \u2014 but it does. More on that next time.</p><img src=\"http://feed.tylerbutler.com/link/18607/17307801.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2026-03-26T22:32:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17307801.gif"
        },
        {
            "id": "https://tylerbutler.com/thanksgiving/",
            "url": "http://feed.tylerbutler.com/link/18607/17245830/thanksgiving",
            "title": "Thanksgiving 2024",
            "content_html": "<p>Thanksgiving has been my favorite of the US holidays for some time. I\u2019ve <a href=\"https://tylerbutler.com/tags/thanksgiving/\">written about it several times over the years</a>.</p>\n<p>When I am away for the holiday, I have used the following Rumi quote as my auto-reply message at work:</p>\n<blockquote>\n<p>Wear gratitude like a cloak, and it will feed every corner of your life.</p>\n</blockquote>\n<hr />\n<p>This year, though, has been extremely hard, following several other years that I swore were the hardest. The hits: they keep on coming.</p>\n<p>This year, a different Rumi poem rings true:</p>\n<blockquote>\n<p>Who makes these changes?<br />\nI shoot an arrow right.<br />\nIt lands left.<br />\nI ride after a deer and find myself<br />\nChased by a hog.<br />\nI plot to get what I want<br />\nAnd end up in prison.<br />\nI dig pits to trap others<br />\nAnd fall in.</p>\n<p>I should be suspicious<br />\nOf what I want.</p>\n</blockquote><img src=\"http://feed.tylerbutler.com/link/18607/17245830.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2024-11-28T20:32:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245830.gif"
        },
        {
            "id": "https://tylerbutler.com/coke-zero-ii-the-review/",
            "url": "http://feed.tylerbutler.com/link/18607/17245831/coke-zero-ii-the-review",
            "title": "Coke Zero II: The Review",
            "content_html": "<h2><a href=\"https://tylerbutler.com#the-news\">The News</a></h2>\n<p>Last week, my wife shared with me some rather alarming news: Coke Zero <a href=\"https://tylerbutler.com/link-not-available?url=https%3A%2F%2Fwww.washingtonpost.com%2Fbusiness%2Fcoke-zero-gets-makeover-as-coke-zero-sugar%2F2017%2F07%2F26%2F69c65010-7214-11e7-8c17-533c52b2f014_story.html%3Futm_term%3D.f6a83466de55\">is being discontinued</a>. As a man who has an arguably unhealthy attachment to his carbonated beverage of choice, this was panic-worthy.</p>\n<p>You\u2019ll forgive me for not trusting the Coca-Cola Company when they roll out replacement products with  \u201cnew, improved taste.\u201d After all, this is the same company that brought us New Coke<sup><a href=\"https://tylerbutler.com#fn:1\">1</a></sup> in 1985. Last I heard, that was still used as a cautionary tale in Marketing 101 classes.</p>\n<p>And you\u2019ll also forgive me for not thinking of this as merely a re-branding of the Coke Zero product. The ingredients list may be the same, but they clearly claim to have \u201ca new recipe.\u201d So regardless of what anyone else says, Coke Zero in its current form is gone.</p>\n<p>No big deal, though, right? I mean, announcements like this\u2026 they tend to be sensationalist. At the very least, I\u2019ll certainly have several months to prepare myself psychologically.</p>\n<p>Nope:</p>\n<blockquote>\n<p>The new cans and bottles, which will incorporate more red like regular Coke, will start hitting shelves in August 2017.</p>\n</blockquote>\n<p><em>August 2017?</em> Commence freak-out in three\u2026 two\u2026 one\u2026</p>\n\n<p>Lo and behold, at a Fred Meyer in Issaquah yesterday, my wife couldn\u2019t find Coke Zero at all, but Coca-Cola Zero Sugar<sup><a href=\"https://tylerbutler.com#fn:2\">2</a></sup> was there in spades. I naively figured that it would be a few more weeks before actual stores had switched over their stock, but I was wrong. My taste test would be happening a lot sooner than I\u2019d expected.</p>\n<h2><a href=\"https://tylerbutler.com#the-packaging\">The Packaging</a></h2>\n<p>My first observation about Coke Zero II (this is how I\u2019ll refer to it from now on) is that it has a lot more red in the pack again and labels than Coke Zero. This isn\u2019t too surprising. In fact, Coke Zero was an anomaly in food packaging since it was almost entirely black save for the white/red product name.</p>\n<p>The new packaging has a much more obvious splash of red, and my initial reaction was that it reminded me of the True Blood packaging in season 1 of HBO\u2019s eponymous show.<sup><a href=\"https://tylerbutler.com#fn:3\">3</a></sup> The packaging isn\u2019t entirely new, though; it looks very similar to the Coke Zero packaging <a href=\"http://www.underconsideration.com/brandnew/archives/new_packaging_for_coca-cola_in_spain.php\">introduced in Spain in 2015</a>.</p>\n<h2><a href=\"https://tylerbutler.com#the-taste\">The Taste</a></h2>\n<p>So how does it taste? In short, exactly like Coke Zero. I cannot tell any difference at all. At least not in the 1.25 liter plastic bottles, which is what I typically buy.<sup><a href=\"https://tylerbutler.com#fn:4\">4</a></sup> Whatever they\u2019re calling \u201cnew\u201d and \u201cimproved\u201d about the taste hasn\u2019t had any effect as far as I can tell. In case it wasn\u2019t obvious, that\u2019s a good thing in my book.</p>\n<h2><a href=\"https://tylerbutler.com#the-verdict\">The Verdict</a></h2>\n<p>Given that there\u2019s no discernible taste difference between Coke Zero II and Coke Zero (to my palate, at least), my verdict is a resounding:  <strong>\u00af\\_(\u30c4)_/\u00af</strong></p>\n<p>I mean, I\u2019m happy that I don\u2019t have to find a new soda, but I don\u2019t understand the messaging around this new product. I\u2019m about as far from a marketing expert as you can get, though, so what do I know?</p>\n<p>Growing up in Papua New Guinea, I can remember when Pepsi\u2019s slogan was, \u201cIt\u2019s Pepsi in PNG.\u201d It certainly ain\u2019t Pepsi in PNG anymore, because I <em>also</em> remember when Pepsi completely pulled out of the country and one of my dad\u2019s colleagues bought as many cases of Diet Pepsi as he could find.</p>\n<p>Fortunately that won\u2019t be my lot <em>this</em> time around, but I\u2019m not holding my breath that Coca-Cola won\u2019t take me for another roller coaster ride in the next few years.</p>\n<p><strong>\u00af\\_(\u30c4)_/\u00af</strong></p>\n<section><h2><a href=\"https://tylerbutler.com#footnote-label\">Footnotes</a></h2>\n<ol>\n<li>\n<p>I actually tried New Coke while I was in college. I came across a 24-pack of Coke II, which is how Coke re-branded their new formula in 1992, in a Jewel-Osco on the south side of Chicago. I don\u2019t remember much about how it tasted, though I didn\u2019t like it. It was too sweet for my tastes. But then, so is Coke Classic. </p>\n</li>\n<li>\n<p>That really just rolls off the tongue, doesn\u2019t it? When someone at work offers to grab me a drink from the kitchen, I don\u2019t think I\u2019ll be able to ask for <em>Coca-Cola Zero Sugar</em> with a straight face. Same for ordering it in a restaurant. Oh, who am I kidding? This will never show up in restaurants. </p>\n</li>\n<li>\n<p>I spent way too long looking for screenshots of what the drink looked like in the show, but came up empty. My memory could very well be faulty, but that was my initial reaction nonetheless. </p>\n</li>\n<li>\n<p>It\u2019s inexplicably cheaper per fluid ounce to buy 1.25 liter bottles than 2 liter bottles. I can\u2019t explain it either. </p>\n</li>\n</ol>\n</section><img src=\"http://feed.tylerbutler.com/link/18607/17245831.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2017-08-05T20:32:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245831.gif"
        },
        {
            "id": "https://tylerbutler.com/comiskey-park/",
            "url": "http://feed.tylerbutler.com/link/18607/17245832/comiskey-park",
            "title": "Comiskey Park",
            "content_html": "<p>Well, it\u2019s happened again. They\u2019ve gone and <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwgntv.com%2F2016%2F08%2F24%2Fwhite-sox-announce-name-change-to-ballpark%2F\">renamed Comiskey Park</a> to\nsomething else. And I feel about the same way <a href=\"https://tylerbutler.com/2004/05/all-i-said-was-comiskey-park/\">I did back in 2004</a>, when\nthe last name change happened.</p>\n<p>I lived a few blocks from the park at that time, as opposed to the few thousand\nI do now, but it still upsets me. Whatever happens, it\u2019ll always be Comiskey\nPark to me.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245832.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2016-08-26T03:40:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245832.gif"
        },
        {
            "id": "https://tylerbutler.com/thanksgiving-tradition-alice-s-restaurant-massacre/",
            "url": "http://feed.tylerbutler.com/link/18607/17245833/thanksgiving-tradition-alice-s-restaurant-massacre",
            "title": "Thanksgiving Tradition: Alice's Restaurant Massacre",
            "content_html": "<p>I have a tradition on Thanksgiving: I listen to Arlo Guthrie\u2019s classic <em>Alice\u2019s Restaurant Massacre</em>; all 18 minutes and 37 seconds of it. I don\u2019t remember exactly where I picked up this tradition, but it feels distinctly <em>mine</em> since it\u2019s not something that my family did growing up.</p>\n<p>Anyway, I found out yesterday that the song is available on Spotify in its full-length glory. So kick back, close your eyes for 20 minutes, and enjoy.</p>\n<img src=\"http://feed.tylerbutler.com/link/18607/17245833.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2015-11-27T20:01:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245833.gif"
        },
        {
            "id": "https://tylerbutler.com/documentation-versions-and-read-the-docs/",
            "url": "http://feed.tylerbutler.com/link/18607/17245834/documentation-versions-and-read-the-docs",
            "title": "Documentation, Versions, and Read the Docs",
            "content_html": "<p>Engineer is a side project for me right now. That means that while I am actively working on Engineer pretty regularly, releases themselves are not necessarily regular. I\u2019ve adopted a repository/branch structure that\u2019s influenced by <a href=\"http://nvie.com/posts/a-successful-git-branching-model/\">git flow</a>, so my main development branch is not <em>master</em>, it\u2019s <em>dev</em>.</p>\n<ul>\n<li><em>master</em>: The most recent released version of the code</li>\n<li><em>dev</em>: The in-development version of the code</li>\n</ul>\n<p>Up until <a href=\"https://tylerbutler.com/2014/05/engineer-v0-5-0-released/\">Engineer v0.5.0</a>, when you went to GitHub, you saw <em>master</em> by default.</p>\n<p>When you go to GitHub, I want you to see the latest in-development version. The reason is pretty simple: Since official releases are fairly slow, but I actually make changes fairly often, I want to make sure that activity is shown on the GitHub homepage \u2014 via the \u2018x days ago\u2019 text that shows up on the far right of the code listing. My hypothesis is that people make some judgements based on the activity level of project. If people are searching for a static site generator, and they come across Engineer, I don\u2019t want them to think that the project is abandoned and simply leave. If my default branch shown in GitHub is <em>master</em>, then it looks as though the project isn\u2019t under active development at first glance, which clearly isn\u2019t what I want. Thus, I want GitHub to display the <em>dev</em> branch by default, which is easy enough to change in the repository settings. I made this change along with the release of Engineer v0.5.0, so now when you go to the repository on GitHub, you\u2019ll see the <em>dev</em> branch by default.</p>\n<p>There\u2019s still a problem, though, related to the fact that I host <a href=\"https://engineer.readthedocs.org/\">Engineer\u2019s public documentation</a> on <a href=\"https://readthedocs.org/\">Read the Docs</a> (RTD). Imagine someone finds my project on GitHub, likes what they see, and installs the release version using pip:</p>\n<div><figure><figcaption></figcaption><pre><code><div><div><span>pip install engineer</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>Seems to be the natural thing to do, right? If they click the link in Engineer\u2019s README to visit the docs at RTD, then I want them to go to the version of the docs that corresponds to the version they just installed \u2014 the most recent released version.</p>\n<p>Now this is also relatively easy to do. RTD actually has some smarts around <a href=\"https://docs.readthedocs.org/en/latest/versions.html\">multiple versions of documentation</a>. RTD offers a few different settings that are relevant to my goals.</p>\n<p>First, there is a baked in \u2018version\u2019 identifier called <em>latest</em> which is intended to point to the most recent version of your docs:</p>\n<blockquote>\n<p>In the normal case, the latest version will always point to the most up to date development code. If you develop on a branch that is different than the default for your VCS, you should set the <strong>Default Branch</strong> to that branch.</p>\n</blockquote>\n<p>Of course, in my case, development is done on the <em>dev</em> branch, so I want <em>latest</em> to point to that branch. Fortunately that\u2019s easy to change, as the second sentence above alludes to. In the <em>Advanced Settings</em> section of the RTD dashboard, you\u2019ll find a <em>Default branch</em> setting, in which I entered <em>dev</em>. Great; now <em>latest</em> points to <em>dev</em>.</p>\n<p>The second setting of relevance in RTD is the <em>default version</em>. This controls what version of your docs <code>/</code> redirects to. By default this will be <em>latest</em>, but since I want <code>/</code> to always redirect to the most recent <em>released version</em> of Engineer, I changed this to <em>master</em>. Cool; now <code>/</code> simply redirects to the version of my docs from the <em>master</em> branch, which will always be the most recent released version.</p>\n<p>There is, of course, still a problem. Ideally, I would like links that people follow to go to the version of the documentation that matches the version of the code they\u2019re coming from and vice-versa. In other words, I would like the documentation link from the README file in the <em>master</em> branch to go to <a href=\"https://engineer.readthedocs.org/en/master/\">https://engineer.readthedocs.org/en/master/</a>, and the link in the <em>dev</em> branch to go to <a href=\"https://engineer.readthedocs.org/en/latest/\">https://engineer.readthedocs.org/en/latest/</a>.</p>\n<p>Unfortunately, that\u2019s not really possible. Sure, I could build some intelligent redirector or something that would look at the referrer URL and redirect to the appropriate docs version, but that\u2019s not something I want to build anytime soon. The best I can do is provide some notes in the documentation itself telling people that they <em>may</em> be looking for a version of documentation that is different from what they\u2019re seeing. It\u2019s not quite ideal from my perspective, but I think it helps.</p>\n<p>So bottom line, this is what I\u2019ve wound up with:</p>\n<ul>\n<li>If you go directly to <a href=\"https://engineer.readthedocs.org/\">https://engineer.readthedocs.org/</a>, you\u2019ll get the latest <em>released</em> version of the docs, which will correspond to what most people will install using pip.</li>\n<li>If you visit the <a href=\"https://github.com/tylerbutler/engineer\">GitHub repo</a>, you\u2019ll see the most recent in-development version of the code. The README links to <a href=\"https://engineer.readthedocs.org/\">https://engineer.readthedocs.org/</a>, which as I mentioned earlier will redirect to the <em>released</em> version of the docs.</li>\n<li>The docs themselves contain notes redirecting people to <a href=\"https://engineer.readthedocs.org/en/latest/\">https://engineer.readthedocs.org/en/latest/</a> if they need the most recent version of the docs. RTD itself also contains links to all versions of the docs, but I don\u2019t think most people know that and if they do, it may not be clear which version they want.</li>\n</ul><img src=\"http://feed.tylerbutler.com/link/18607/17245834.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2015-02-11T04:45:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245834.gif"
        },
        {
            "id": "https://tylerbutler.com/loot-tables/",
            "url": "http://feed.tylerbutler.com/link/18607/17245835/loot-tables",
            "title": "Loot Tables",
            "content_html": "<p>Daniel Cook tells you <a href=\"https://lostgarden.com/2014/12/08/loot-drop-tables/\">more than you ever needed to know about loot tables</a>. Unless you\u2019re a game designer, of course\u2026</p><img src=\"http://feed.tylerbutler.com/link/18607/17245835.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2015-01-09T20:44:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245835.gif"
        },
        {
            "id": "https://tylerbutler.com/installing-binary-python-packages-on-windows/",
            "url": "http://feed.tylerbutler.com/link/18607/17245836/installing-binary-python-packages-on-windows",
            "title": "Installing Binary Python Packages on Windows",
            "content_html": "<p>In my <a href=\"https://tylerbutler.com/2012/05/how-to-install-python-pip-and-virtualenv-on-windows-with-powershell/\">Python Windows installation guide</a>, I concluded with the following paragraph:</p>\n<blockquote>\n<p>After all of that\u2019s done you should be good to go! You can pop open a PowerShell window and create/switch to virtualenvs as needed and install packages using pip. At this point you should have most of what you need to follow the installation instructions for most Python packages (except those that require C extension compilation, but that\u2019s a topic for another post).</p>\n</blockquote>\n<p>Despite writing the initial version of that guide over two years ago, I never got around to writing that \u2018other post\u2019 to cover installing packages that require C extension compilation. I personally rarely run into this need, but when it comes up it\u2019s incredibly annoying. And guess what? It came up recently when I tried to install <a href=\"https://www.samba.org/~jelmer/dulwich/\">Dulwich</a>, a Python implementation of Git. Fortunately for you, I decided to take this opportunity to actually write the guide.</p>\n<h2><a href=\"https://tylerbutler.com#do-i-need-this-guide\">Do I Need This Guide?</a></h2>\n<p>You only <em>need</em> this guide if you try to install a Python package on Windows and you get an error like this:</p>\n<div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><span>building</span><span> </span><span>'Crypto.Random.OSRNG.winrandom'</span><span> </span><span>extension</span></div></div><div><div><span>warning:</span><span> </span><span>GMP</span><span> </span><span>or</span><span> </span><span>MPIR</span><span> </span><span>library</span><span> </span><span>not</span><span> </span><span>found</span><span>;</span><span> </span><span>Not</span><span> </span><span>building</span><span> </span><span>Crypto.PublicKey._fastmath.</span></div></div><div><div><span>error:</span><span> </span><span>Unable</span><span> </span><span>to</span><span> </span><span>find</span><span> </span><span>vcvarsall.bat</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>Ahhh, the dreaded <em>Unable to find vcvarsall.bat</em> error\u2026 This error means that the package you\u2019re installing has a C extension that needs to be compiled. Python itself is compiled using a specific version of the Visual Studio C++ compiler, and when you try to install packages that require C compilation, it goes looking for the compiler locally so it can compile the necessary stuff.</p>\n<p>Of course, in your case, you probably don\u2019t have Visual Studio, or if you do, it\u2019s not the right version, or you don\u2019t have the C++ compiler installed, or it\u2019s installed in a non-standard location, or a specific environment variable isn\u2019t set, or you forgot to reopen your PowerShell/cmd window after you set that environment variable\u2026 As you can see, there are many many reasons why this is painful. Don\u2019t worry; you\u2019re not alone. As <a href=\"https://stackoverflow.com/questions/2817869/error-unable-to-find-vcvarsall-bat\">this question on Stack Overflow</a> indicates, lots of people run into this problem, and there are lots of ways to \u2018solve\u2019 it.<sup><a href=\"https://tylerbutler.com#fn:1\">1</a></sup></p>\n<p>Because of the relative complexity of the problem, and all the potential ways various solutions could be thwarted, this used to be annoyingly difficult to address, but now it\u2019s pretty easy.</p>\n<h2><a href=\"https://tylerbutler.com#installing-the-microsoft-c-compiler-for-python-27\">Installing the Microsoft C++ Compiler for Python 2.7</a></h2>\n<p>I am extremely glad I didn\u2019t try to write this guide a few years ago, when I wrote my Python installation guide, because in the time since then, some smart person<sup><a href=\"https://tylerbutler.com#fn:2\">2</a></sup> at Microsoft felt the collective pain and anguish of Python developers everywhere and made <a href=\"https://tylerbutler.com/link-not-available?url=https%3A%2F%2Fwww.microsoft.com%2Fen-us%2Fdownload%2Fdetails.aspx%3Fid%3D44266\">a package available directly on microsoft.com</a> that \u201ccontains the compiler and set of system headers necessary for producing binary wheels for Python 2.7 packages.\u201d Hooray!<sup><a href=\"https://tylerbutler.com#fn:3\">3</a></sup></p>\n<p>If you <a href=\"https://tylerbutler.com/link-not-available?url=https%3A%2F%2Fwww.microsoft.com%2Fen-us%2Fdownload%2Fdetails.aspx%3Fid%3D44266\">download that package</a> and install it, you should be able to successfully install whatever package that was erroring out with <em>Unable to find vcvarsall.bat</em> before. Make sure you re-open any PowerShell or cmd windows you had open to make sure your environment variables are up to date. Oh, and in case you care, the compiler and all its supporting files can be found in the following directory after installation:</p>\n<div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><span>~\\AppData\\Local\\Programs\\Common\\Microsoft\\Visual C</span><span>++</span><span> </span><span>for</span><span> Python\\</span><span>9.0</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>If you\u2019re still having problems, chances are your version of setuptools is out of date.</p>\n<h2><a href=\"https://tylerbutler.com#update-setuptools-and-pip\">Update setuptools and pip</a></h2>\n<p>There have been a number of changes in the Python packaging/distribution world in the past few months. I\u2019m not involved in any of the relevant projects, but since my installation guide is quite popular, I get emails from some folks every so often that are. One of the biggest changes is the reintegration of the Distribute fork of setuptools back into the main project. This also means that setuptools \u2014 the main project \u2014 is getting a lot more love, which means more updates.</p>\n<p>The installation instructions for the Microsoft C++ Compiler for Python 2.7 package says that it requires <strong>setuptools 6.0 or later.</strong> I had a crusty old version from who knows when. Updating pip and setuptools is a little weird, but it\u2019s not that difficult. I actually wrote a <a href=\"https://engineer.readthedocs.org/en/master/upgrade.html\">separate guide for that</a> as part of the Engineer 0.5.0 documentation.</p>\n<p>There are more details there, but it basically boils down to executing two commands: <code>python -m pip install -U pip</code> followed by <code>pip install -U setuptools</code>. When you do that, you should see some output like this:</p>\n<div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><span>C:\\Users\\Tyler\\Code</span><span>&gt;</span><span> python </span><span>-</span><span>m pip install </span><span>-</span><span>U pip</span></div></div><div><div><span>Downloading</span><span>/</span><span>unpacking pip </span><span>from</span><span> https:</span><span>//</span><span>pypi.python.org</span><span>/</span><span>packages</span><span>/</span><span>py2.py3</span><span>/</span><span>p</span><span>/</span><span>pip</span><span>/</span><span>pip</span><span>-</span><span>6.0</span><span>.</span><span>2</span><span>-</span><span>py2.py3</span><span>-</span><span>none</span><span>-</span><span>any.whl</span><span>#md5=26404d27a64a40d4c358a2405b16d043</span></div></div><div><div><span>Installing collected packages: pip</span></div></div><div><div><span><span>    </span></span><span>Found existing installation: pip </span><span>1.5</span><span>.</span><span>2</span></div></div><div><div><span><span>    </span></span><span>Uninstalling pip:</span></div></div><div><div><span><span>        </span></span><span>Successfully uninstalled pip</span></div></div><div><div><span>Successfully installed pip</span></div></div><div><div><span>Cleaning up...</span></div></div><div><div>\n</div></div><div><div><span>C:\\Users\\Tyler\\Code</span><span>&gt;</span><span> pip install </span><span>-</span><span>U setuptools</span></div></div><div><div><span>Collecting setuptools </span><span>from</span><span> https:</span><span>//</span><span>pypi.python.org</span><span>/</span><span>packages</span><span>/</span><span>3.4</span><span>/</span><span>s</span><span>/</span><span>setuptools</span><span>/</span><span>setuptools</span><span>-</span><span>8.2</span><span>.</span><span>1</span><span>-</span><span>py2.py3</span><span>-</span><span>none</span><span>-</span><span>any.whl</span><span>#md5=a0582adbe0c56b3945570049b8d7c953</span></div></div><div><div><span><span>    </span></span><span>Downloading setuptools</span><span>-</span><span>8.2</span><span>.</span><span>1</span><span>-</span><span>py2.py3</span><span>-</span><span>none</span><span>-</span><span>any.whl (</span><span>551</span><span>kB</span><span>)</span></div></div><div><div><span>    </span><span>100</span><span>%</span><span> </span><span>|</span><span>################################| 552kB 975kB/s ta 0:00:01</span></div></div><div><div><span>Installing collected packages: setuptools</span></div></div><div><div><span><span>    </span></span><span>Found existing installation: setuptools </span><span>2.2</span></div></div><div><div><span><span>    </span></span><span>Uninstalling setuptools</span><span>-</span><span>2.2</span><span>:</span></div></div><div><div><span><span>        </span></span><span>Successfully uninstalled setuptools</span><span>-</span><span>2.2</span></div></div><div><div>\n</div></div><div><div><span>Successfully installed setuptools</span><span>-</span><span>8.2</span><span>.</span><span>1</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>Congratulations, your pip and setuptools installations are now upgraded. As I note in the <a href=\"https://engineer.readthedocs.org/en/master/upgrade.html\">Engineer 0.5.0 upgrade guide</a>, \u201cif you\u2019re using virtualenv, you may need to upgrade pip and setuptools in your virtualenv as well as the \u2018global\u2019 (outside the virtualenv) versions.\u201d You should be able to avoid doing this for all new virtualenvs by upgrading virtualenv itself (<code>pip install -U virtualenv</code> \u2014 version 12.7.8 is the latest as of this writing). Once it was upgraded my new virtualenvs got the correct updated versions of pip and setuptools. If you don\u2019t want to recreate your virtualenvs, then you can just upgrade the ones you need.</p>\n<p>Once pip and setuptools are upgraded, try installing the previously failed package again. You should see a bunch of output like this:</p>\n<div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><span>C:\\Users\\Tyler\\AppData\\Local\\Programs\\Common\\Microsoft\\Visual C</span><span>++</span><span> </span><span>for</span><span> Python\\</span><span>9.0</span><span>\\VC\\Bin\\</span><span>link.exe</span><span> </span><span>/</span><span>DLL </span><span>/</span><span>nologo </span><span>/</span><span>INCREMENTAL:NO </span><span>/</span><span>LIBPATH:C:\\Python27\\Libs </span><span>/</span><span>LIBPATH:C:\\Users\\Tyler\\.virtualenvs\\test\\libs </span><span>/</span><span>LIBPATH:C:\\Users\\Tyler\\.virtualenvs\\test\\PCbuild </span><span>/</span><span>EXPORT:init_diff_tree build\\temp.win32</span><span>-</span><span>2.7</span><span>\\Release\\dulwich</span><span>/</span><span>_diff_tree.obj </span><span>/</span><span>OUT:build\\lib.win32</span><span>-</span><span>2.7</span><span>\\dulwich\\_diff_tree.pyd </span><span>/</span><span>IMPLIB:build\\temp.win32</span><span>-</span><span>2.7</span><span>\\Release\\dulwich\\_diff_tree.lib </span><span>/</span><span>MANIFESTFILE:build\\temp.win32</span><span>-</span><span>2.7</span><span>\\Release\\dulwich\\_diff_tree.pyd.manifest</span></div></div><div><div><span><span>    </span></span><span>Creating library build\\temp.win32</span><span>-</span><span>2.7</span><span>\\Release\\dulwich\\_diff_tree.lib and object build\\temp.win32</span><span>-</span><span>2.7</span><span>\\Release\\dulwich\\_diff_tree.exp</span></div></div><div><div><span>Successfully installed dulwich</span><span>-</span><span>0.9</span><span>.</span><span>8</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>Congratulations, you can now install source Python packages that include C extensions (like <a href=\"https://www.samba.org/~jelmer/dulwich/\">Dulwich</a>)!</p>\n<h2><a href=\"https://tylerbutler.com#the-future-binary-wheels\">The Future: Binary Wheels</a></h2>\n<p>Now, the fact that you need to install some separate dependency on Windows in order to install some Python packages clearly sucks. Fortunately, there are ways that package distributors can remove this need. There is a new package format, called <a href=\"https://tylerbutler.com/link-not-available?url=https%3A%2F%2Fpypa.io%2Fen%2Flatest%2Fpeps%2F%23pep427s\">Wheel</a>, which includes pre-compiled versions of C extensions. If the Dulwich package maintainer produced a Wheel in addition to the source distribution, then users wouldn\u2019t all need to install the Microsoft C++ Compiler for Python 2.7.<sup><a href=\"https://tylerbutler.com#fn:4\">4</a></sup> Wheels can be installed using pip version 1.4+.</p>\n<p>If you release packages on PyPI, consider creating a Wheel if your package has a C extension. There\u2019s a great guide for distributing your Python projects, including creating Wheels, in the <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fpython-packaging-user-guide.readthedocs.org%2Fen%2Flatest%2Fdistributing.html\">Python Packaging User Guide</a>.</p>\n<h2><a href=\"https://tylerbutler.com#addendum-dulwich-windows\">Addendum: dulwich-windows</a></h2>\n<p>In the event you\u2019re using Windows and need <a href=\"https://www.samba.org/~jelmer/dulwich/\">Dulwich</a>, but don\u2019t want to fool with following the steps above, I [forked the repository](dulwich fork) and published a Wheel (my first!) \u2014 it\u2019s <a href=\"https://pypi.python.org/pypi/dulwich-windows\">dulwich-windows</a> on PyPI. The <em>only</em> change to the code is a few minor changes to the setup file to differentiate it from the official Dulwich package. You can see those changes on the windows_wheel branch in [my fork](dulwich fork). Feel free to install it (<code>pip install dulwich-windows</code>). I may or may not keep it up to date, though, so I recommend using the official Dulwich releases if possible.</p>\n<section><h2><a href=\"https://tylerbutler.com#footnote-label\">Footnotes</a></h2>\n<ol>\n<li>\n<p>For the record, I don\u2019t recommend following most of the answers on Stack Overflow at this point. Many are quite old, and as you\u2019ll see when you read on, there\u2019s a much simpler solution. </p>\n</li>\n<li>\n<p>Well, since it\u2019s Microsoft, it was likely a whole team of people! </p>\n</li>\n<li>\n<p>If you happen to know who at Microsoft was responsible for this, please let me know, because I want to buy them something nice. </p>\n</li>\n<li>\n<p>I do think that the Wheel would need to be built on a Windows box with the compiler installed, though I am not sure about that. If I\u2019m right, this would certainly be a blocker since many package maintainers don\u2019t have easy access to a Windows box. </p>\n</li>\n</ol>\n</section><img src=\"http://feed.tylerbutler.com/link/18607/17245836.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2014-12-31T15:31:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245836.gif"
        },
        {
            "id": "https://tylerbutler.com/updated-python-installation-guide/",
            "url": "http://feed.tylerbutler.com/link/18607/17245837/updated-python-installation-guide",
            "title": "Updated Python Installation Guide",
            "content_html": "<p>I just made a major update to my <a href=\"https://tylerbutler.com/2012/05/how-to-install-python-pip-and-virtualenv-on-windows-with-powershell/\">Python Windows installation guide</a>, which remains my most popular post. Things have gotten a lot simpler over the past few months since the distribute fork of setuptools was integrated back.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245837.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2014-10-07T18:45:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245837.gif"
        },
        {
            "id": "https://tylerbutler.com/stack-traces/",
            "url": "http://feed.tylerbutler.com/link/18607/17245838/stack-traces",
            "title": "Stack Traces",
            "content_html": "<blockquote>\n<p>Yes I know, ha ha Null Pointer, Java, LOL. But that\u2019s an exact line number friends. What did the user do? They tapped the subscribe button. Which page where they on? The Podcast Dialog. Zero ambiguity. Guess how many of our Android crashes we get that for? 100%. In iOS we\u2019d be lucky if even 30% of our crashes had stack traces we can line up to actual things we can then reproduce. So most iOS crashes today involve me becoming House MD and poking the code for hours, only to figure out that like always, it\u2019s never Lupus.</p>\n</blockquote>\n<p>It astounds me that iOS debugging is so\u2026 <em>medieval\u2026</em> That said, JavaScript stack traces can be just as bad, depending on the browser. I think good stack traces are a <em>requirement</em> for actually shipping software. Here\u2019s hoping iOS, and browsers, catch up soon.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245838.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2014-10-07T18:04:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245838.gif"
        },
        {
            "id": "https://tylerbutler.com/node-js-on-windows-8-1/",
            "url": "http://feed.tylerbutler.com/link/18607/17245839/node-js-on-windows-8-1",
            "title": "Node.js On Windows 8.1",
            "content_html": "<p>This afternoon I installed Node.js version 0.10.30 (the most recent according to <a href=\"https://nodejs.org/\">https://nodejs.org/</a>) on a new Windows box. Unfortunately, after installing, using <code>npm</code> was, uhhh, not good:</p>\n<div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><span>C:\\Users\\tyler</span><span>&gt;</span><span> npm</span></div></div><div><div><span>Error: ENOENT</span><span>,</span><span> stat </span><span>'C:\\Users\\tyler\\AppData\\Roaming\\npm'</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>Not exactly a great experience. And that error message? Useless. To me, anyway. I\u2019m sure <code>ENOENT</code> means something useful to someone.<sup><a href=\"https://tylerbutler.com#fn:1\">1</a></sup></p>\n<p>Fortunately, a quick search revealed <a href=\"https://stackoverflow.com/questions/25103499/cant-start-npm-on-windows-8-error-enoent-stat-c-users-user-appdata-roaming\">this page on Stack Overflow</a>, where the \u2018fix\u2019 is outlined: you just need to manually create the npm folder at the path in the error message:</p>\n<div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><span>C:\\Users\\tylerbu</span><span>&gt;</span><span> mkdir C:\\Users\\tylerbu\\AppData\\Roaming\\npm</span></div></div><div><div>\n</div></div><div><div>\n</div></div><div><div><span>Directory: C:\\Users\\tylerbu\\AppData\\Roaming</span></div></div><div><div>\n</div></div><div><div>\n</div></div><div><div><span>Mode        LastWriteTime    Length    Name</span></div></div><div><div><span>----</span><span>        </span><span>-------------</span><span>    </span><span>------</span><span>    </span><span>----</span></div></div><div><div><span>d</span><span>----</span><span>        </span><span>8</span><span>/</span><span>15</span><span>/</span><span>2014</span><span>      </span><span>1</span><span>:</span><span>25</span><span> PM    npm</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>After that, things were golden:</p>\n<div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><span>C:\\Users\\tylerbu</span><span>&gt;</span><span> npm install grunt</span></div></div><div><div><span>grunt@0.4.5 node_modules\\grunt</span></div></div><div><div><span>\u251c\u2500\u2500 dateformat@1.0.2</span><span>-</span><span>1.2</span><span>.</span><span>3</span></div></div><div><div><span>\u251c\u2500\u2500 which@1.0.5</span></div></div><div><div><span>\u251c\u2500\u2500 eventemitter2@0.4.14</span></div></div><div><div><span>\u251c\u2500\u2500 getobject@0.1.0</span></div></div><div><div><span>\u251c\u2500\u2500 colors@0.6.2</span></div></div><div><div><span>\u251c\u2500\u2500 rimraf@2.2.8</span></div></div><div><div><span>\u251c\u2500\u2500 async@0.1.22</span></div></div><div><div><span>\u251c\u2500\u2500 hooker@0.2.3</span></div></div><div><div><span>\u251c\u2500\u2500 grunt</span><span>-</span><span>legacy</span><span>-</span><span>util@0.2.0</span></div></div><div><div><span>\u251c\u2500\u2500 </span><span>exit</span><span>@0.1.2</span></div></div><div><div><span>\u251c\u2500\u2500 lodash@0.9.2</span></div></div><div><div><span>\u251c\u2500\u2500 nopt@1.0.10 (abbrev@1.0.5)</span></div></div><div><div><span>\u251c\u2500\u2500 coffee</span><span>-</span><span>script@1.3.3</span></div></div><div><div><span>\u251c\u2500\u2500 iconv</span><span>-</span><span>lite@0.2.11</span></div></div><div><div><span>\u251c\u2500\u2500 underscore.string@2.2.1</span></div></div><div><div><span>\u251c\u2500\u2500 minimatch@0.2.14 (sigmund@1.0.0</span><span>,</span><span> lru</span><span>-</span><span>cache@2.5.0)</span></div></div><div><div><span>\u251c\u2500\u2500 glob@3.1.21 (inherits@1.0.0</span><span>,</span><span> graceful</span><span>-</span><span>fs@1.2.3)</span></div></div><div><div><span>\u251c\u2500\u2500 findup</span><span>-</span><span>sync@0.1.3 (lodash@2.4.1</span><span>,</span><span> glob@3.2.11)</span></div></div><div><div><span>\u251c\u2500\u2500 grunt</span><span>-</span><span>legacy</span><span>-</span><span>log@0.1.1 (underscore.string@2.3.3</span><span>,</span><span> lodash@2.4.1)</span></div></div><div><div><span>\u2514\u2500\u2500 js</span><span>-</span><span>yaml@2.0.5 (esprima@1.0.4</span><span>,</span><span> argparse@0.1.15)</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<section><h2><a href=\"https://tylerbutler.com#footnote-label\">Footnotes</a></h2>\n<ol>\n<li>\n<p>On the plus side, the <code>ENOENT</code> string <em>did</em> help me find help on the web more quickly. So, maybe not so bad after all? </p>\n</li>\n</ol>\n</section><img src=\"http://feed.tylerbutler.com/link/18607/17245839.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2014-08-15T20:33:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245839.gif"
        },
        {
            "id": "https://tylerbutler.com/day-one-free-on-the-app-store/",
            "url": "http://feed.tylerbutler.com/link/18607/17245840/day-one-free-on-the-app-store",
            "title": "Day One Free on the App Store",
            "content_html": "<p>I\u2019ve been using <a href=\"https://dayoneapp.com/\">Day One</a> for the past few months to encourage my own journaling, and while I\u2019ve not been as consistent as I\u2019d hoped, the app is pretty good. Dropbox syncing seems to work pretty well too. It\u2019s free this week <a href=\"https://tylerbutler.com/link-not-available?url=https%3A%2F%2Fitunes.apple.com%2Fus%2Fapp%2Fday-one-journal-diary%2Fid421706526%3Fmt%3D8%26uo%3D4%2611l9Ct\">on the App Store</a>.</p>\n<p>If you pick it up, you might also check out <a href=\"https://brettterpstra.com/projects/slogger/\">Slogger</a>.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245840.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2014-07-08T20:49:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245840.gif"
        },
        {
            "id": "https://tylerbutler.com/markdown-lazy-links-in-python/",
            "url": "http://feed.tylerbutler.com/link/18607/17245841/markdown-lazy-links-in-python",
            "title": "Markdown Lazy Links in Python",
            "content_html": "<p>One of the things I am most excited about in <a href=\"https://tylerbutler.com/2014/05/engineer-v0-5-0-released/\">Engineer 0.5.0</a> is the new support for <a href=\"https://engineer.readthedocs.org/en/master/bundled_plugins.html#lazy-links-plugin\">Markdown Lazy Links</a>. My implementation is actually a bit richer than <a href=\"https://brettterpstra.com/2013/10/19/lazy-markdown-reference-links/\">Brett Terpstra\u2019s original sample</a>, though it\u2019s not quite as elegant as the original either. In particular, Engineer\u2019s implementation allows you to add lazy links to posts that already have numeric reference links. Also, you can optionally have Engineer transform the lazy links into numeric links during a build. This can come in handy if you anticipate doing a lot of reorganizing of the post content at some point, and want to make sure links don\u2019t break.</p>\n<p>It took some time to unpack Brett\u2019s elegant regular expression into the Python form, mostly because Ruby is very foreign to me, and its regex engine has some default behaviors that differ from Python\u2019s. In particular, it took some time to figure out exactly what flags to pass in so that things behaved appropriately. I\u2019m still not sure I got it completely right, though my unit tests seem to pass and I\u2019ve been using the plugin for some time so I think it\u2019s stable.</p>\n<p>I chose to use the <a href=\"https://docs.python.org/2/library/re.html#re.VERBOSE\">VERBOSE</a> regular expression form so it\u2019s clearer how the expression works. Hopefully that will save someone some time if they\u2019re looking to port the thing to some other regular expression language. You can find the source in the <a href=\"https://github.com/tylerbutler/engineer/blob/dev/engineer/plugins/bundled.py#L306\">GitHub repository</a>, but I\u2019m pasting the relevant class below as well. Note that this is an <a href=\"https://engineer.readthedocs.org/en/master/dev/plugins.html#post-processor-plugins\">Engineer PostProcessor plugin</a>, so some of the code is simply scaffolding for the plugin system. If you find a bug, please let me know, or even better, <a href=\"https://github.com/tylerbutler/engineer/issues\">file an issue on GitHub</a>.</p>\n<div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>class</span><span> </span><span>LazyMarkdownLinksPlugin</span><span>(</span><span>PostProcessor</span><span>):</span></div></div><div><div><div>2</div></div><div><span>  </span><span># Inspired by Brett Terpstra:</span></div></div><div><div><div>3</div></div><div><span>  </span><span># https://brettterpstra.com/2013/10/19/lazy-markdown-reference-links/</span></div></div><div><div><div>4</div></div><div><span><span>  </span></span><span>_link_regex </span><span>=</span><span> re</span><span>.</span><span>compile</span><span>(</span><span>r</span><span>'''</span></div></div><div><div><div>5</div></div><div><span><span>    </span></span><span>(       </span><span># Start group 1, which is the actual link text</span></div></div><div><div><div>6</div></div><div><span><span>      </span></span><span>\\[      </span><span># Match a literal [</span></div></div><div><div><div>7</div></div><div><span><span>      </span></span><span>[</span><span>^</span><span>\\]]</span><span>+</span><span>    </span><span># Match anything except a literal ] - this will be the link text itself</span></div></div><div><div><div>8</div></div><div><span><span>      </span></span><span>\\]      </span><span># Match a literal ]</span></div></div><div><div><div>9</div></div><div><span><span>      </span></span><span>\\s</span><span>*</span><span>     </span><span># Any whitespace (including newlines)</span></div></div><div><div><div>10</div></div><div><span><span>      </span></span><span>\\[      </span><span># Match the opening bracket of the lazy link marker</span></div></div><div><div><div>11</div></div><div><span><span>    </span></span><span>)       </span><span># End group 1</span></div></div><div><div><div>12</div></div><div><span><span>    </span></span><span>\\*      </span><span># Literal * - this is the lazy link marker</span></div></div><div><div><div>13</div></div><div><span><span>    </span></span><span>(       </span><span># Start group 2, which is everything after the lazy link marker</span></div></div><div><div><div>14</div></div><div><span><span>      </span></span><span>\\]      </span><span># Literal ]</span></div></div><div><div><div>15</div></div><div><span><span>      </span></span><span>.</span><span>*?</span><span>^    </span><span># Non-greedy match of anything up to a new line</span></div></div><div><div><div>16</div></div><div><span><span>      </span></span><span>\\[      </span><span># Literal [</span></div></div><div><div><div>17</div></div><div><span><span>    </span></span><span>)       </span><span># End Group 2</span></div></div><div><div><div>18</div></div><div><span><span>    </span></span><span>\\*\\]:     </span><span># Match a literal *]: - the lazy link URL definition follows this</span></div></div><div><div><div>19</div></div><div><span><span>    </span></span><span>'''</span><span>,</span><span> re</span><span>.</span><span>MULTILINE</span><span> </span><span>|</span><span> re</span><span>.</span><span>DOTALL</span><span> </span><span>|</span><span> re</span><span>.</span><span>UNICODE</span><span> </span><span>|</span><span> re</span><span>.</span><span>VERBOSE</span><span>)</span></div></div><div><div><div>20</div></div><div>\n</div></div><div><div><div>21</div></div><div><span><span>  </span></span><span>_counter_regex </span><span>=</span><span> re</span><span>.</span><span>compile</span><span>(</span><span>r</span><span>'\\[(\\d</span><span>+</span><span>)\\]:'</span><span>,</span><span> re</span><span>.</span><span>UNICODE</span><span>)</span></div></div><div><div><div>22</div></div><div><span><span>  </span></span><span>_counter </span><span>=</span><span> </span><span>0</span></div></div><div><div><div>23</div></div><div>\n</div></div><div><div><div>24</div></div><div><span>  </span><span>@</span><span>classmethod</span></div></div><div><div><div>25</div></div><div><span>  </span><span>def</span><span> </span><span>_replace</span><span>(</span><span>cls</span><span>,</span><span> </span><span>match</span><span>):</span></div></div><div><div><div>26</div></div><div><span>    </span><span>cls</span><span>.</span><span>_counter </span><span>+=</span><span> </span><span>1</span></div></div><div><div><div>27</div></div><div><span><span>    </span></span><span>sub_str </span><span>=</span><span> </span><span>'</span><span>%s%s%s%s</span><span>]:'</span><span> </span><span>%</span><span> (match</span><span>.</span><span>group</span><span>(</span><span>1</span><span>)</span><span>,</span><span> </span><span>cls</span><span>.</span><span>_counter</span><span>,</span><span> match</span><span>.</span><span>group</span><span>(</span><span>2</span><span>)</span><span>,</span><span> </span><span>cls</span><span>.</span><span>_counter)</span></div></div><div><div><div>28</div></div><div><span>    </span><span>return</span><span> sub_str</span></div></div><div><div><div>29</div></div><div>\n</div></div><div><div><div>30</div></div><div><span>  </span><span>@</span><span>staticmethod</span></div></div><div><div><div>31</div></div><div><span>  </span><span>def</span><span> </span><span>get_max_link_number</span><span>(</span><span>post</span><span>):</span></div></div><div><div><div>32</div></div><div><span><span>    </span></span><span>all_values </span><span>=</span><span> </span><span>set</span><span>([</span><span>int</span><span>(i) </span><span>for</span><span> i </span><span>in</span><span> LazyMarkdownLinksPlugin</span><span>.</span><span>_counter_regex</span><span>.</span><span>findall</span><span>(post)])</span></div></div><div><div><div>33</div></div><div><span>    </span><span>return</span><span> </span><span>max</span><span>(all_values) </span><span>if</span><span> all_values </span><span>else</span><span> </span><span>0</span></div></div><div><div><div>34</div></div><div>\n</div></div><div><div><div>35</div></div><div><span>  </span><span>@</span><span>classmethod</span></div></div><div><div><div>36</div></div><div><span>  </span><span>def</span><span> </span><span>preprocess</span><span>(</span><span>cls</span><span>,</span><span> </span><span>post</span><span>,</span><span> </span><span>metadata</span><span>):</span></div></div><div><div><div>37</div></div><div><span>    </span><span>from</span><span> engineer</span><span>.</span><span>conf </span><span>import</span><span> settings</span></div></div><div><div><div>38</div></div><div>\n</div></div><div><div><div>39</div></div><div><span><span>    </span></span><span>logger </span><span>=</span><span> </span><span>cls</span><span>.</span><span>get_logger</span><span>()</span></div></div><div><div><div>40</div></div><div><span><span>    </span></span><span>content </span><span>=</span><span> post</span><span>.</span><span>content_preprocessed</span></div></div><div><div><div>41</div></div><div><span>    </span><span>cls</span><span>.</span><span>_counter </span><span>=</span><span> </span><span>cls</span><span>.</span><span>get_max_link_number</span><span>(content)</span></div></div><div><div><div>42</div></div><div>\n</div></div><div><div><div>43</div></div><div><span>    </span><span># This while loop ensures we handle overlapping matches</span></div></div><div><div><div>44</div></div><div><span>    </span><span>while</span><span> </span><span>cls</span><span>.</span><span>_link_regex</span><span>.</span><span>search</span><span>(content)</span><span>:</span></div></div><div><div><div>45</div></div><div><span><span>      </span></span><span>content </span><span>=</span><span> </span><span>cls</span><span>.</span><span>_link_regex</span><span>.</span><span>sub</span><span>(</span><span>cls</span><span>.</span><span>_replace</span><span>,</span><span> content)</span></div></div><div><div><div>46</div></div><div><span><span>    </span></span><span>post</span><span>.</span><span>content_preprocessed </span><span>=</span><span> content</span></div></div><div><div><div>47</div></div><div><span>    </span><span>if</span><span> </span><span>getattr</span><span>(settings</span><span>,</span><span> </span><span>'LAZY_LINKS_PERSIST'</span><span>,</span><span> </span><span>False</span><span>)</span><span>:</span></div></div><div><div><div>48</div></div><div><span>      </span><span>if</span><span> </span><span>not</span><span> post</span><span>.</span><span>set_finalized_content</span><span>(content</span><span>,</span><span> </span><span>cls</span><span>)</span><span>:</span></div></div><div><div><div>49</div></div><div><span><span>        </span></span><span>logger</span><span>.</span><span>warning</span><span>(</span><span>\"Failed to persist lazy links.\"</span><span>)</span></div></div><div><div><div>50</div></div><div><span>return</span><span> post</span><span>,</span><span> metadata</span></div></div></code></pre><div><div></div><div></div></div></figure></div><img src=\"http://feed.tylerbutler.com/link/18607/17245841.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2014-05-28T20:16:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245841.gif"
        },
        {
            "id": "https://tylerbutler.com/deploying-engineer-sites-to-azure/",
            "url": "http://feed.tylerbutler.com/link/18607/17245842/deploying-engineer-sites-to-azure",
            "title": "Deploying Engineer Sites to Azure",
            "content_html": "<p>A <a href=\"https://github.com/tylerbutler/engineer/issues/51\">longstanding issue</a> in the Engineer issue tracker concerns documenting some of the free/low-cost hosting options one has to host an Engineer site. <a href=\"https://pages.github.com/\">GitHub Pages</a> is a common request, and documenting that process is definitely on my to-do list, but I think there\u2019s a better option: Azure.</p>\n<p>I\u2019ve been hosting tylerbutler.com on Azure for the past few months, and I have to say, I\u2019m very pleased with it so far. It\u2019s probably not the most cost-effective thing for my site, but if you have an MSDN subscription, which many .Net developers have (including me), then you have a monthly Azure credit that is almost certainly enough to cover the cost of deploying your Engineer site to Azure.</p>\n<p>Deploying on Azure has the benefits of auto-scaling to handle traffic demands, though that\u2019s not particularly compelling for Engineer-based sites since static sites by nature tend to be very scalable anyway. The truly compelling feature, in my opinion, is that it lets you maintain your built Engineer site in a Git or Mercurial repository, which is something that developers in particular really like. It is, after all, one of the nice things about GitHub pages as well.</p>\n<p>With some of the new features in <a href=\"https://tylerbutler.com/2014/05/engineer-v0-5-0-released/\">Engineer version 0.5.0</a>, I\u2019ve got tylerbutler.com in a <a href=\"https://github.com/tylerbutler/tylerbutler.com\">GitHub repository</a> of its own, and every time I <code>git push</code>, the site is updated automatically thanks to Azure. Even better, thanks to Engineer\u2019s support for <a href=\"https://engineer.readthedocs.org/en/master/settings.html#engineer.conf.EngineerConfiguration.POST_DIR\">multiple post directories</a>, I can put my published posts inside the Git repository itself for safekeeping but still write posts from any device/app that integrates with Dropbox. This flexibility of post authoring was one of the key reasons I wrote Engineer originally; it\u2019s important that I maintain that with whatever deployment architecture I choose.</p>\n<p>Once you have everything set up on Azure, the basic flow looks like this:</p>\n<ul>\n<li>Edit and maintain your site in a Git or Mercurial repository</li>\n<li>Build your site, commit to Git/Mercurial</li>\n<li>Push the repository to GitHub/Bitbucket</li>\n<li>Azure site automatically updates itself in a few minutes</li>\n</ul>\n<p>In order to get this up and running, you can follow the steps below. Note that Engineer 0.5.0+ is needed. I\u2019ll eventually get these instructions incorporated into the official Engineer docs, but I wanted to get the info out there for folks without delay.</p>\n<h2><a href=\"https://tylerbutler.com#getting-started\">Getting started</a></h2>\n<p>If you don\u2019t yet have an Engineer site, you can initialize a new one with a content structure and configuration files especially for Azure using the following command (new in Engineer 0.5.0):</p>\n<div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><span>engineer</span><span> </span><span>init</span><span> </span><span>-m</span><span> </span><span>azure</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>If you have an existing site, you can simply use it, of course, but you may need to add your own <code>.deployment</code> file or configure the Azure deployment settings for your site yourself. There are more details below.</p>\n<p>You can lay out your files however you wish, but the typical layout will look something like this:</p>\n<div><figure><figcaption></figcaption><pre><code><div><div><span>/my-engineer-site</span></div></div><div><div><span><span>    </span></span><span>- .deployment</span></div></div><div><div><span><span>    </span></span><span>- config.yaml</span></div></div><div><div><span><span>    </span></span><span>/content</span></div></div><div><div><span><span>    </span></span><span>/templates</span></div></div><div><div><span><span>    </span></span><span>/output</span></div></div><div><div><span><span>        </span></span><span>/azure</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>Run the following command from the root of the folder to build your site for Azure:</p>\n<div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><span>engineer</span><span> </span><span>build</span><span> </span><span>-s</span><span> </span><span>./config.yaml</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>The output will be written to <code>./output/azure/</code> by default. You can obviously change this in the Engineer settings, though note that you\u2019ll have to make some other changes as well. Keep reading for further details.</p>\n<p>Go to your Azure portal and create a new web site. Configure the site to automatically deploy from a GitHub/Bitbucket repository and connect it to your repository. You can also choose to use manual Git deployment if you wish, or even just FTP the site content, but I recommend the GitHub auto-publish route; it\u2019s much simpler and automatic.</p>\n<p>Now every time you push a new commit to GitHub/Bitbucket, your Azure site will update automatically with the contents of the <code>./output/azure/</code> folder. This magic works because of the <code>.deployment</code> file in your repository, which is created automatically by Engineer when you initialize a new site using <code>engineer init -m azure</code>. You can read more about this file <a href=\"https://github.com/projectkudu/kudu/wiki/Customizing-deployments\">in the GitHub wiki</a></p>\n<p>If you want to change the output folder to a different path, you can do that in your Engineer config file. However, in addition, you\u2019ll need to tell Azure that the location of the site content within your repository is different. This is contained in \u2014 you guessed it \u2014 the <code>.deployment</code> file. Just change the value of the \u2018project\u2019 setting within that file.</p>\n<p>If you prefer, you can remove the <code>.deployment</code> file altogether and configure the site root in the Azure portal directly. This is basically the same as the <code>.deployment</code> file approach, but if you have a single repository that contains multiple Engineer sites \u2014 or other types of sites, even \u2014 then using the settings in the Azure portal is preferable. From <a href=\"https://www.hanselman.com/blog/DeployingTWOWebsitesToWindowsAzureFromOneGitRepository.aspx\">Scott Hanselman</a>:</p>\n<blockquote>\n<p>What\u2019s nice about setting the \u201cProject\u201d setting via site configuration rather than via a <code>.deployment</code> file is that you can now push the same git repository containing two different web sites to two remote Azure web sites. Each Azure website should have a different project setting and will end up deploying the two different sites.</p>\n</blockquote>\n<p>That is <em>very</em> cool. Scott has more details in <a href=\"https://www.hanselman.com/blog/DeployingTWOWebsitesToWindowsAzureFromOneGitRepository.aspx\">his post on the topic</a>.</p>\n<p>Hopefully this helps you get your Engineer site up and running on Azure. As I mentioned before, I am going to be incorporating this information into the official Engineer docs as well. I\u2019ve also gotten Engineer sites running on GitHub Pages, so I\u2019ll cover that in a future post.</p>\n<img src=\"http://feed.tylerbutler.com/link/18607/17245842.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2014-05-06T15:42:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245842.gif"
        },
        {
            "id": "https://tylerbutler.com/engineer-v0-5-0-released/",
            "url": "http://feed.tylerbutler.com/link/18607/17245843/engineer-v0-5-0-released",
            "title": "Engineer v0.5.0 Released",
            "content_html": "<p>I released the next major version of Engineer, version 0.5.0, last month. I didn\u2019t quite meet all of my goals with the release (not the least of which was the release date, which was five months later than I had optimistically planned), but it\u2019s a major one nonetheless. As usual, full release notes are available at <a href=\"https://engineer.readthedocs.org/en/master/changelog.html\">Read the Docs</a>.</p>\n<p>Unfortunately, upgrade may or may not work for you the normal way due to setuptools changes. There are more details in the <a href=\"https://engineer.readthedocs.org/en/master/upgrade.html\">upgrade docs</a>.</p>\n<p>Lots of cool stuff in this release, and more planned, so if you\u2019ve not tried Engineer yet, now might be a good time.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245843.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2014-05-05T18:11:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245843.gif"
        },
        {
            "id": "https://tylerbutler.com/count-files-in-a-directory/",
            "url": "http://feed.tylerbutler.com/link/18607/17245844/count-files-in-a-directory",
            "title": "Count Files In A Directory",
            "content_html": "<p>Need to count files in a directory? Try this one line of PowerShell:</p>\n<div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><span>(dir </span><span>|</span><span> </span><span>where</span><span> {$_.GetType() </span><span>-match</span><span> </span><span>\"fileInfo\"</span><span>} </span><span>|</span><span> </span><span>measure-object</span><span>).count</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>You can also add a <code>-r</code> parameter (<code>-r</code> means <em>recursive</em>) to the first <code>dir</code><sup><a href=\"https://tylerbutler.com#fn:1\">1</a></sup> command and get a complete count of all files in all subdirectories under the current path.</p>\n<p>This comes in handy, though I <em>do</em> wish it was a little more succinct.</p>\n<section><h2><a href=\"https://tylerbutler.com#footnote-label\">Footnotes</a></h2>\n<ol>\n<li>\n<p>And of course you can substitute <code>ls</code> for <code>dir</code> if you prefer, or even <code>Get-ChildItem</code> if you\u2019re feeling particularly masochistic. </p>\n</li>\n</ol>\n</section><img src=\"http://feed.tylerbutler.com/link/18607/17245844.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2014-05-05T16:04:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245844.gif"
        },
        {
            "id": "https://tylerbutler.com/carmack-romero/",
            "url": "http://feed.tylerbutler.com/link/18607/17245845/carmack-romero",
            "title": "Carmack & Romero",
            "content_html": "<p>I <em>love</em> this picture of John Romero and John Carmack:</p>\n<blockquote><p>Dayum! <a href=\"https://twitter.com/romero\">@romero</a> and <a href=\"https://twitter.com/ID_AA_Carmack\">@ID_AA_Carmack</a> were metal as hell back in the day <a href=\"https://t.co/tJHwuwrrGM\">pic.twitter.com/tJHwuwrrGM</a></p>\u2014 Junkboy (@jnkboy) <a href=\"https://twitter.com/jnkboy/statuses/460508315747749888\">April 27, 2014</a></blockquote>\n\n<p>It looks like a promotional shot for a new 1980\u2019s-era fantasy-themed buddy cop TV show. I\u2019d watch it.</p>\n<p>This reminds me that I really need to finally pick up a copy of <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.amazon.com%2Fgp%2Fproduct%2F0812972155%2Fref%3Das_li_ss_tl%3Fie%3DUTF8%26camp%3D1789%26creative%3D390957%26creativeASIN%3D0812972155%26linkCode%3Das2%26tag%3Dtylerbutlerco-20\">Masters of Doom</a> and read it. It\u2019s been on my wish list for years.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245845.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2014-04-28T02:22:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245845.gif"
        },
        {
            "id": "https://tylerbutler.com/aerobie/",
            "url": "http://feed.tylerbutler.com/link/18607/17245846/aerobie",
            "title": "Aerobie",
            "content_html": "<p>The <a href=\"https://www.amazon.com/gp/product/B0000789T2/ref=as_li_ss_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B0000789T2&amp;linkCode=as2&amp;tag=tylerbutlerco-20\">Aerobie</a> is one of my favorite things ever. I had no idea that the same guy invented the <a href=\"https://www.amazon.com/gp/product/B0047BIWSK/ref=as_li_ss_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B0047BIWSK&amp;linkCode=as2&amp;tag=tylerbutlerco-20\">Aeropress</a>. (Though the name is <em>kind of</em> a giveaway\u2026)</p><img src=\"http://feed.tylerbutler.com/link/18607/17245846.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2014-04-28T02:05:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245846.gif"
        },
        {
            "id": "https://tylerbutler.com/super-stickman-golf-2/",
            "url": "http://feed.tylerbutler.com/link/18607/17245847/super-stickman-golf-2",
            "title": "Super Stickman Golf 2",
            "content_html": "<p><a href=\"https://itunes.apple.com/us/app/super-stickman-golf-2/id585259203?mt=8&amp;ign-mpt=uo%3D2\">Super Stickman Golf 2</a> is absolutely free right now on the Apple App Store. Act fast \u2014 it\u2019s only free for 24 hours.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245847.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2014-01-10T19:50:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245847.gif"
        },
        {
            "id": "https://tylerbutler.com/retina-ipad-mini-image-retention-test/",
            "url": "http://feed.tylerbutler.com/link/18607/17245848/retina-ipad-mini-image-retention-test",
            "title": "Retina iPad Mini Image Retention Test",
            "content_html": "<p>Courtesy <a href=\"https://www.marco.org/\">Marco Arment</a>, a <a href=\"https://www.marco.org/rmbp-irtest.html\">simple test for image retention problems</a> in your Retina iPad Mini. I found no problem with mine, but it seems reasonable to test so you can exchange it if needed.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245848.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2013-12-25T00:38:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245848.gif"
        },
        {
            "id": "https://tylerbutler.com/made-by-bees/",
            "url": "http://feed.tylerbutler.com/link/18607/17245849/made-by-bees",
            "title": "Made by Bees",
            "content_html": "<p>I absolutely love this concept packaging for honey. The \u201cMade by Bees\u201d tag line is fantastic, and everything about the execution is great.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245849.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2013-12-24T22:18:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245849.gif"
        },
        {
            "id": "https://tylerbutler.com/the-wolf-among-us/",
            "url": "http://feed.tylerbutler.com/link/18607/17245850/the-wolf-among-us",
            "title": "The Wolf Among Us",
            "content_html": "<p>If you like adventure games, or just a great story, you owe it to yourself to pick up Telltale Games\u2019 <em>The Wolf Among Us</em>. If you\u2019re an Xbox user, it\u2019s free right now! Be warned, however, that the game is episodic so you\u2019ll almost certainly end up paying for the other episodes. Definitely worth every penny though. If you\u2019re on the fence <a href=\"https://www.polygon.com/2013/10/10/4824252/fables-the-wolf-among-us\">Polygon has a good review</a> or you can always <a href=\"https://marketplace.xbox.com/en-CA/Product/The-Wolf-Among-Us/66acd000-77fe-1000-9115-d80258411216\">try out the demo</a> on Xbox 360.</p>\n<p>You can also get <em>The Wolf Among Us</em> for Windows and Mac on <a href=\"https://store.steampowered.com/app/250320/?snr=1_5_9__205\">Steam</a> (where the season pass happens to be on sale currently) and <a href=\"https://tylerbutler.com/link-not-available?url=https%3A%2F%2Fitunes.apple.com%2Fus%2Fapp%2Fthe-wolf-among-us%2Fid716238885%3Fmt%3D8\">iOS</a>.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245850.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2013-12-24T20:38:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245850.gif"
        },
        {
            "id": "https://tylerbutler.com/the-schedule-makers/",
            "url": "http://feed.tylerbutler.com/link/18607/17245851/the-schedule-makers",
            "title": "The Schedule Makers",
            "content_html": "<p>I found ESPN\u2019s short film about how the Major League Baseball schedule was made for many years fascinating.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245851.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2013-11-28T22:27:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245851.gif"
        },
        {
            "id": "https://tylerbutler.com/pycharm-3-0/",
            "url": "http://feed.tylerbutler.com/link/18607/17245852/pycharm-3-0",
            "title": "PyCharm 3.0",
            "content_html": "<p>JetBrains released version 3.0 of their <a href=\"https://www.jetbrains.com/pycharm/download/index.html\">excellent Python IDE</a> a couple of weeks ago, and with it they made a free Community Edition available as well. I can\u2019t say enough good things about PyCharm, so if you\u2019ve been on the fence about it, it\u2019s worth checking out the Community Edition. They\u2019ve put together a nice <a href=\"https://www.jetbrains.com/pycharm/features/editions_comparison_matrix.html\">edition comparison chart</a> so you can see the core differences.</p>\n<p>If you\u2019re looking to do Django/Flask/Pyramid/Google App Engine development, you\u2019ll likely want the Pro edition, but it\u2019s still reasonably priced in my opinion (compare it to <a href=\"https://tylerbutler.com/link-not-available?url=https%3A%2F%2Fstore.xamarin.com%2F\">Xamarin</a>, for example<sup><a href=\"https://tylerbutler.com#fn:pycharm1\">1</a></sup>) and speaking from experience, the Django support, at least, is very good. I haven\u2019t checked out the Flask support yet, but <a href=\"http://www.xkcd2.com\">xkcd2</a> would be a good testing ground.</p>\n<p>If you want to see what a <em>real project</em> might look like in PyCharm, you can always clone <a href=\"https://github.com/tylerbutler/engineer/\">Engineer</a>. It\u2019s been built using PyCharm since day one.</p>\n<section><h2><a href=\"https://tylerbutler.com#footnote-label\">Footnotes</a></h2>\n<ol>\n<li>\n<p>Yes, I know it\u2019s kind of an apples to oranges comparison given that they have different capabilities and target different languages, but they\u2019re both IDEs\u2026 </p>\n</li>\n</ol>\n</section><img src=\"http://feed.tylerbutler.com/link/18607/17245852.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2013-10-02T21:50:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245852.gif"
        },
        {
            "id": "https://tylerbutler.com/axe-cop/",
            "url": "http://feed.tylerbutler.com/link/18607/17245853/axe-cop",
            "title": "Axe Cop",
            "content_html": "<p>What do you get when you combine a story written by a 5-year-old with animation done by his 29-year-old brother? If you answered, \u201cPure Awesome\u201d, you are correct.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245853.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2013-08-21T15:54:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245853.gif"
        },
        {
            "id": "https://tylerbutler.com/the-importance-of-documentation/",
            "url": "http://feed.tylerbutler.com/link/18607/17245854/the-importance-of-documentation",
            "title": "The Importance of Documentation",
            "content_html": "<p>Some free advice for anyone writing software:</p>\n<p><em><strong>Providing excellent documentation is the single most important thing you can do to improve your project.</strong></em></p>\n<p>I\u2019ve used the Python flavor of <a href=\"https://github.com/html5lib/html5lib-python\">html5lib</a> in a couple of different projects now (<a href=\"https://xkcd2.com\">xkcd2</a> and <a href=\"https://engineer.readthedocs.org\">Engineer</a>) and there\u2019s really one thing that stands out to me: it has absolutely horrendous documentation. Well, it\u2019s really just that it has none to speak of, and to be fair, it <em>could</em> be worse\u2026 It <em>could</em> be voluminous yet misleading or poorly organized, but instead there just isn\u2019t any.</p>\n<p>Of course, it\u2019d be understandable for you to think otherwise. If you visit the Github repo, you\u2019re provided with some simple examples of creating a parser and parsing some documents. These examples are pretty standard fare \u2014 they give you a taste of what to expect but don\u2019t give you enough to actually use the library.</p>\n<p>You\u2019re happily informed that \u201cMore documentation is available at <a href=\"https://html5lib.readthedocs.org/\">https://html5lib.readthedocs.org/</a>\u201d but if you head over there you\u2019ll notice that there isn\u2019t really much more there. The \u201cmore documentation\u201d they speak of is a <em>single page</em> with information about \u201cthe moving parts\u201d which just doesn\u2019t do much to help you know how to actually use the API to do anything really meaningful.</p>\n\n<p>The only reason I cared at all about html5lib this evening was because I set up a fresh virtualenv and installed Engineer, only to be greeted by an exception when I tried to build my site. Ugh. Turns out html5lib has pushed out a couple of new versions since I last installed Engineer, and one of those updates broke my code.<sup><a href=\"https://tylerbutler.com#fn:docs1\">1</a></sup> It didn\u2019t take long to narrow things down to my simple <code>html5lib.parseFragment()</code> call, which was now throwing an exception. Fixing that was relatively straightforward, though it was pretty much me just trying random arguments in the method call. Going further down the rabbit hole, though, it\u2019s become clear that the fix is not as simple as I\u2019d hoped, so I\u2019m just <a href=\"https://github.com/tylerbutler/engineer/issues/63\">cauterizing things</a> for now. This actually turns out to be pretty important since right now anyone trying out Engineer 0.4.3 (the most recent version) will see an exception on their first build. Not exactly the first impression quality software should make, eh?</p>\n<h2><a href=\"https://tylerbutler.com#documentation-is-incredibly-important\">Documentation is incredibly important</a></h2>\n<p>The number one comment I\u2019ve received from people trying out Engineer is, \u201cThanks, this is one of the best-documented systems I\u2019ve looked at!\u201d I\u2019m very proud of that. One of the major contributing factors to me building Engineer in the first place was that I couldn\u2019t get <a href=\"https://hyde.github.io/\">Hyde</a> to actually work for my purposes, and the docs were either out of date or non-existent (and <a href=\"https://github.com/hyde/hyde/issues/209\">still are</a>, apparently). I decided if I was going to build something I was going to at least write down how to use it. It took \u2014 and still takes \u2014 a lot of time, but it is totally worth it.</p>\n<p><a href=\"https://prog21.dadgum.com/177.html\">James Hague</a>, in his recent post <em>Organizational Skills Beat Algorithmic Wizardry</em>, writes:</p>\n<blockquote>\n<p>When it comes to writing code, the number one most important skill is how to keep a tangle of features from collapsing under the weight of its own complexity. I\u2019ve worked on large telecommunications systems, console games, blogging software, a bunch of personal tools, and very rarely is there some tricky data structure or algorithm that casts a looming shadow over everything else. But there\u2019s always lots of state to keep track of, rearranging of values, handling special cases, and carefully working out how all the pieces of a system interact. To a great extent the act of coding is one of organization. Refactoring. Simplifying. Figuring out how to remove extraneous manipulations here and there.</p>\n</blockquote>\n<p>I couldn\u2019t agree more, and one of the reasons I think documentation is important is that it\u2019s a way of forcing yourself to explain what you\u2019ve built. Much like <a href=\"https://en.wikipedia.org/wiki/Rubber_duck_debugging\">rubber ducking</a> can help you debug problems in code, attempting to document what you\u2019ve written will inevitably help you find design flaws and unnecessary complexity. This is why I think it\u2019s incredibly important for the documentation to be written largely by the people building the thing, and that it should be written <em>alongside</em> the actual code as much as possible.<sup><a href=\"https://tylerbutler.com#fn:docs2\">2</a></sup></p>\n<h2><a href=\"https://tylerbutler.com#comments-arent-documentation\">Comments aren\u2019t documentation</a></h2>\n<p>But what about comments? Where do they fit in? Aren\u2019t comments the place where a developer attempts to explain to us why she\u2019s doing things the way she is or how to call this API she\u2019s written? While I think most of us would agree that commented code is preferable to uncommented code, the difference between comments and documentation is one of <em>scope.</em></p>\n<p>In a comment, you\u2019re sitting right there in the source code explaining it. First of all, in many cases comments just aren\u2019t going to be something people passing by your Github page will see. Sure, you might be using something like Sphinx that pulls comments out into actual docs, but even in that case, you still have a scope issue. At the lowest level, you might be commenting a specific piece of logic in a function that may confuse later maintainers of the code. Even zooming out a bit, you\u2019re likely only documenting a class, or maybe a module, but fundamentally comments don\u2019t ever really force you to explain <em>the big picture.</em></p>\n<p><a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fi.wearpants.org%2Fblog%2Ffrom-good-code-to-great%2F\">Peter Fein</a> writes:</p>\n<blockquote>\n<p>Great documentation tells a story. Narrative docs explain <em>why</em> to a hypothetical reader who not only has never seen our code before, but has never seen anything <em>like</em> our code. Unfortunately, programmers are generally bad at narrative \u2013- that\u2019s why we write code instead of fiction. Writing these docs requires getting outside your head and thinking like a total newbie. That\u2019s tough when we\u2019ve just spent weeks or months working with the code \u2013- we\u2019ve got no perspective.</p>\n</blockquote>\n<p>When I think about good documentation, narrative docs are what I imagine. Narrative docs help me develop the mental framework I need to use your stuff, and the better it is, the more likely I am to use your project and have fun doing it. You remember the story of <a href=\"https://en.wikipedia.org/wiki/Scheherazade\">Scheherazade</a>? You know, the queen who saved her own life by telling stories to the King that were so compelling he\u2019d spare her life each day so she could continue to tell them? Documentation gives you a chance to do the same thing \u2014 tell a great story, and you\u2019ll keep people who just wander by your project engaged enough that they actually try it out.</p>\n<p>That\u2019s what I consider <em>real</em> documentation. Organizing docs in an intelligent and manageable way is surprisingly difficult, and I suggest diving into some other examples before trying to put your own stuff together. Luckily there are a number of great examples to check out for inspiration. Some good places to start:</p>\n<ul>\n<li><a href=\"https://docs.celeryproject.org/en/latest/index.html#\">Celery</a></li>\n<li><a href=\"https://flask.palletsprojects.com/en/stable/\">Flask</a> (frankly pretty much anything from Armin Ronacher is solid)</li>\n<li><a href=\"https://engineer.readthedocs.org\">Engineer</a> (yeah, I\u2019m shameless)</li>\n</ul>\n<p>My basic policy is pretty simple: I assume the quality of your code is at best no better than the quality of your documentation, and I don\u2019t invest in learning to use anything that\u2019s not reasonably documented. No more excuses, people. Take the time to write quality documentation.</p>\n<section><h2><a href=\"https://tylerbutler.com#footnote-label\">Footnotes</a></h2>\n<ol>\n<li>\n<p>Yeah, I suppose it serves me right for using <code>&gt;=</code> in my <code>requirements.txt</code> file instead of <code>==</code>. </p>\n</li>\n<li>\n<p>I\u2019ve heard some people argue that documentation should even be written <em>before</em> any code, but I don\u2019t think that\u2019s necessary and frankly can wind up being detrimental. </p>\n</li>\n</ol>\n</section><img src=\"http://feed.tylerbutler.com/link/18607/17245854.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2013-06-23T09:26:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245854.gif"
        },
        {
            "id": "https://tylerbutler.com/logbook/",
            "url": "http://feed.tylerbutler.com/link/18607/17245855/logbook",
            "title": "Logbook",
            "content_html": "<p>A Python logging framework by Armin Ronacher (Jinja2, Flask, Werkzeug) and Georg Brandl (Sphinx, Pygments)? Here\u2026 take my money! Wait, it\u2019s BSD licensed? <strong>Sign me up!</strong></p><img src=\"http://feed.tylerbutler.com/link/18607/17245855.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2013-06-23T05:21:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245855.gif"
        },
        {
            "id": "https://tylerbutler.com/speaking-of-the-mouse-wheel/",
            "url": "http://feed.tylerbutler.com/link/18607/17245856/speaking-of-the-mouse-wheel",
            "title": "Speaking of the Mouse Wheel...",
            "content_html": "<p>A brief addendum to <a href=\"https://tylerbutler.com/2013/02/zoom-zoom/\">my last post</a> about zoomable interfaces\u2026 Did you know that the mouse wheel was <a href=\"https://www.ericmic.com/history%20of%20the%20scroll%20wheel.htm\">originally intended</a> to be used to zoom in and out of large Excel spreadsheets? Pretty cool.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245856.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2013-02-24T20:46:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245856.gif"
        },
        {
            "id": "https://tylerbutler.com/zoom-zoom/",
            "url": "http://feed.tylerbutler.com/link/18607/17245857/zoom-zoom",
            "title": "Zoom Zoom",
            "content_html": "<p><a href=\"https://ignorethecode.net/blog/2013/01/29/zoomable_mod_tool/\">Lukas Mathis</a> linked to <a href=\"https://tylerbutler.com/link-not-available?url=https%3A%2F%2Fwww.kickstarter.com%2Fprojects%2Fgaspoweredgames%2Fwildman-an-evolutionary-action-rpg%2Fposts%2F394335\">this video of a mod tool</a> Chris Taylor\u2019s Gas Powered Games is working on for their (now canceled) Wildman Kickstarter campaign.</p>\n<p>Coincidentally, I installed <a href=\"http://en.wikipedia.org/wiki/Supreme_Commander_%28game%29\">Supreme Commander</a> just last weekend to give it another go, so the zoom-happy interface looked familiar. Indeed, Taylor and GPG are the same folks behind Supreme Commander, so it\u2019s not a big surprise this made it into areas beyond the game.</p>\n<p>I\u2019m not a huge fan of it, though, which may mark the first time I\u2019ve disagreed with Mathis in a <em>very</em> long time. Obviously I haven\u2019t used the mod tool, but in Supreme Commander the zooming in and out to navigate the battlefield gets very tiring. In the context of the game, you need to move around the field a <em>lot</em>, so zooming out, then zooming back in on the area you want to focus on is much slower than a minimap that you can click on to navigate around. If such a thing exists in the game, I couldn\u2019t find it. Not that I looked that hard, though\u2026 Something was really busted with the audio, and the game is old enough that finding the patches is hard. Oh well.</p>\n<p>Anyway, back to the mod tool\u2026 There\u2019s certainly a lot of interesting stuff there, but I remain skeptical of zoom being the <em>only</em> means of macro-level navigation. Unlike the game, though, perhaps moving around the field rapidly is something that you do less often in such a tool. If that\u2019s true, then zooming might be quite nice. My objection is certainly not to the concept as a whole, but rather to it as <em>sole</em> means of navigating, and the fact that today, the primary means we have of performing such an action is with the mouse wheel. Even when scrolling web pages or documents the mouse wheel gets tiring, but at least there we have the scroll bar<sup><a href=\"https://tylerbutler.com#fn:zoomzoom1\">1</a></sup>.</p>\n<p>So I\u2019m skeptical, but intrigued. Intrigued is good. Let\u2019s see where it goes.</p>\n<section><h2><a href=\"https://tylerbutler.com#footnote-label\">Footnotes</a></h2>\n<ol>\n<li>\n<p>I often miss the scroll bar when using an iOS device. While the \u2018scroll to top by tapping the top edge of the screen\u2019 is pretty universal these days, there\u2019s no analagous shortcut for jumping to the bottom. Seems like I need that <em>all the time</em>. Maybe I\u2019m weird. </p>\n</li>\n</ol>\n</section><img src=\"http://feed.tylerbutler.com/link/18607/17245857.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2013-02-24T20:04:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245857.gif"
        },
        {
            "id": "https://tylerbutler.com/small-dog-ambassadorship/",
            "url": "http://feed.tylerbutler.com/link/18607/17245858/small-dog-ambassadorship",
            "title": "Small Dog Ambassadorship",
            "content_html": "<p>I didn\u2019t always consider myself a \u201cdog person.\u201d In fact, until a few years ago, if you\u2019d asked me, I would have told you that cats were more my style. Self-sufficient, independent, stand-offish \u2014 these were qualities that I <em>thought</em> I admired in cats.</p>\n<p>Three or so years ago, though, after much discussion, Elizabeth and I got our first dog, a Chihuahua named Cody. And it didn\u2019t take long for me to become a full-blown <em>dog person</em>, and now I\u2019ve taken to calling myself a small dog ambassador.</p>\n<p>If you do consider yourself a dog person, then you probably have some preconceived notions about small breeds. \u201cThey\u2019re really finicky; they bark a lot.\u201d \u201cThey\u2019re always poorly behaved.\u201d \u201cThey\u2019re less intelligent than other breeds.\u201d</p>\n<p>While all of these things <em>can</em> be true, they can be true of all dog breeds (and, like people, there\u2019s a lot of variation between individual dogs even within a breed!), and chances are you simply haven\u2019t had a chance to really interact with small breeds that much. Elizabeth and I have been blown away by the number of times we\u2019ve had friends or family meet our dogs (both Chihuahuas) and say, \u201cI never really liked small dogs, but your dogs are really awesome!\u201d We are <em>not</em> some crazy-skilled dog whisperers or something. Rather, there are two fundamental things that we keep in mind when we\u2019re relating to our dogs.</p>\n\n<p>First, a small dog is still a dog. The biggest problem small dogs have is that they\u2019re simply not treated like dogs, so they either get away with poor behavior because they\u2019re small and it\u2019s \u201ccute,\u201d or they\u2019re treated like fashion accessories rather than animal companions. By treating small breeds like you would a larger breed \u2014 especially when they\u2019re young \u2014 they wind up being much happier, and so will you.</p>\n<p>How exactly should this manifest? Well, a simple example is jumping up on people. If you have a 6\u20195\u201d mastiff, you\u2019re probably going to educate him <em>not</em> to jump up on Aunt Martha \u2014 all five feet two inches of her \u2014 when she comes over for a visit. Likewise, you need to teach your three pound chihuahua the same thing. You might not mind the behavior as much, but you need to let them know that you determine what behavior is appropriate or not, that you\u2019re in charge, and that they need to listen to you. All of these things require training, and larger breeds benefit from this training more naturally because we\u2019re <em>compelled</em> to break them of bad behavior. Small breeds can get a free pass on some things \u2014 for example, ours are allowed on our bed, which many dog owners consider a big no no, and for a Great Dane it would be for us too \u2014 but they still need to learn the behavioral rules, and you must be vigilant in educating them. As usual, it\u2019s easiest when they\u2019re young, but you can still do it when they\u2019re older.</p>\n<p>The next thing that Elizabeth and I keep in mind is the specific role that our dogs play in our lives. Dogs have a rich history \u2014 breeds have been bred for specific roles over thousands of years. You\u2019re probably familiar with some working breeds, such as the <a href=\"https://en.wikipedia.org/wiki/Australian_Shepherd\">Australian Shepherd</a> (bred for herding sheep and other livestock) or the <a href=\"https://en.wikipedia.org/wiki/Dachshund\">Dachshund</a> (bred for hunting small burrowing animals like badgers). But many breeds were bred for specific purposes, and you owe it to your animal and yourself to think about their breeding when interacting with them.</p>\n<p>For example, do you know why <a href=\"https://en.wikipedia.org/wiki/Dalmatian_%28dog%29\">Dalmatians</a> are so closely associated with fire trucks? Well, they were used as \u201cdogs of war\u201d in ancient times, but more recently they were used to nip at the heels of horses drawing fire carriages and to clear crowds of people from the street to make a path for the carriage.</p>\n<p>Now, they\u2019re one of the most popular family breeds in the US, but you should be aware that their breeding still impacts the way they behave. They make excellent guard dogs because they are loyal (a trait most breeds share) but also very protective. If that is what you are looking for in a dog, then a Dalmatian might be a great fit for you. But you should be aware of the specific traits the breed has and know as much as you can about what to expect.</p>\n<p>For my part, when we were looking at dogs we started looking at mid-sized breeds originally. We knew we wanted a breed that was relatively low energy because neither Elizabeth nor I have the energy to take a dog out for a six-mile run every day. We also knew that we needed a breed that would be comfortable in smaller dwellings like an apartment. We\u2019re in a house now, but at the time we weren\u2019t sure how long we\u2019d end up in apartments. But the biggest thing we were looking for was companionship, especially for Elizabeth.</p>\n<p>Believe it or not, I was the one who suggested Chihuahuas \u2014 on a whim \u2014 but as we researched them we realized they were a great fit. They can be high energy (our second dog, Charlie, can be pretty intense!), but their size means they can get suitable amounts of exercise even just running around the room a lot. They\u2019re happy when they\u2019re just hanging out with us \u2014 sitting on our lap, curled up next to our feet when we\u2019re working at a desk, etc. They\u2019re <em>perfect</em> companion dogs. Also, since Elizabeth suffers from chronic anxiety and some other mental health issues, the dogs are a <em>dramatic</em> help to her.</p>\n<p>They\u2019re incredibly accurate little alarms. When we hear a noise and the dogs don\u2019t seem worried, we know it\u2019s nothing to check out. We do get more false positives than we\u2019d like \u2014 mostly from Charlie, who\u2019s only a year old \u2014 but Cody in particular is incredibly good at discerning random scary noises from actual danger. How cool is that? For someone with a chronic anxiety problem, seeing a dog just chilling out when you\u2019re freaked out about something is a big help.</p>\n<p>Anyway, all of this is to say that I have a request of you this holiday season: you may be going to a friend\u2019s house who has a small dog, or perhaps you\u2019re braving the wintery winds to go visit Great Aunt Martha and her Terrible Terrier. If you find yourself in such a situation, I ask you to remember one simple thing: a small dog is a dog.</p>\n<p>And should you find yourself in the Seattle area and you\u2019d like to meet two sweet Chihuahuas who would love to educate you on why their breed is the <em>best</em> breed, drop me a line and let me know! We\u2019d love to have you over so you can be properly introduced to the smaller side of canine companionship!</p>\n<hr />\n<p><em>I\u2019m going to be posting a bit more about the dogs in the coming weeks, because there\u2019s some information I think people should know \u2014 especially about vaccines for small breeds and the importance of quality food. My apologies if you\u2019re not a dog person (are you really <em>that</em> much of a curmudgeon?).</em></p><img src=\"http://feed.tylerbutler.com/link/18607/17245858.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2012-12-22T23:08:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245858.gif"
        },
        {
            "id": "https://tylerbutler.com/base64-encoded-sha256-hashes/",
            "url": "http://feed.tylerbutler.com/link/18607/17245859/base64-encoded-sha256-hashes",
            "title": "Base64 Encoded SHA256 Hashes",
            "content_html": "<p>File this away in your \u201cmight come in handy some day\u201d drawer\u2026 Here\u2019s a quick PowerShell script to calculate the Base64 SHA256 hash of a file:</p>\n<div><figure><figcaption><span>POWERSHELL</span></figcaption><pre><code><div><div><div>1</div></div><div><span>param</span><span>(</span></div></div><div><div><div>2</div></div><div><span><span>    </span></span><span>[</span><span>Parameter</span><span>(</span><span>Mandatory</span><span>=</span><span>$True</span><span>,</span></div></div><div><div><div>3</div></div><div><span>            </span><span>ValueFromPipeline</span><span>=</span><span>$True</span><span>)]</span></div></div><div><div><div>4</div></div><div><span><span>    </span></span><span>$filePath</span></div></div><div><div><div>5</div></div><div><span>)</span></div></div><div><div><div>6</div></div><div>\n</div></div><div><div><div>7</div></div><div><span>$hasher </span><span>=</span><span> [</span><span>System.Security.Cryptography.SHA256</span><span>]::Create()</span></div></div><div><div><div>8</div></div><div><span>$content </span><span>=</span><span> </span><span>Get-Content</span><span> </span><span>-</span><span>Encoding byte $filePath</span></div></div><div><div><div>9</div></div><div><span>$hash </span><span>=</span><span> [</span><span>System.Convert</span><span>]::ToBase64String($hasher.ComputeHash($content))</span></div></div><div><div><div>10</div></div><div><span>Write-Output</span><span> ($filePath.ToString() </span><span>+</span><span> </span><span>\": \"</span><span> </span><span>+</span><span> $hash)</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>You can pipe every file in a directory to this script like this:</p>\n<div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><span>ls </span><span>-</span><span>File </span><span>|</span><span>%</span><span> {.</span><span>\\Get-FileHash.ps1</span><span> $_}</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n\n<h2><a href=\"https://tylerbutler.com#c\">C#\u00a0</a></h2>\n<p>Or, if you prefer, a C# example:</p>\n<div><figure><figcaption><span>C#</span></figcaption><pre><code><div><div><div>1</div></div><div><span>using</span><span> </span><span>System</span><span>;</span></div></div><div><div><div>2</div></div><div><span>using</span><span> </span><span>System</span><span>.</span><span>IO</span><span>;</span></div></div><div><div><div>3</div></div><div><span>using</span><span> </span><span>System</span><span>.</span><span>Security</span><span>.</span><span>Cryptography</span><span>;</span></div></div><div><div><div>4</div></div><div>\n</div></div><div><div><div>5</div></div><div><span>static</span><span> </span><span>string</span><span> </span><span>Base64SHA256</span><span>(</span><span>string</span><span> </span><span>filePath</span><span>)</span></div></div><div><div><div>6</div></div><div><span>{</span></div></div><div><div><div>7</div></div><div><span>    </span><span>var</span><span> </span><span>hasher</span><span> </span><span>=</span><span> SHA256</span><span>.</span><span>Create</span><span>()</span><span>;</span></div></div><div><div><div>8</div></div><div><span>    </span><span>byte</span><span>[] </span><span>hashValue</span><span>;</span></div></div><div><div><div>9</div></div><div><span>    </span><span>using</span><span>(</span><span>Stream</span><span> </span><span>s</span><span> </span><span>=</span><span> File</span><span>.</span><span>OpenRead</span><span>(filePath))</span></div></div><div><div><div>10</div></div><div><span><span>    </span></span><span>{</span></div></div><div><div><div>11</div></div><div><span><span>        </span></span><span>hashValue </span><span>=</span><span> hasher</span><span>.</span><span>ComputeHash</span><span>(s)</span><span>;</span></div></div><div><div><div>12</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>13</div></div><div><span>    </span><span>return</span><span> Convert</span><span>.</span><span>ToBase64String</span><span>(hashValue)</span><span>;</span></div></div><div><div><div>14</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<h2><a href=\"https://tylerbutler.com#python\">Python</a></h2>\n<p>Finally, the same thing in Python. This function is a bit more involved than the other examples because it takes advantage of Python\u2019s dynamic typing. You can pass it a string or any object with a <code>read</code> attribute. Note that this function relies on the <a href=\"https://pypi.python.org/pypi/path.py/2.4.1\">path.py</a> module, though you can remove that dependency pretty easily.</p>\n<div><figure><figcaption><span>PYTHON</span></figcaption><pre><code><div><div><div>1</div></div><div><span>import</span><span> hashlib</span><span>,</span><span> base64</span></div></div><div><div><div>2</div></div><div><span>from</span><span> path </span><span>import</span><span> path</span></div></div><div><div><div>3</div></div><div>\n</div></div><div><div><div>4</div></div><div><span>def</span><span> </span><span>calc_sha</span><span>(</span><span>obj</span><span>):</span></div></div><div><div><div>5</div></div><div><span>    </span><span>\"\"\"Calculates the base64-encoded SHA hash of a file.\"\"\"</span></div></div><div><div><div>6</div></div><div><span>    </span><span>try</span><span>:</span></div></div><div><div><div>7</div></div><div><span><span>        </span></span><span>pathfile </span><span>=</span><span> </span><span>path</span><span>(obj)</span></div></div><div><div><div>8</div></div><div><span>    </span><span>except</span><span> </span><span>UnicodeDecodeError</span><span>:</span></div></div><div><div><div>9</div></div><div><span><span>        </span></span><span>pathfile </span><span>=</span><span> </span><span>None</span></div></div><div><div><div>10</div></div><div><span><span>    </span></span><span>sha </span><span>=</span><span> hashlib</span><span>.</span><span>sha256</span><span>()</span></div></div><div><div><div>11</div></div><div>\n</div></div><div><div><div>12</div></div><div><span>    </span><span>if</span><span> pathfile </span><span>and</span><span> pathfile</span><span>.</span><span>exists</span><span>()</span><span>:</span></div></div><div><div><div>13</div></div><div><span>        </span><span>return</span><span> base64</span><span>.</span><span>b64encode</span><span>(pathfile</span><span>.</span><span>read_hash</span><span>(</span><span>'SHA256'</span><span>))</span></div></div><div><div><div>14</div></div><div><span>    </span><span>elif</span><span> </span><span>isinstance</span><span>(obj</span><span>,</span><span> basestring)</span><span>:</span></div></div><div><div><div>15</div></div><div><span><span>        </span></span><span>sha</span><span>.</span><span>update</span><span>(obj)</span></div></div><div><div><div>16</div></div><div><span>    </span><span>elif</span><span> </span><span>hasattr</span><span>(obj</span><span>,</span><span> </span><span>'read'</span><span>)</span><span>:</span></div></div><div><div><div>17</div></div><div><span>        </span><span>while</span><span> </span><span>True</span><span>:</span></div></div><div><div><div>18</div></div><div><span><span>            </span></span><span>d </span><span>=</span><span> obj</span><span>.</span><span>read</span><span>(</span><span>8192</span><span>)</span></div></div><div><div><div>19</div></div><div><span>            </span><span>if</span><span> </span><span>not</span><span> d</span><span>:</span></div></div><div><div><div>20</div></div><div><span>                </span><span>break</span></div></div><div><div><div>21</div></div><div><span><span>            </span></span><span>sha</span><span>.</span><span>update</span><span>(d)</span></div></div><div><div><div>22</div></div><div><span>    </span><span>else</span><span>:</span></div></div><div><div><div>23</div></div><div><span>        </span><span>return</span><span> </span><span>None</span></div></div><div><div><div>24</div></div><div>\n</div></div><div><div><div>25</div></div><div><span><span>    </span></span><span>r </span><span>=</span><span> sha</span><span>.</span><span>digest</span><span>()</span></div></div><div><div><div>26</div></div><div><span><span>    </span></span><span>r </span><span>=</span><span> base64</span><span>.</span><span>b64encode</span><span>(r)</span></div></div><div><div><div>27</div></div><div><span>    </span><span>return</span><span> r</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>This particular implementation can also be found in my <a href=\"https://pypi.python.org/pypi/propane/0.1.2\">propane</a> utility library (in the <code>filetools</code> module).</p><img src=\"http://feed.tylerbutler.com/link/18607/17245859.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2012-12-17T23:26:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245859.gif"
        },
        {
            "id": "https://tylerbutler.com/principles-and-taste/",
            "url": "http://feed.tylerbutler.com/link/18607/17245860/principles-and-taste",
            "title": "Principles and Taste",
            "content_html": "<p>Came across this solid advice from Thomas Jefferson recently:</p>\n<blockquote>\n<p>In matters of principle, stand like a rock; in matters of taste, swim with the current.</p>\n</blockquote><img src=\"http://feed.tylerbutler.com/link/18607/17245860.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2012-12-17T21:03:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245860.gif"
        },
        {
            "id": "https://tylerbutler.com/the-first-few-milliseconds-of-an-https-connection/",
            "url": "http://feed.tylerbutler.com/link/18607/17245861/the-first-few-milliseconds-of-an-https-connection",
            "title": "The First Few Milliseconds of an HTTPS Connection",
            "content_html": "<p>Jeff Moser provides a nice overview of what happens when connecting to HTTPS sites. Includes a \u2018short, not too scary, guide to RSA.\u2019 This one\u2019s going into my \u2018I hope I don\u2019t ever <em>really</em> have to understand this but if I do I will be glad I saved this\u2019 folder.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245861.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2012-12-14T21:49:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245861.gif"
        },
        {
            "id": "https://tylerbutler.com/pushing-non-default-branches-in-git/",
            "url": "http://feed.tylerbutler.com/link/18607/17245862/pushing-non-default-branches-in-git",
            "title": "Pushing Non-Default Branches in Git",
            "content_html": "<p>Learning new things every day\u2026 Mark Longair describes some <a href=\"https://longair.net/blog/2011/02/27/an-asymmetry-between-git-pull-and-git-push/\">sitations in which <code>git push</code> won\u2019t do what you want or expect</a>:</p>\n<blockquote>\n<p>So, what happens when you want to push your changes back to the upstream branch?  You might hope that because this association exists in your config, then typing any of the following three commands while you\u2019re on the <code>add-menu</code> branch would work:</p>\n<ol>\n<li><code>git push github add-menu</code></li>\n<li><code>git push github</code></li>\n<li><code>git push</code></li>\n<li><code>git push github HEAD</code></li>\n</ol>\n<p>However, with the default git setup, <em>none</em> of these commands will result in <code>new-feature2</code> being updated with your new commits on <code>add-menu</code>.  What does happen instead?</p>\n</blockquote>\n<p>He\u2019s got a very good description of why this doesn\u2019t work like you might expect as well as an overview of options to get things configured the way you want.</p>\n\n<p>I hit up against this today. I use both private git repositories on my own server and repos on GitHub to publish and share the code more broadly. The repo in question has a <code>dev</code> branch which I periodically push to GitHub, but the GitHub version of the branch lags a bit behind my own private repo (so I can do things like <code>git rebase</code> without breaking people). The way I manage this is with a local tracking branch tracking the remote <code>github/dev</code> branch that I fast-forward when I am ready to share something more widely. That local tracking branch is unsurprisingly called <code>github_dev</code>.</p>\n<p>Anyway, I made an update to the <code>github_dev</code> branch today and wanted to push the changes out, and of course <code>git push</code> didn\u2019t do what I expected. I ended up changing my <code>.gitconfig</code>, adding the following lines:</p>\n<div><figure><figcaption></figcaption><pre><code><div><div><span>[push]</span></div></div><div><div><span>    </span><span>default</span><span> </span><span>=</span><span> upstream</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>That\u2019s the option that makes the most sense to me personally, but I understand that pushing all local tracking branches when you haven\u2019t specified a refspec is likely confusing to most people, especially those without git experience.</p>\n<p>In fact, it appears as though the git developers agree: the default in version 1.7.11+, according to Mark, is a new mode called <code>simple</code>, which is similarly <em>not</em> what I want since it still requires the local branch and the upstream branch names to match, but it seems a reasonable compromise and the most likely to just \u2018click\u2019 for new/inexperienced users.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245862.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2012-12-03T23:53:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245862.gif"
        },
        {
            "id": "https://tylerbutler.com/the-vw-group/",
            "url": "http://feed.tylerbutler.com/link/18607/17245863/the-vw-group",
            "title": "The VW Group",
            "content_html": "<p>Peter M. De Lorenzo of <a href=\"https://www.autoextremist.com/current/2012/11/26/the-autoextremist.html\">Autoextremist</a>:</p>\n<blockquote>\n<p>We only have to look as far as the VW Group to see how things are dramatically unfolding. As most industry insiders know, the VW Group, led by the maniacal genius, Ferdinand Piech, is on an unbelievable roll right now. The VW Group boasts twelve brands from seven European countries: Volkswagen, Audi, Bentley, Bugatti, Lamborghini, Porsche (and SEAT, SKODA, Ducati motorcycles, Volkswagen Commercial Vehicles, Scania and MAN).</p>\n</blockquote>\n<p>I had no idea that the VW Group includes Bentley, Lamborghini, and Porsche.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245863.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2012-12-02T08:45:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245863.gif"
        },
        {
            "id": "https://tylerbutler.com/arguing-on-the-internet/",
            "url": "http://feed.tylerbutler.com/link/18607/17245864/arguing-on-the-internet",
            "title": "Arguing on the Internet",
            "content_html": "<p>Mark Twain:</p>\n<blockquote>\n<p>Don\u2019t argue with an idiot. They will drag you down to their level and beat you with experience.</p>\n</blockquote><img src=\"http://feed.tylerbutler.com/link/18607/17245864.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2012-11-28T19:11:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245864.gif"
        },
        {
            "id": "https://tylerbutler.com/games-sales-2012/",
            "url": "http://feed.tylerbutler.com/link/18607/17245865/games-sales-2012",
            "title": "Games Sales 2012",
            "content_html": "<p>It\u2019s that time of year again! Both <a href=\"https://store.steampowered.com/\">Steam</a> and <a href=\"https://www.gog.com/pick_5_pay_10\">GOG</a> have holiday sales going on right now, and it\u2019s a great time to pick up some great entertainment at a solid discount.</p>\n<p>In particular, GOG\u2019s \u201cPick 5 &amp; Pay $10\u201d is a total steal, <em>especially</em> if you like adventure games, and the success of Double Fine\u2019s <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.kickstarter.com%2Fprojects%2F66710809%2Fdouble-fine-adventure\">Kickstarter campaign</a> says many of you do. <a href=\"https://www.gog.com/gamecard/botanicula\">Botanicula</a> on its own is worth $10 easily in my opinion, and if you haven\u2019t yet played <a href=\"https://www.gog.com/gamecard/machinarium_collectors_edition\">Machinarium</a> you can score them both. There\u2019s also <a href=\"https://www.gog.com/gamecard/gemini_rue\">Gemini Rue</a>, <a href=\"https://www.gog.com/gamecard/to_the_moon\">To the Moon</a>, the <a href=\"https://www.gog.com/gamecard/blackwell_bundle\">Blackwell Bundle</a>, and <a href=\"https://www.gog.com/gamecard/resonance\">Resonance</a>. I don\u2019t know much about any of them except they\u2019re all adventure games.</p>\n<p>If adventure games aren\u2019t your bag, I can vouch for <a href=\"https://www.gog.com/gamecard/spacechem\">Spacechem</a> as a <em>very</em> solid puzzle game. <a href=\"https://www.gog.com/gamecard/defcon\">Defcon</a> also looks interesting though I haven\u2019t played it personally. <a href=\"https://www.gog.com/gamecard/anomaly_warzone_earth\">Anomaly Warzone Earth</a> is an engaging twist on tower defense, while <a href=\"https://www.gog.com/gamecard/torchlight\">Torchlight</a> will bring back many (hopefully good) memories of Diablo and Diablo II.</p>\n<p>Honestly, there\u2019s not much on the list that wouldn\u2019t be a solid choice as far as I know, except possibly <a href=\"https://www.gog.com/gamecard/geneforge_15\">Geneforge</a> \u2014 that one looks pretty bad. But hey, maybe I\u2019m wrong! In the end, I wound up going with:</p>\n<ul>\n<li><a href=\"https://www.gog.com/gamecard/botanicula\">Botanicula</a></li>\n<li><a href=\"https://www.gog.com/gamecard/gemini_rue\">Gemini Rue</a></li>\n<li><a href=\"https://www.gog.com/gamecard/to_the_moon\">To the Moon</a></li>\n<li><a href=\"https://www.gog.com/gamecard/symphony\">Symphony</a></li>\n<li><a href=\"https://www.gog.com/gamecard/unmechanical\">Unmechanical</a></li>\n</ul>\n<p>On the Steam side, there\u2019s a ton to choose from, but in particular you can pick up <a href=\"https://store.steampowered.com/app/48000/\">Limbo</a> for less than $3! For the next two hours at least. If you haven\u2019t played it, it\u2019s required gaming. <strong>Required.</strong></p><img src=\"http://feed.tylerbutler.com/link/18607/17245865.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2012-11-22T05:06:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245865.gif"
        },
        {
            "id": "https://tylerbutler.com/malaria-vaccine/",
            "url": "http://feed.tylerbutler.com/link/18607/17245866/malaria-vaccine",
            "title": "Malaria Vaccine",
            "content_html": "<p>Speaking of malaria, <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.thegatesnotes.com%2FPersonal%2FThe-Power-of-Catalytic-Philanthropy%3FWT.mc_id%3D9_20_2012_forbesessay1_tw%26WT.tsrc%3DTwitter\">Bill Gates</a>:</p>\n<blockquote>\n<p>We may even see a malaria vaccine in 2015.</p>\n</blockquote>\n<p>Amazing.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245866.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2012-11-22T03:00:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245866.gif"
        },
        {
            "id": "https://tylerbutler.com/extracting-dates-and-times-from-datetime-cells-in-excel/",
            "url": "http://feed.tylerbutler.com/link/18607/17245867/extracting-dates-and-times-from-datetime-cells-in-excel",
            "title": "Extracting Dates and Times from DateTime Cells in Excel",
            "content_html": "<p>You may, at some point in your life, find yourself needing to take some data that represents a combined date and time and extract from it <em>only</em> the date or <em>only</em> the time. And should you find yourself in such a position, then this post might just save you a bunch of time.</p>\n<h2><a href=\"https://tylerbutler.com#the-magic-formulae\">The Magic Formulae</a></h2>\n<p>Assume our data looks like this:</p>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n<table><thead><tr><th></th><th>A</th><th>B</th><th>C</th></tr></thead><tbody><tr><td><strong>1</strong></td><td>8/15/2012 3:39:59 PM</td><td></td><td></td></tr><tr><td><strong>2</strong></td><td></td><td></td><td></td></tr></tbody></table>\n<p><code>A1</code> contains our date/time, and we want to put the date only in <code>B1</code> and the time only in <code>C1</code>.</p>\n<h3><a href=\"https://tylerbutler.com#extracting-the-date\">Extracting the Date</a></h3>\n<p>Put this formula in <code>B1</code> to extract the date:</p>\n<div><figure><figcaption></figcaption><pre><code><div><div><span>=TRUNC(A1)</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>Then format <code>B1</code> with whatever date format you want. Done!</p>\n<p>If you search the web for answers to this basic question, a lot of the suggestions are to use a combination of the <code>DATE</code>, <code>MONTH</code>, <code>YEAR</code> and <code>DAY</code> functions.<sup><a href=\"https://tylerbutler.com#fn:excel1\">1</a></sup> That works, but it\u2019s really silly in my opinion \u2014 <code>TRUNC</code> is almost certainly faster, especially if you have a large quantity of data.</p>\n<h3><a href=\"https://tylerbutler.com#extracting-the-time\">Extracting the Time</a></h3>\n<p>Put this formula in <code>C1</code> to extract the time:</p>\n<div><figure><figcaption></figcaption><pre><code><div><div><span>=MOD(A1, 1)</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>Then format <code>C1</code> with whatever time format you want. Done!</p>\n<h2><a href=\"https://tylerbutler.com#how-it-works\">How It Works</a></h2>\n<p>The best explanation I\u2019ve found comes from an article titled <a href=\"https://office.microsoft.com/en-us/excel-help/redir/AM010288575.aspx?CTT=5&amp;origin=HA010287495\">How Excel Handles Dates and Times</a>. Unfortunately it\u2019s inexplicably an MHTML file, so you might have trouble opening it.<sup><a href=\"https://tylerbutler.com#fn:excel2\">2</a></sup> I made a <a href=\"https://tylerbutler.com/link-not-available?url=https%3A%2F%2Fdl.dropbox.com%2Fu%2F12062432%2Ftylerbutler.com%2Fexcel_date_times_explanation.pdf\">PDF copy</a> of the article that should work for most people.</p>\n<p>Anyway, from the article:</p>\n<blockquote>\n<p>To Excel, a date is simply a number. More precisely, a date is a serial number that represents the number of days since the fictitious date of January 0, 1900. A serial number of 1 corresponds to January 1, 1900; a serial number of 2 corresponds to January 2, 1900, and so on. This system makes it possible to deal with dates in formulas.</p>\n</blockquote>\n<p>OK, that\u2019s pretty straightforward. But what about times?</p>\n<blockquote>\n<p>When you need to work with time values, you simply extend the Excel date serial number system to include decimals. In other words, Excel works with times by using fractional days. For example, the date serial number for June 1, 2007, is 39234. Noon (halfway through the day) is represented internally as 39234.5.</p>\n</blockquote>\n<p>Ahhh, there we go! Everything to the left of the decimal represents the date, and everything to the right represents the time. We don\u2019t actually need to worry about actually <em>converting</em> those numbers into dates and times \u2014 Excel handles that for us, but behind the scenes everything\u2019s a number. And since we\u2019re just talking about numbers, we can apply some simple mathematics.</p>\n<p>In the case of dates, we truncate the number using the <a href=\"https://office.microsoft.com/en-us/excel-help/trunc-function-HP010342970.aspx\">TRUNC</a> function, which simply lops off the decimal numbers. This is obviously fast \u2014 all Excel needs to do is forget about the decimal values.</p>\n<p>The time case is a little bit tricker. We want to do the same thing, but instead of lopping off the numbers to the right of the decimal, we want to lop off the numbers to the <em>left.</em> Thankfully, math saves us again. The <a href=\"https://en.wikipedia.org/wiki/Modulo_operation\">modulo operation</a> (available in Excel via the <a href=\"https://office.microsoft.com/en-us/excel-help/mod-function-HP010342698.aspx\">MOD</a> function) allows us to find the remainder of a division operation. Since we want the numbers to the right of the decimal only, we mod the value by 1. Since the modulo operation gives us the <em>remainder</em>, the result is the decimal portion of the original number.</p>\n<p>Again, since this is simple math and doesn\u2019t require any fancy conversions of the data, it\u2019s faster, not to mention simpler to write in the little Excel formula window.</p>\n<p>I hope we can all agree there is sufficient compelling evidence that math is <em>awesome.</em></p>\n<section><h2><a href=\"https://tylerbutler.com#footnote-label\">Footnotes</a></h2>\n<ol>\n<li>\n<p>I\u2019ve chosen not to regurgitate this suboptimal solution so it doesn\u2019t continue to set a bad example\u2026 </p>\n</li>\n<li>\n<p>It appears that Chrome does support MHTML, and I think Firefox does with an extension. Regardless, the PDF is likely easier. </p>\n</li>\n</ol>\n</section><img src=\"http://feed.tylerbutler.com/link/18607/17245867.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2012-11-19T00:33:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245867.gif"
        },
        {
            "id": "https://tylerbutler.com/malarious/",
            "url": "http://feed.tylerbutler.com/link/18607/17245868/malarious",
            "title": "Malarious",
            "content_html": "<p>I have some experience with <a href=\"https://en.wikipedia.org/wiki/malaria\">malaria</a>. I grew up in <a href=\"https://en.wikipedia.org/wiki/Papua_New_Guinea\">a country</a> where it\u2019s still a major concern,<sup><a href=\"https://tylerbutler.com#fn:malaria1\">1</a></sup> and I\u2019ve had seven bouts of it over my lifetime. It\u2019s not a terribly frightening disease unless you either don\u2019t get treatment or are unlucky enough to contract a strain that is resistant to medications like <a href=\"https://en.wikipedia.org/wiki/Chloroquine\">Chloroquine</a> or <a href=\"https://en.wikipedia.org/wiki/Quinine\">Quinine</a>, which has unfortunately become more common over the years. When I tell people I\u2019ve had it many times they tend to look at me like I survived cancer or walked out of a burning building unscathed. While it\u2019s certainly not an illness I\u2019d wish on anyone, it is not terrible <em>provided you get treatment.</em></p>\n\n<p>Treatment and prevention is the key, and unfortunately due to the relative ease with which it spreads in areas dense with mosquitoes, it still kills many many people worldwide. One of the reasons the Gates Foundation has <a href=\"https://www.gatesfoundation.org/malaria/Pages/home.aspx\">focused on malaria</a> is that by the numbers, it\u2019s still one of the most widespread and impactful diseases worldwide.</p>\n<p>One thing many people don\u2019t realize is that in areas where preventable or treatable diseases are prevalent along with poverty, economic hardship, and lack of education, the market is rife with opportunities for scammers. From Wikipedia:</p>\n<blockquote>\n<p>The WHO said that studies indicate that up to 40% of artesunate based malaria medications are counterfeit, especially in the Greater Mekong region and have established a rapid alert system to enable information about counterfeit drugs to be rapidly reported to the relevant authorities in participating countries.</p>\n</blockquote>\n<p>Heartbreaking.<sup><a href=\"https://tylerbutler.com#fn:malaria2\">2</a></sup></p>\n<p>Anyway, all of this is just prologue to my real point, which is that you should consider supporting <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.collegehumor.com%2Fmalarious\">Malarious</a>. There are many causes to contribute to in the world, but malaria prevention and treatment is one of the most important in my book.</p>\n<section><h2><a href=\"https://tylerbutler.com#footnote-label\">Footnotes</a></h2>\n<ol>\n<li>\n<p>In fact, it is the number one cause of illness and death in PNG, at least as of 2003. </p>\n</li>\n<li>\n<p>Sadly, as AIDS is rapidly becoming <a href=\"https://en.wikipedia.org/wiki/HIV/AIDS_in_Papua_New_Guinea\">more of a problem in PNG</a>, my parents and sister report that the number of scammers selling fake \u2018home-brew\u2019 medications has taken a sharp upturn, undermining legitimate education and distribution of actual cheap preventative measures like condoms. Makes my blood boil to say the least\u2026 </p>\n</li>\n</ol>\n</section><img src=\"http://feed.tylerbutler.com/link/18607/17245868.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2012-09-07T20:32:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245868.gif"
        },
        {
            "id": "https://tylerbutler.com/blog-portability/",
            "url": "http://feed.tylerbutler.com/link/18607/17245869/blog-portability",
            "title": "Blog Portability",
            "content_html": "<p>MacDrifter on blog portability:</p>\n<blockquote>\n<p>In my continuing efforts to migrate off of WordPress, I now understand some of my biggest mistakes and flaws.</p>\n</blockquote>\n<p>I\u2019m proud to point out that <a href=\"https://tylerbutler.com/projects/engineer/\">Engineer</a> helps avoid a number of these. Let\u2019s examine them.</p>\n\n<p><strong>1. Always save the original Markdown in text files.</strong></p>\n<p>Check. Engineer always keeps your raw post around \u2014 the formatting is done during build time.</p>\n<p><strong>2. Avoid plugins that appear to make life easier by reformatting content for viewing.</strong></p>\n<p>Engineer doesn\u2019t require you to use any such plugins, but it doesn\u2019t prevent you either; it\u2019s your choice.</p>\n<p><strong>3. Footnotes are hard to convert from HTML to MultiMarkdown.</strong></p>\n<p>This simply isn\u2019t a problem in Engineer because the raw Markdown is stored, not just the HTML (see #1).</p>\n<p><strong>4. Use HTML character codes for non-ASCII characters.</strong></p>\n<p>Again, your call here. Engineer will happily handle unicode characters, but other systems might not, so the advice is sound.</p>\n<p><strong>5. Choose a good URL structure up front.</strong></p>\n<p>Engineer uses a date-based one (<code>.../2012/08/05/post_title.html</code>) by default, but it\u2019s not currently customizable. I\u2019m considering adding that in a future version.</p>\n<p><strong>6. Relative links are better than absolute links.</strong></p>\n<p>Ummm, yeah. This shouldn\u2019t ever be a problem in Engineer. With the exception of the RSS feed, all links in Engineer are relative unless you specifically hard-code them.</p>\n<p><strong>7. Don\u2019t go ape-shit with tags and categories.</strong></p>\n<p>Because Engineer doesn\u2019t use tags for any primary navigation or organization, there\u2019s no pressure to add a bunch of tags. I always felt like I needed categories, and to a lesser extent, tags, in WordPress. Categories may eventually make their way into Engineer, but if they do, you should definitely follow this advice.</p>\n<p><strong>8. Code should go in code blocks.</strong></p>\n<p>When I wrote this originally, my response for this tip was simply, \u201cThere are systems that don\u2019t do this? WTF?\u201d Before I hit \u2018publish,\u2019 though, I decided to double-check my assumption that <a href=\"https://pygments.org/\">Pygments</a> already did this. Unfortunately, I was wrong.</p>\n<p>It looks like Pygments\u2019 <a href=\"https://pygments.org/docs/formatters/\">default HTML formatter</a> outputs <code>&lt;pre&gt;</code> tags with <code>&lt;span&gt;</code> tags inside \u2014 not <code>&lt;pre&gt;&lt;code&gt;</code> like I thought. However, on the bright side, there\u2019s a relatively simple way to write a customized formatter (there\u2019s even an example on the Pygments site), so assuming I can get it wired up properly to <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fpackages.python.org%2FMarkdown%2Findex.html\">Python-Markdown</a>, I should be able to add it. I\u2019ve <a href=\"https://trello.com/c/QeelOqyG\">put it on the (ever-growing) list</a>.</p>\n<p><strong>9. Don\u2019t hard-code formatting into a post.</strong></p>\n<p>This is another one of those \u201cyou\u2019re on your own\u201d things. Often the formatting you might need in a post within Engineer is related to images, so there are some standard styles available for handling those common cases. But I have and will continue to generally try and avoid this. Themes should define the styles, not the post itself.</p>\n<p><strong>10. Keep the comments in the comments.</strong></p>\n<p>Since Engineer doesn\u2019t support comments, this doesn\u2019t really apply. If you add your own comments system, like Disqus, then the onus is on you.</p>\n<p>All in all not too bad! Engineer sites should be very portable, and with some more compatibility work, you should be able to switch pretty easily to and from Jekyll if you want. Consider giving Engineer a try\u2026 you might like what you see!</p><img src=\"http://feed.tylerbutler.com/link/18607/17245869.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2012-08-19T03:37:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245869.gif"
        },
        {
            "id": "https://tylerbutler.com/engineer-0-3-1-released/",
            "url": "http://feed.tylerbutler.com/link/18607/17245870/engineer-0-3-1-released",
            "title": "Engineer 0.3.1 Released",
            "content_html": "<p>I pushed out a new version of Engineer \u2014 0.3.1 \u2014 this weekend. While 0.3.1 is a minor release to fix a couple of major bugs that slipped through, 0.3.0 was a pretty major release. A majority of the new stuff is under the covers or developer-focused, so it might not seem like a big deal \u2014 but it is. With this release I think Engineer is stable enough for me to start hyping it a bit more, so you can anticipate that over the next few months.</p>\n<p>The full <a href=\"https://engineer.readthedocs.org/en/latest/changelog.html#version-0-3-0-july-22-2012\">release notes</a> go into more details about the specifics, but there are two major features I added that are particularly interesting from a development perspective: the new plugin architecture, and the Jekyll/Octopress compatibility work.</p>\n\n<h2><a href=\"https://tylerbutler.com#plugin-architecture\">Plugin Architecture</a></h2>\n<p>Before I go into details about the plugin architecture, a disclaimer: I\u2019m not yet completely happy with it, and it\u2019s still a work in progress.</p>\n<p>Since Engineer is a glorified text parser, it makes sense to have some degree of customization over exactly how that parsing happens. While Engineer already has a number of options and ways to customize exactly how it works, there\u2019s always room for more. Building a plugin system into the application forces me to keep the customization interfaces clean and well-defined, plus opens up a whole world of use cases for Engineer that I won\u2019t be able to imagine by myself.</p>\n<p>I first tackled the plugin architecture in <a href=\"https://engineer.readthedocs.org/en/latest/changelog.html#version-0-2-4-may-27-2012\">version 0.2.4</a>, with theme plugins. My idea was to provide a way to add themes to Engineer globally. Wrapping themes in a Python package made sense, since that way themes could be installed the same way Engineer itself is installed.</p>\n<p>That was a fine system, and relatively simple (if not completely overkill since themes are really just HTML/CSS/JavaScript plus a little metadata file \u2014 not Python), but I really wanted a unified plugin system that worked similarly across all different plugin types.</p>\n<p>In order to support post breaks or \u2018teaser\u2019 content on a rollup page, I needed to break a post into two different pieces: the teaser content, and the full post. One option was to build a plugin to the Python Markdown engine. That seemed like overkill, plus frankly I didn\u2019t want to go and learn a new API just for something simple. Also, it was unlikely that all future processing on post content I might want to do would be possible to do in a Markdown plugin, not to mention that I eventually want to support additional post formats (Textile, for example).</p>\n<p>The second option was to simply bake the functionality into Engineer itself and add a new configuration option. This would have been fine, but it also seemed like a really good opportunity to work out a plugin architecture and use the post breaks feature, along with themes, as a test of the design.</p>\n<p>After quite a bit of research and thought, I boiled down the design needs to two basic requirements. In order for a plugin system to work, you need to solve the following problems:</p>\n<ol>\n<li>The plugin has to be registered or discovered. Somehow, Engineer needs to know that the plugin code exists so that it can load it and run it.</li>\n<li>Engineer needs to actually run the right plugin types at the right points in its execution.</li>\n</ol>\n<p>Both of these are pretty obvious, and the second one isn\u2019t that challenging. There are different types of plugins, and those plugins get called based on their type wherever I see fit in the Engineer execution. Since I am defining the plugin\u2019s capabilities (for a given type), then this is just simple common-sense coding.</p>\n<p>The first problem, though, is somewhat more involved. Just <em>how</em> would Engineer know a plugin existed? How would it know what packages to load and what functions to call or classes to instantiate. Clearly I would need an interface defined, but should it be a class? Just a function? Something else? And even then, how will my code <em>find</em> the plugin code?</p>\n<p>One option was to take a page from <a href=\"https://tylerbutler.com/link-not-available?url=https%3A%2F%2Fdocs.djangoproject.com%2Fen%2F1.4%2Fref%2Fsettings%2F%23std%3Asetting-INSTALLED_APPS\">Django</a> and require the modules or classes be provided in a settings file,<sup><a href=\"https://tylerbutler.com#fn:eng1\">1</a></sup> then import them at runtime, but that felt a little clunky. I want it to be possible to simply install the plugin and use it, especially for simple plugins that don\u2019t require configuration (like themes and the post breaks plugin).</p>\n<p>After further research, I came across a very simple model from <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fmartyalchin.com%2F2008%2Fjan%2F10%2Fsimple-plugin-framework%2F\">Marty Allchin</a> that seemed to meet my needs. I can define a class that defines a type of plugin, then plugin implementers can subclass that plugin parent class. The \u2018magic\u2019 of Marty\u2019s method is that all that\u2019s required for plugins to get \u2018loaded\u2019 is that the module containing them be imported. Once that happens, the plugin class is visible to Engineer. See <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fmartyalchin.com%2F2008%2Fjan%2F10%2Fsimple-plugin-framework%2F\">Marty\u2019s post</a> for more details about how it works specifically, or you can look at <a href=\"https://github.com/tylerbutler/engineer/blob/master/engineer/plugins.py\">plugins.py</a> to see my adapted implementation (I didn\u2019t really change anything though).</p>\n<p>That is very very awesome, and works especially well for built-in Engineer plugins since their modules are always loaded, but I still had the problem of loading plugins whose modules I don\u2019t know about at runtime. I still needed the <a href=\"https://engineer.readthedocs.org/en/latest/settings.html#engineer.conf.EngineerConfiguration.PLUGINS\">PLUGINS setting</a> to tell me which modules contained plugins so they could be loaded. Ultimately I <em>really</em> want plugins to be capable of working with no user configuration unless it\u2019s needed due to the nature of the plugin.</p>\n<p>Luckily, with some help from the Pygments source, I was able to find out about setuptools\u2019 <a href=\"http://peak.telecommunity.com/DevCenter/setuptools#extensible-applications-and-frameworks\">entry points</a>, which work perfectly for this purpose. If you\u2019re developing an Engineer plugin, you can notify Engineer about your plugin modules using the <code>engineer.plugins</code> entrypoint.</p>\n<p>This is covered in more detail in the <a href=\"https://engineer.readthedocs.org/en/latest/dev/plugins.html#loading-plugins\">Engineer documentation</a>, but basically you\u2019d add something like this to your plugin\u2019s <code>setup.py</code> file:</p>\n<div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>entry_points </span><span>=</span><span> {</span></div></div><div><div><div>2</div></div><div><span>'engineer.plugins'</span><span>:</span><span> [</span><span>'post_processors=dotted.path.to.module'</span><span>,</span></div></div><div><div><div>3</div></div><div><span>                        </span><span>'themes=another.module.path'</span><span>]</span><span>,</span></div></div><div><div><div>4</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>If you do that, then when your Python package is installed, it will advertise its modules to Engineer such that they can be imported, and then your plugins will run. Magic!</p>\n<p>Like I said earlier, though, it\u2019s still a work in progress. In particular, some of the limitations of the plugin system include:</p>\n<ul>\n<li>There is no notion of ordering plugins to run in a specific order. Currently this is not a problem, but I anticipate it becoming one fairly soon since plugins may eventually step on each others\u2019 toes. I\u2019m not sure how I\u2019m going to address this problem yet.</li>\n<li>There is no general purpose \u2018enable/disable plugin\u2019 feature \u2014 if it\u2019s installed, it\u2019ll run. Individual plugins can of course have their own toggles using custom settings, but it\u2019s not built-in. I might leave this as something individual plugins will need to solve on their own, or I might implement a general-purpose \u2018enabled/disabled by default\u2019 flag a plugin developer can set. I have to think about this more. Again \u2014 work in progress.</li>\n</ul>\n<p>Despite these limitations, the general plugin model is quite useable as-is, and I have a couple of new features I plan to add in version 0.4.0 that I intend to implement as plugins to further prove out the system.</p>\n<h2><a href=\"https://tylerbutler.com#jekylloctopress-compatibility\">Jekyll/Octopress Compatibility</a></h2>\n<p>When I started developing Engineer, I was heavily inspired by <a href=\"https://jekyllrb.com/\">Jekyll</a> and <a href=\"https://octopress.org/\">Octopress</a> (as well as <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fhyde.github.com%2F\">Hyde</a> and <a href=\"https://github.com/marcoarment/secondcrack\">Second Crack</a>). There are a number of things I don\u2019t like or find hard to understand about those applications, but they certainly do many things right.</p>\n<p>But one of the biggest things Jekyll and Octopress have going for them is relative ubiquity, at least amongst the people that use static site generators (a much smaller crowd than it should be!). I honestly hadn\u2019t considered doing any specific compatibility work, though, until I used <a href=\"https://markedapp.com\">Marked</a> on the Mac. Marked is basically a Markdown previewer for the Mac. You type Markdown in one window, Marked shows you the output in another. Now it does other things too but that\u2019s the core thing it does.</p>\n<p>Anyway, there are other Markdown previewers/editors \u2014 notably <a href=\"http://markdownpad.com/\">MarkdownPad</a> for Windows \u2014 but Marked has a unique feature that you can turn on that will ignore Jekyll metadata for the purposes of previewing a document. That means that if you\u2019re editing a Jekyll post, Marked will hide the post metadata (Jekyll calls this \u2018front matter\u2019) in its preview. Contrast this to MarkdownPad, for example, which assumes the metadata is part of the document and renders it as Markdown.</p>\n<p>Obviously this is not a required feature since Engineer metadata doesn\u2019t <em>break</em> Markdown rendering, but it\u2019s kind of nice to have when you\u2019re writing/previewing a lot of posts. So I excitedly turned it on and loaded an Engineer post\u2026 and it didn\u2019t work. The problem, of course, is that Jekyll requires that metadata (sorry, \u2018front matter\u2019) be \u2018fenced\u2019 within two YAML document separators, like so:</p>\n<div><figure><figcaption></figcaption><pre><code><div><div><span>---</span></div></div><div><div><span>metadata goes here...</span></div></div><div><div><span>---</span></div></div><div><div>\n</div></div><div><div><span>post content goes here...</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>Engineer, on the other hand, required, (prior to version 0.3.0) that that first <code>---</code> not be there. Fundamental incompatibility. When I originally made the decision to not require the first <code>---</code> it was for simplicity. I didn\u2019t need it for parsing, and it felt silly to <em>require</em> users to always type it, so I just left it out. However, this meant two things:</p>\n<ol>\n<li>I couldn\u2019t use Marked\u2019s nice Jekyll-compatibility feature for Engineer posts.</li>\n<li>More importantly, users wouldn\u2019t be able to easily migrate from Jekyll to Engineer.</li>\n</ol>\n<p>While getting people to use Engineer over Jekyll is not an explicit goal, I believe there\u2019s room for more than one static site generator, and to the extent that I can encourage portability both to and from Engineer, I want to. So I addressed this in version 0.3.0: Engineer posts can now have Jekyll-style \u2018fenced\u2019 metadata, or classic Engineer-style single <code>---</code> metadata. In addition, during normalization, Engineer will maintain the style of your source file. This isn\u2019t merely a \u2018migrate people to Engineer from Jekyll\u2019 feature. Rather, it\u2019s a \u2018increase compatibility and portability of your site\u2019 feature.</p>\n<p>That\u2019s the extent of the compatibility features in version 0.3.0, but I am going to keep looking for ways to increase the compatibility. In particular, some of the metadata keywords are different (e.g. Jekyll has categories <em>and</em> tags), and I\u2019m looking into handling things like that as an <a href=\"https://trello.com/c/GIYzDoMz\">optional post-processor</a> (using the new plugin system, of course!). There\u2019s a lot of interesting stuff to look into, and I\u2019d love input. Send it my way via a GitHub issue, or fork away and go nuts on the source yourself!</p>\n<p>And if you have a website, consider using Engineer!</p>\n<section><h2><a href=\"https://tylerbutler.com#footnote-label\">Footnotes</a></h2>\n<ol>\n<li>\n<p>I actually ended up implementing this solution anyway since it seemed useful. See the <a href=\"https://engineer.readthedocs.org/en/latest/settings.html#engineer.conf.EngineerConfiguration.PLUGINS\">PLUGINS setting</a>. </p>\n</li>\n</ol>\n</section><img src=\"http://feed.tylerbutler.com/link/18607/17245870.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2012-08-07T09:59:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245870.gif"
        },
        {
            "id": "https://tylerbutler.com/ten-things-steve-bennett-hates-about-git/",
            "url": "http://feed.tylerbutler.com/link/18607/17245871/ten-things-steve-bennett-hates-about-git",
            "title": "Ten Things Steve Bennett Hates About Git",
            "content_html": "<p>For whatever reason, I\u2019ve seen this relatively old article from Steve Bennett linked to by several people over the last day or so. It\u2019s definitely worth a read, and I agree with a lot of it. But I think Bennett misses the mark in a few places.</p>\n<p>First, the things I agree with:</p>\n<h2><a href=\"https://tylerbutler.com#yes-the-command-line-and-official-git-documentation-suck\">Yes, the command line and official Git documentation suck.</a></h2>\n<p>I\u2019ve <a href=\"https://tylerbutler.com/2012/06/git-vs-mercurial-again/\">complained about this before</a>. Software engineers like to believe that if we know how to do one thing, then we can work out how to do all similar things quickly by applying that knowledge. After all, software engineering is advanced problem solving and critical thinking, so applying previous knowledge to current problems is something we\u2019re pretty good at.</p>\n<p>Frankly, the Git command line breaks this all the time. Some commands need some flags; others don\u2019t. Conceptually similar operations require different top-level commands (not just flags) depending on what you\u2019re doing that operation on.<sup><a href=\"https://tylerbutler.com#fn:1\">1</a></sup> It\u2019s madness, and I think it\u2019s safe to say that the command line isn\u2019t <em>designed</em>; it\u2019s merely <em>implemented.</em></p>\n\n<p>Similarly, the documentation sucks. I have found that a major challenge with documenting an application, even <a href=\"https://tylerbutler.com/projects/engineer/\">one whose primary interface is a command line</a>, is documenting things for both a <em>user</em> and a <em>potential contributor</em>. With <a href=\"https://tylerbutler.com/projects/engineer/\">Engineer</a>, I try to keep the two types separate, but it\u2019s a challenge. Arguably open-source software tends to have this problem more \u2014 or at least it\u2019s more publically evident<sup><a href=\"https://tylerbutler.com#fn:2\">2</a></sup> \u2014 since the point of the software is two-fold: to be useful to users, and to attract additional developers to contribute.</p>\n<p>In Git\u2019s case, the official documentation seems to be more focused on potential contributors, or at least people who\u2019ve dug in enough to learn Git internals. But it\u2019s hardly consistent, even when viewed through that lens.</p>\n<h2><a href=\"https://tylerbutler.com#yes-the-git-conceptual-model-is-complicated\">Yes, the Git conceptual model is complicated.</a></h2>\n<p>And yeah, unfortunately eventually you\u2019re exposed to all of it. And yeah, it sucks. As I\u2019ve <a href=\"https://tylerbutler.com/2012/06/git-vs-mercurial-again/\">said before</a>, \u201cI think part of the problem I have with Git, though, is that is often <em>does</em> feel necessary to understand how it works.\u201d</p>\n<p>Personally I think this can be addressed with better visual tools rather than using the command line itself. For example, as I pointed out in my previous comparison of Mercurial and Git, the stage itself is abstracted away by many Git tools:</p>\n<blockquote>\n<p>I do not understand the allure of the stage. Given how easy Git makes branching, and how straightforward it is to commit, ammend the commit, <code>rebase</code> branches, rewrite history with interactive <code>rebase</code>, etc. what exactly is the advantage of the stage? Most tools don\u2019t even expose it \u2014 it\u2019s just there behind the scenes \u2014 so I\u2019m not sure why people make such a big deal about it all the time.</p>\n</blockquote>\n<p>That said, the sheer volume of things you can <em>do</em> with Git make it extremely frightening to unfamiliar developers, and since no Git tool does <em>everything</em> Git does, eventually you end up needing to use the command line for something, and you\u2019re right back at square one.</p>\n<p>Now let\u2019s talk about the places where I disagree with Bennett.</p>\n<h2><a href=\"https://tylerbutler.com#git-is-not-unsafe-version-control\">Git is not \u201cunsafe version control.\u201d</a></h2>\n<p>OK, this is blatant emotional manipulation. \u201cGit is unsafe!\u201d \u201cGit will eat all of your code and you\u2019ll never ever be able to get it back!\u201d \u201cArghhh! Run for the hills!\u201d Come on. I read a headline like \u201cUnsafe version control\u201d and I feel like I am watching an 11 o\u2019clock news report about \u201cEscalators: The silent killer.\u201d</p>\n<p>In his <a href=\"https://www.youtube.com/watch?v=4XpnKHJAok8\">Google tech talk</a>, Torvalds talks a lot about the fact that Git\u2019s decentralization means that often changes you might have eradicated will still exist in another person\u2019s clone of your repository. OK, fine, that\u2019s true, (and can be a good or bad thing depending on one\u2019s perspective) but I don\u2019t think that relying on there being another clone with changes that you care about puts many people\u2019s minds at ease. In fact, I would say fairly confidently, though I don\u2019t have any data to back this up, that the lion\u2019s share of projects stored in Git do <em>not</em> have a great volume of clones sitting on computers around the world. Relying on other people\u2019s clones is not good backup practice in my opinion.</p>\n<p>However, Git has a <em>ton</em> of safeguards in place to prevent you from doing damage. First, if you don\u2019t push, no one even sees your mistake. Second, if you try to push, Git by default won\u2019t let you if you have divergent changes (as you will if you do a <code>rebase</code> in many cases, for example). You have to explicitly tell it to force push in that scenario. Those are two rather silly examples, but there are others. The reflog itself can help you correct damage you\u2019ve done.</p>\n<p>I think it\u2019s fair to say that it\u2019s easier than it should be to get in a state you don\u2019t want to or didn\u2019t expect to be in, but it\u2019s unfair to say that those are unrecoverable situations. I also think that one\u2019s feelings about Git\u2019s behavior has more to do with one\u2019s past experience than it does with Git itself. I\u2019ll get back to that notion in a moment.</p>\n<h2><a href=\"https://tylerbutler.com#comparing-git-to-subversion-or-cvs-directly-is-dangerous\">Comparing Git to Subversion or CVS directly is dangerous.</a></h2>\n<p>It wasn\u2019t until his tenth and final point that I really understood why Bennett is getting hung up on some things:</p>\n<blockquote>\n<p>The point of working on an open source project is to make some changes, then share them with the world. In Subversion, this looks like:</p>\n<ol>\n<li>Make some changes</li>\n<li>svn commit</li>\n</ol>\n<p>If your changes involve creating new files, there\u2019s a tricky extra step:</p>\n<ol>\n<li>Make some changes</li>\n<li>svn add</li>\n<li>svn commit</li>\n</ol>\n<p>For a GitHub-hosted project, the following is basically the bare minimum:</p>\n<ol>\n<li>Make some changes</li>\n<li>git add (not to be confused with svn add)</li>\n<li>git commit</li>\n<li>git push</li>\n</ol>\n<p>Your changes are still only halfway there. Now login to GitHub, find your commit, and issue a \u201cpull request\u201d so that someone downstream can merge it.</p>\n</blockquote>\n<p>Ummm, OK\u2026 I\u2019ll forgive the conflation of GitHub with Git \u2014 they are <em>not</em> the same thing \u2014 because, hey, most Git code in the world today is probably hosted on GitHub in some fashion. But this comparison is fundamentally flawed. Look, we\u2019re working with a decentralized system. In the old world, committing and sharing were analogous, because it wasn\u2019t possible to decouple the two actions. Now it is. That brings with it tremendous value and flexibility. But it does mean that there are two separate steps:</p>\n<ol>\n<li>Writing/committing/adding/merging/blah blah blah code.</li>\n<li><em>Sharing</em> that code with other people.</li>\n</ol>\n<p>You absolutely must understand that Git (and Mercurial) are not centralized systems. They just aren\u2019t. They weren\u2019t meant to be. I believe that the decentralized model is better, but if you don\u2019t, that\u2019s fine. But the danger in comparing a centralized system to a decentralized one is that fundamental assumptions about behavior can\u2019t be made. <em>Of course</em> Git doesn\u2019t automatically throw your changes up for the world to see the moment you commit them. You haven\u2019t said they\u2019re ready to share.</p>\n<p>Now admittedly this is more steps than the Subversion model \u2014 if your intent is to immediately share all code you commit. That feels so incredibly dangerous to me that I would freak out a little bit if working on a system like that, but\u2026 that\u2019s just me.</p>\n<h2><a href=\"https://tylerbutler.com#lets-talk-about-defaults\">Let\u2019s talk about defaults.</a></h2>\n<p>In software design, we think an awful lot about so-called \u2018intelligent defaults.\u2019 The default settings of an application should work for 80-90% of users\u2019 needs. Fewer settings = fewer choices = better experience. This applies just as well to a command line application as it does to an app with a GUI.</p>\n<p>But choosing intelligent defaults is incredibly difficult, even when your application\u2019s purpose is narrowly scoped. In the case of version control, as Bennett points out, there are myriad different ways to handle your development process. While some of that is informed by your VCS, ideally you\u2019ll be able to make your VCS match your process, not the other way around. Mercurial actually has <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fmercurial.selenic.com%2Fwiki%2FMultipleCommitters\">an overview of some of the common models</a> and how Mercurial can be used within them.</p>\n<p>So with this in mind, Git has an impossible problem, because the nature of development is that <em>there is no one way to do things.</em> Heck, one of the reasons Torvalds wrote Git (beyond the Bitkeeper issues) is that the current VCS solutions didn\u2019t meet the needs of the kernel development process.</p>\n<p>Whatever defaults Git chooses (even if it miraculously became consistent overnight, which it won\u2019t because of that nasty little thing we all despise as engineers but continue to care about on our users\u2019 behalf called \u2018backwards compatibility\u2019) won\u2019t be appropriate for a lot of \u2014 possibly a majority of \u2014 projects. And since you, the new contributor, don\u2019t have a lot of say in how the development model of the project works, you don\u2019t have a lot of say in how Git \u2014 or Subversion, or Mercurial, or whatever other VCS \u2014 is used there either.</p>\n<p>\u201cBut couldn\u2019t they add a mode to Git that would emulate Subversion for SVN users and Mercurial for Mercurial users etc. etc,\u201d you might say? Perhaps, though <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fblogs.msdn.com%2Fb%2Foldnewthing%2Farchive%2F2003%2F07%2F28%2F54583.aspx\">I\u2019m not sure it would work out that well</a>. <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fpeople.gnome.org%2F~newren%2Feg%2F\">Easy GIT</a> seems like an effort for Subversion folks that\u2019s worth looking at more deeply, but its mere existence serves as proof that the notion of \u2018intelligent defaults\u2019 depends a heck of a lot on your perspective.</p>\n<p>Having written all of this, I think Bennett has an excellent point when he writes \u2014 in <a href=\"https://stevebennett.me/2012/02/24/10-things-i-hate-about-git/#comment-82\">his reponse to a comment</a>:</p>\n<blockquote>\n<p>The annoying thing about VCS, compared to say, an editor, is that the basic rule of \u201cif you don\u2019t like it, use something else\u201d doesn\u2019t apply. (So in my case, since I never start open source projects, I\u2019ll never get to choose a Git alternative.)</p>\n</blockquote>\n<p>That truly is a problem. You have to play by other people\u2019s rules if you want to join their game, which means you have to learn \u2014 or relearn \u2014 some things. I personally welcome learning new things as a general rule, but perhaps I am unique or unusual in that regard.</p>\n<h2><a href=\"https://tylerbutler.com#git-history-is-not-a-bunch-of-lies\">Git history is <em>not</em> a bunch of lies.</a></h2>\n<p>First, let me disclose my bias here. I am <strong>sick and tired</strong> of this \u2018indelible history\u2019 idea that people seem married to. When your mom asks you what you did this weekend do you tell her that you hooked up with two chicks from the bar for a drunken tryst? Do you go into great detail about the depths of depravity you participated in that night? Probably not. The \u2018radical honesty\u2019 thing, when it comes to source history, is detrimental. Some \u2018lies\u2019 are useful.</p>\n<p>Likewise, I don\u2019t need to expose you to my mental process for development. I\u2019ve said before:</p>\n<blockquote>\n<p>I am <em>all over the place</em> when I code. While I believe that source history should be the <em>\u2018truth,\u2019</em> I also think that above all, it should be as easy to follow as possible. Commit messages are an important part of this, of course, but cleaning up your local history before you share it is critical too. You can go back through and tie up loose ends, remove unnecessary code changes you made, etc.</p>\n</blockquote>\n<p>If I\u2019m writing an article for tylerbutler.com, I write write write write write. Then I take a break and I edit. And I repeat that process until I think things are in good enough shape to share with people. Obviously I\u2019ll make some more edits after I\u2019ve shared it if I or others find flaws after the fact. But if I missed a comma before I shared the article, you don\u2019t need to know about it. Similarly, I don\u2019t sit here at my desk in fear, never hitting Ctrl-S, because I\u2019m worried that everything is not <em>just right</em> and delaying saving my work.</p>\n<p>But in the centralized VCS world, that\u2019s what writing code is like, because there are two intents implied by committing. One, that the change is sound, and two, that the change is ready to be shared with everyone. If every time I saved a draft article it went live immediately on my site it would dramatically change the way I write. I wouldn\u2019t save very often. I would save my work somewhere else then copy it to the site when it was done. I would essentially work around the save-goes-live-immediately system because it\u2019s dangerous. Or worse, I would work within its bounds and <em>never</em> save until everything was perfect, risking an awful lot of lost work.</p>\n<p>I <em>love</em> <code>rebase</code>, and the interactive variety, specifically because it lets me \u2018save\u2019 often with the ability to edit my insanity after the fact. It let\u2019s me vomit out ideas then clean them up later. Am I the only person in the entire world that works this way? Sometimes I definitely feel like it.</p>\n<p>Now, you can argue that for my use-case patches are a better solution, but I prefer just committing them directly to Git for a very simple reason: I can push the changes. \u201cBut wait!\u201d you\u2019ll say. \u201cPushing half-baked changes is what you\u2019re trying to avoid! Haha! You\u2019re such a hypocrite!\u201d Well, no, not exactly. I said I don\u2019t want to <em>share</em> half-baked changes. And I know it\u2019s a little crazy, but sharing and <code>git push</code> are not the same thing.<sup><a href=\"https://tylerbutler.com#fn:3\">3</a></sup></p>\n<p>See, I develop on several different machines in several different locations. Try as I might, I can\u2019t always complete a piece of development on a single machine. So I need to synchronize my in-progress work. One way to look at it is that I need to share with myself.</p>\n<p>Sharing with myself is different. There are different rules and different intentions. Git lets me do this easily by having a separate repository clone that is all mine. This is one thing I think GitHub could make a lot better, but as it stands I have my own Git repositories on <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.webfaction.com%2F%3Faffiliate%3Dtylerbutler\">WebFaction</a>, and I push to them whenever I want. They\u2019re mine. And my changes follow me anywhere I go (sort of \u2014 there are some problems I have which I\u2019ll get into another time). But when I\u2019m ready to <em>share</em> my changes \u2014 not push \u2014 then I <code>git push</code> to the central shared repository. And you don\u2019t know \u2014 nor should you even care \u2014 that I made those changes over the course of three days on six different machines. By the time the changes get to you, they\u2019re tidy, they\u2019re tightly scoped, and they\u2019re easy to understand. Do you <em>really</em> not hold other developers to that same standard?</p>\n<p>Version history is absolutely important. When working with a group of developers, it\u2019s essential. But while I can\u2019t promise that I\u2019ll always share perfect and bug-free code with you, I <em>can</em> promise that I won\u2019t expose you to the insanity that is going on inside my head, and in the code-base, when I\u2019m coding up a fix.</p>\n<p>At this point I have digressed quite a bit. But let me leave you with one final thought, given that it seems several of Bennett\u2019s issues stem from his centralized VCS background:</p>\n<h2><a href=\"https://tylerbutler.com#as-a-developer-you-must-learn-to-use-decentralized-version-control-systems\">As a developer you <strong>must</strong> learn to use decentralized version control systems.</a></h2>\n<p>There is no excuse. It is a basic tool of your profession. Few carpenters get by without learning how to use a lathe; you can\u2019t get by without understanding DVCS. I don\u2019t care if you love SVN, or you use TFS at work, or you think Git is terrible because its command line is an exercise in insanity. <strong>Learn something.</strong> Mercurial is fine. Git is fine. Heck, even Bazaar is fine as far as I\u2019m concerned. But, for just a moment, forget everything you know about version control and get a grasp of some of the basic concepts of DVCS.</p>\n<p>Joel Spolsy\u2019s <a href=\"https://hginit.github.io/\">Hg Init</a> site is a good place to start. Yeah, it\u2019s Mercurial-centric, but that\u2019s fine. The concepts are similar to Git or any other DVCS. And if you like what you see, perhaps you\u2019ll try using Mercurial instead of Git. That\u2019s OK too. For the brain-damaged among you, Joel even has <a href=\"https://hginit.github.io//00.html\">a section</a> for folks with a Subversion background:</p>\n<blockquote>\n<p>It turns out that if you\u2019ve been using Subversion, your brain is a little bit, um, how can I say this politely? You\u2019re brain damaged. No, that\u2019s not polite. You need a little re-education. I walked around brain damaged for six months thinking that Mercurial was more complicated than Subversion, but that was only because I didn\u2019t understand how it really worked, and once I did, it turns out\u2014hey presto!\u2014it\u2019s really kind of simple.</p>\n</blockquote>\n<blockquote>\n<p>So I wrote this tutorial for you, in which I have been very careful not to explain things in terms of Subversion, because there is just no reason to cause any more brain damage. The world is brain damaged enough. Instead, for those of you who are coming from Subversion, I\u2019ve got this one chapter at the beginning that will try to reverse as much damage as possible so that you can learn Mercurial from a clean slate.</p>\n</blockquote>\n<p>The future is waiting. Go meet it.</p>\n<section><h2><a href=\"https://tylerbutler.com#footnote-label\">Footnotes</a></h2>\n<ol>\n<li>\n<p>Bennett uses this example, which is apt:</p>\n<blockquote>\n<p>To reset one file in your working directory to its committed state:\ngit checkout file.txt\nTo reset every file in your working directory to its committed state:\ngit reset \u2014hard</p>\n</blockquote>\n\n</li>\n<li>\n<p>I <em>know</em> that closed-source software has this same problem. How do you bring a new developer up to speed on the codebase? Every software development shop has to solve that problem <em>somehow.</em> However, in those cases, the problem is not publicly evident since we, the public, don\u2019t see the \u2018internal developer documentation,\u2019 if it exists. </p>\n</li>\n<li>\n<p>In fact, I\u2019ve thought about trying to wrap my development process in some scripts, sort of like git-flow, but it\u2019s likely overkill. I find it hard to believe I\u2019m the only person in the world that works this way, but maybe I am. No other developer codes on more than one machine? Goodness gracious. </p>\n</li>\n</ol>\n</section><img src=\"http://feed.tylerbutler.com/link/18607/17245871.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2012-08-05T22:08:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245871.gif"
        },
        {
            "id": "https://tylerbutler.com/max-css/",
            "url": "http://feed.tylerbutler.com/link/18607/17245872/max-css",
            "title": "Max CSS",
            "content_html": "<p>Dan Eden pleads with web developers to provide uncompressed CSS in addition to minified versions:</p>\n<blockquote>\n<p>It\u2019s pretty tough starting out as a designer/developer. You must remember those days of sitting on support forums, relentlessly refreshing and waiting for an answer to \u201cHow does website x do this with CSS?\u201d</p>\n</blockquote>\n<p>As someone who learns best by doing, I have to agree. Despite excellent new sources of information like StackOverflow, starting out as a web developer/designer is difficult. I certainly learned a lot \u2014 and still do \u2014 from looking at the CSS of sites that I find interesting.</p>\n<p>You might not be able to do this for a large business site for business reasons, but there\u2019s no real excuse for a personal site. I\u2019ve <a href=\"https://trello.com/c/rR6cRubk\">added this</a> to the list of things to bake into Engineer.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245872.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2012-07-10T18:28:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245872.gif"
        },
        {
            "id": "https://tylerbutler.com/the-right-woman/",
            "url": "http://feed.tylerbutler.com/link/18607/17245873/the-right-woman",
            "title": "The Right Woman",
            "content_html": "<p>How you know you married the right woman:</p>\n<p>You\u2019re on a road trip. To your horror, you discover that the rental car radio isn\u2019t working well, and your only option is to use the CD player. Of course, since this isn\u2019t 1995, you don\u2019t have any CDs.</p>\n<p>\u201cWait!\u201d she says. \u201cI think I have <em>Dark Side of the Moon</em> in my purse.\u201d</p>\n<hr />\n<p>Yeah \u2014 <em>that happened.</em></p><img src=\"http://feed.tylerbutler.com/link/18607/17245873.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2012-07-07T16:34:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245873.gif"
        },
        {
            "id": "https://tylerbutler.com/git-vs-mercurial-again/",
            "url": "http://feed.tylerbutler.com/link/18607/17245874/git-vs-mercurial-again",
            "title": "Git vs. Mercurial (Again)",
            "content_html": "<p><em>Note: I\u2019ve actually had this sitting in my drafts folder for awhile but with the recent release of <a href=\"https://github.blog/news-insights/the-library/github-for-windows/\">GitHub for Windows</a> it seemed like a good time to get my act together and post it.</em></p>\n<h2><a href=\"https://tylerbutler.com#the-beginning\">The Beginning</a></h2>\n<p>My first experience with true source code management was with CVS. I was in college, and the HawkTour project was going into its second semester. It was becoming clear that with a new batch of undergraduate students coming in the next semester we needed a solution to keep everyone from Hulk-smashing their way through the code wreaking havoc and bringing general chaos.</p>\n<p>The Unix server we used had CVS installed, so I learned the ropes then gave new students a crash-course in using it, as well as how to check things in and out using the Eclipse addins. This was the first time almost every student I encountered had used any source code management software, which in retrospect is a travesty. I <em>really</em> hope college courses include source code management tools these days.</p>\n\n<p>Fast forward a couple of years\u2026 I got out of college, started my career as a PM, and promptly stopped worrying about source code management. I mean, I had to worry about it insofar as I needed to understand what core developers were talking about (\u201c<em>This</em> branch\u201d and \u201c<em>That</em> branch\u201d and \u201cNo we can\u2019t merge yet because of the children. Think of the children!\u201d and\u2026 well, you get the idea) but it wasn\u2019t part of my daily routine.</p>\n<h2><a href=\"https://tylerbutler.com#git-attempt-1\">Git: Attempt 1</a></h2>\n<p>Then in 2008 <a href=\"https://github.com\">GitHub</a> popped onto my radar, so I meandered over to see what the new hotness was and wound up poking around with Git (or is it git? I can find no firm consensus about whether it\u2019s supposed to be capitalized) for awhile. I had a bunch of old code from long-forgotten projects that I resurrected to test it out. At this time, Git on Windows was a horrid experience (and given the current crappy state of affairs you can imagine just how bad it was), but I braved it anyway. I created my Git cheatsheets and memorized arcane command line craziness and <em>used it</em>. And it was fun. And powerful. And very much better than CVS.</p>\n<p>Now, <a href=\"https://www.youtube.com/watch?v=4XpnKHJAok8\">Linus might consider me an idiot</a>, and I no doubt am by his standards, but look people, <em>Git is not easy.</em> Say it with me again: <em>Git is not easy.</em> And Git on Windows is even harder \u2014 this is still true today.</p>\n<p>Hardcore Git zealots strike me as sort of like your neighbor who\u2019s always trying to get you to drive a standard (or manual for the true Yanks) transmission car and change your own oil. \u201cYou\u2019ll save so much cash, man!\u201d \u201cYou have so much more control on the road, dude!\u201d I get that it\u2019s good to know how things work, and that a high degree of control has a lot of benefits, but frankly, sometimes I just need to <em>drive somewhere</em>.<sup><a href=\"https://tylerbutler.com#fn:git1\">1</a></sup></p>\n<p>This attitude is why many Git guides and tutorials start with stuff like how the index and the reflog work and what garbage collection is etc. etc. For example, see this <a href=\"https://www.sbf5.com/~cduan/technical/git/\">humorously titled guide by Charles Duan</a>. Tommi Virtanen\u2019s <a href=\"https://eagain.net/articles/git-for-computer-scientists/\">Git for Computer Scientists</a> is a similar example, though I give Virtanen a pass since the guide\u2019s explicit goal is to explain how Git works internally, not how to <em>use</em> Git.</p>\n<p>I get why that stuff is important \u2014 and useful, potentially<sup><a href=\"https://tylerbutler.com#fn:git2\">2</a></sup> \u2014 but that approach is sort of like teaching someone to drive by first explaining how the engine works. It\u2019s simply not necessary to use the car.</p>\n<p>I think part of the problem I have with Git, though, is that is often <em>does</em> feel necessary to understand how it works. Remember this notion; I\u2019ll come back to it later.</p>\n<h2><a href=\"https://tylerbutler.com#mercurial-to-the-rescue-or-not\">Mercurial To the Rescue! (Or Not)</a></h2>\n<p>After quite a long break from coding, I started up in earnest again at the end of 2010 when I started teaching high school web design as part of the <a href=\"https://tealsk12.org\">TEALS</a> pilot program. I had a bunch of sample HTML and CSS and lesson plan stuff and it made sense to get it all in source control.</p>\n<p>So I checked in on Git, and Git on Windows was still painful. Or, I should say, too painful for my tastes. Anything that calls Cygwin a prerequisite is not set up for success in my book. That, in short, was what prompted me to try Mercurial for the first time. Well, that and the fact that Mercurial is written in Python, and the fact that <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.fogcreek.com%2Fkiln%2F\">Kiln</a> had just come out so I felt like I could rely on there being a solid GitHub alternative for remote repositories.</p>\n<p>And Mercurial was fun. And powerful. And very much better than CVS. And TortoiseHG was (is!) a relatively elegant tool that works well in Windows. Life was good. I discovered the beauty of MQ and patch queues. I started using BitBucket because, well, it was just like GitHub, right? (And at the time Kiln didn\u2019t have public repositories.)</p>\n<p>But something never quite \u2018clicked\u2019 for me about Mercurial \u2014 branches. Or, to be more exact in Mercurial terminology \u2014  <em>named</em> branches. Mercurial has them, but they\u2019re not like Git\u2019s. In fact, they\u2019re such different concepts that most articles comparing the two systems actually use different names for them. So it\u2019s a bit unfair to compare them directly. Mercurial\u2019s bookmarks are a better counterpart to Git\u2019s branches, but I digress\u2026</p>\n<p>Anyway, the guidance from Mercurial-land is that named branches are meant for long-lived things like a dev branch or a release branch. Steve Losh has a great overview of all of the <a href=\"https://stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial/\">branching options in Mercurial</a>, including bookmarks that I just mentioned, but if you want to just play around for awhile on a new idea then save it for later you do not create a named branch. You might create a bookmark, you might use a separate clone, but you don\u2019t use a named branch. <em>So sayeth the powers that be.</em> In reality, you <em>can</em> create named branches (as Steve points out), and you can close them when you\u2019re done with them, but in Mercurial those branches stay as an indelible part of the source history (or the metadata at least), which feels messy to me.</p>\n<p>Now, there\u2019s absolutely nothing wrong with this model. It works wonderfully for many people. It is arguably simpler, though I do not personally believe that to be the case.</p>\n<p>I think that depending on which branching model you wrap your head around first, the Mercurial way either feels right or feels wrong. In my case it feels wrong. It doesn\u2019t work well with the way that I work. I am <em>all over the place</em> when I code. While I believe that source history should be the <em>\u2018truth,\u2019</em> I also think that above all, it should be as easy to follow as possible. Commit messages are an important part of this, of course, but cleaning up your local history before you share it is critical too. You can go back through and tie up loose ends, remove unnecessary code changes you made,<sup><a href=\"https://tylerbutler.com#fn:git3\">3</a></sup> etc. Keeping your changes separated is critical in making this \u2018clean up\u2019 possible.</p>\n<h3><a href=\"https://tylerbutler.com#anonymous-branches\">Anonymous Branches</a></h3>\n<p>In my attempt to have multiple in-flight changesets, I first tried the anonymous branching approach, which isn\u2019t possible in Git but works well in Mercurial. But then when I\u2019d try to push I\u2019d get warnings that I was pushing new heads. Well, yeah, of course. And while I know that I can do that safely when I\u2019m just pushing to a remote repository for myself (to work on in-flight changes on multiple computers, for example), it creates a huge hassle when I am finally ready to push to a shared repository. \u201cOh, oops, I have some unmerged changes from failed-but-not-quite-ready-to-give-up-on-experiment #37 that everyone\u2019s going to get if I push in this state.\u201d Yuck.</p>\n<h3><a href=\"https://tylerbutler.com#patch-queues\">Patch Queues</a></h3>\n<p>The next approach I tried was a patch queue. Yeah, I\u2019d just manage every change as a patch. It worked for the kernel guys for years, right? Except that <em>really</em> turned out terribly. If you only want to have a single patch queue, then everything needs to be \u2018in order.\u2019 It\u2019s a queue, so each patch applies successively. And that works OK for awhile, but eventually I wanted to work on two totally divergent things at the same time and switch back and forth periodically.</p>\n<p>So <em>then</em> you start thinking that you just need <em>multiple patch queues</em>, one for each feature. This is getting ridiculous, but whatever\u2026 I\u2019ll try it. You know what? It <em>is</em> ridiculous. You know those great tools I mentioned earlier, like TortoiseHG? Yeah, they don\u2019t work so well at managing multiple patch queues. Thus, one of the major reasons I switched to Mercurial \u2014 superior Windows tools \u2014 was eroded. Also, this complexity has a nasty side-effect: it discourages the very thing that DVC systems are meant to help with, namely not committing your changes often enough.</p>\n<p>In the single patch queue world, you tend to just update the same patch all the time, so you don\u2019t get the benefits of true source history. If you don\u2019t take that approach, then you have to remember which patches in the queue \u2018go together\u2019 so you can apply them up to the right point. (And do not think for second of using a versioned patch queue. Yes, it can potentially alleviate this problem. But it\u2019s a mind-bender to keep remembering how everything fits together: I first need to refresh my patch, then commit <em>on the patch queue repository</em> to save my changes for posterity. The level of indirection is too high to be truly useful in my opinion.) If you use the multiple patch queue option the switching costs of changing between the feature \u2018branches\u2019 you\u2019re working on cause different, but equally bothersome, problems. All in all, these workflows just didn\u2019t work for me.</p>\n<p>That <em>\u2018for me\u2019</em> is very important. <em>You</em> should definitely try Mercurial, especially if you\u2019re struggling with Git. I definitely miss some things about it (MQ in particular, though <code>rebase</code> works pretty well for most things), and you no doubt work and think completely differently than I do. It might \u2018click\u2019 for you in a way that it doesn\u2019t for me, and if Git\u2019s complexity or something is preventing you from using source control, then please please <em>please</em> try Mercurial. You absolutely should be using source control.</p>\n<h2><a href=\"https://tylerbutler.com#git-back\">Git Back</a></h2>\n<p>So\u2026 right now I\u2019m back on the Git bandwagon. And, truth be told, the Git on Windows world has gotten a lot better recently. In fact there\u2019s even a <a href=\"https://tylerbutler.com/link-not-available?url=https%3A%2F%2Fcode.google.com%2Fp%2Fmsysgit%2Fdownloads%2Flist%3Fcan%3D3%26q%3Dofficial%2BGit\">portable version</a> that you can install on your USB key. And (yay!) Cygwin isn\u2019t necessary.</p>\n<p>But it\u2019s not all sunshine and daisies. Git still has a crazy command line interface. It\u2019s confusing. There are all kinds of posts online like <a href=\"https://www.zorched.net/2008/04/14/start-a-new-branch-on-your-remote-git-repository/\">this one</a> that illustrate how even seasoned Git users forget commands for <em>basic tasks</em>. Deleting a remote branch is a perfect illustration in \u2018WAT?\u2019 Yeah, it makes sense once you think about it, but that doesn\u2019t mean it\u2019s good or right.<sup><a href=\"https://tylerbutler.com#fn:git4\">4</a></sup> I have a browser window open whenever I am using the Git command line just to look up the right command to do what I want to do. Do. Not. Like.</p>\n<p>A lot of the <a href=\"https://github.com/ddollar/git-utils\">helpful scripts</a> you can find to ease the command complexity are depedendent on bash or some other *nix shell. Git for Windows does have a bash shell and even includes a handy batch file for starting it, but most of my life is lived in PowerShell, and I find I miss some of the commands when using bash. That said, you can configure Console2 to host the Git bash shell so I just open one up, use it <em>only</em> for git, and use other PowerShell tabs for most of my other work. (Note: if you take this approach, you can copy your scripts into the <code>/bin</code> directory in your Git folder and they\u2019ll be available at your Git prompts. You can also try <a href=\"https://github.com/dahlbyk/posh-git\">posh-git</a>, but again, those helpful bash scripts you downloaded won\u2019t be useable.)</p>\n<h2><a href=\"https://tylerbutler.com#adjustments\">Adjustments</a></h2>\n<p>So now, having switched from Git to Mercurial and back, here are some of the differences that affect me personally.</p>\n<ul>\n<li>Pull and Fetch mean different things. In fact, they\u2019re kind of the opposite. This one has driven me nuts a few times, especially since I do still use Mercurial on at least one major project.</li>\n<li>I miss <code>hg incoming</code> and <code>hg outgoing</code>. Yes, there are corresponding Git scripts you can get but they aren\u2019t as nice IMO.</li>\n<li>I miss being able to use a substring of the command I want. For example, in Mercurial I could type <code>hg inc</code> instead of <code>hg incoming</code>. This does not appear to work in Git, at least not on Windows. Yes, I can create aliases. No, they\u2019re not as convenient.</li>\n<li><code>git rebase</code> is very cool, and very powerful. Thus, it is dangerous, but a working knowledge of how to use it properly has led me to a multi-machine workflow that is quite good, and much better than my insane attempts as using MQ for the same purpose. I\u2019ve since gone back and tried Mercurial\u2019s <code>rebase</code> command, and while it does let you do the basic rebase action of \u2018transplanting\u2019 a branch to be based on another branch, the interactive rebase isn\u2019t possible. For that you can use another Mercurial extension called <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fmercurial.selenic.com%2Fwiki%2FHisteditExtension\">histedit</a>, but again, it just doesn\u2019t seem as polished as the Git counterpart. Wow, I can honestly say I never expected to write that something in Git feels \u2018polished\u2019 but <code>rebase</code> does.</li>\n<li>Creating named branches for everything is bliss. Pure bliss. This just completely \u2018clicks\u2019 for me. I create little branches for everything. Coupled with a repository viewer that visualizes the whole tree (<a href=\"https://www.jetbrains.com/pycharm/\">PyCharm</a> actually has this built-in, but other tools such as <a href=\"https://code.google.com/p/gitextensions/\">Git Extensions</a> or even <code>gitk</code> have it as well) the branch names serve as little sign-posts about what I\u2019m working on.</li>\n<li>Branches are awesome, but managing them is a bit of a pain just because the tools available can\u2019t do <em>everything</em>. Luckily, even when you think you\u2019ve destroyed things beyond all repair and your work is gone <em>for good</em>, it usually isn\u2019t. Almost everything is recoverable. Git is nothing if not careful. I think it\u2019s situations like this that have caused people writing \u2018Guides to Git\u2019 to start by explaining the index and the reflog and the hashes and <em>how Git works</em>, because if you <em>do</em> understand that stuff, you can generally get yourself out of trouble \u2014 or stay out of it altogether. But I think in the end that type of teaching leads to more confusion than clarity and causes more problems than it solves.</li>\n<li>I do not understand the allure of the stage. Given how easy Git makes branching, and how straightforward it is to commit, ammend the commit, <code>rebase</code> branches, rewrite history with interactive <code>rebase</code>, etc. what exactly is the advantage of the stage? Most tools don\u2019t even expose it \u2014 it\u2019s just there behind the scenes \u2014 so I\u2019m not sure why people make such a big deal about it all the time.</li>\n<li>In Mercurial, you can have anonymous branches since your whole history is always \u2018visible.\u2019 In Git this is not true. If there\u2019s no name pointing to a head, it effectively doesn\u2019t exist. Now, this technically isn\u2019t true, but orphaned heads don\u2019t show up in any tools I\u2019ve seen, and they\u2019re not easily accessed unless you happen to know their hash. And <em>eventually</em> they will disappear for good. The lesson here is just to be nervous about not having a branch pointing to something important. Until you feel comfortable with what you\u2019re doing, if you\u2019re messing with <code>rebase</code> or something, create some dummy branches pointing to your important commits so you\u2019ll have something to get back to if you really screw something up. Again, this is never truly necessary \u2014 it\u2019s just for peace of mind and ease of recovery if you\u2019re new to Git.</li>\n</ul>\n<p>This post is already incredibly long, so I\u2019ll save the rant about Git GUI tools for another time, but the <code>TL;DR</code> version is that they still suck leave a lot to be desired, at least on Windows. I was incredibly excited when <a href=\"https://github.blog/news-insights/the-library/github-for-windows/\">GitHub for Windows</a> was announced, but I find it completely, mind-bogglingly, useless. It\u2019s a v1, so I have hopes it\u2019ll get better, but right now I\u2019d have a hard time recommending anyone use it, even Git noobs. I think it has the potential to create a bunch of bad habits or, even worse, really messy histories simply because of weird merges and whatnot. I find it hard to believe it doesn\u2019t have a visualization of the whole Git tree. I mean, <em>that</em> is what makes Git understandable for a mere mortal like me. I\u2019ll have to give it some more time and try it out again to see if I can puzzle out what they\u2019re trying to do with the UI, but it seems a little <em>too</em> simple right now. But\u2026 like I said, that\u2019s a whole other post. <code>/sigh</code></p>\n<p>For now, I\u2019m happy with the workflow and toolset I have (I\u2019ll share more details another time), though it\u2019s a bit rough around the edges and I have to pay a few too many visits to Stack Overflow just to get basic things done. But it works, it\u2019s fun, it\u2019s <em>very</em> powerful, and did I mention it\u2019s a lot better than CVS?</p>\n<section><h2><a href=\"https://tylerbutler.com#footnote-label\">Footnotes</a></h2>\n<ol>\n<li>\n<p>This analogy is somewhat flawed since I drive a standard-transmission car and firmly believe it is a skill every driver should have. </p>\n</li>\n<li>\n<p>To be fair, the Git reflog has saved me from at least one very dangerous botched rebase. I wound up in a situation where the commit tree I really cared about was \u2018gone.\u2019 Really, what had happened is that all the <em>visible references</em> to it were gone. I managed to save the situation by digging through the reflog and getting out the relevant commits. </p>\n</li>\n<li>\n<p>Come on, you\u2019ve all seen a commit from <em>that guy</em> who always does some code formatting/style cleanup along with his changes you\u2019re trying to review. You can\u2019t tell without some effort what is really part of the meaningful change and what isn\u2019t since the cleanup changes obscure everything. </p>\n</li>\n<li>\n<p>In case you\u2019ve found your way here via a search engine and are in dire need of the actual command to delete a remote branch, here it is: <code>git push origin :branch-to-delete</code>. Oh, don\u2019t feel bad; I\u2019m sure you would have figured it out on your own. </p>\n</li>\n</ol>\n</section><img src=\"http://feed.tylerbutler.com/link/18607/17245874.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2012-06-11T00:57:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245874.gif"
        },
        {
            "id": "https://tylerbutler.com/ruthless/",
            "url": "http://feed.tylerbutler.com/link/18607/17245875/ruthless",
            "title": "Ruthless",
            "content_html": "<p>Lot\u2019s of little gems in this piece by Chris Parker, but I especially like this one:</p>\n<blockquote>\n<p>Every time you throw in something that seems to work, <em>find out why it works.</em> If you don\u2019t understand why it works then the code is just magic and you\u2019re letting yourself off the hook. That code will become enshrined in your version control system for later generations (read: you, three months from now) to discover, wonder at, puzzle over, and leave it because no one understands what it does.</p>\n</blockquote>\n<p>Yes. A thousand times yes. That last sentence is especially applicable when working on larger-scale products with a rolling development team (read: nearly everything that comes out of Microsoft, Google, Apple, Adobe, etc.).</p><img src=\"http://feed.tylerbutler.com/link/18607/17245875.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2012-06-01T16:52:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245875.gif"
        },
        {
            "id": "https://tylerbutler.com/psget/",
            "url": "http://feed.tylerbutler.com/link/18607/17245876/psget",
            "title": "PSGet",
            "content_html": "<p>I am no doubt very late to the party, but I just discovered <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fpsget.net%2F\">PSGet</a> last week. I should write more about it, but for now, just open up the site in a new tab and check it out. If you use PowerShell you owe it to yourself.</p>\n<p>In particular, get PSUrl \u2014 cURL for PowerShell. <em><strong>Finally.</strong></em></p><img src=\"http://feed.tylerbutler.com/link/18607/17245876.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2012-05-30T19:51:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245876.gif"
        },
        {
            "id": "https://tylerbutler.com/how-to-install-python-pip-and-virtualenv-on-windows-with-powershell/",
            "url": "http://feed.tylerbutler.com/link/18607/17245877/how-to-install-python-pip-and-virtualenv-on-windows-with-powershell",
            "title": "How To Install Python, pip, and virtualenv on Windows with PowerShell",
            "content_html": "<p>If you do any Python development, you\u2019ll probably run into an awful lot of package installation instructions <a href=\"https://engineer.readthedocs.org/en/latest/installation.html#installing-using-pip\">that read</a>:</p>\n<blockquote>\n<p>To install, use pip:</p>\n<p><code>pip install engineer</code></p>\n</blockquote>\n<p>Now, that\u2019s all fine and dandy, but what is pip? And what is this virtualenv thing people keep telling me I should use?</p>\n<p>If you\u2019re new to Python, getting up and running with pip and virtualenv can be a challenge, especially on Windows. Many guides I\u2019ve seen out there assume either <em>a)</em> you\u2019re working on Linux or UNIX or <em>b)</em> you already have pip/setuptools installed, or you know how to install packages and manage virtualenv. Heck, when I was learning this I didn\u2019t even know what pip <em>was!</em> Having gone through this process several times now, I decided to write it all down from the beginning in the hopes that it\u2019ll be useful to someone in the future.</p>\n<div></div>\n\n<h2><a href=\"https://tylerbutler.com#before-we-start\">Before We Start</a></h2>\n<p>A brief note before we start\u2026 To make sure we\u2019re all on the same page, pip is a Python package installer. It integrates with PyPI, the Python Package Index, and lets you download and install a package from the package index without manually downloading the package, uncompressing it, running <code>python setup.py install</code> etc. Pip makes installing libraries for your Python environment a breeze, and when you start developing your own packages it provides a way for you to declare dependencies so those dependent packages will get installed automatically as well.</p>\n<p>The more Python development you do, though, the more packages you\u2019re going to need. Wouldn\u2019t it be nice if you could install all the packages into a \u2018special\u2019 location where they wouldn\u2019t interfere with any other packages? This is where virtualenv comes in. It creates a virtual Python interpreter and isolates any packages installed for that interpreter from others on the system. There are lots of ways this comes in handy; I\u2019ll leave enumerating them as an exercise for the reader, but if you think for a minute you can see why this will come in handy. And if you can\u2019t yet, then give yourself a few weeks of Python development, then come back and look at this post again once you realize you need to use virtualenv.</p>\n<p>Finally, there\u2019s a wrapper utility for virtualenv aptly called <em>virtualenvwrapper</em>. This wrapper makes creating new virtual environments and switching between them really straightforward. Unfortunately, it relies on a UNIX shell, which is kind of a pain on Windows. Luckily there\u2019s a PowerShell clone of the wrapper that works wonderfully and gives us Windows users the same kind of awesomeness that we\u2019ve come to expect from PowerShell.</p>\n<p>So with the definitions out of the way, let\u2019s get started\u2026</p>\n<h2><a href=\"https://tylerbutler.com#ensure-you-can-execute-powershell-scripts\">Ensure You Can Execute PowerShell Scripts</a></h2>\n<p>For the most part, this guide assumes you\u2019ve actually used PowerShell a few times and know how to run scripts. If that\u2019s not the case, though, then the very first thing you\u2019ll want to do is enable scripts to run on your system using the <code>Set-ExecutionPolicy</code> command. There\u2019s <a href=\"http://technet.microsoft.com/en-us/library/ee176949.aspx\">a great article on TechNet</a> that covers this in detail, so I won\u2019t go into detail here. You can also skip this step for now if you want. Just read that article if you run into the following error message at any point:</p>\n<div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><span>...cannot be loaded because the execution of scripts is disabled on</span></div></div><div><div><span>this system. Please see </span><span>\"get-help about_signing\"</span><span> </span><span>for</span><span> more details.</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<h2><a href=\"https://tylerbutler.com#get-python\">Get Python</a></h2>\n<p>First things first \u2014 get Python! You can get the Python 2.7.8 (the current Python 2.x version as of this writing) 32-bit installer from <a href=\"https://www.python.org/downloads/windows/\">https://www.python.org/downloads/windows/</a>. There is a 64-bit version of Python as well, but I have personally found it to be more hassle than it\u2019s worth. Some packages won\u2019t have 64-bit versions available, and I personally haven\u2019t found any need for the 64-bit version in any project I\u2019ve worked on. Feel free to go with the 64-bit version if you\u2019d like, but this guide assumes you\u2019re using the 32-bit one.</p>\n<p>Recent Python installers include an explicit option to add <code>C:\\Python27\\</code> to your path. I find checking that option to be the easiest thing to do, and it\u2019s generally what you want. It\u2019s not selected by default, though, so watch for it and enable it if you want. If you don\u2019t do that, and you need to do it manually later, the <a href=\"https://docs.python.org/using/windows.html\">Using Python on Windows</a> documentation includes more details.</p>\n<p>Unfortunately, the installer does <em>not</em> add the <code>Scripts</code> (i.e. <code>C:\\Python27\\Scripts</code>) subdirectory, which is also really needed, since that\u2019s where pip will end up being installed. So even if you check that box chances are you\u2019ll need to edit your path anyway.</p>\n<p>Once you\u2019ve installed Python, open up a PowerShell window and type <code>python</code> and press enter. You should see something like this:</p>\n<div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><span>PS C:\\</span><span>&gt;</span><span> python</span></div></div><div><div><span>Python </span><span>2.7</span><span>.</span><span>8</span><span> (</span><span>default</span><span>,</span><span> Jun </span><span>30</span><span> </span><span>2014</span><span>,</span><span> </span><span>16</span><span>:</span><span>03</span><span>:</span><span>49</span><span>) [</span><span>MSC</span><span> </span><span>v.1500</span><span> </span><span>32</span><span> </span><span>bit</span><span> (Intel)] on win32</span></div></div><div><div><span>Type </span><span>\"help\"</span><span>,</span><span> </span><span>\"copyright\"</span><span>,</span><span> </span><span>\"credits\"</span><span> or </span><span>\"license\"</span><span> </span><span>for</span><span> more information.</span></div></div><div><div><span>&gt;&gt;&gt;</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>Press <code>Ctrl-Z</code> and hit return to exit the Python prompt. If you get an error when you type <code>python</code> saying \u201cThe term \u2018foo\u2019 is not recognized as the name of a cmdlet, function, script file, or operable program,\u201d then Python is not on your path. Add it first, and once your path is updated, restart PowerShell to ensure the new path is loaded and try typing <code>python</code> again. You should be good to go!</p>\n<h2><a href=\"https://tylerbutler.com#get-pip\">Get Pip</a></h2>\n<p><em>Note: As of Python 2.7.10, pip can be automatically installed as part of the Python for Windows installer. If you do that, you can skip this step.</em></p>\n<p><em>Note: Previous versions of this guide included a step to download and install Distribute. That is no longer needed; just get pip.</em></p>\n<p>The easiest way to install pip is to download the <a href=\"https://tylerbutler.com/link-not-available?url=https%3A%2F%2Fraw.github.com%2Fpypa%2Fpip%2Fmaster%2Fcontrib%2Fget-pip.py\">get-pip.py</a> script, save it locally, then run it using Python.</p>\n<div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><span>PS C:\\</span><span>&gt;</span><span> python </span><span>get-pip</span><span>.py</span></div></div><div><div><span>Downloading</span><span>/</span><span>unpacking pip</span></div></div><div><div><span>Downloading</span><span>/</span><span>unpacking setuptools</span></div></div><div><div><span>Installing collected packages: pip</span><span>,</span><span> setuptools</span></div></div><div><div><span>Successfully installed pip setuptools</span></div></div><div><div><span>Cleaning up...</span></div></div><div><div><span>PS C:\\</span><span>&gt;</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>There are other ways to get pip, but this is the easiest way I have found. There are more details on this at <a href=\"http://www.pip-installer.org/en/latest/installing.html#using-the-installer\">the pip website</a>. To check if everything is working, just type <code>pip</code> at the command line:</p>\n<div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><span>PS C:\\</span><span>&gt;</span><span> pip</span></div></div><div><div>\n</div></div><div><div><span>Usage:</span></div></div><div><div><span><span>    </span></span><span>pip </span><span>&lt;</span><span>command</span><span>&gt;</span><span> [</span><span>options</span><span>]</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>If you get another \u201ccommand is not recognized\u201d error, check that <code>C:\\Python27\\Scripts\\</code> is on your path.</p>\n<h2><a href=\"https://tylerbutler.com#install-virtualenv-and-virtualenvwrapper-powershell\">Install virtualenv and virtualenvwrapper-powershell</a></h2>\n<p>Pip should now be installed, so type the following commands to get virtualenv and the PowerShell virtualenvwrapper installed:</p>\n<div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><span>PS C:\\</span><span>&gt;</span><span> pip install virtualenv</span></div></div><div><div><span>PS C:\\</span><span>&gt;</span><span> pip install virtualenvwrapper</span><span>-</span><span>powershell</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>Now you need to import the wrapper module in PowerShell, so type <code>Import-Module virtualenvwrapper</code>.\nYou will probably get one of two errors \u2014 or both. The first will be something like this:</p>\n<div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><span>PS C:\\</span><span>&gt;</span><span> </span><span>Import-Module</span><span> virtualenvwrapper</span></div></div><div><div><span>Get-Content</span><span> : Cannot find path </span><span>'Function:\\TabExpansion'</span><span> because it does not exist.</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>Unfortunately that\u2019s a bug in the current released version (12.7.8) of virtualenvwrapper-powershell. It doesn\u2019t actually cause any problems in practice as far as I know. It seems to have been fixed in the project but the fix hasn\u2019t made it into a released version yet. I don\u2019t know why; I\u2019m not involved with the project.</p>\n<p>The other error you might see will say something like this:</p>\n<div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><span>Virtualenvwrapper: Virtual environments directory</span></div></div><div><div><span>'C:\\Users\\tyler/.virtualenvs'</span><span> does not exist. Create it or</span></div></div><div><div><span>set $env:WORKON_HOME to an existing directory.</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>Well, at least you know you\u2019re on the right track! Do exactly what the message says: create the missing directory.</p>\n<div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><span>mkdir </span><span>'~\\.virtualenvs'</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>You might also want to change the location to store your virtual environments. To do that, set the <code>$env:WORKON_HOME</code> variable to wherever you want to store them. I generally stick with the default of <code>~\\.virtualenvs</code> though. Whatever you do, remember this location; it will come in handy.</p>\n<p>Now try to import the module again. Success! Now you have access to a bunch of virtualenv management commands directly in PowerShell. To see all of them, you can type:</p>\n<div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><span>PS C:\\</span><span>&gt;</span><span> </span><span>Get-Command</span><span> </span><span>*</span><span>virtualenv</span><span>*</span></div></div><div><div>\n</div></div><div><div><span>CommandType     Name                                               ModuleName</span></div></div><div><div><span>-----------</span><span>     </span><span>----</span><span>                                               </span><span>----------</span></div></div><div><div><span>Alias           cdvirtualenv </span><span>-&gt;</span><span> CDIntoVirtualEnvironment           virtualenvwrapper</span></div></div><div><div><span>Alias           cpvirtualenv </span><span>-&gt;</span><span> </span><span>Copy-VirtualEnvironment</span><span>            virtualenvwrapper</span></div></div><div><div><span>Alias           lsvirtualenv </span><span>-&gt;</span><span> </span><span>Get-VirtualEnvironment</span><span>             virtualenvwrapper</span></div></div><div><div><span>Alias           mkvirtualenv </span><span>-&gt;</span><span> </span><span>New-VirtualEnvironment</span><span>             virtualenvwrapper</span></div></div><div><div><span>Alias           rmvirtualenv </span><span>-&gt;</span><span> </span><span>Remove-VirtualEnvironment</span><span>          virtualenvwrapper</span></div></div><div><div><span>Alias           setvirtualenvproject </span><span>-&gt;</span><span> </span><span>Set-VirtualEnvProject</span><span>      support</span></div></div><div><div><span>Function</span><span>        </span><span>add2virtualenv</span><span>                                     virtualenvwrapper</span></div></div><div><div><span>Function        CDIntoVirtualEnvironment                           virtualenvwrapper</span></div></div><div><div><span>Function        Copy-VirtualEnvironment                            virtualenvwrapper</span></div></div><div><div><span>Function        Get-VirtualEnvironment                             virtualenvwrapper</span></div></div><div><div><span>Function        New-VirtualEnvironment                             virtualenvwrapper</span></div></div><div><div><span>Function        New-VirtualEnvProject                              support</span></div></div><div><div><span>Function        Remove-VirtualEnvironment                          virtualenvwrapper</span></div></div><div><div><span>Function        Set-VirtualEnvironment                             virtualenvwrapper</span></div></div><div><div><span>Function        Set-VirtualEnvProject                              support</span></div></div><div><div><span>Function        showvirtualenv                                     virtualenvwrapper</span></div></div><div><div><span>Function        VerifyVirtualEnv                                   support</span></div></div><div><div><span>Application     virtualenv.exe</span></div></div><div><div><span>Application     virtualenv-2.7.exe</span></div></div><div><div><span>Application     virtualenv-clone.exe</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>You\u2019ll see that there are a bunch of nice PowerShell style cmdlets, like <code>New-VirtualEnvironment</code>, but there are also aliases set up mapping those cmdlets to commands you might be more familiar with, like <code>mkvirtualenv</code>. Of course you also get regular PowerShell tab completion for these cmdlets and aliases.</p>\n<h2><a href=\"https://tylerbutler.com#managing-virtualenvs\">Managing virtualenvs</a></h2>\n<p>Now that we have virtualenv installed, let\u2019s make a new virtualenv:</p>\n<div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><span>New-VirtualEnvironment</span><span> engineer</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>Replace <code>engineer</code> with whatever you want to call your virtualenv. I usually name it after the project I plan to use that virtualenv for, but whatever you want works.</p>\n<p>After the command completes, you should see a PowerShell prompt that looks like this:</p>\n<div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><span>(engineer)PS C:\\</span><span>&gt;</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>The <code>(engineer)</code> prepended to your prompt reminds you that you\u2019re currently working within that virtualenv. If you type <code>workon</code> now you should see the available virtualenvs, and if you type <code>workon name_of_another_virtualenv</code> you\u2019ll flip to that environment.</p>\n<div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><span>PS C:\\</span><span>&gt;</span><span> workon</span></div></div><div><div>\n</div></div><div><div><span>PathInfo         Name          PathToScripts                 PathToSitePackages</span></div></div><div><div><span>--------</span><span>         </span><span>----</span><span>          </span><span>-------------</span><span>                 </span><span>------------------</span></div></div><div><div><span>engineer         engineer      C:\\Users\\tyler\\.virtuale..</span><span>.</span><span>   C:\\Users\\tyler\\.virtuale...</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<h2><a href=\"https://tylerbutler.com#install-packages-with-pip\">Install Packages with pip</a></h2>\n<p>Now that your virtual environments are configured, you can install packages into them using pip. Open a PowerShell prompt, type <code>workon name_of_virtualenv</code> and then type <code>pip install package_name</code>. There are also a couple of additional pip commands that might be useful to know. If you have a project with lots of package requirements, it might have come with (or you might have written) a <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.pip-installer.org%2Fen%2Flatest%2Frequirements.html\">requirements file</a> (often called <code>requirements.txt</code>). To have pip load all of the packages in that file, type:</p>\n<div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><span>PS C:\\</span><span>&gt;</span><span> pip install </span><span>-</span><span>r path_to_requirements_file</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>Also, you might have downloaded a package\u2019s source manually that has a <code>setup.py</code> file in it. You can have pip install that for you by typing:</p>\n<div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><span>PS C:\\</span><span>&gt;</span><span> pip install </span><span>-</span><span>e path_to_source</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>The <code>-e</code> option can also check out source directly from a Mercurial, Git, Subversion, or Bazaar repository and install a package from there.</p>\n<h2><a href=\"https://tylerbutler.com#automatically-importing-the-virtualenvwrapper-powershell-module\">Automatically Importing the virtualenvwrapper PowerShell Module</a></h2>\n<p>You might notice at some point \u2014 probably once you open a new PowerShell prompt \u2014 that you can no longer use the <code>workon</code> and <code>New-VirtualEnvironment</code> commands. Well, silly, you forgot to import the <code>virtualenvwrapper</code> module! Now, you could just import it and move on with your life, but that\u2019s going to get annoying really quickly, so you can configure your PowerShell profile so that the module is loaded every time you open up a PowerShell window. First, though, you\u2019re going to need to find your profile. To make matters a bit more confusing, there are actually several profiles that PowerShell uses. But only one or two of them are really relevant to us. To see all the profiles available to you, type:</p>\n<div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><span>PS C:\\</span><span>&gt;</span><span> $profile </span><span>|</span><span> </span><span>Format-List</span><span> </span><span>*</span><span> </span><span>-</span><span>Force</span></div></div><div><div>\n</div></div><div><div><span>AllUsersAllHosts       : C:\\Windows\\System32\\WindowsPowerShell\\v1.</span><span>0</span><span>\\profile.ps1</span></div></div><div><div><span>AllUsersCurrentHost    : C:\\Windows\\System32\\WindowsPowerShell\\v1.</span><span>0</span><span>\\Microsoft.PowerShell_profile.ps1</span></div></div><div><div><span>CurrentUserAllHosts    : C:\\Users\\tyler\\Documents\\WindowsPowerShell\\profile.ps1</span></div></div><div><div><span>CurrentUserCurrentHost : C:\\Users\\tyler\\Documents\\WindowsPowerShell\\Microsoft.PowerShell_profile.ps1</span></div></div><div><div><span>Length                 : </span><span>77</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>Looks like there are four available profile scripts, and based on their names, they all have different scopes. In our case, we probably want the <code>CurrentUserAllHosts</code> profile, since that will execute for us in every PowerShell instance. If you navigate to the location listed, there might not be a file there to edit. In that case, the following command will create a file there in the right format:</p>\n<div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><span>New-Item</span><span> </span><span>-</span><span>Path $Profile.CurrentUserAllHosts </span><span>-</span><span>Type file </span><span>-</span><span>Force</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>Or you could just create a file in your favorite text editor and save it in that location (with the correct name, of course).</p>\n<p>In that file, put the command you used to import the <code>virtualenvwrapper</code> modules earlier</p>\n<div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><span>Import-Module</span><span> virtualenvwrapper</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>It\u2019s worth noting that this file is just a regular PowerShell script, so you can put other stuff in it too, such as aliases you like to set up, etc. Anyway, once that\u2019s done, save the file and open a new PowerShell window. Now the <code>workon</code> command and other virtualenv cmdlets should start functioning.</p>\n<h2><a href=\"https://tylerbutler.com#configuring-your-ide\">Configuring Your IDE</a></h2>\n<p>There is one final step to getting everything really <em>ready</em> for developing Python projects \u2014 setting up your IDE to use the appropriate <code>virtualenv</code> for your project. There are several different IDEs out there or you could just rock <a href=\"https://notepad-plus-plus.org/\">Notepad++</a>. I personally like <a href=\"https://www.jetbrains.com/pycharm/\">PyCharm</a> a lot though; <a href=\"https://tylerbutler.com/2013/10/pycharm-3-0/\">I use it</a> almost exclusively for Python development.</p>\n<p>If you <em>are</em> using PyCharm, version 2.5+ has built-in support for virtualenv. You can <a href=\"https://www.jetbrains.com/pycharm/webhelp/creating-virtual-environment.html\">create virtual environments</a> directly in PyCharm or you can import ones you created earlier using virtualenvwrapper. Personally I prefer the latter since virtualenvwrapper doesn\u2019t pick up the environments created by PyCharm (so they don\u2019t show up when you use the <code>workon</code> command, among another things).</p>\n<p>Anyway, if you want to use an existing virtualenv, you\u2019ll need to tell PyCharm about it. The <a href=\"https://www.jetbrains.com/pycharm/webhelp/configuring-local-python-interpreters.html\">PyCharm support site has details</a>, but the key thing to know is that you need to point it to the <code>python.exe</code> inside your <code>virtualenv</code>\u2019s <code>Scripts</code> directory. In my case, the full path is <code>C:\\Users\\tyler\\.virtualenvs\\engineer\\Scripts\\python.exe</code>.</p>\n<p>After all of that\u2019s done you should be good to go! You can pop open a PowerShell window and create/switch to virtualenvs as needed and install packages using pip. At this point you should have most of what you need to follow the installation instructions for most Python packages (except those that require C extension compilation, but that\u2019s a topic for another post).</p><img src=\"http://feed.tylerbutler.com/link/18607/17245877.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2012-05-29T00:26:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245877.gif"
        },
        {
            "id": "https://tylerbutler.com/xkcd-2/",
            "url": "http://feed.tylerbutler.com/link/18607/17245878/xkcd-2",
            "title": "xkcd 2",
            "content_html": "<p>I\u2019ve just put up a small side project I whipped together over the last day or so called <a href=\"https://xkcd2.com/\">xkcd 2</a>. It might not make much sense why I built this thing, so bear with me while I try to explain.</p>\n<h2><a href=\"https://tylerbutler.com#why\">Why</a></h2>\n<p>I\u2019ve been reading <a href=\"https://xkcd.com/\">xkcd</a> for years, but it wasn\u2019t until fairly recently that I discovered most of the comics actually have a caption.<sup><a href=\"https://tylerbutler.com#fn:xkcd1\">1</a></sup> It\u2019s tucked away in the <code>title</code> attribute on the <code>img</code> tag, and in most browsers you really only see it if you hover your mouse over the image for a few seconds.</p>\n<p>Discovering this was a total accident. I read most xkcd comics via the RSS feed in <a href=\"http://reederapp.com/\">Reeder</a>. If you zoom-pinch on an image in Reeder, it opens up a view like this:</p>\n<div>\n    <a href=\"https://www.flickr.com/photos/76037594@N06/7206331966/\">\n        <img src=\"https://farm8.staticflickr.com/7241/7206331966_c6419e544e.jpg\" width=\"500\" height=\"375\" alt=\"An xkcd.com comic in Reeder\" />\n    </a>\n    <p>An xkcd.com comic in Reeder</p>\n</div>\n<p>That panel at the bottom displays the <code>title</code> attribute, but it only shows up if you tap once on the image. Anyway, after coming across this in Reeder, I started looking at all the captions every time a new comic would come out. It turns out that in many cases the caption is funnier than the comic itself. Case in point: <a href=\"https://xkcd2.com/1049/\">comic 1049</a>, the one featured in the picture above, is my most recent favorite. The caption perfectly mirrors my own experience with Ayn Rand, and in my opinion makes the comic that much more interesting as a whole.</p>\n\n<p>Anyway, I find it frustrating that the comic captions are not a more visible part of the xkcd site itself, so I decided to put together a separate site that loads the comics from xkcd and simply displays them in a slightly different way \u2014 and includes the comic captions directly. The same comic shown above looks like this on xkcd2.com:</p>\n<div>\n    <a href=\"https://www.flickr.com/photos/76037594@N06/7213096382/\">\n        <img src=\"https://farm9.staticflickr.com/8151/7213096382_db69df1d70.jpg\" width=\"500\" height=\"361\" alt=\"xkcd2\" />\n    </a>\n    <p>An xkcd comic as shown on xkcd2.com</p>\n</div>\n<h2><a href=\"https://tylerbutler.com#how\">How</a></h2>\n<p>Now that you know the <em>why</em> of xkcd2.com, let\u2019s talk about the <em>how</em>.</p>\n<p>xkcd 2 is an exceedingly simple <a href=\"http://flask.pocoo.org/\">Flask</a> app. It\u2019s ~100 lines of Python (not including empty lines of course). A majority of the time was spent messing with the HTML and CSS, not on the Python itself.</p>\n<p>Each time a comic is requested, I use the excellent <a href=\"http://code.google.com/p/httplib2/\">httplib2</a> library to retrieve the corresponding page directly from xkcd.com. httplib2 behaves more like a browser than a typical HTTP library; it handles caching the page content and everything for me, so if the same comic is requested many times httplib2 will return the page content from its local file cache instead of bouncing the request to xkcd.com every time.<sup><a href=\"https://tylerbutler.com#fn:xkcd2\">2</a></sup></p>\n<p>Once I get the response and page content from xkcd.com, I parse the page into a DOM object using <a href=\"https://github.com/html5lib\">html5lib</a>. Then I use some rather inefficient list comprehensions to find the right elements in the DOM and extract the relevant information. There are probably more efficient means of doing this, but the page structure is simple enough that it\u2019s not too bad performance-wise. I did find myself desperately wanting server-side jQuery\u2026<sup><a href=\"https://tylerbutler.com#fn:xkcd3\">3</a></sup></p>\n<p>Once I have all the comic details from the page, I store it all in a pickle file so I can load it from the local disk rather than parsing the HTML on each request. Thus, if httplib2 reports that it used its cached version rather than retrieving a fresh page (via the <code>response.fromcache</code> property), I discard httplib2\u2019s response entirely and simply load the comic metadata from the pickle file.</p>\n<p>Once I have the metadata, I just pass it to the page template and render the page.</p>\n<h2><a href=\"https://tylerbutler.com#but-but\">But\u2026 but\u2026</a></h2>\n<p>I considered a couple of different high-level options before settling on the \u2018request the page, parse the metadata\u2019 approach. First, since the set of comics is finite (1056 as of this writing), I considered writing a simple scraper that would \u2018preload\u2019 all of the comics and just load from that cache. However, in the end this isn\u2019t much different than what I\u2019m doing. I still would have had to retrieve the page, parse out the relevant data, and store it. The current approach does this lazily, which makes a lot more sense since I doubt most people are looking through really old comics (though it <em>is</em> interesting to see how Munroe\u2019s style has changed over the years). I still get the benefits without having this separate \u2018build the cache\u2019 step.</p>\n<p>I also considered using the RSS feed rather than scraping HTML. This was appealing because the RSS will be less likely to change format. If xkcd.com undergoes a rewrite, my current HTML parsing code will probably break.<sup><a href=\"https://tylerbutler.com#fn:xkcd4\">4</a></sup> However, the feed is a snapshot of the most recent comics, not all of them, and I really wanted to support all of them. How broken would it feel if someone sent you a link to a comic on xkcd2.com and it didn\u2019t load because there was a new comic published that morning and the old comic was no longer in the RSS feed? Spoiler: very broken.</p>\n<p>Anyway, hopefully some folks will find this useful and/or interesting. Code is up <a href=\"https://github.com/tylerbutler/xkcd2\">on github</a> and the site is live at <a href=\"https://xkcd2.com/\">xkcd2.com</a>.</p>\n<section><h2><a href=\"https://tylerbutler.com#footnote-label\">Footnotes</a></h2>\n<ol>\n<li>\n<p>Oh, you already knew that? Well good for you. </p>\n</li>\n<li>\n<p>There are no doubt some subtleties in the httplib2 cache behavior that I did not dive into. My hunch is that a request still gets made to xkcd.com \u2014 even just a <code>HEAD</code> request \u2014 because httplib2 needs to somehow determine whether its cache is still valid. I\u2019m not an expert on its behavior. Regardless, using its cache is almost certainly better than naively proxying the request to xkcd.com \u2014 and waiting for/parsing the response \u2014 each time. </p>\n</li>\n<li>\n<p>This is probably actually possible using node.js, but it seemed like overkill for this project. </p>\n</li>\n<li>\n<p>I do use IDs and classes and avoid relying on actual page structure as much as possible, but sometimes it\u2019s unavoidable. HTML scraping is <em>always</em> brittle no matter what precautions you take or how smart you try to be. </p>\n</li>\n</ol>\n</section><img src=\"http://feed.tylerbutler.com/link/18607/17245878.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2012-05-17T18:23:00+00:00",
            "attachments": [],
            "image": "https://farm8.staticflickr.com/7241/7206331966_c6419e544e.jpg"
        },
        {
            "id": "https://tylerbutler.com/convergence/",
            "url": "http://feed.tylerbutler.com/link/18607/17245879/convergence",
            "title": "Convergence",
            "content_html": "<p>Love this quote from <a href=\"https://www.macstories.net/news/apple-q2-2012-results-39-2-billion-revenue-35-1-million-iphones-11-8-million-ipads-sold/\">Tim Cook</a>:</p>\n<blockquote>\n<p>Anything can be forced to converge, but the problem is about trade-offs, and you end up with trade-offs that don\u2019t please anyone. You can converge a toaster and refrigerator, but the end result won\u2019t be pleasing to the user.</p>\n</blockquote><img src=\"http://feed.tylerbutler.com/link/18607/17245879.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2012-04-30T21:56:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245879.gif"
        },
        {
            "id": "https://tylerbutler.com/lukas-mathis/",
            "url": "http://feed.tylerbutler.com/link/18607/17245880/lukas-mathis",
            "title": "Lukas Mathis",
            "content_html": "<p>I just linked to a piece that I got via <a href=\"https://ignorethecode.net\">Lukas Mathis</a>, but I wanted to explicitly encourage you to read his stuff. In my opinion, <a href=\"https://ignorethecode.net\">ignorethecode.net</a> should be required reading for anyone doing user experience design today. Very smart, very insightful, very well-reasoned. Solid work.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245880.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2012-04-23T21:27:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245880.gif"
        },
        {
            "id": "https://tylerbutler.com/the-monochrome-trend/",
            "url": "http://feed.tylerbutler.com/link/18607/17245881/the-monochrome-trend",
            "title": "The Monochrome Trend",
            "content_html": "<p><a href=\"https://www.literatureandlatte.com/blog/?p=271\">Keith Blount on color</a>, or lack thereof, in user interfaces:</p>\n<blockquote>\n<p>I learned something about the way my brain works that I hadn\u2019t hitherto ever had to think about: my brain is an awful lot faster at processing colours than it is at processing shapes.</p>\n</blockquote>\n<p>I\u2019ve felt this way for awhile about modern UI design trend to \u201cdrain the color\u201d from UI, to borrow Blount\u2019s phrase. I really like color and when used tastefully and correctly I find it to be a wonderful usability aid.<sup><a href=\"https://tylerbutler.com#fn:color1\">1</a></sup> It\u2019s nice to hear I\u2019m not the only one that feels this way.</p>\n<p>In Mathis\u2019 link to Blount, he pulls a quote from <a href=\"https://pragprog.com/book/lmuse/designed-for-use\">his own book</a>, which in turn quotes Colin Ware (I\u2019m dangerously close to <a href=\"https://www.inception-explained.com/\">Inception</a>-level quote recursion at this point!):</p>\n<blockquote>\n<p>In [his book] Information Visualization, Colin Ware notes that color is \u201cpreattentively processed,\u201d meaning that we identify color before we give it conscious attention. In other words, when we look at a user interface, we can find and identify user interface elements with a specific color really quickly and easily.</p>\n</blockquote>\n<p>On a related note, I have noticed I also have trouble with UI elements that are text-only with no color or icon hint. For example, the bookmarks bar in Safari, which eschews displaying favicons in favor of text alone, is maddening to me because I naturally look for an icon or color of some kind when looking through the links. There are probably differences in the psychology of this compared to color, but I wonder if there is experimental evidence that supports this notion that icons, color, or shape are easier to recognize quickly than words. <a href=\"https://www.microsoft.com/typography/ctfonts/WordRecognition.aspx\">This paper from Microsoft typography</a> seems to indicate that we do indeed recognize words by their shape, though the prevailing scientific beliefs around the exact mechanics of that recognition have undergone some changes over the years. Interesting stuff.</p>\n<section><h2><a href=\"https://tylerbutler.com#footnote-label\">Footnotes</a></h2>\n<ol>\n<li>\n<p>The fact that my current site design arguably does not use color \u2018tastefully\u2019 or \u2018correctly\u2019 is not lost on me. I realize that the current \u2018unicorn vomit\u2019 color explosion is probably overkill and needs some adjustment. </p>\n</li>\n</ol>\n</section><img src=\"http://feed.tylerbutler.com/link/18607/17245881.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2012-04-23T21:13:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245881.gif"
        },
        {
            "id": "https://tylerbutler.com/mies/",
            "url": "http://feed.tylerbutler.com/link/18607/17245882/mies",
            "title": "Mies",
            "content_html": "<p>I rarely go to the Google homepage, but I wound up there today and was surprised to see a <a href=\"https://www.google.com/doodles/mies-van-der-rohes-126th-birthday\">Doodle</a> very reminiscent of <a href=\"https://en.wikipedia.org/wiki/S.R._Crown_Hall\">Crown Hall</a>. Sure enough, it\u2019s an homage to <a href=\"https://en.wikipedia.org/wiki/Ludwig_Mies_van_der_Rohe\">Ludwig Mies van der Rohe</a> \u2014 or simply <em>Mies</em> as he was always referred to on campus while I was there<sup><a href=\"https://tylerbutler.com#fn:1\">1</a></sup> \u2014 whose birthday was today in 1886. Very cool.</p>\n<section><h2><a href=\"https://tylerbutler.com#footnote-label\">Footnotes</a></h2>\n<ol>\n<li>\n<p>If Wikipedia is to be trusted, referring to him simply as <em>Mies</em> is widespread. I had always assumed this was an IIT-only thing given his importance to the campus and College of Architecture there. </p>\n</li>\n</ol>\n</section><img src=\"http://feed.tylerbutler.com/link/18607/17245882.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2012-03-28T01:05:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245882.gif"
        },
        {
            "id": "https://tylerbutler.com/thoughts-on-the-new-ipad/",
            "url": "http://feed.tylerbutler.com/link/18607/17245883/thoughts-on-the-new-ipad",
            "title": "Thoughts On the New iPad",
            "content_html": "<p>I upgraded my first-gen iPad to a third-gen just over a week ago now and by and large I\u2019m happy with the result. There are a couple of things that I don\u2019t like so far, though, and I think it\u2019s worth pointing them out. If you have a use-case for the iPad that is similar to mine, then this information might be especially helpful.</p>\n<p>With that, here are some things to note about my iPad usage.</p>\n<ul>\n<li>I use it almost exclusively in bed, lying on my back.</li>\n<li>I use it in landscape mode almost exclusively, at least when I\u2019m in bed.</li>\n<li>Given that I use it largely at home, I go with the WiFi-only 16GB models.</li>\n<li>I generally use it to browse the web, read, watch movies, or play games.</li>\n<li>I have a <a href=\"https://twelvesouth.com/products/compass/\">Compass</a> stand that I use if I\u2019m going to be typing on it for longer periods of time. (Obviously not in bed.)</li>\n<li>I do not take photos, be it with an iPad, iPhone, camera, or otherwise. Ever. I am just not into photos.</li>\n</ul>\n<p>Keeping in mind my usage patterns of the iPad first-gen, and the fact that I have explicitly avoided touching the iPad 2 too much because I didn\u2019t want to be too tempted to upgrade (this is a serious problem for me) and thus am comparing almost exclusively against the iPad 1, here\u2019s what I\u2019ve noticed:</p>\n\n<h2><a href=\"https://tylerbutler.com#weight\">Weight</a></h2>\n<p>It\u2019s a bit lighter. I knew this going in, and indeed it was a selling point, though not a major one. Unfortunately this lighter weight is countermanded by some other problems that I\u2019ll cover in more detail below.</p>\n<h2><a href=\"https://tylerbutler.com#smart-cover\">Smart Cover</a></h2>\n<p>So, so clever. I\u2019ve been in love with this since I first saw <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.apple.com%2Fipad%2Fsmart-cover%2F\">the ad</a>, but I frankly should have thought through my usage patterns a a bit more thoroughly when I added it to my shopping cart last week. While the new iPad is perceptibly lighter than the original, having the smart cover clipped on largely negates that weight win. The cover itself is pretty heavy.</p>\n<p>But the bigger problem is that it only clips on one side \u2014 the <em>wrong</em> side, at least for me. This means I have to orient the iPad the opposite way than I usually do, with the Home button on the <em>left</em> instead of the <em>right</em><sup><a href=\"https://tylerbutler.com#fn:1\">1</a></sup>. This is frustrating on two levels. After two years of nearly daily usage, I\u2019m simply accustomed to the home button being on the right. I\u2019m right handed; using the left hand to putz around with the home button just <em>feels</em> wrong.</p>\n<p>But really, the bigger problem I think is one of weight distribution. It took me some time to reach this conclusion. Something felt off about the feel of the device in my hands while using it in bed, but I couldn\u2019t put my finger on it at first. I took off the smart cover, but continued to use it oriented the \u2018new\u2019 way, with the Home button on the left, in an attempt to force myself to adjust (and gauge just how badly it would confuse my muscle memory \u2014 spoiler: a <em>lot</em>). But my left hand was getting tired. This confused me since the device is clearly lighter than the first generation but still seemed to be causing more fatigue than the first generation did.</p>\n<p>My conclusion thus far is that the weight distribution, at least in landscape orientation, is not balanced. I wouldn\u2019t expect it to be, frankly, because fitting everything into the chassis and still having it be perfectly balanced would be nearly impossible. But I do think this causes some fatigue for me because I am so used to the other weight distribution. I am not 100% certain this is the cause of the fatigue; I\u2019m obviously going to keep using it so we\u2019ll see if it was just a fluke, but I have decided to just forgo the smart cover for now. I\u2019ll use it when I travel or something.</p>\n<p>One other note: with the smart cover on, the iPad fits snugly into the <a href=\"https://sfbags.com/products/ipad-cases/suedejacket-ipad.php\">Waterfield Suede Jacket</a> I used (and <em>love</em>) with my iPad 1. Yay! It\u2019s a little more difficult to get out of the case, but it\u2019s not a terribly big problem.</p>\n<h2><a href=\"https://tylerbutler.com#shape\">Shape</a></h2>\n<p>I really liked the shape if the first-gen iPad. A lot. So I was, and am, a little disappointed with the tapered design in the second and third-gen. But aesthetics are in some ways preference-based, and I don\u2019t deny that the new design is very very nice, so I\u2019m fine with it. But there are some actual problems that the design causes for me.</p>\n<p>First, the tapered edge kind of digs into my hands. The flat edge of the first gen is actually preferable to me in this case, because the edge on the original iPad is actually pretty substantial and despite its greater weight, it distributes that weight over a slightly larger surface area on my hands so it just feels a bit nicer.</p>\n<p>The second problem is with the volume/power buttons and the cable jack. Because of the tapered design, these things don\u2019t sit flush with the edge. With the value and power buttons that just means they feel a little weird to me since they\u2019re oriented ever-so-slightly differently than they used to be. No big deal \u2014 just an adjustment.</p>\n<p>But with the cable jack I always feel like it\u2019s either in at the wrong angle or not completely in at all, because it doesn\u2019t sit completely flush. Again, this is probably something that I\u2019ll just get over when I\u2019ve used it for more than few days.</p>\n<h2><a href=\"https://tylerbutler.com#display\">Display</a></h2>\n<p><strong>Nothing. Else. Matters.</strong> It\u2019s beautiful, gorgeous, stunning \u2014 whatever word you can think of probably isn\u2019t going to really do it justice. If you have or have seen an iPhone 4 or 4S, then you know what it looks like. And yes, it\u2019s that good. In the interest of full disclosure, I <em>am</em> a display nut \u2014 it is the single-most important thing about an electronic device to me. But Jeff Atwood <a href=\"https://blog.codinghorror.com/welcome-to-the-post-pc-era/\">makes a really good point</a> about the importance of the display, especially for something like an iPad:</p>\n<blockquote>\n<p>iPad 3 reviews that complain \u201call they did was improve the display\u201d are clueless bordering on stupidity. Tablets are pretty much <em>by definition all display</em>; nothing is more fundamental to the tablet experience than the quality of the display.</p>\n</blockquote>\n<p>There just isn\u2019t much to say about this \u2014 it\u2019s exactly what I expected, it\u2019s well worth the upgrade, and I now wish for no other display types anywhere. If there is a 27-inch retina cinema display coming, you\u2019d better believe I\u2019ll get it (along with the two new video cards it\u2019d probably take to drive the thing).</p>\n<h2><a href=\"https://tylerbutler.com#speed-and-memory\">Speed and Memory</a></h2>\n<p>Snappy as expected. The memory bump solves a very real annoyance I have with mobile Safari and having to reload tabs. Though the increased speed means that reloading tabs isn\u2019t as much of a slowdown as it was on the first-gen anyway. I realize the speed is not much of a boost for someone who\u2019s accustomed to an iPad 2, but for me, it\u2019s very noticeable.</p>\n<p>Overall, I\u2019m very pleased, despite the minor issues above. With any device, <em>real</em> usage is what defines whether or not it works for you, and time will tell if the minor problems turn into major problems in the long term or not. I\u2019m not too worried about that, but we\u2019ll see.</p>\n<section><h2><a href=\"https://tylerbutler.com#footnote-label\">Footnotes</a></h2>\n<ol>\n<li>\n<p>I am aware that I could simply turn the iPad around so that the Smart Cover hinge was on the bottom and everything would be oriented the way I am accustomed to. However, the Smart Cover just doesn\u2019t seem to play well when held that way \u2014 everything just feels awkward. </p>\n</li>\n</ol>\n</section><img src=\"http://feed.tylerbutler.com/link/18607/17245883.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2012-03-24T23:08:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245883.gif"
        },
        {
            "id": "https://tylerbutler.com/five-people-one-guitar/",
            "url": "http://feed.tylerbutler.com/link/18607/17245884/five-people-one-guitar",
            "title": "Five People, One Guitar",
            "content_html": "<p>Absolutely love <a href=\"https://www.youtube.com/watch?v=d9NF2edxy-M\">this cover</a> of Gotye\u2019s <em>Somebody That I Used to Know</em>:</p>\n<div>\n    \n</div><img src=\"http://feed.tylerbutler.com/link/18607/17245884.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2012-03-23T07:35:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245884.gif"
        },
        {
            "id": "https://tylerbutler.com/new-tylerbutler-com/",
            "url": "http://feed.tylerbutler.com/link/18607/17245885/new-tylerbutler-com",
            "title": "New tylerbutler.com",
            "content_html": "<p>I\u2019ve just pushed out a brand new version of <a href=\"https://tylerbutler.com/\">tylerbutler.com</a>. It\u2019s a completely original redesign from the ground up, and is built using a static blog engine I wrote called <a href=\"https://tylerbutler.com/projects/engineer/\">Engineer</a>. I can now write posts in <a href=\"https://daringfireball.net/projects/markdown/\">Markdown</a>, save them to a folder that gets synced everywhere via <a href=\"https://www.dropbox.com\">Dropbox</a>, and reap the speed and huge scale benefits that come with a static site. I\u2019ll be posting a bit more about Engineer soon, and the source will be up on GitHub eventually as well.</p>\n<p>One of the major goals when rebuilding the site was to encourage me to <em>write</em> again. My last post was in January of <em>last year</em>, and the last substantial post was long before that. That\u2019s just\u2026 embarrassing\u2026</p>\n<p>I haven\u2019t decided whether to migrate any of my old posts over or not. There\u2019s frankly not a lot of it that\u2019s relevant at this point, and the prospect of making a completely fresh start has quite a bit of appeal. We\u2019ll see. Most likely I\u2019ll leave them up at some archive site for my own benefit (I learn a lot from periodically going back to old stuff I wrote and reading it again with fresh eyes). The world will weep to lose them, I\u2019m sure.</p>\n<p>Anyway, here\u2019s hoping I\u2019ll be writing more often soon. I have no excuses!</p><img src=\"http://feed.tylerbutler.com/link/18607/17245885.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2012-03-18T06:30:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245885.gif"
        },
        {
            "id": "https://tylerbutler.com/2010-year-in-review/",
            "url": "http://feed.tylerbutler.com/link/18607/17245886/2010-year-in-review",
            "title": "2010 Year in Review",
            "content_html": "<p>Seems to be the trend these days to \u2018review\u2019 the year, and since I am nothing\nif not a trend-follower (snicker)\u2026 Here goes.</p>\n<p>In 2010 I:</p>\n<ul>\n<li>Got married \u2014 well, we had our official wedding, anyway</li>\n<li>Shipped Office 2010 and joined a new team at work</li>\n<li>Started teaching Web Design at Issaquah High School</li>\n<li>Learned to write apps for Windows Phone 7</li>\n<li>Moved from Mercer Island to Lynnwood</li>\n<li>**Almost **downed the Lich King in Icecrown Citadel \u2014 hopefully I\u2019ll get him during the guild run on Monday!</li>\n<li>I bought an iPad</li>\n<li>Gained weight</li>\n<li>Grew a beard</li>\n<li>Learned firsthand the challenges of living near the in-laws</li>\n</ul>\n<p>In 2011, I predict the following things will happen:</p>\n<ul>\n<li>I\u2019ll stay married</li>\n<li>I\u2019ll keep shipping software as part of Office</li>\n<li>I\u2019ll prepare to teach another bunch of high school students the awesomeness of Web Design</li>\n<li>I\u2019ll share what I\u2019ve learned so far from my experience teaching here on tylerbutler.com</li>\n<li>I\u2019ll re-theme/redesign tylerbutler.com</li>\n<li>I\u2019ll lose weight, then gain much of it back</li>\n<li>I\u2019ll shave my beard and vow never to grow it again</li>\n<li>I\u2019ll ship the first of what I hope will be several apps for Windows Phone 7</li>\n<li>I\u2019ll dig in and start hardcore learning HTML 5</li>\n<li>I\u2019ll speak at some conference somewhere</li>\n<li>I\u2019ll buy some new Apple gadget, but probably not a phone</li>\n<li>I\u2019ll build a new computer so I can play WoW on Ultra</li>\n<li>Elizabeth will start graduate school</li>\n<li>We\u2019ll get either a second car or a second dog</li>\n<li>I won\u2019t take nearly enough vacation</li>\n<li>I won\u2019t play nearly enough video games</li>\n<li>I won\u2019t have nearly enough time to code</li>\n</ul><img src=\"http://feed.tylerbutler.com/link/18607/17245886.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2011-01-02T03:06:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245886.gif"
        },
        {
            "id": "https://tylerbutler.com/brave-new-world/",
            "url": "http://feed.tylerbutler.com/link/18607/17245887/brave-new-world",
            "title": "Brave New World",
            "content_html": "<p>I need to read Brave New World immediately.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245887.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2009-08-15T05:09:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245887.gif"
        },
        {
            "id": "https://tylerbutler.com/assumptions-make-life-simpler/",
            "url": "http://feed.tylerbutler.com/link/18607/17245888/assumptions-make-life-simpler",
            "title": "Assumptions Make Life Simpler",
            "content_html": "<p>Chris Greening, the developer of iPhone Sudoku Grab, <a href=\"https://sudokugrab.blogspot.com/2009/07/how-does-it-all-work.html\">explains how it\nworks</a>. I find this section the most interesting:</p>\n<blockquote>\n<p>One of the things that makes recognizing Sudoku puzzles an easier task than\nmost image processing/recognition problem is that it is a highly constrained\nproblem \u2014 a standard Sudoku puzzle is going to be a square grid and it will\nonly contain the printed numbers 1-9. These two points are very important. The\nfirst point \u2014 it\u2019s a square grid tells us what shape a puzzle is and what we\nshould be looking for in an image. The second point \u2014 it will only contain the\nprinted numbers 1-9 tells us that we aren\u2019t going to need a sophisticated OCR\nsystem. When we look at the problem there\u2019s nothing that jumps out and says\n\u201cnobody has solved this before \u2014 it\u2019s probably really hard\u201d. We can also add\nsome additional assumptions -</p>\n</blockquote>\n<blockquote>\n</blockquote>\n<blockquote>\n<ol>\n<li><strong>In a photograph of a sudoku puzzle, the puzzle is going to be the\nmain/most important object on the page</strong> A user is going to be photographing\nthe puzzle \u2014 they aren\u2019t going to take a picture of a whole newspaper page,\nthey won\u2019t be taking a photograph of a coffee shop and expecting us to find a\nsudoku puzzle that someone is playing four tables away. Also, the user is\ngoing to try and capture the whole puzzle, they won\u2019t miss a corner or chop\noff the top.</li>\n</ol>\n</blockquote>\n<blockquote>\n<ol>\n<li><strong>The puzzle will be orientated reasonably correctly.</strong> No-one\n(hopefully) is going to be taking a picture of an upside down puzzle, and\ntypically they will be trying to align it nicely in the camera viewfinder so\nit is reasonably straight without too much distortion.</li>\n</ol>\n</blockquote>\n<p>A great example of how some simple assumptions made about your problem make it\nfar easier to solve. Of course, the key is making sure the assumptions are\nvalid, or being prepared to handle edge cases where these assumptions prove\nfalse.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245888.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2009-08-14T03:14:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245888.gif"
        },
        {
            "id": "https://tylerbutler.com/software-hatred/",
            "url": "http://feed.tylerbutler.com/link/18607/17245889/software-hatred",
            "title": "Software Hatred",
            "content_html": "<p>Great insight from <a href=\"https://blog.codinghorror.com/nobody-hates-software-more-than-software-developers/\">Jeff Atwood</a>:</p>\n<blockquote>\n<p>One of the (many) unfortunate side effects of choosing a career in software\ndevelopment is that, over time, you learn to hate software. I mean really hate\nit. With a <em>passion</em>. Take the angriest user you\u2019ve ever met, multiply that by\na thousand, and you still haven\u2019t come close to how we programmers feel about\nsoftware. <strong>Nobody hates software more than software developers.</strong></p>\n</blockquote>\n<p>This is so true it hurts. An additional side effect of being a Program Manager\nis that you become extremely critical of everything. Parking meters. Elevator\nbuttons. Anything that isn\u2019t as usable as it should be. Not that I could do\nany better at designing these things, necessarily, but they still anger me,\nand much more than they used to now that design is a part of my daily work\nlife.</p>\n<p>Another great quote from the article:</p>\n<blockquote>\n<p><strong>Hardware companies don\u2019t generally do software well</strong>. Digital camera\ncompanies excel at building digital camera hardware. Software, if it exists at\nall, is an afterthought, a side effect, a checkbox on some marketing weasel\u2019s\nclipboard.</p>\n</blockquote>\n<p>This is true not only for consumer electronics like digital cameras, but also\nfor other hardware that you might not think of as running \u201csoftware.\u201d Think of\nyour microwave. The ice dispenser on your fridge. Your washing machine. Your\ncar\u2019s on-board computer. All of these are running software in some fashion\nmost likely, and they all kind of suck.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245889.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2009-07-24T03:22:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245889.gif"
        },
        {
            "id": "https://tylerbutler.com/dates-in-posts-fixed/",
            "url": "http://feed.tylerbutler.com/link/18607/17245890/dates-in-posts-fixed",
            "title": "Dates in Posts Fixed",
            "content_html": "<p>Just made a minor fix to the site\u2026 I noticed that dates weren\u2019t showing up for\nsome posts. Took me about 5 minutes to figure out that the Wordpress\n<a href=\"https://codex.wordpress.org/Template_Tags/the_date\">the_date()</a> function had changed:</p>\n<blockquote>\n<p>When there are multiple posts on a page published under the SAME DAY,\n<code>the_date()</code> only displays the date for the first post (that is, the first\ninstance of <code>the_date()</code>).</p>\n</blockquote>\n<p>Quick and easy change\u2026</p>\n<p>Before:</p>\n<div><figure><figcaption></figcaption><pre><code><div><div><span>&lt;?</span><span>php</span><span> </span><span>the_date</span><span>() </span><span>?&gt;</span><span>,</span><span> </span><span>&lt;?</span><span>php</span><span> </span><span>the_time</span><span>() </span><span>?&gt;</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>After:</p>\n<div><figure><figcaption></figcaption><pre><code><div><div><span>&lt;?</span><span>php</span><span> </span><span>the_time</span><span>(</span><span>\"F j, Y, g:i a\"</span><span>) </span><span>?&gt;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><img src=\"http://feed.tylerbutler.com/link/18607/17245890.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2009-07-14T11:01:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245890.gif"
        },
        {
            "id": "https://tylerbutler.com/follow-up-on-outlook-htmlcss-post/",
            "url": "http://feed.tylerbutler.com/link/18607/17245891/follow-up-on-outlook-htmlcss-post",
            "title": "Follow Up On Outlook HTML+CSS Post",
            "content_html": "<p><em>Note: I work for Microsoft, in the Office division, but I don\u2019t work in or\nwith the Outlook team. I don\u2019t have any specific knowledge about their\ndecisions or plans, and this post is based only my own experience here at\nMicrosoft.</em></p>\n<p>My <a href=\"https://tylerbutler.com/2009/06/outlook-email-and-css/\">post on Outlook\u2019s HTML+CSS rendering</a> generated a bit of buzz, due in\nno small part, I\u2019m sure, to <a href=\"https://www.zeldman.com/2009/06/24/sour-outlook/#comment-43712\">Zeldman linking to it</a> from his own post. I\u2019m\nfinally getting some time to respond.</p>\n<p>First of all, thanks to everyone for the responses; I am glad that this\nalternative viewpoint at least sparked some discussion. Despite what you may\nthink, there are plenty of people on the \u201cfront lines\u201d at Microsoft that\nreally care a lot about this stuff, and we try very very hard to make sure The\nRight Thing (tm) happens whenever possible.</p>\n<p>I have <a href=\"https://tylerbutler.com/2009/06/outlook-email-and-css/comment-page-1/#comment-137\">responded</a> to the comments directly in the post, but I wanted to\nalso mention that I filed two separate bugs in our internal bug database. The\nfirst covers the fact that we\u2019re apparently not obeying your browser\npreference when you open an email in a browser, though this may have something\nto do with the actual file type that the email message gets stored as\ntemporarily. Non-IE browsers might not register to open that file type.</p>\n<p>The second covers the actual piss-poor rendering Outlook does of the acid test\nemail. Thanks to Dave Greiner from the Email Standards project for providing\nlinks and addressing the questions I had in the original post. Once I had a\ncopy of the acid test email I was able to get the bugs officially filed.</p>\n<p>I will not be posting any further details on the status of these or other\nbugs, either now or after we ship, so please don\u2019t ask. I am sorry, but it\nisn\u2019t standard practice at Microsoft to reveal publicly the status of bugs,\nand I don\u2019t plan on starting a trend in this particular area. It\u2019s also\nfrankly not my place to comment on bugs on which I am not an expert,\nespecially those that are in areas completely separate from the ones I work\non. You\u2019ll have to take my word for it as an honest, standards-loving software\ndeveloper that I filed them.</p>\n<p>Please continue to send feedback in any way you can to Microsoft, and\nspecifically the Outlook team. Here\u2019s hoping for some quality HTML+CSS email\nrendering in the future.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245891.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2009-07-14T08:35:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245891.gif"
        },
        {
            "id": "https://tylerbutler.com/on-intelligent-interfaces/",
            "url": "http://feed.tylerbutler.com/link/18607/17245892/on-intelligent-interfaces",
            "title": "On Intelligent Interfaces",
            "content_html": "<p><a href=\"https://unqualified-reservations.blogspot.com/2009/07/wolfram-alpha-and-hubristic-user.html\">Mencius Moldbug</a> on why Wolfram Alpha shouldn\u2019t have a natural language-based\ninterface:</p>\n<blockquote>\n<p><em>You</em> know that when you type \u201ctwo cups of flour and two eggs\u201d (which now\n<a href=\"https://www82.wolframalpha.com/input/?i=two+cups+of+flour+and+two+eggs\">works</a>) you are looking for a Nutrition Facts label. It is only Stephen\nWolfram\u2019s giant electronic brain which has to run ten million lines of code to\nfigure this out. Inside your\u00a0<em>own</em> brain, it is written on glowing letters\nacross your forehead.</p>\n</blockquote><img src=\"http://feed.tylerbutler.com/link/18607/17245892.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2009-07-10T11:50:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245892.gif"
        },
        {
            "id": "https://tylerbutler.com/love/",
            "url": "http://feed.tylerbutler.com/link/18607/17245893/love",
            "title": "Love",
            "content_html": "<p>Too incredibly brilliant not to share.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245893.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2009-06-27T02:47:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245893.gif"
        },
        {
            "id": "https://tylerbutler.com/teachers-are-important/",
            "url": "http://feed.tylerbutler.com/link/18607/17245894/teachers-are-important",
            "title": "Teachers Are Important",
            "content_html": "<p>Danah Boyd on teacher involvement outside the classroom. I benefited\ntremendously from this.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245894.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2009-06-27T02:02:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245894.gif"
        },
        {
            "id": "https://tylerbutler.com/outlook-email-and-css/",
            "url": "http://feed.tylerbutler.com/link/18607/17245895/outlook-email-and-css",
            "title": "Outlook, Email, and CSS",
            "content_html": "<p><em><strong>Update July 13, 2009:</strong> Thanks to some comments, I\u2019ve got new links and\nminor updates in the post now.</em></p>\n<p><em>Note: I work for Microsoft, in the Office division, but I don\u2019t work in or\nwith the Outlook team. I don\u2019t have any specific knowledge about their\ndecisions or plans, and this post is based only my own experience here at\nMicrosoft.</em></p>\n<p>The web community has been up in arms the last day or so about a <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Ffixoutlook.org\">campaign via\nTwitter</a> pushing for Outlook 2010 to stop using the Word rendering engine\nfor HTML email. I engaged in a short friendly discussion with my buddy\n<a href=\"https://twitter.com/vandrijevik\">Vlad</a> on Twitter about the issue, and that got me thinking about the issue\na bit more deeply. And the more I thought about it, and read everything that\nwas being written, the more I realized that people aren\u2019t actually\ncommunicating effectively, and that pisses me off\u2026</p>\n<p>The fixoutlook.org website says this: \u201cMicrosoft has confirmed they plan on\nusing the <strong>Word rendering engine</strong> to display HTML emails in Outlook 2010.\u201d\n(emphasis added) Based on that, and the rest of the text on the site, it seems\nlike the big beef they have is that Word\u2019s <strong>rendering engine</strong> for HTML is\nnot up to snuff. Fair point \u2014 it isn\u2019t. But they contradict themselves in\n<a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.email-standards.org%2Fblog%2Fentry%2Fmicrosoft-respond-to-our-call-for-standards-support%2F\">their updated response</a> to Microsoft\u2019s response when they say, \u201cWe\u2019re\nasking that the <strong>HTML produced by the Word engine be standards compliant</strong>.\nThis in turn will ensure that the engine will correctly <em>render</em> standards-\nbased emails.\u201d (emphasis added)</p>\n<p>Wait a second. Do they want an editor that produces HTML, or a rendering\nengine that works properly? Doing the work to make sure the editor is\nproducing clean markup <strong>might</strong> produce a rendering engine that renders\nnicely, perhaps it even <strong>should</strong> produce one, but that <strong>doesn\u2019t mean it\nwill</strong>. Those two pieces of work are <strong>not</strong> the same thing.</p>\n<p>Lots of people have been pointing to <a href=\"https://www.zeldman.com/2009/06/24/sour-outlook/\">a post from Zeldman</a> about this.\nZeldman\u2019s a brilliant guy, but he completely misses the point when he\nperpetuates a rumor about why Outlook chose Word\u2019s engine: \u201cRumor has it that\nMicrosoft chose the Word rendering engine because its Outlook division\n\u201ccouldn\u2019t afford\u201d to pay its browser division for IE8. And by \u201ccouldn\u2019t\nafford\u201d I don\u2019t mean Microsoft has no money; I mean someone at this fabulously\nwealthy corporation must have neglected to budget for an internal cost.\u201d</p>\n<p>Ummmm\u2026 no. In my experience, the phrase \u201ccouldn\u2019t afford\u201d at Microsoft R&amp;D has\nnothing to do with monetary cost. It has to do with engineering cost. Features\ndon\u2019t exist just because you want them to exist. (An aside: <a href=\"https://blogs.msdn.com/oldnewthing/\">Raymond Chen</a>\nhas a great quote about this that I can\u2019t find. If you have a link, please let\nme know.) So I imagine that the rationale in the Outlook team went something\nmore like this:</p>\n<p><em>Well, we want Outlook to produce really rich emails, and we want it to have a\nreally familiar look and feel, so people already using our products will feel\nat home. Hmmm, building an editor is extremely hard to get right, plus we,\nbeing part of the Office suite, have several editing tools already. Emails\ntend to be a lot like documents, so Word seems to be a reasonable choice. This\nway we can leverage all the editor features Word already has, plus things\nthey\u2019re building this release, and focus on the Outlook-specific work we have\nto do. We don\u2019t want to invest our engineering time in building an editor when\nwe already have one.</em></p>\n<p>From this standpoint, it\u2019s easy to see why using Word for rendering as well is\nthe next logical step. You could argue that they should use IE (or Gecko, or\nWebkit, as Zeldman does, but again, just because those engines are free\ndoesn\u2019t mean using them is without cost) to render email, and Word to author\nit. That\u2019s a reasonable idea. In fact, the Outlook team seems to agree with\nyou, because if you get an HTML email that looks wrong, you see a link to open\nit in a browser. In fact, even the <a href=\"https://farm4.static.flickr.com/3322/3637814200_a2aa59bc89_o.jpg\">example image</a> at fixoutlook.org has\nthe \u201cinfo bar\u201d at the top that does this.</p>\n<p>You can take issue with the implementation, certainly, because it sucks\nmightily. The fact that I have to open the email in a browser separately\nblows. I shouldn\u2019t have to do that. But don\u2019t kid yourself into thinking that\nintegrating an IE window into the message window is so stupidly simple that\nMicrosoft is maliciously avoiding doing it to somehow screw users. It might be\nstraightforward \u2014 I honestly don\u2019t know. But do you? If you think you do,\nplease go read Steve Yegge\u2019s post \u201c<a href=\"https://steve-yegge.blogspot.com/2009/04/have-you-ever-legalized-marijuana.html\">Have you ever legalized marijuana?</a>\u201d\nand come back.</p>\n<p>What really bugs me about this whole thing is that people immediately jumped\non the fact that Outlook uses Word for rendering, instead of sticking to the\nreal problem that Outlook\u2019s rendering of HTML sucks in some cases. The\nrendering engine they\u2019re using is immaterial, really, because if the team goes\nand fixes the rendering inadequacies, then the issue goes away. They can\nchoose how to fix the issues, should they choose to fix them at all, but at\nthis point, even if all the rendering issues are fixed, many people will still\nbe pissed because Word is used to render the email. The argument has shifted\nfrom being about the support proper email display to being about Word used for\nrendering, so there doesn\u2019t seem to be a path to redemption for Microsoft in\nthe court of public opinion that doesn\u2019t involve ripping out Word completely.</p>\n<p>I completely agree, personally, that web standards serve as a reasonable basis\nfor email format standards even though there is no formal effort to\nstandardize email. But please argue about the right things. Spend your energy\ntrying to see those standards acknowledged rather than perpetuating this silly\nargument about ripping out Word from Outlook. Hopefully this effort will have\nthe desired effect, and these rendering issues will get resolved prior to\nOutlook 2010 RTM. But I can almost completely guarantee that if you want Word\ncompletely ripped from Outlook, you\u2019re not going to get what you want.</p>\n<p><em>By the way, does anyone have a screenshot of what the email used in the\nexample image looks like in Outlook 2007, which also used Word for rendering?\nThat struck me as a strange omission. I\u2019m wondering if the issues displayed in\nthat screenshot are just bugs in the 2010 beta. I doubt it, but would still\nlike to see it.</em></p>\n<p><em><strong>Update:</strong> Turns out you can see this in the <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.email-standards.org%2Fclients%2Fmicrosoft-outlook-2007%2F\">Email Standards project\u2019s\nreview of Outlook 2007</a>. As I suspected, no real differences.</em></p>\n<p><em>Also \u2014 is there any way to get a sample HTML email from the Email Standards\nProject\u2019s <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.email-standards.org%2Facid-test%2F\">email acid test</a>? Seems ridiculous there\u2019s no \u201cemail me this\nsample email\u201d form on the acid test page. I can and will file a bug against\nOutlook if I can get a copy mailed to me.</em></p>\n<p><em>**Update: **You can now mail yourself a copy of the email directly from the\n<a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.email-standards.org%2Facid-test%2F\">acid test page</a>.</em></p>\n<hr />\n<p>This didn\u2019t really fit into the overall flow of the post above, but I still\nthink it\u2019s reasonable info to consider, so I\u2019m including it here anyway. I\u2019m\nabout to throw out a bunch of numbers and statistics that are not backed up by\nany data. They are based only on my own logic and occasionally rational mind.\nI think they\u2019re true and reasonable statements, but I welcome data that\ncontradicts them.</p>\n<p>I think it\u2019s safe to say that a majority, say, 80%, of Outlook users use it\nwith Exchange. Also, a majority of Exchange users use Outlook, and Exchange is\nprimarily used in business settings. Since a large majority of email sent in a\nbusiness setting is sent to other people in your business, then they\u2019re\nprobably also using Exchange, and also probably using Outlook. Based on this\nnot-so-scientific reasoning, I argue that the number of emails received in\nOutlook that didn\u2019t originate in Outlook is relatively small. That means,\npractically speaking, that as long as Outlook can render email that started in\nOutlook, you\u2019re hitting the majority of your users\u2019 needs.</p>\n<p>Now, the idealist in you (and me, for the record) is screaming bloody murder,\nbecause you want to see the \u201cright thing\u201d happen for all cases, not just the\nmajority case. But unfortunately, software is more about practicality than\nidealism, and at some point some smart, but possibly naive people in Outlook\nmade a tradeoff. I\u2019d say with 99% certainty that at some point a developer or\ntwo in Outlook estimated the cost of different approaches and implementations,\nand this one wound up cheaper. They made a cut. They made a tradeoff. And we\ndisagree with the tradeoff.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245895.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2009-06-27T00:11:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245895.gif"
        },
        {
            "id": "https://tylerbutler.com/effing-hail/",
            "url": "http://feed.tylerbutler.com/link/18607/17245896/effing-hail",
            "title": "Effing Hail",
            "content_html": "<p>I love this game, and it\u2019s great with a mouse. But it would make an even more\namazing iPhone game\u2026</p>\n<p><a href=\"https://jiggmin.com/play_game.php?title=Effing+Hail\">https://jiggmin.com/play_game.php?title=Effing+Hail</a></p><img src=\"http://feed.tylerbutler.com/link/18607/17245896.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2009-06-19T03:27:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245896.gif"
        },
        {
            "id": "https://tylerbutler.com/powershell-for-fun-and-profit/",
            "url": "http://feed.tylerbutler.com/link/18607/17245897/powershell-for-fun-and-profit",
            "title": "PowerShell for Fun and Profit",
            "content_html": "<p>Stefan Go\u00dfner has a great post on his blog covering <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fblogs.technet.com%2Fstefan_gossner%2Fpages%2Fcontent-deployment-best-practices.aspx\">some common problems</a>\nthat people have with Content Deployment in SharePoint. Problem 13 has to do\nwith the default timeout window for Content Deployment jobs. Stefan provides\nsome sample code that you can use to adjust the timeout value, since it\u2019s not\nexposed through the UI, but I find writing and running sample code on a server\na bit of a pain. Instead of writing code, you can actually use PowerShell to\ndo this directly from the PS prompt.</p>\n<p>The key to doing this is loading the SharePoint DLLs into your PowerShell\nenvironment. You can do this using the System.Reflection.Assembly class. Take\na look at this sample script:</p>\n<div><figure><figcaption></figcaption><pre><code><div><div><span>#!powershell</span></div></div><div><div><span>param( $newTimeout = 600 )</span></div></div><div><div>\n</div></div><div><div><span>[System.Reflection.Assembly]::Load(\"Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c\")</span></div></div><div><div>\n</div></div><div><div><span>$cdconfig = [Microsoft.SharePoint.Publishing.Administration.ContentDeploymentConfiguration]::GetInstance()</span></div></div><div><div>\n</div></div><div><div><span>$cdconfig.RemoteTimeout = $newTimeout</span></div></div><div><div><span>$cdconfig.Update()</span></div></div><div><div>\n</div></div><div><div><span>\"Updated RemoteTimeout to $newTimeout seconds.\"</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>In line 3, I load up the Microsoft.SharePoint.Publishing DLL, then I grab the\n<code>ContentDeploymentConfiguration</code> (line 5) using the <code>GetInstance()</code> static method.\nI update the <code>RemoteTimeout</code> property, then call <code>Update()</code>, and we\u2019re done. No\ncode to write and compile.</p>\n<p>This example uses the param keyword, which means you can save it as\n<code>ChangeRemoteTimeout.ps1</code>, then run it like this:</p>\n<div><figure><figcaption></figcaption><pre><code><div><div><span>PS C:\\&gt; ChangeRemoteTimeout \u2013newTimeout 1200</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>This is completely optional, of course, but if you find yourself doing this a\nlot, it might be worth saving it as a reusable script.</p>\n<p>You might also want to make changes to some of the options that are exposed\nthrough the UI already. Here\u2019s an example:</p>\n<div><figure><figcaption></figcaption><pre><code><div><div><span>PS C:\\&gt; [System.Reflection.Assembly]::Load(\"Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c\")</span></div></div><div><div><span>PS C:\\&gt; $cdconfig = [Microsoft.SharePoint.Publishing.Administration.ContentDeploymentConfiguration]::GetInstance()</span></div></div><div><div><span>PS C:\\&gt; $cdconfig.AcceptIncomingJobs = $true</span></div></div><div><div><span>PS C:\\&gt; $cdconfig.RequiresSecureConnection = $false</span></div></div><div><div><span>PS C:\\&gt; $cdconfig.Update()</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>In this case, I\u2019m configuring the farm to accept incoming deployment jobs and\nnot require secure connections. You can also make additional changes to other\nproperties, such as FileMaxSize and RemotePollingInterval using this method.\nStefan covers these properties in his <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fblogs.technet.com%2Fstefan_gossner%2Farchive%2F2008%2F05%2F28%2Fpimp-my-content-deployment-job.aspx\">Pimp My Content Deployment Job</a>\npost.</p>\n<p>One other note\u2026 Using .NET DLLs in PowerShell is generally supported across\nthe board. It\u2019s not limited to the SharePoint DLLs. There\u2019s some pretty\nexciting stuff you can do here once you start playing around.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245897.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2009-06-16T02:20:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245897.gif"
        },
        {
            "id": "https://tylerbutler.com/who-watches-the-watchman/",
            "url": "http://feed.tylerbutler.com/link/18607/17245898/who-watches-the-watchman",
            "title": "Who Watches the Watchman?",
            "content_html": "<p>Fascinating piece of technology that I\u2019d never heard of: the watchclock. For\nfun, read the first part of the article, which describes the scenario and\nuse-case, then try to design a solution before you read further.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245898.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2009-05-22T01:24:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245898.gif"
        },
        {
            "id": "https://tylerbutler.com/science-is-fun/",
            "url": "http://feed.tylerbutler.com/link/18607/17245899/science-is-fun",
            "title": "Science is Fun!",
            "content_html": "<p>Great xkcd today about what gets kids interested in science.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245899.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2009-05-18T20:50:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245899.gif"
        },
        {
            "id": "https://tylerbutler.com/wikipedia-walks/",
            "url": "http://feed.tylerbutler.com/link/18607/17245900/wikipedia-walks",
            "title": "Wikipedia Walks",
            "content_html": "<p>A few years ago I realized that when I would start reading an interesting\narticle on Wikipedia, I would often end up reading 6-8 additional articles\nthat were linked from the original article, then branch out from there, etc.\netc. I\u2019d end up in a completely different subject than the one I\u2019d started in,\nand I learned a lot, plus it was just a ton of fun.</p>\n<p>I started calling these <em>Wikipedia Walks</em>. The concept is simple - start at\nan article you find interesting, then just continue on to any articles linked\nfrom the original. Finish when you get bored. To make it more interesting, you\nshould record both the starting article and the ending article, so you can see\njust how far off the beaten path you\u2019ve gotten.</p>\n<p>To start, I\u2019d suggest the article on <a href=\"https://en.wikipedia.org/wiki/Game_theory\">Game Theory</a>.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245900.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2009-05-18T20:35:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245900.gif"
        },
        {
            "id": "https://tylerbutler.com/computer-security-x-ray-specs/",
            "url": "http://feed.tylerbutler.com/link/18607/17245901/computer-security-x-ray-specs",
            "title": "Computer Security X-Ray Specs",
            "content_html": "<p>IT security consultant Rich Mogull gives some tips for seeing through the BS\nin security press releases. It\u2019s aimed at the Mac community, but it has some\ninsightful info that applies across the board. In particular, I like his even-\nhanded evaluation of the relative security of both Windows and OS X:</p>\n<blockquote>\n<p>For many years Mac OS X did have an inherent security advantage over\nWindows, but to those who understand the technologies within the operating\nsystems, those days are long past.</p>\n</blockquote>\n<blockquote>\n</blockquote>\n<blockquote>\n<p>The latest version of Windows (Vista, not that most people use it) is\nprovably more secure in the lab than the latest version of Mac OS X 10.5\nLeopard. Leopard lacks proper implementation of the new anti-exploitation\ntechnologies included in Vista, and, based on the number of Apple security\npatches, experiences about as many vulnerabilities.</p>\n</blockquote>\n<blockquote>\n</blockquote>\n<blockquote>\n<p>When I see articles that defend Mac OS X based on the lack of Mac-specific\nmalicious software, and not on current technical capabilities, cybercrime\ndynamics, or attack methods, I tend to be dubious.</p>\n</blockquote><img src=\"http://feed.tylerbutler.com/link/18607/17245901.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2009-05-18T07:17:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245901.gif"
        },
        {
            "id": "https://tylerbutler.com/respect-religion/",
            "url": "http://feed.tylerbutler.com/link/18607/17245902/respect-religion",
            "title": "Respect Religion",
            "content_html": "<p>Marco Arment on Judaism:</p>\n<blockquote>\n<p>There\u2019s no sales pitch. No recruiting team. Nobody spamming me in the\nsubway, coming to my door, or yelling at me on the street. If I want to learn\nanything about Judaism, I can just ask the many Jewish people I know.</p>\n<p>\u2026</p>\n<p>They\u2019re comfortable enough in their beliefs that they don\u2019t need to nag or\nargue with people who disagree or don\u2019t care.</p>\n</blockquote><img src=\"http://feed.tylerbutler.com/link/18607/17245902.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2009-05-16T22:37:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245902.gif"
        },
        {
            "id": "https://tylerbutler.com/office-2010-the-movie/",
            "url": "http://feed.tylerbutler.com/link/18607/17245903/office-2010-the-movie",
            "title": "Office 2010: The Movie",
            "content_html": "<p>A bit cheesy, but glad to see some news about the next version of Office\nfinally coming out. I wish there were some screenshots or videos in the little\nmovie clip, but it\u2019s early \u2014 I\u2019m sure we\u2019ll be releasing that sort of stuff in\nthe future. It\u2019ll be a busy next few months for those of us on the product\ngroup, but it\u2019s exciting to finally start telling people about all the cool\nstuff we\u2019ve built.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245903.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2009-05-16T08:47:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245903.gif"
        },
        {
            "id": "https://tylerbutler.com/mark-pilgrim-on-web-fonts/",
            "url": "http://feed.tylerbutler.com/link/18607/17245904/mark-pilgrim-on-web-fonts",
            "title": "Mark Pilgrim on Web Fonts",
            "content_html": "<p>I love Mark Pilgrim.</p>\n<blockquote>\n<p>Dynamic web fonts are coming. Actually they\u2019re already here, but most of Our\nPeople haven\u2019t noticed yet. But they will, and that\u2019s going to be a huge boon\nto somebody. I see you\u2019ve decided that it won\u2019t be you. Well, have fun\nshuffling your little bits of metal around. The rest of us will be over here,\nusing the only fonts we\u2019re allowed to use: Everything But Yours.</p>\n</blockquote><img src=\"http://feed.tylerbutler.com/link/18607/17245904.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2009-05-16T04:40:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245904.gif"
        },
        {
            "id": "https://tylerbutler.com/twitter-replies-changes/",
            "url": "http://feed.tylerbutler.com/link/18607/17245905/twitter-replies-changes",
            "title": "Twitter @replies Changes",
            "content_html": "<p>There\u2019s been some hoopla on Twitter today after a <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fblog.twitter.com%2F2009%2F05%2Fsmall-settings-update.html\">poorly handled\nannouncement</a> that the option to control whether replies from people you\nfollow to people you don\u2019t follow show up in your feed. This was an option in\nthe Notices section of the Twitter settings that was off by default. The\noriginal post from <a href=\"https://twitter.com/Biz\">@biz</a> made it sound like they were trying to reduce\nconfusion and that it was no big deal. That\u2019s a bit naive \u2014 they should have\nseen the backlash coming a mile away\u2026 Dave Winer has <a href=\"http://www.scripting.com/stories/2009/05/13/lessonsFromTheChangesInTwi.html\">a good summary</a> of\nproblems with how they messaged things.</p>\n<p>@biz later posted that they had heard the feedback, claiming it was a\nscalability problem with the implementation. I initially didn\u2019t buy that\nargument, but the <a href=\"http://www.readwriteweb.com/archives/is_this_why_twitter_changed_its_replies_policy.php\">description over at ReadWriteWeb</a> clarifies things\nsomewhat. <a href=\"http://www.scripting.com/stories/2009/05/13/lessonsFromTheChangesInTwi.html#comment-9291130\">This comment</a> over at Winer\u2019s post clarifies it further. I think\nI understand now, given their architecture, why this would be a beneficial\nchange for them to make.</p>\n<p>But that\u2019s not what I\u2019m ultimately writing about. Much of the complaining from\npeople opposed to the change has been that it makes it harder to meet new\npeople on Twitter. If you see a reply to someone else from a person you follow\nthen you might also be interested in following them. OK, fine, I buy that, but\nfor me, I simply want to see <strong>everything</strong> people I follow say, regardless of\nwho they say it to. With clients like <a href=\"http://www.atebits.com/tweetie-mac/\">Tweetie</a> and <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fphobos.apple.com%2FWebObjects%2FMZStore.woa%2Fwa%2FviewSoftware%3Fid%3D284540316%26mt%3D8\">Twitterrific 2.0\n(iTunes link)</a> able to browse through conversations effortlessly, I can use\nthe tweets from my timeline as a jumping-off point to see the whole\nconversation which someone I <strong>am</strong> interested in is involved in. My goal is\nnot to find new people to follow (though that does happen occasionally), but\nrather, just to see what interesting things people I follow are saying. I\ndon\u2019t care who they\u2019re talking to. It\u2019s not like everything <a href=\"https://twitter.com/Lincolnator\">@Lincolnator</a>\nsays to <a href=\"https://twitter.com/MajorLB\">@MajorLB</a> is completely uninteresting to me just because I don\u2019t\nfollow her.</p>\n<p><a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fblog.twitter.com%2F2009%2F05%2Fwe-learned-lot.html\">The proposed changes</a> as they stand right now don\u2019t solve my complaint.\nBut it\u2019s early; the smart people at Twitter will figure something out, and\nhopefully, it\u2019ll solve my scenario and world hunger at the same time. One can\nhope and dream.</p>\n<p>You can see the protests/commentary on Twitter itself by\n<a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fsearch.twitter.com%2Fsearch%3Fq%3D%2523Fixreplies\">searching for #fixreplies</a>. It\u2019s still the top trending search term as of\nthis writing.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245905.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2009-05-14T04:14:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245905.gif"
        },
        {
            "id": "https://tylerbutler.com/cmon-iphone-be-serious/",
            "url": "http://feed.tylerbutler.com/link/18607/17245906/cmon-iphone-be-serious",
            "title": "C'mon iPhone, be serious...",
            "content_html": "<p><a href=\"http://junctionpoint.wordpress.com/2009/04/06/ive-joined-a-cult-the-iphone-cult/\">Warren Spector on the iPhone</a>:</p>\n<blockquote>\n<p>It\u2019s like the iPhone is working so hard to be my friend it\u2019s incapable of\nbeing my co-worker. It\u2019s all fun and games when, at times, I want it to be\nserious.</p>\n</blockquote>\n<p>Good points all around. If you want to use your phone for doc editing, or come\nfrom a Palm/Windows Mobile background and are used to rich syncing with the\ndesktop, the iPhone is lacking.</p>\n<p><a href=\"http://en.wikipedia.org/wiki/Warren_spector\">More on who Spector is</a>, for those that don\u2019t know. <a href=\"http://en.wikipedia.org/wiki/Deus_Ex\">Deus Ex</a> remains\none of my favorite games of all time.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245906.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2009-05-09T00:33:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245906.gif"
        },
        {
            "id": "https://tylerbutler.com/sharepoint-permissions-cheat-sheet/",
            "url": "http://feed.tylerbutler.com/link/18607/17245907/sharepoint-permissions-cheat-sheet",
            "title": "SharePoint Permissions \"Cheat Sheet\"",
            "content_html": "<p>Back when we were building SharePoint 2007, a member of our Program Management\nteam left Microsoft, and I inherited the permissions-related features for the\nthen Content Management Server team, which was responsible for all of the web\npublishing features in SharePoint. Essentially, this meant that I has to\nfigure out what the correct set of permission levels were for our features,\nand what lists/libraries should have unique (non-inherited) permissions.</p>\n<p>Now, if you\u2019ve used SharePoint for any length of time, you\u2019ve no doubt been\nfrustrated with permissions management. It\u2019s definitely a sore point.\nUnfortunately, I don\u2019t have any magic bullets or golden hammers. When I\nstarted trying to figure everything out so that I could make educated\ndecisions for our designs, I realized that I needed to write stuff down.\nPeople always asked questions like, \u201cWhat rights do Designers have by\ndefault?\u201d Sure, you can find out by going to the site itself and checking, but\nthe UI isn\u2019t the easiest to navigate, and oftentimes what you really want to\ndo is compare multiple permissions levels. \u201cWhat rights do Designers have that\nContributors don\u2019t?\u201d, for example. To help keep it all straight in my mind\n(and so I could point people to the info rather than answer 100 emails a day\nwith the same question!), the SharePoint Permissions \u201cCheat Sheet\u201d was born.</p>\n<p>It\u2019s nothing fancy, and it\u2019s certainly not anything that no one else could\nhave created. But still, it has proven useful over the past few years. I still\nkeep a copy of it pinned to my office wall. It\u2019s pretty self-explanatory. The\nfirst sheet has a table of the default publishing permission levels and what\nfine-grain permissions each of them has. The second sheet is just the\ndescriptions of each of the fine-grain permissions so I didn\u2019t have to go\nhunting through the UI to find them whenever I was wondering what the\ndifferences were. Finally, the third sheet is a list of \u201csecurable objects\u201d\n(which what I decided to call a list/library that had broken away permissions\ninheritance and was independently secured) and what default groups had what\nrights to those locations by default. This was particularly important since in\ngeneral, you want to avoid breaking permissions inheritance if you can, and we\nwanted to be very deliberate about where we did, and also track them to ensure\nthey made sense over time.</p>\n<p>So how exactly do you use this? Well, it can be a\nhandy reference as-is, but chances are that you have your own permissions\nlevel or have modified the existing ones to suit your needs, so you can modify\nthis sheet to reflect your own custom permissions and keep track of\neverything. It really is helpful to have a centralized reference of all of the\nvarious permissions levels. If you go through and put in your own levels, you\nmight realize that there\u2019s a lot of needless duplication in the custom\npermission level you might have created. When it comes to SharePoint\npermissions, less is better, so this can be a helpful auditing tool as well as\na reference.</p>\n<p><strong>A couple of disclaimers\u2026</strong> This was created based on the RTM\nversion. As far as I know, nothing has been changed in SP1 or SP2 that would\nimpact it, but I haven\u2019t been checking to keep it up to date. If you do notice\nerrors you can let me know and I\u2019ll try to correct it. Also, this obviously\nwon\u2019t take into account any customizations that you may do that would alter\nthe default permission levels. If you use this for any of the purposes listed\nor for additional things, leave a comment! I\u2019d love to hear how it\u2019s working\nfor you and if it\u2019s been helpful.</p>\n<img src=\"http://feed.tylerbutler.com/link/18607/17245907.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2009-05-06T04:28:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245907.gif"
        },
        {
            "id": "https://tylerbutler.com/quick-and-nimble-not-in-the-app-store/",
            "url": "http://feed.tylerbutler.com/link/18607/17245908/quick-and-nimble-not-in-the-app-store",
            "title": "Quick and Nimble? Not In the App Store...",
            "content_html": "<p>A great post by Garrett Murray about what it\u2019s like to build an iPhone app\nthat relies on third-party data and subsequently gets broken by that third-\nparty data.</p>\n<p>App store sellers just cannot react to bugs quickly. The approval process\ncompletely hobbles them.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245908.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2009-04-23T00:32:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245908.gif"
        },
        {
            "id": "https://tylerbutler.com/experimental-firefox-extensions-no-longer-require-login/",
            "url": "http://feed.tylerbutler.com/link/18607/17245909/experimental-firefox-extensions-no-longer-require-login",
            "title": "Experimental Firefox Extensions No Longer Require Login",
            "content_html": "<p>It\u2019s about freakin\u2019 time. I was so sick of having to use <a href=\"http://www.bugmenot.com\">BugMeNot</a> just to\ndownload extensions\u2026</p><img src=\"http://feed.tylerbutler.com/link/18607/17245909.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2009-04-18T14:29:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245909.gif"
        },
        {
            "id": "https://tylerbutler.com/mountain-goats-are-amazing-and-grooveshark-is-pretty-cool-too/",
            "url": "http://feed.tylerbutler.com/link/18607/17245910/mountain-goats-are-amazing-and-grooveshark-is-pretty-cool-too",
            "title": "Mountain Goats Are Amazing (and Grooveshark is pretty cool too...)",
            "content_html": "<p>If you haven\u2019t heard of the <a href=\"http://www.mountain-goats.com\">Mountain Goats</a>, then you are in for a real\ntreat. I\u2019ve been a huge fan since 2005. I actually heard about them from a\ngirl I met during my interview with Microsoft while in Seattle. I picked up a\nfew tracks off of Tallahassee from iTunes, and I\u2019ve been in love ever since.\n<a href=\"http://en.wikipedia.org/wiki/John_Darnielle\">John Darnielle</a> is utterly stunning \u2014 the lyrics consistently blow me\naway. I mean, it\u2019s <em>poetry</em>. The fact that it\u2019s set to music is just icing on\nan already orgasmic cake. If there is one musician who deserves comparison to\nDylan \u2014 it\u2019s Darnielle. Anyway, my buddy <a href=\"https://twitter.com/vandrijevik\">Vlad</a> recently discovered them,\nand so I thought it time to share the amazingness with the world at large.</p>\n<p>Oh, and if you haven\u2019t tried <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.grooveshark.com\">Grooveshark</a> yet, give it a whirl. The music\nselection is surprisingly large, and being able to link friends directly to\nsongs and embed them on the web is <em>killer</em>. The UI is a bit weird and awkward\n\u2014 but I assume it\u2019ll evolve over time.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245910.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2009-04-12T14:28:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245910.gif"
        },
        {
            "id": "https://tylerbutler.com/mobile-redirects/",
            "url": "http://feed.tylerbutler.com/link/18607/17245911/mobile-redirects",
            "title": "Mobile Redirects",
            "content_html": "<p>Listen up, site owners. I like it when I go to visit your site on my iPhone\nand I get redirected to an iPhone version of your site. Really, I do. It\u2019s\nnifty. But if you\u2019re not going to redirect me to the specific article I wanted\nto read, or the specific page I asked for, then don\u2019t freakin\u2019 redirect me. I\ndidn\u2019t go to foobar.com/specific-article.aspx to get\nfoobar.com/iphone/home.aspx. They are not the same thing. If you don\u2019t have\nthe capability to serve the specific page I asked for in a mobile-friendly\nformat, then don\u2019t do anything.</p>\n<p>Stop being idiots.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245911.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2009-04-12T13:57:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245911.gif"
        },
        {
            "id": "https://tylerbutler.com/more-accessibility/",
            "url": "http://feed.tylerbutler.com/link/18607/17245912/more-accessibility",
            "title": "More Accessibility",
            "content_html": "<p>Another great post on accessibility from Mark Pilgrim. Good follow-up to\n<a href=\"https://tylerbutler.com/2009/03/accessibility-insanity/\">my last rant post</a>.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245912.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2009-03-23T08:46:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245912.gif"
        },
        {
            "id": "https://tylerbutler.com/accessibility-insanity/",
            "url": "http://feed.tylerbutler.com/link/18607/17245913/accessibility-insanity",
            "title": "Accessibility Insanity",
            "content_html": "<p>Part of my responsibilities for SharePoint these days involves markup\ncleanliness and accessibility, so over the last couple of years I have\neducated myself on the ins and outs of these issues, and have managed to learn\na lot about browser behavior, the history of markup, etc. I am far from an\nexpert, but I know a heck of a lot more than I did when I started.</p>\n<p>One school of thought I come across quite frequently is that web content whose\nmarkup is not well-formed or is missing required attributes or something just\nfail to render completely, in order to ensure that all content on the web is\ngorgeous, standards-compliant markup. This ridiculously draconian viewpoint\nloses sight of the fact that the ultimate goal of delivering content over the\nweb is just that \u2014 delivering content. It seems bad form for a browser to just\n\u201cgive up\u201d when markup is badly formed, because the end-goal of the person\nbuilding the page \u2014 and the person consuming it \u2014 is to deliver content. Much\nof this debate has been chronicled by the IE team; they have a tough job \u2013\nbring the standards compliance of IE into this century without breaking their\ncustomers/users pages. Hence compatibility mode, legacy rendering, etc. etc.</p>\n<p>In the past, I\u2019ve always heard this argument from the standards-compliance\nstandpoint. For example, if a page claims to be XHTML but isn\u2019t fully\ncompliant, it should fail to render in a browser. No \u201cbest-effort\u201d rendering,\njust fail. This of course ignores the fact that even the W3C <a href=\"http://validator.w3.org/docs/help.html#validandconform\">can\u2019t create a\nparser</a> that can completely validate a page against the spec, but that\u2019s a\nrant for another time\u2026 Assuming the browser can detect that a page is non-\ncompliant, it should just <strong>stop</strong>.</p>\n<p>Anyway, this is a long and winding intro to <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fdiveintomark.org%2Farchives%2F2009%2F03%2F18%2Fif-it-fails-for-some\">a post</a> Mark Pilgrim wrote\ntalking about this viewpoint as it applies to accessibility. I had never heard\nthese arguments before, but apparently they\u2019re out there. A choice quote from\nMark\u2019s rebuttal (emphasis mine):</p>\n<blockquote>\n<p>I think it would be wise for people who truly care about accessibility to\ntake a closer look at the so-called \u201cexperts\u201d who are participating on their\nbehalf, and to understand exactly what these people are proposing. <strong>It\u2019s true\nthat some of their proposals have not been adopted, but it\u2019s not because some\ncartoonishly monocled villain enjoys being mean to them. It\u2019s because the\nproposals are insane.</strong></p>\n</blockquote>\n<p>Agreed.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245913.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2009-03-23T08:32:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245913.gif"
        },
        {
            "id": "https://tylerbutler.com/finding-meaning-in-ui/",
            "url": "http://feed.tylerbutler.com/link/18607/17245914/finding-meaning-in-ui",
            "title": "Finding Meaning in UI",
            "content_html": "<p><a href=\"https://twitter.com/atebits\">Loren Brichter</a>, the guy behind the fantastic <a href=\"http://twitter.com\">Twitter</a> application\n<a href=\"http://www.atebits.com/software/tweetie/\">Tweetie</a>, has a post over on his blog talking about how and why he chose\nto put specific items on the bottom bar of Tweetie\u2019s UI. <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fblog.atebits.com%2F2009%2F02%2Fthere-is-method-to-my-madness%2F\">The post is a quick\nread</a>, so go take a look; I\u2019ll wait.</p>\n<p>Welcome back. One of the things I found interesting about what he said was\nthat he chose the items for the bottom bar based not on what was most common,\nor most popular, or most used, but rather another characteristic that they all\nshare: they\u2019re all personalized features about the user.</p>\n<p>This isn\u2019t really earth-shattering, but I found it interesting because in most\ncases, UI designers try to make sure the most commonly used things in the UI\nare surfaced. The problem with that approach, as Loren points out, is that you\ncan\u2019t always do that. Sure, Copy and Paste are super-common, and should get\nfirst-class treatment, but where do you go from there? At some point, you\u2019re\nsplitting hairs, and if you try to rationalize why one function is surfaced in\na prime location and something else isn\u2019t, how do you explain your choice?\n\u201cWell the data we collected said 51% of people used A and 49% of people used\nB, so we went with A.\u201d Unsatisfying, isn\u2019t it? At least if you take Loren\u2019s\napproach, your answer has a bit more meat to it.</p>\n<p>Anyway, at the very least this should get us all thinking about our\nrationalizations for putting stuff in specific places in our UI. Maybe there\nare alternative methods for making these decisions that we haven\u2019t considered\nyet\u2026</p><img src=\"http://feed.tylerbutler.com/link/18607/17245914.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2009-03-20T04:55:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245914.gif"
        },
        {
            "id": "https://tylerbutler.com/syfy/",
            "url": "http://feed.tylerbutler.com/link/18607/17245915/syfy",
            "title": "Syfy?",
            "content_html": "<p>The rename of the Sci Fi cannel to SyFy Syfy strikes me as completely stupid.\nGargantuan stupidity.\n<a href=\"http://www.underconsideration.com/brandnew/archives/weird_syence.php\">http://www.underconsideration.com/brandnew/archives/weird_syence.php</a></p>\n<p>Update: Turns out it\u2019s Syfy; no capitalization of the \u201cf\u201d. This makes it\n<strong>even</strong> worse. Stunning.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245915.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2009-03-19T05:45:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245915.gif"
        },
        {
            "id": "https://tylerbutler.com/all-grown-up/",
            "url": "http://feed.tylerbutler.com/link/18607/17245916/all-grown-up",
            "title": "All Grown Up",
            "content_html": "<p>Some fan art of Calvin and Hobbes with Calvin a little older. Very\ninteresting. I think it\u2019s time to give my <a href=\"https://tylerbutler.com/link-not-available?url=https%3A%2F%2Fwww.amazon.com%2Fdp%2F0740748475%3Ftag%3Dtylerbutlerco-20%26camp%3D0%26creative%3D0%26linkCode%3Das4%26creativeASIN%3D0740748475%26adid%3D0G5WH77B5B39AK3368E8%26\">Complete Calvin and Hobbes</a>\nanother read-through.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245916.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2009-03-15T15:32:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245916.gif"
        },
        {
            "id": "https://tylerbutler.com/linq-confusion/",
            "url": "http://feed.tylerbutler.com/link/18607/17245917/linq-confusion",
            "title": "LINQ Confusion",
            "content_html": "<p>I find myself using LINQ a lot in my C# code these days. I use collections all\nover the place, and there\u2019s no doubt that LINQ makes sorting and slicing\ncollections a lot simpler code-wise.</p>\n<p>In my most recent weekend project, I need to randomly sort a list of cards,\nwhich are represented by an <strong>Action</strong> class. After some quick searching, I\nfound <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.dailycoding.com%2FPosts%2Frandom_sort_a_list_using_linq.aspx\">some articles</a> that indicated the best way to do this would be to\nsort the list by random GUID. This makes sense, though I certainly wouldn\u2019t\nhave thought of it on my own.</p>\n<p>The examples given all worked, but not with my lists\u2026 With the following code,\nthe compiler spits out several errors:</p>\n<div><figure><figcaption></figcaption><pre><code><div><div><span>List</span><span>&lt;</span><span>Action</span><span>&gt; </span><span>cards</span><span> </span><span>=</span><span> </span><span>new</span><span> </span><span>List</span><span>&lt;</span><span>Action</span><span>&gt;()</span><span>;</span></div></div><div><div><span>cards</span><span>.</span><span>Add</span><span>( </span><span>new</span><span> </span><span>OneCattle</span><span>() )</span><span>;</span></div></div><div><div><span>cards</span><span>.</span><span>Sort</span><span>( </span><span>a</span><span> </span><span>=&gt;</span><span> Guid</span><span>.</span><span>NewGuid</span><span>() )</span><span>.</span><span>ToList</span><span>&lt;</span><span>Action</span><span>&gt;()</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<div><figure><figcaption></figcaption><pre><code><div><div><span>Error    1    Delegate 'System.Comparison&lt;agricola.Action&gt;' does not take '1' arguments</span></div></div><div><div><span>Error    2    Cannot convert lambda expression to type 'System.Collections.Generic.IComparer&lt;agricola.Action&gt;' because it is not a delegate type</span></div></div><div><div><span>Error    3    Cannot implicitly convert type 'System.Guid' to 'int'</span></div></div><div><div><span>Error    4    Cannot convert lambda expression to delegate type 'System.Comparison&lt;agricola.Action&gt;' because some of the return types in the block are not implicitly convertible to the delegate return type</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>However, using a more explicit LINQ query without a lambda expression seems to\nwork fine:</p>\n<div><figure><figcaption></figcaption><pre><code><div><div><span>var</span><span> </span><span>q</span><span> </span><span>=</span><span> </span><span>from</span><span> </span><span>a</span><span> </span><span>in</span><span> cards</span></div></div><div><div><span>        </span><span>orderby</span><span> Guid</span><span>.</span><span>NewGuid</span><span>()</span></div></div><div><div><span>        </span><span>select</span><span> a</span><span>;</span></div></div><div><div><span>List</span><span>&lt;</span><span>Action</span><span>&gt; </span><span>r</span><span> </span><span>=</span><span> q</span><span>.</span><span>ToList</span><span>&lt;</span><span>Action</span><span>&gt;()</span><span>;</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>Anybody know why this is? I haven\u2019t wrapped my head around lambda expressions\nand the theory behind LINQ to understand what the root cause is\u2026</p><img src=\"http://feed.tylerbutler.com/link/18607/17245917.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2009-03-15T14:47:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245917.gif"
        },
        {
            "id": "https://tylerbutler.com/commercials-suck/",
            "url": "http://feed.tylerbutler.com/link/18607/17245918/commercials-suck",
            "title": "Commercials Suck",
            "content_html": "<p>This article, titled \u201c<a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.washingtonpost.com%2Fwp-dyn%2Fcontent%2Farticle%2F2009%2F03%2F05%2FAR2009030504104.html%3Fhpid%3Dtopnews\">Give Us a Commercial Break!</a>\u201d from the Wall Street\nJournal is <strong>way</strong> off the mark in my opinion. The article states that TV\nshows are written with commercials in mind and that watching them without\ncommercials changes them. That in and of itself I can\u2019t argue with. But I do\ntake issue with the implication that this is uniformly bad.</p>\n<p>There are two core arguments in the article:</p>\n<ol>\n<li>TV shows are written with commercials specifically in mind, and removing them completely interrupts the pacing of the show.</li>\n<li>Viewers actually like shows with ads better.</li>\n</ol>\n<p>For argument number one, it\u2019s obvious that writers take commercial breaks into\nconsideration when writing TV shows. However, in their DVD counterparts, the\nbreaks are preserved as scene changes. These can seem rather abrupt, and I\nthink this points to an alternative solution: slightly longer breaks for scene\nchanges that are replacing commercial breaks. If we assume the normal scene\nchange is a second, then imagine that the commercial-break-replacement scene\nchange is three seconds. You can simulate this suggestion by hitting pause for\nthree seconds \u2013 I think you\u2019ll be surprised at the results. I think you\u2019ll\nagree that this is uniformly better than ads.</p>\n<p>For argument number two, I can\u2019t refute the research. But there is a quote\nfrom the article that is completely asinine in my opinion:</p>\n<blockquote>\n<p>From an audience member\u2019s perspective, they are what makes network\ntelevision social. We use the commercial breaks to talk amongst ourselves, to\ntake bets on the J.D./Elliot situation and to decide that no one ever really\ndies on \u201cLost.\u201d</p>\n</blockquote>\n<p>Say what? That we need commercial breaks to be social is ridiculous. In this\nday and age, we have ready access to the Pause button, and it\u2019s a far more\nuseful tool for fostering discussion while watching TV. Elizabeth and I\nhave been watching quite a few documentaries lately, and we pause quite often\nto talk about whether or not we agree with what\u2019s being said. I agree that\nadding discussion and dialog while viewing a show is positive (there\u2019s a\nreason fans get together to watch episodes of their favorite shows), but I\nthink people use the commercial breaks because they\u2019re there, not because they\n<strong>need</strong> them in order to have that conversation successfully.</p>\n<p>I hate ads in all forms (though I can appreciate particularly clever or well-\ndone ones), so I am definitely biased here. But seriously\u2026 there\u2019s a reason\nDVD copies of shows sell so well, and it isn\u2019t because people are dying to own\nseason one of \u201cScrubs\u201d for eternity\u2026</p><img src=\"http://feed.tylerbutler.com/link/18607/17245918.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2009-03-12T05:54:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245918.gif"
        },
        {
            "id": "https://tylerbutler.com/site-move-and-redesign/",
            "url": "http://feed.tylerbutler.com/link/18607/17245919/site-move-and-redesign",
            "title": "Site Move and Redesign",
            "content_html": "<p>The server that is currently hosting the SharePoint version of tylerbutler.com\nis being decommissioned. Unfortunately, I wasn\u2019t given much notice about this\nso I have not been able to secure an alternative SharePoint-ready location at\nMicrosoft to host the site. In the meantime I\u2019ve used this opportunity to move\nthe site over to WordPress, and I\u2019ve refreshed the look and feel. Hopefully\nthis will be temporary, since I intend to rebuild the site on the new version\nof SharePoint once it\u2019s publicly available. But in the meantime, WordPress is\nserving my needs.</p>\n<p>The main www address should be redirecting to blog.tylerbutler.com as soon as\nthe DNS changes propogate. The main RSS feed should be switched over, but I\nhave not yet moved the others. Regardless, though, you shouldn\u2019t notice any\ndifferences since I\u2019m using FeedBurner.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245919.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2009-02-19T10:06:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245919.gif"
        },
        {
            "id": "https://tylerbutler.com/sharepoint-updates/",
            "url": "http://feed.tylerbutler.com/link/18607/17245920/sharepoint-updates",
            "title": "SharePoint Updates",
            "content_html": "<p>We\u2019ve changed the way we\u2019re managing and releasing updates here in the\nSharePoint team. This is all very good news. It makes things more manageable\ninternally for us, which translates into quicker, more effective turnaround on\nissues, but it also means that updates and patches will be much more\npredictable, so you can plan around those dates more effectively. There is\nstill recourse for you if you have an absolutely critical issue that needs to\nbe resolved ASAP.</p>\n<p>More details on this <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fblogs.msdn.com%2Fsharepoint%2Farchive%2F2008%2F09%2F29%2Fannouncing-august-cumulative-update-for-office-sharepoint-server-2007-and-windows-sharepoint-services-3-0.aspx\">SharePoint blog post</a> and <a href=\"https://support.microsoft.com/kb/953878\">KB article 953878</a>.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245920.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2008-10-02T00:10:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245920.gif"
        },
        {
            "id": "https://tylerbutler.com/but-why-0-but-why-but-why/",
            "url": "http://feed.tylerbutler.com/link/18607/17245921/but-why-0-but-why-but-why",
            "title": "But Why? #0: But why, \"But Why?\"",
            "content_html": "<p>I love hearing stories. When I was growing up I used to love when people would\nvisit and my Dad would tell some of his stories. Even though I had heard most\nof them a thousand times, it was awesome to sit back and watch other people\nexperience them for the first time. I also read a lot of stories growing up,\nand I developed a special love for short stories in particular (I especially\nlike O. Henry).</p>\n<p>While I was in college, I discovered a site that I have since lost many hours\nof my life to \u2014 <a href=\"http://www.folklore.org/\">folklore.org</a>. It\u2019s a site put together by <a href=\"http://en.wikipedia.org/wiki/Andy_Hertzfeld\">Andy\nHertzfeld</a> (not to be confused with <a href=\"http://en.wikipedia.org/wiki/Don_Hertzfeldt\">Don Hertzfeldt</a> of <a href=\"http://en.wikipedia.org/wiki/Rejected\">Rejected</a>\nfame), and contains \u201canecdotes about the development of Apple\u2019s original\nMacintosh computer, and the people who created it.\u201d It is incredible \u2014 it\ncombines my love of stories with a topic I find interesting \u2014 the early days\nof personal computing. Best of all, the stories there are written by the\npeople who experienced it, and often contain a healthy dose of humor and\nhumanity. But behind that, there\u2019s some cool technical details about the\nchallenges the engineers faced, and why some of the decisions got made the way\nthey did. I find that part of it utterly spellbinding.</p>\n<p>I\u2019ve been on the lookout for other sites like this for other tech companies,\nlike Atari or even Microsoft. The closest I\u2019ve found for Atari is\n<a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.dadhacker.com%2F\">DadHacker.com</a>, written by a guy who worked for Atari back in the day. His\nblog is interesting in a variety of ways, but I particularly like his Atari\nposts. In fact, his post titled <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.dadhacker.com%2Fblog%2F%3Fp%3D987\">Donkey Kong and Me</a> was what got him into\nmy RSS reader permanently. It\u2019s good \u2014 you should read it.</p>\n<p>I actually work with a developer who was also on the team that developed\n<a href=\"http://en.wikipedia.org/wiki/Clippy\">Clippy</a>, and I\u2019ve heard some interesting stories for him about what that\nwas like. Maybe I\u2019ll try to convince him to write up some of his experiences\u2026\nI am sure there are some more great stories out there\u2026 If you know of some\nsites, please do point me to them.</p>\n<p>Because I find this stuff so interesting, I thought it would be good to start\nchronicling some of the stuff I know about because I\u2019ve been working on\nSharePoint. Thus, I plan to write a series titled \u201cBut Why?\u201d about various\nSharePoint features that I either worked on or have been exposed to, and why\nthey behave the way they do. These posts will be one part SharePoint history,\none part storytelling, and if I do it right, will pull back the curtain a bit\nso you can see just why things wound up the way they did.</p>\n<p>But first, some disclaimers: These posts are my own thoughts and opinions, and\ndo not reflect those of Microsoft or of anyone else who works/worked on\nSharePoint. Also, my memory may be fuzzy and blatantly incorrect about some\nthings, so everything should be viewed through that lens. Finally, you\nshouldn\u2019t expect these posts to be as interesting as anything you read on\nfolklore.org.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245921.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2008-09-10T01:49:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245921.gif"
        },
        {
            "id": "https://tylerbutler.com/and-were-back-with-comments/",
            "url": "http://feed.tylerbutler.com/link/18607/17245922/and-were-back-with-comments",
            "title": "And We're Back! (With Comments!)",
            "content_html": "<p>Wow, it\u2019s been awhile. Almost a year since my last post. It truly is hard to\nbelieve. It\u2019s been a busy year so far, but I\u2019ve finally got some time to start\nposting again. I\u2019ve got some interesting SharePoint posts coming down the\npipe, plus a new site design I\u2019m working on. It\u2019s still in its early stages,\nbut hopefully it\u2019ll shape up pretty soon so I can get a sample up.</p>\n<p>One thing you\u2019ll notice if you\u2019ve been here before is that I\u2019ve managed to\nmove the site into the 21st century by adding comments. I toyed with a few\ndifferent comment management add-ins and ended up going with <a href=\"http://disqus.com/\">Disqus</a>. It\nseems like it\u2019ll suit my needs for now, and it was pretty straightforward to\nget integrated. Just added some script and markup to my master page and post\npage layout in SharePoint Designer. I\u2019m not sure how I feel about the comments\nbeing stored separately from the site content, but it\u2019s what I\u2019ve got for now.\nIt will make migration difficult if page URL\u2019s change, which they almost\ncertainly are when I change the architecture of the site in the next redesign.\nC\u2019est la vie, I\u2019ll cross that bridge when I get to it. Anyway, please go ahead\nand engage with me through the comments if you see something interesting on\nthe site.</p>\n<p>I should also note, for completeness, that SharePoint includes a blog template\nthat supports comments. I, however, <a href=\"https://tylerbutler.com/2006/11/building-tylerbutlercom-on-moss/\">rolled my own site</a> and didn\u2019t use the\nblog template or features. There were lots of reasons for this that I won\u2019t go\ninto right now, but there are certainly some features that SharePoint blogs\nhave that I also want, like comments and MetaWeblog support (which I added\nmyself). For now, I\u2019m stuck with what I\u2019ve got. But like I said, there are\nsome exciting new things coming with my site redesign.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245922.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2008-09-05T01:19:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245922.gif"
        },
        {
            "id": "https://tylerbutler.com/the-wealthy-man-communication/",
            "url": "http://feed.tylerbutler.com/link/18607/17245923/the-wealthy-man-communication",
            "title": "The Wealthy Man (Communication)",
            "content_html": "<p>Once upon a time, there was a very wealthy man. The man had so much money that\nhe bought anything and everything he could buy, and still had more money than\nhe could count. As he grew older and wiser, he realized he was very unhappy.\nSo he gathered all of his friends and confidants and asked them for their\nadvice.</p>\n<p>During the course of the conversation, a friend mentioned that there was a\nUniversity close by filled with struggling students. The man decided he would\ngive money to any student that wanted some.</p>\n<p>The next day, the man walked to the main section of the University campus and\narranged to rent out a small room in the center of the main campus student\nbuilding, where all the students could come to get their money from him. He\nthen sat down on a chair in the small room and waited.</p>\n<p>And waited.</p>\n<p>And waited.</p>\n<p>And waited.</p>\n<p>For months, he would visit the campus every day and wait in the small room for\nstudents to come and claim their money. But no one ever came. Eventually, he\nbecame a fixture on campus. Students would smile and wave at him as they\npassed by the small room; some would say hello and ask how he was. But no one\never asked for money.</p>\n<p>One day, while he sat in the small room, the man was approached by a student\nwho had always been very friendly to the man. She stopped by every day and\nsaid hello and told him about her classes. She was always bright and cheerful.\nOn this day, however, her eyes were puffy and red, and she walked as though\nthe weight of the world was on her shoulders.</p>\n<p>\u201cSir, I just wanted to come by and say goodbye\u2026\u201d</p>\n<p>\u201cOh? Why\u2019s that?\u201d</p>\n<p>\u201cWell, my mom\u2019s been really sick \u2014 and she\u2019s better now, but my family has a\nton of hospital bills and I just can\u2019t afford to stay here at school any\nlonger.\u201d</p>\n<p>\u201cWhy didn\u2019t you say something before? I\u2019ve been sitting here every day for\nmonths just waiting for someone to ask me for money, and no one ever has! Why\ndidn\u2019t you ask me before?\u201d the man asked.</p>\n<p>The girl looked up, her eyes glimmering with hope.</p>\n<p>\u201cWhy didn\u2019t <strong><em>you</em></strong> say something? How was I to know you were giving money\naway unless you said something? I would never have guess that\u2019s why you sit\nhere every day. But\u2026 can I have some money?\u201d</p>\n<p>The man smiled and pulled his checkbook from his pocket. \u201cHow much do you\nneed?\u201d</p>\n<p>The next day, when the man arrived at the University, there was line of needy\nstudents outside the small room. The line reached out the doors of the\nbuilding and wrapped all around campus.</p>\n<p>The man asked every student why they had never come to him before, even though\nthey needed money. \u201cBecause you didn\u2019t tell me that\u2019s why you were here,\u201d they\nsaid.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245923.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2007-10-17T01:44:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245923.gif"
        },
        {
            "id": "https://tylerbutler.com/correlation-causation/",
            "url": "http://feed.tylerbutler.com/link/18607/17245924/correlation-causation",
            "title": "Correlation != Causation",
            "content_html": "<p>Everyone repeat after me\u2026 <strong>Correlation does not <em>imply</em> causation!</strong> Just\nbecause two things can be proven to correlate does not guarantee a cause and\neffect relationship. Here\u2019s a funny example from the <a href=\"http://en.wikipedia.org/wiki/Correlation_does_not_imply_causation\">Wikipedia article</a> on\nthe topic (courtesy <a href=\"http://en.wikipedia.org/wiki/The_Simpsons:\">The Simpsons</a>):</p>\n<blockquote>\n<p><strong>Homer</strong>: Not a bear in sight. The \u201cBear Patrol\u201d is working like a charm!</p>\n<p><strong>Lisa</strong>: That\u2019s specious reasoning, Dad.</p>\n<p><strong>Homer</strong>: [<em>uncomprehendingly</em>] Thanks, honey.</p>\n<p><strong>Lisa</strong>: By your logic, I could claim that this rock keeps tigers away.</p>\n<p><strong>Homer</strong>: Hmm. How does it work?</p>\n<p><strong>Lisa</strong>: It doesn\u2019t work. (<em>pause</em>) It\u2019s just a stupid rock!</p>\n<p><strong>Homer</strong>: Uh-huh.</p>\n<p><strong>Lisa</strong>: But I don\u2019t see any tigers around, do you?</p>\n<p><strong>Homer</strong>: (<em>pause</em>) Lisa, I want to buy your rock.</p>\n</blockquote>\n<p>Please please please stop assuming that determining a cause and effect\nrelationship is as straightforward as observing a correlation. It\u2019s not.</p>\n<p><strong>Note:</strong> I know the <code>!=</code> operator is not equivalent to \u201cdoes not imply.\u201d But I am\ntoo lazy right now to see if there\u2019s even a Unicode character for the right symbol.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245924.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2007-08-28T06:55:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245924.gif"
        },
        {
            "id": "https://tylerbutler.com/lessons-from-a-street-performer/",
            "url": "http://feed.tylerbutler.com/link/18607/17245925/lessons-from-a-street-performer",
            "title": "Lessons from a Street Performer",
            "content_html": "<p>Should you ever find yourself watching a street performer\u2019s act, and you end\nup volunteering, either willingly or unwillingly, to be a part of said act,\nhere\u2019s a piece of advice: don\u2019t run away when the performer\u2019s not looking. If\nyou do, you might find out later that you\u2019re missing something that might be\nimportant to you. This is what happened to Emily, a rather skittish young\nGerman woman who happens to be visiting Brisbane this week, and is now missing\nher watch.</p>\n<p>While I was walking back to the Kookaburra this afternoon, I passed through\nthe Queen Street Mall and stopped to view a street magician. Shortly after I\nstarted watching, he approached a girl in the audience to act as his second\n\u201cassistant.\u201d The girl didn\u2019t look particularly happy to have been chosen, but\nrather than protest she joined the performer in front of the audience. Soon\nshe was introduced s Emily from Germany, to much enthusiastic adulation from\nthe crowd.</p>\n<p>The performer continued on with his act, which primarily involved his first\nassistant, another young woman named Charlie. While he turned to face Charlie\nand continued on, Emily turned and left, running swiftly into the swelling\ncrowd at the mall. It took a few seconds for both the audience and the\nperformer to figure out what was happening. The crowd started laughing at her\ndeparture, but the performer yelled after her, \u201cWait! You\u2019re missing\nsomething!\u201d With that, he pulled a hand watch from his pocket and waved it\nabove his head. Alas, Emily ran on, and was soon lost in the crowd. The\nperformer looked a bit baffled, jokingly offered the watch to anyone who would\nbuy it, then continued on with his act (with a new second assistant).</p>\n<p>My first thought was that Emily was in on it, but after the act a few people\napproached the performer and asked if it was scripted. He explained that it\nwasn\u2019t. He had removed her watch surreptitiously as part of his act and was\nplanning to reveal it to her later on. His intention was by no means to steal\nher watch, but when she ran off so unexpectedly he didn\u2019t know what to do.</p>\n<p>So people, if you wind up in a street performer\u2019s act, please just be\ngood-natured about it and participate. It\u2019s really not that hard.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245925.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2007-08-21T09:08:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245925.gif"
        },
        {
            "id": "https://tylerbutler.com/in-portland-get-breakfast/",
            "url": "http://feed.tylerbutler.com/link/18607/17245926/in-portland-get-breakfast",
            "title": "In Portland? Get Breakfast!",
            "content_html": "<p>Seriously, the next time you\u2019re in Portland, go to <a href=\"http://www.sanbornsbreakfast.com/\">Sanborn\u2019s</a> and get some breakfast. Freaking <strong><em>amazing</em></strong>\nfood. Elizabeth and I went there last weekend during our trip down there.\nDespite the fact that we got lost (I blame our crummy GPS technology \u2014 or\nmaybe it was the navigator?), once we found it it lived up to the hype.\nDefinitely get the biscuits \u2014 I am drooling right now just thinking about\nthem\u2026 The pancakes and omelette\u2019s were also very very good. It was busy, but\nservice was decent. We also went to <a href=\"https://www.lucystable.com/\">Lucy\u2019s Table</a> for dinner,\nwhich I can also highly recommend. Excellent food and service, though it was a\nbit pricey. I\u2019d liken it to Caf\u00e9 Juanita in Kirkland in terms of quality and\natmosphere. Unfortunately, not all of our dining experiences in the City of\nRoses were good. Despite good reviews on CitySearch, the <a href=\"https://www.google.com/url?sa=t&amp;ct=res&amp;cd=2&amp;url=http://portland.citysearch.com/profile/8470102/portland_or/j_m_cafe.html&amp;ei=F-2_Rt7KOJTshQPp7PHtCw&amp;usg=AFQjCNH9s9ncpZ9VZT_leK3fVMu9YQe7kA&amp;sig2=gBiGHh4kr9purLuxpfy2ng\">J&amp;M Caf\u00e9</a> left a lot to be desired. Not outright <strong><em>bad</em></strong>, but definitely nothing to write home about. Meh. And also note that the only <a href=\"http://www.sonicdrivein.com/\">Sonic</a> within 200 miles of Seattle is in a Portland suburb. Mmmmmm, <strong><em>so</em></strong> worth the drive.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245926.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2007-08-13T12:41:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245926.gif"
        },
        {
            "id": "https://tylerbutler.com/the-secret-to-avoiding-telemarketers/",
            "url": "http://feed.tylerbutler.com/link/18607/17245927/the-secret-to-avoiding-telemarketers",
            "title": "The Secret to Avoiding Telemarketers",
            "content_html": "<p>For some reason I\u2019ve been the target of telemarketers recently, and I think\nI\u2019ve found the secret to getting them to hang up and stop calling: <strong>just say no\nthree times.</strong> Three seems to be the magic number. The first two times you say\nyou\u2019re not interested, they continue to pester, but the third time, they thank\nyou for your time and say goodbye. I have had much more success with this\nmethod than with simply hanging up on them. First, that makes me feel rude,\nand a telemarketer is still a person who has a job and there\u2019s no reason for\nme to be rude to them just because I\u2019m annoyed. But second, and more\nimportantly, simply hanging up seems to increase the likelihood that the same\npeople will call me back with the same offer. Saying no three times seems to\nreduce that likelihood in my non-scientific experimentation.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245927.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2007-07-31T05:32:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245927.gif"
        },
        {
            "id": "https://tylerbutler.com/gettin-famous/",
            "url": "http://feed.tylerbutler.com/link/18607/17245928/gettin-famous",
            "title": "Gettin' Famous",
            "content_html": "<p><a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fzorba.members.winisp.net%2F\">George</a> found <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fsearchvb.techtarget.com%2ForiginalContent%2F0%2C289142%2Csid8_gci1256720%2C00.html\">this article</a> over at SearchVB.com that mentions my <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fsessions.visitmix.com%2Fdefault.asp%3Fevent%3D1011%26session%3D2012%26pid%3DDEV06%26disc%3D%26id%3D1515%26year%3D2007%26search%3DDEV06\">MIX\n\u201807 Session</a>. While I am not quoted directly, my name is mentioned, and the\ncontent of the session is referenced a bit:</p>\n<blockquote>\n<p>At Microsoft\u2019s MIX07 conference, Tyler Butler, a program manager for\nMicrosoft Office SharePoint Server, pointed out three Web applications built\non SharePoint \u2014 Hawaiian Airlines, mobile phone game firm Glu Mobile and\nmusic and event firm Hed Kandi Radio.</p>\n<p>Butler also indicated that, since the SharePoint 2007 platform is built on\nASP.NET 2.0, developers can use ASP.NET AJAX and Silverlight to provide a rich\nuser interface.</p>\n</blockquote>\n<p>I\u2019ll try not to let the fame go to my head.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245928.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2007-06-02T07:57:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245928.gif"
        },
        {
            "id": "https://tylerbutler.com/pidgin/",
            "url": "http://feed.tylerbutler.com/link/18607/17245929/pidgin",
            "title": "Pidgin",
            "content_html": "<p>Imagine my surprise when I was browsing my feeds at Google Reader today to see\nthe word \u201cPidgin\u201d in my feeds. And in a Lifehacker post, no less! To\nunderstand why I would be surprised, you have to remember that I grew up in\nPapua New Guinea, where a trade language called <a href=\"http://en.wikipedia.org/wiki/Tok_Pisin\">Neo-Melanesian Pidgin</a>\n(Tok Pisin in the <a href=\"http://en.wikipedia.org/wiki/Vernacular\">vernacular</a>) is spoken by roughly 4 million people\nthere. It is commonly referred to as just \u201cpidgin\u201d by people that live in PNG.</p>\n<p>In reality, pidgin is a generic linguistic term that refers to a language that\ndevelops as a means to facilitate trade in areas where many different\nlanguages are spoken by small people groups. Since ~850 languages are spoken\nin PNG, it makes some sense that a pidgin would be born to facilitate trade\nand communication. Neo-Melanesian pidgin is based on English and German. One\nof the defining characteristics of pidgins is that they are typically just a\n<a href=\"http://en.wikipedia.org/wiki/Lingua_franca\">lingua franca</a>, and not spoken as a first language by any people group.\nPidgins sometimes develop into creoles, which means that they then become more\nfull-fledged languages, because people learn to speak them as their first (and\nsometimes only) language. This is the case with Haitian Creole (originally a\nFrench Pidgin, now a French Creole).</p>\n<p>Anyhow, the Pidgin Lifehacker was talking about is an IM client, much like\nTrillian. Not quite what I was expecting, but given what a pidgin is, the name\nis fitting. :-)</p>\n<p><a href=\"http://sourceforge.net/project/showfiles.php?group_id=235&amp;package_id=230234&amp;release_id=504761\">Pidgin 2.0 Beta 7</a></p><img src=\"http://feed.tylerbutler.com/link/18607/17245929.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2007-05-04T07:34:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245929.gif"
        },
        {
            "id": "https://tylerbutler.com/silverlight-coming-to-linux-courtesy-mono/",
            "url": "http://feed.tylerbutler.com/link/18607/17245930/silverlight-coming-to-linux-courtesy-mono",
            "title": "Silverlight Coming to Linux Courtesy Mono",
            "content_html": "<p>According to <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fnews.com.com%2F8301-10784_3-9714669-7.html\">an article over at news.com</a>, the <a href=\"http://www.mono-project.com/Main_Page\">Mono project</a> founder\nsays they\u2019ll be working on a Linux port of Silverlight in the future. Sweet! I\nwas personally annoyed to find out that \u201ccross-platform\u201d only meant Mac and\nWindows when Silverlight was officially announced. But it\u2019s nice to see Mono\ncommitting to filling the Linux gap. Best of luck to them!</p><img src=\"http://feed.tylerbutler.com/link/18607/17245930.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2007-05-04T07:10:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245930.gif"
        },
        {
            "id": "https://tylerbutler.com/the-social-revolution/",
            "url": "http://feed.tylerbutler.com/link/18607/17245931/the-social-revolution",
            "title": "The Social Revolution",
            "content_html": "<p>I\u2019ve been avoiding services like Facebook, MySpace, Friendster and the like\nfor a long time despite their growing popularity. In the MySpace case, it\u2019s a\nphilosophical choice \u2014 MySpace sites are often so bad! They look horrible,\nmusic plays when you go to them, the formatting is terrible\u2026 This is a natural\noutcome of pure freedom; when you allow people to customize things and make\nthem look exactly like they want, you give them the freedom to make horrible\nlooking stuff. But I\u2019m getting a bit off topic\u2026 Anyway, I avoid MySpace sort\nof on principal, but I avoid Facebook due to some other reasons that I think\nfinally crystallized in my mind while attending a roundtable discussion at MIX\nthat included folks from Six Apart, Twitter, and Facebook.</p>\n<p>The guy from Facebook was talking about how they view Facebook as being not an\n<em>extension</em> of your identity, but rather a <em>representation</em> of it (my words,\nnot his; I\u2019m trying to paraphrase the conversation). In other words, your\nFacebook simply reflects the things that are happening to you, what\u2019s going on\nin your life, etc., and then shortens the gap between those events and\noccurrences and the people that potentially care about you. Their philosophy\nas I understand it is to reduce the amount of overhead that comes with keeping\ntrack of what\u2019s going on with people.</p>\n<p>That\u2019s a noble goal, I suppose, and one I can certainly appreciate given that\nI have friends strewn all over the world (ever since the great Diaspora that\nwas my high school graduation in PNG). It certainly would be nice to always\nknow what was happening with those folks without ever having to do anything\nabout it. But I think that\u2019s the crux of my opposition to it.</p>\n<p>You see, I think there is a great deal of worth in getting an email after a\nlong time from someone who has taken the time to write you and give you a\nbrief update about them. It took time and energy for them to write you and\nupdate you on their life \u2014 and I believe it shows they care. This type of rich\ninteraction with someone occurs more naturally after a time out of touch.</p>\n<p>Imagine a 30-year high-school reunion if everyone was on Facebook the entire\ntime after graduation? Would there be anything to talk about? I suppose the\nconversation would revolve around politics, religion, and other matters of\n<em>opinion</em>, because life events would simply be old news. Everyone would\nalready know that Sam got married last summer and Mary got a new job. There\u2019d\nbe no excitement in learning that Joe\u2019s son spoke his first words last week or\nthat Sally was finally able to get that surgery she needed.</p>\n<p>If we\u2019re always connected to one another all the time, it removes the\nexcitement and enjoyment that comes from the <em>re</em>-connecting after a\ndisconnect. It\u2019s clich\u00e9, to be sure, but absence makes the heart grow fonder,\nand for that reason, Facebook\u2019s just not for me.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245931.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2007-05-04T01:38:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245931.gif"
        },
        {
            "id": "https://tylerbutler.com/flittrbook/",
            "url": "http://feed.tylerbutler.com/link/18607/17245932/flittrbook",
            "title": "Flittrbook",
            "content_html": "<p>The screen saver that loads Twitter posts and Flickr photos that I mentioned\nbriefly in my first MIX post is available at\n<a href=\"https://blogs.msdn.com/karstenj/archive/2007/04/30/the-debut-of-flittrbook.aspx\">http://blogs.msdn.com/karstenj/archive/2007/04/30/the-debut-of-\nflittrbook.aspx</a>.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245932.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2007-05-02T00:49:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245932.gif"
        },
        {
            "id": "https://tylerbutler.com/presentation-problems/",
            "url": "http://feed.tylerbutler.com/link/18607/17245933/presentation-problems",
            "title": "Presentation Problems",
            "content_html": "<p>My session went pretty well yesterday, but unfortunately I had quite a few\ndemo issues. The session before mine went late, which made me pressed for time\nto get things plugged up and ready to go. The first problem was that they\ndidn\u2019t have my presentation pre-loaded on the presentation computer. So I\nspent a few minutes looking for it, and then finally gave up, plugged in my\nUSB key to the back of the machine and just loaded it. Problem 1 solved, but\nit got my nerves in a bit of a tizzy so I didn\u2019t quite start with the bang I\nwanted to.</p>\n<p>The A/V guy thought I was ready to go as soon as the presentation was up and so\nstarted everything, but I didn\u2019t get a chance to double check that my demo\nlaptop was working properly and that the demos were going to be displayed\ncorrectly. <em>Big mistake.</em> When it came time to do my demos, I couldn\u2019t get any\nsignal from the laptop to the displays. I fiddled with it for what seemed like\nan eternity, but in the end made the executive decision to just continue on so\nI could make it through the core content. One problem with doing demos from\nVista machines is that I can never freaking find the right place to look to\nchange settings. It\u2019s <em>very</em> frustrating, and when you\u2019re nervous or anxious,\nit just makes matters worse. For the demos I just did my best to explain the\npoints in the demos verbally, but of course that was a very poor substitute.</p>\n<p>To add insult to injury, I offered to show the demos on my laptop after the\ntalk for those that were interested. However, there were a number of\nquestions, and due to the wait and inactivity, Virtual PC stopped cooperating\nand I couldn\u2019t get anything to display on the demo box. &lt;sigh&gt;</p>\n<p>For those of you who were at my session, please accept my sincere apologies\nfor the lack of demos. I had a much better, more cohesive presentation\nplanned. Hopefully the extended Q&amp;A was useful. Judging from the number of\ngreat questions and business cards I got for follow up info, people still got\nsomething out of the session.</p>\n<p>I will be at the Mix Chat and attending various sessions throughout the rest\nof the conference. If you want to chat with me, catch up with me at the\nconference, or send me an email to set up some time to talk while we\u2019re here.</p>\n<p>I was very serious when I said that I\u2019d like to start conversations with\neverybody about their SharePoint experiences. We very much want to understand\nwhere you perceive the problems to be so that we can address them. Believe it\nor not, it\u2019s not always as obvious to us as it is to you what we should do. So\nwe very much value your feedback!</p><img src=\"http://feed.tylerbutler.com/link/18607/17245933.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2007-05-02T00:04:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245933.gif"
        },
        {
            "id": "https://tylerbutler.com/twitter/",
            "url": "http://feed.tylerbutler.com/link/18607/17245934/twitter",
            "title": "Twitter",
            "content_html": "<p>Despite my better judgment and my vehement opposition of most things \u201cweb\n2.0,\u201d I now have a <a href=\"http://twitter.com\">Twitter</a> account.  See my tweets at\n<a href=\"https://twitter.com/tylerbutler\">https://twitter.com/tylerbutler</a>. I feel dirty\u2026 At least I\u2019m not on\nmyspace\u2026</p><img src=\"http://feed.tylerbutler.com/link/18607/17245934.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2007-05-01T04:01:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245934.gif"
        },
        {
            "id": "https://tylerbutler.com/net-browser-integration-demos/",
            "url": "http://feed.tylerbutler.com/link/18607/17245935/net-browser-integration-demos",
            "title": ".Net Browser Integration Demos",
            "content_html": "<p>To expand on my post from earlier about .Net in the browser, here\u2019s some of\nthe more salient points from the demos that Scott Guthrie et. al. showed:</p>\n<p><strong>Debugging in both Windows and Mac</strong></p>\n<p>Yup, you can attach to a remote process running on the Mac, and step into\nbreakpoints in your managed code locally in VS. This must have been <em>really</em>\nhard to build. Nonetheless, this is super useful.</p>\n<p>**Code behind for Silverlight projects **</p>\n<p>This is basically how you get your .Net code in the browser. As far as I can\ntell, your XAML has an associated code-behind page that contains all of your\ncode, as in pretty much all of ASP.Net</p>\n<p>**Integration between Expression and VS for inserting XAML into the Silverlight project from Expression **</p>\n<p>You can easily use the best app for the specific job. Designers can crack open\nthe XAML in Expression and munge it, then developers can live in VS and just\nwrite the code. Everybody wins.</p>\n<p>**Add Silverlight projects to ASP.Net projects, get them built and deployed together **</p>\n<p>Silverlight controls can be just like regular .Net controls, and get built as\npart of the same development workflow. Sweeeeeet\u2026</p>\n<p><strong><a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fsilverlight.metaliq.com%2Ftopbanana%2F\">http://silverlight.metaliq.com/topbanana/</a></strong></p>\n<p>Really nifty light table app completely in the browser built in C# and XAML\nand delivered via Silverlight. Apparently this will be a sample app that will\nbe part of the SDK or something, which is pretty sweet. I was hoping it\u2019d be\nlive so everyone could play, but it\u2019s not. Built in a month with alpha\nSilverlight 1.1 code.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245935.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2007-05-01T03:38:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245935.gif"
        },
        {
            "id": "https://tylerbutler.com/net-in-the-browser/",
            "url": "http://feed.tylerbutler.com/link/18607/17245936/net-in-the-browser",
            "title": ".Net in the Browser",
            "content_html": "<p>Wahoo, .Net in the browser just announced with integration in Silverlight. The\ncrowd goes wild\u2026</p><img src=\"http://feed.tylerbutler.com/link/18607/17245936.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2007-05-01T00:52:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245936.gif"
        },
        {
            "id": "https://tylerbutler.com/at-mix/",
            "url": "http://feed.tylerbutler.com/link/18607/17245937/at-mix",
            "title": "At MIX!",
            "content_html": "<p>I\u2019m at MIX! Got in late last night. Wow, Vegas is nuts. So gaudy \u2014 lights,\nsounds, smells everywhere. It\u2019s pretty overwhelming. The Venetian is\nfantastically humongous. I have to walk a mile from my room to the part of the\nhotel where MIX is actually taking place. First time in a 5-star hotel for me,\nso I am pleased.</p>\n<p>Right now I am sitting in the keynote session waiting for it to get started at\n9:30 PST. There\u2019s a pretty cool \u201cscreen saver\u201d thing that is loading live\n<a href=\"https://twitter.com/\">Twitter</a> comments from MIX attendees and displaying them on the screen in\nreal-time. Pretty cool. Not a big Twitter fan myself, but it\u2019s certainly being\nused in interesting ways here at MIX.</p>\n<p>There\u2019s a three piece band playing with an accordion, violin, upright bass,\nand assorted other instruments. One attendee described it as a love child\nbetween Tom Waits and Oingo Boingo. Did I just hear a glockenspiel? A freakin\u2019\nTheremin too? Fantastic\u2026</p>\n<p>Well, keynote should start shortly\u2026 More coming up\u2026</p><img src=\"http://feed.tylerbutler.com/link/18607/17245937.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2007-04-30T23:35:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245937.gif"
        },
        {
            "id": "https://tylerbutler.com/speaking-at-mix/",
            "url": "http://feed.tylerbutler.com/link/18607/17245938/speaking-at-mix",
            "title": "Speaking at MIX",
            "content_html": "<p>Exciting news! My session for <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.visitmix.com%2F\">MIX \u201807</a> was approved, so it looks like I\u2019ll\nbe in Vegas at the end of the month. Unfortunately, it\u2019s sold out, so if\nyou\u2019re not already registered, you\u2019re unfortunately out of luck as far as I\ncan tell. However, I\u2019m told all sessions will be recorded and available on the\nweb for everyone to see as early as the day after the session, so I\u2019ll post a\nlink to it here for those who are interested.</p>\n<p>The title of the session is \u201cInternet Sites with Microsoft Office SharePoint\nServer 2007,\u201d which is sufficiently broad that there should be plenty to talk\nabout. Do you have specific things you\u2019re interested in learning about, or\nthat you think I should talk about in my session? Feel free to drop me a\nline and let me know. I\u2019ll also be at the MIX Chat on Wednesday afternoon,\nso swing by and say hello.</p>\n<p>And if you want to see some particularly poor yet frenetic dancing, join me at\nPURE on Tuesday night. Believe me, there\u2019s nothing quite like a Microsoft\nProgram Manager out on the dance floor\u2026</p><img src=\"http://feed.tylerbutler.com/link/18607/17245938.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2007-04-06T01:30:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245938.gif"
        },
        {
            "id": "https://tylerbutler.com/corrections-on-nav-samples-in-my-ecm-blog-posts/",
            "url": "http://feed.tylerbutler.com/link/18607/17245939/corrections-on-nav-samples-in-my-ecm-blog-posts",
            "title": "Corrections on Nav Samples in my ECM Blog Posts",
            "content_html": "<p>Way back when I wrote <a href=\"https://blogs.msdn.com/ecm/archive/2006/10/30/building-tylerbutler-com-part-1-planning-and-basic-branding.aspx\">part 1</a> of my series on building tylerbutler.com, I\nmentioned that I was using a custom sitemap provider to drive my \u201crecent\npages\u201d section on my site. I was doing this with navigation because navigation\ncontrols inherently know where they are in a site\u2019s structure, which meant I\nonly needed one control in my master page to drive the links in the right hand\nsection. I was using the <code>DynamicChildLimit</code> property to make sure I only got 15\nlinks to show up in that section.</p>\n<p>Unfortunately, I started having problems with the ordering of the links that\nwere showing up, so I started talking with Chris Richard, the nav maestro. It\nturns out that the <code>DynamicChildLimit</code> isn\u2019t meant to be used for that purpose.\nWhen you sort navigation, the sorting happens <em>after</em> the nodes are returned\nfrom the nav store. This means that if you have 50 navigation items sorted by\nlast modified time, and you set a <code>DynamicChildLimit=\"15\"</code>, for example, you\u2019ll\nget back 15 pseudo-random items, then those resulting 15 items will be sorted\nby last modified time. I say a <em>pseudo-random</em> set of items is returned\nbecause even though items returned aren\u2019t really random \u2014 there <em>is</em> a\ndeterministic way nodes get returned from the nav store \u2014 it\u2019s complicated\nenough that you won\u2019t be able to tell what 15 items will be returned at any\ngiven time.</p>\n<p>Anyway, this means that <code>DynamicChildLimit</code> doesn\u2019t really work the way I\nthought and it makes navigation unusable for my needs in this instance.\nHowever, a helpful guy named Bram Kleverlaan left <a href=\"https://blogs.msdn.com/ecm/archive/2007/01/16/building-tylerbutler-com-part-6-what-was-tough-and-what-s-to-come.aspx#1512810\">a comment </a>on my Part 6\npost that he was able to use a SharePoint expression to make Content Query Web\nParts know where they are in the site hierarchy. The trick is to set\n<code>WebUrl=\"&lt;% $SPUrl:~Site/ %&gt;\"</code> in the web part\u2019s properties. This expression\nwill get expanded by SharePoint at runtime, and your CQWP will suddenly change\nbased on the location of the page that\u2019s loading it. I definitely had a \u201cWhy\ndidn\u2019t I think of that?\u201d moment when I read Bram\u2019s comment.</p>\n<p>Anyway, I am using this now on my site, and I can verify that it works for web\nparts that live <em>outside</em> of web part zones. I have not yet tried it on a web\npart inside a zone, but I\u2019ve heard reports that the property gets reset every\ntime you change properties on the web part in the browser, which you can\u2019t do\nfor parts that live outside zones.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245939.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2007-02-03T08:38:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245939.gif"
        },
        {
            "id": "https://tylerbutler.com/building-moss-master-pages/",
            "url": "http://feed.tylerbutler.com/link/18607/17245940/building-moss-master-pages",
            "title": "Building MOSS Master Pages",
            "content_html": "<p>Now that MOSS is available to lots of people, and people are building lots of\nsites that <a href=\"https://www.fifteen.net\">don\u2019t</a> <a href=\"https://www.shareview.co.uk/\">look</a> <a href=\"https://www.hedkandi.com/\">like</a> SharePoint, a lot of you might be\nwondering how you should get started in building your own custom master page\nfor your site. I talked a little bit about this in my first post on building\ntylerbutler.com, but I think it might be valuable to post some info about the\nminimal master page and its role in helping you build a custom master page for\nyour site. But first, some background\u2026</p>\n<p>During the early betas, people heard that you could make SharePoint \u201cnot look\nlike SharePoint,\u201d and so they set off to do just that. People started cracking\nopen default.master and trying to understand it. The problem many people\nreported was that the markup in default.master was ridiculously complicated,\nand it wasn\u2019t clear what could be removed and what couldn\u2019t. The complexity is\nsomewhat necessary for that master page because of all the delegate controls\nwe have to put in place to support a bunch of different back-end SharePoint\nstuff (I do believe, however, that there\u2019s plenty of things we could/can do in\nthat master page to make it clearer and easier to customize without removing\nfunctionality, so this is not meant to be an excuse).</p>\n<p>Anyway, there were customers that were trying to build internet facing sites\non top of SharePoint, because <strong>a)</strong> we told them that they could/should and\n<strong>b)</strong> we rolled up a lot of web content management functionality from Content\nManagement Server 2002, and customers that were using that product were\ninvestigating how they would move to MOSS. These customers did not want their\nsite to look anything like SharePoint. These customers also often had a site\ndesign template that was coming from their design team, either in HTML or as\nimage mock-ups. Trying to fit that design into default.master was exceedingly\ndifficult because of all the unclear markup in that master page.\nDefault.master is designed for a SharePoint site \u2014 one that looks and acts\nlike SharePoint. But people who wanted to build non-SharePoint looking sites\nwere getting tripped up by using it as a starting point.</p>\n<p>We do have several master pages that we built that are much simpler than\ndefault.master. When you provision a Publishing Portal site collection, for\nexample, we default to BlueBand.master, which has customized CSS and MOSS\nnavigation out of the box. It\u2019s a cleaner starting point, so we initially told\npeople to start there rather than with default.master. We still had problems,\nthough, because you never knew if a placeholder was absolutely necessary in\nyour master page. What would happen is you\u2019d remove a seemingly innocuous\nplaceholder and your page would work fine until you browsed to some specific\npage that was overriding that placeholder, then things would break.</p>\n<p>What we needed was a sample master page that included only the markup that was\n<em>absolutely necessary to get your pages to render.</em> Thus, the <a href=\"https://msdn2.microsoft.com/en-us/library/aa660698.aspx\">minimal master\npage</a> was born. This master page is purposely bare. It\u2019s just a bunch of\nplaceholders \u2013 those placeholders are necessary for things in your site to\nwork properly. With this master page, you can take your markup from your\ndesigner, paste it into SharePoint Designer, and move markups into the\nappropriate placeholders. If there\u2019s some pieces you need/want from\ndefault.master or another page, you can always open them up and copy/paste the\nappropriate markup.</p>\n<p>So, should you start with <code>default.master</code>, <code>blueband.master</code>, or the minimal\nmaster page example when building your own custom master page? Well, the\nanswer depends on what you\u2019re trying to do. If you\u2019re building out a site that\nreally should look and work like vanilla SharePoint, then maybe <code>default.master</code>\nmakes sense. If you\u2019re trying to do something more exotic, <code>blueband.master</code> and\nits siblings have examples of different navigational structures and color\nschemes, so maybe it makes sense to start from one of those that is close to\nthe navigation/color you\u2019re aiming for. But my personal recommendation is to\nstart with the minimal page and copy/paste the appropriate controls/markup\nfrom other master pages as necessary. This ensures you get only what you need\nand want in your page, rather than having to weed through a bunch of markup to\nget rid of stuff that doesn\u2019t <em>look</em> like it\u2019s needed. If you do want to go\nthe default.master route, then Heather Solomon has <a href=\"http://heathersolomon.com/blog/archive/2007/01/26/6153.aspx\">a custom master page</a>\nthat she\u2019s tweaked from <code>default.master</code> to make things cleaner and more\nstraightforward.</p>\n<p>I hope this helps you figure out how to get started building out your site\nlook and feel. There is a growing number of live custom sites on top of MOSS,\nand it\u2019s exciting to see what people are able to build with this product!</p><img src=\"http://feed.tylerbutler.com/link/18607/17245940.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2007-02-03T06:57:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245940.gif"
        },
        {
            "id": "https://tylerbutler.com/hiding-vs-disabling/",
            "url": "http://feed.tylerbutler.com/link/18607/17245941/hiding-vs-disabling",
            "title": "Hiding vs. Disabling",
            "content_html": "<p>Someone came by my office today and asked me if I could show him how to make a\ncolumn on a SharePoint list required. No problem! While this isn\u2019t as simple\nas it could be, it\u2019s pretty straightforward. Go into the list you want to\nchange, select <strong>List Settings</strong> from the <strong>Settings</strong> drop down, then click\nthe column you want to change in the <strong>List Settings</strong> page. You should see an\noption called \u201cRequire that this column contains information.\u201d By default,\nthis is off, but turning it on will make the column required.</p>\n<p>However, in this case, that option wasn\u2019t showing in the UI. The reason was\nthat the column was a <strong>Yes/No (check box)</strong> field. Now, if you think about\nit, this makes sense. A checkbox <em>always</em> has state, either checked or\nunchecked, so it\u2019s by nature required. A user always has to fill in a checkbox\nwith some data, either by checking it or unchecking it. It all comes down to\nthe default state, which <em>is</em> settable in the SharePoint UI.</p>\n<p>The interesting thing here, though, is that the user didn\u2019t stop to think\nabout this. And that makes sense. He just wanted to make a column required; he\ndidn\u2019t think about what type of column it was. SharePoint totally removes the\nrequired field setting from the UI for Yes/No fields because it doesn\u2019t make\nsense. However, the user got confused. He wasn\u2019t sure if the UI was missing by\ndesign or if he wasn\u2019t looking in the right spot for the setting. If you have\na task to accomplish using relatively unfamiliar UI, you go to the place that\nmakes sense to you, but you\u2019re never sure you\u2019re in the right place. In this\ncase, the user poked around other parts of the UI before coming to me, because\nhe thought he was looking in the wrong place.</p>\n<p>This might be alleviated by disabling (i.e. graying out) the part of the UI\nthat is not applicable. This is somewhat clearer, because it says, \u201cYes, this\nis where you would change this setting, but it doesn\u2019t make sense here or is\nnot allowed.\u201d This isn\u2019t a hard rule. You can\u2019t <em>always</em> display <em>all</em>\npossible settings in one piece of UI because if there are a large number of\nsettings, things can get confusing and distracting. Some hiding does make\nsense in many cases. But it is worth some dedicated thought about your UI and\nwhat your users are trying to accomplish when deciding whether to hide a piece\nof UI or simply gray it out.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245941.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2007-01-23T15:49:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245941.gif"
        },
        {
            "id": "https://tylerbutler.com/site-problems/",
            "url": "http://feed.tylerbutler.com/link/18607/17245942/site-problems",
            "title": "Site Problems",
            "content_html": "<p>My site has been going up and down lately. It\u2019s not a problem with MOSS or the\nserver. Both have stayed up and running without any problems. Unfortunately,\nthe environment that my server is in has been having problems with their\nswitch. Apparently it\u2019s rebooting itself constantly, which is \u201ca common issue\nfor this brand and model of router.\u201d Anyway, no biggie, my site isn\u2019t exactly\nmission-critical. But weekends are the best time for me to work on\nenhancements, and I have a few in mind that I was looking forward to getting\nset up. Alas, \u2018twas not to be. Everything seems to be working now, though, so\nhopefully it\u2019ll stay this way.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245942.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2007-01-23T15:35:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245942.gif"
        },
        {
            "id": "https://tylerbutler.com/acrobat-reader-8-sucks-less/",
            "url": "http://feed.tylerbutler.com/link/18607/17245943/acrobat-reader-8-sucks-less",
            "title": "Acrobat Reader 8 Sucks Less",
            "content_html": "<p>I upgraded to Acrobat Reader 8 last night because frankly, I figured it\ncouldn\u2019t get any crappier than 7. I was right. In fact, it got a bit better.\nThe Yahoo toolbar and advertising bar across the top seem to be gone. The\ninterface is simpler, too. It still has automatic updating on by default, of\ncourse, which I immediately turned off just in case the update feature sucks\nas much as it did in 7.</p>\n<p>So it\u2019s getting better. But even without Photoshop Album Starter Edition,\nwhich it tries to bundle with the download by default (freakin\u2019 annoying, by\nthe way), it\u2019s still <strong>20.8 MB</strong>. My goodness, that\u2019s bloated\u2026</p><img src=\"http://feed.tylerbutler.com/link/18607/17245943.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2007-01-18T04:15:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245943.gif"
        },
        {
            "id": "https://tylerbutler.com/i-hate-security-questions/",
            "url": "http://feed.tylerbutler.com/link/18607/17245944/i-hate-security-questions",
            "title": "I Hate Security Questions",
            "content_html": "<p>Several of my banks have been \u201cupgrading\u201d their security since the beginning\nof the year. I have pretty much accepted the fact that \u201cupgrading\u201d security\nmeans my blood pressure will needlessly rise the next time I try to access my\naccount.</p>\n<p>The latest security craze seems to be these security questions. \u201cMother\u2019s\nmaiden name\u201d apparently doesn\u2019t cut it anymore. Security questions drive me\ninsane, because there\u2019s invariably a finite set of options I have to choose\nfrom. <em>Favorite childhood superhero?</em> <em>Name of firstborn child?</em> What is this\ncrap? <strong>None</strong> of it is easy for me to remember! Why don\u2019t you let me pick my\n<strong>own</strong> question and my <strong>own</strong> answer? Now I have to remember some \u201cfact\u201d\nthat I made up as an arbitrary answer to some stupid question that a bank\ndecided was an excellent way to distinguish me from some sorry thief.</p>\n<p>To add insult to injury, many times I have to select** two or more** security\nquestions. <strong>OMG. <a href=\"https://tylerbutler.com/2004/08/i-hate-banks/\">I hate banks so much.</a></strong></p><img src=\"http://feed.tylerbutler.com/link/18607/17245944.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2007-01-18T03:56:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245944.gif"
        },
        {
            "id": "https://tylerbutler.com/rizzy-on-the-wii/",
            "url": "http://feed.tylerbutler.com/link/18607/17245945/rizzy-on-the-wii",
            "title": "Rizzy on the Wii",
            "content_html": "<p>My pledge bro Craig \u201cRizzy\u201d Rohe also has a Wii, and he sent me some mini-reviews on some games. Since he has no online presence (yet), I thought I\u2019d\npost them. But before I do that, here\u2019s what he has to say about getting\nonline with the thing:</p>\n<blockquote>\n<p>First, some bitching about Wii:</p>\n<p>Up until 10 minutes ago, all I\u2019ve ever done with the Wii is played games.\nVery easy, very fun. However, trying to use the internet connectivity and\nadding friends made me want to punch a little Japanese person in the face. Do\nthey actually expect average people to be able to do this? I\u2019m an embedded\nsystems designer, and I was frustrated with it. Other than letting our Mii\u2019s\ntravel back and forth, is there even any benefit to doing it? Shame on you\nNintendo.</p>\n<p>Second, games only save to the internal Wii memory. If you want them on the\nSD card, you have to copy it over manually. Of course, you\u2019d have to do that\neach time you play the game in order to keep the SD card up to date. It pretty\nmuch makes the $50 1G memory card I bought completely useless.</p>\n</blockquote>\n<p>I couldn\u2019t have said it better myself. The Wii online setup is pretty bad. I\u2019m\nreally surprised people are getting it to work without wanting to gouge their\nown eyes out with a spoon. As for me, I am still using it on my neighbor\u2019s\nwireless because it won\u2019t work on mine. And yes, I have changed to channels\n1/11 on the router. Yes, I have followed all stupid suggestions in the forums\nand on the support site. Nintendo could take a few pointers from Microsoft in\nthis particular part of the experience.</p>\n<p>The SD thing seems strange. I haven\u2019t tried to use an SD card yet, but it does\nseem odd that you can\u2019t save games directly to it. This does seem like\nsomething Nintendo could change with a firmware update though.</p>\n<blockquote>\n<p><strong>Wii Sports</strong> \u2014 It\u2019s ok. Fun little games to showcase the controller\nabilities. I\u2019ve found tennis to be pretty fun with multiple people, and you\ncan avoid the dreaded Wii tennis elbow once you learn that a skilled flick of\nthe wrist will do just as much as a full blown swing. I brought my Wii home\nfor Christmas, and since I have a zillion siblings we had continuously\nrotating doubles matches which were a blast.</p>\n<p><strong>Super Monkey Ball</strong> \u2014 I usually only play the mini games. Not as much fun\nas the versions for GameCube. I think they tried too hard to incorporate the\nmotion control into the games, and many of them are just too touchy, or they\nshould have put more time into making it fun. I guess they were pressed for\ntime trying to get that one out for launch. There are a few that are pretty\nentertaining though.</p>\n<p><strong>Zelda: Twilight Princess</strong> \u2014 This game rocks. It\u2019s hella fun to play. They\nused the motion sensors in moderation, which is good. The game itself is\nreally fun - plenty of puzzles and tangent adventures to try out. I haven\u2019t\nplayed any Zelda games since the one for 8-bit Nintendo, but I can still\nblindly say this is probably the best to date.</p>\n<p><strong>Excite Truck</strong> \u2014 So much fun my head almost exploded. It\u2019s a very fast\npaced, physics defying game. There\u2019s actually a lot of strategy needed for the\nmore advanced tracks, but at the same time you can just pick a level and have\nfun doing 720\u2019s at 1000 ft in the air and smashing through trees with power-\nups. Definitely one of the best games I own.</p>\n<p><strong>Red Steel</strong> \u2014 I haven\u2019t played this game very much. The reason? My damn\narm gets tired. Another example of how not to design a game interface. I think\nit would be much better if I could play for more than 20 mins at a time, so my\nreview may be biased. Basically, you are required to use the Wii-mote pointer\ncontinuously to aim and steer in the game. That\u2019s not even too bad because you\ncould rest your arm on your knee; then they thought up the great idea of\nrequiring you to extend your arm towards the TV to zoom in/out. Combine all of\nthat movement and you have to hold your arm straight out for extended periods\nof time during game play. Very annoying. Maybe I need to hit the gym.</p>\n</blockquote>\n<p>Haven\u2019t gotten into Twilight Princess yet myself. Elebits should be here from\n<a href=\"https://www.gamefly.com/\">Gamefly</a> this week, though in retrospect maybe I should have put Excite\nTruck at the top of my queue instead. Oh well, way too many awesome games\nthese days to get to. I still work occasionally, you know.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245945.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2007-01-16T08:52:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245945.gif"
        },
        {
            "id": "https://tylerbutler.com/itunes-tagging/",
            "url": "http://feed.tylerbutler.com/link/18607/17245946/itunes-tagging",
            "title": "iTunes Tagging",
            "content_html": "<p>One of the things that really annoys me about iTunes is the lack of\ncategorical tagging. Actually, I shouldn\u2019t blame iTunes. I think this is a\nfundamental limitation in the ID3 tags. What I want is the ability to \u201ctag\u201d\nmusic as I listen to it, with terms like \u201cstory-song\u201d (songs that tell a\nstory) or \u201cricardo\u201d (songs that my friend Ricardo has introduced me to).\nSocial music sites like <a href=\"https://www.pandora.com/\">Pandora</a> and <a href=\"https://www.last.fm/\">Last.fm</a> have this concept, as\ndoes just about every \u201cWeb 2.0\u201d site in the world. Why not my music player?</p>\n<p>Initially when I tried to implement this sort of thing I used the \u201ckeywords\u201d\nfield. I would just add the tag to that field, then I created Smart Playlists\nbased on that field. <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.lifehacker.com%2Fsoftware%2Fitunes%2Ftag-your-songs-in-itunes-153970.php\">This post at Lifehacker</a> suggests using the\n\u201cGrouping\u201d field, but the premise is the same.</p>\n<p>This approach works fine until you want to edit a bunch of songs and **add **a\ntag. When you do a bulk edit of the keywords field in iTunes it\u2019ll overwrite\nanything that was there previously. So suddenly tagging all that music with\n\u201cSasquatch 2006\u201d removed all the other cool tags you had applied. Major\nsuckage.</p>\n<p>Today I decided to try a new approach: I just use dumb, old-fashioned\nplaylists. When I want a new tag, I create a new playlist for it. For\norganization purposes I keep all tag playlists in a folder called Tags. I can\nthen create additional nested folders for categories, and because of how\niTunes handles folders with playlists inside, the folders will become\naggregators of all the music in playlists underneath them, which is nifty.\nThis means I can see all of the music I have tagged just by clicking the Tag\nfolder</p>\n<p>This approach is pretty simple. Adding a tag is easy, and using the tags to\ndrive smart playlists is easy too. Just add an \u201cIf &lt;<strong>Playlist</strong>&gt; &lt;<strong>is/is\nnot</strong>&gt; &lt;<strong>Tag playlist name</strong>&gt;\u201d clause to the Smart Playlist. There is a\ndrawback, though\u2026 **Removing **tags is now a pain. From the frying pan into\nthe fire\u2026 I have to make sure the song doesn\u2019t appear multiple times in a\nplaylist, and if it does, remove all occurrences. This is because playlists\nare designed to support multiple occurrences of the same song. If I want to\nstart and end my playlist with <em>My Heart Will Go On</em>, then dang it, I can do\nit. But for my purposes, it\u2019s not the ideal behavior.</p>\n<p>Anyway, none of this really helps my situation, because the iTunes app\n<strong>doesn\u2019t help me</strong> manage my tags, build playlists based on them, or\nanything, natively. All of this is a hack. There are a lot things that it\ncould do to make it easier to tag music. And with the iTunes music store, what\nif I could check out how other users were tagging the track, and borrow their\ntags? This is all stuff that is provided by Last.fm, of course, but Last.fm\ndoesn\u2019t manage my entire music collection \u2014 iTunes does.</p>\n<p>And of course <strong>none</strong> of this does anything on my iPod. Heck, <strong>it</strong> can\u2019t\neven understand playlist folders, which is super <em>super <strong>super</strong></em> dumb.\nActually, I have a lot of gripes about the iPod UI\u2026</p><img src=\"http://feed.tylerbutler.com/link/18607/17245946.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2007-01-02T11:30:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245946.gif"
        },
        {
            "id": "https://tylerbutler.com/web-site-intro-pages/",
            "url": "http://feed.tylerbutler.com/link/18607/17245947/web-site-intro-pages",
            "title": "Web Site Intro Pages",
            "content_html": "<p>If you browse around the internet these days, you\u2019re bound to come across a\nwebsite that has an intro page. Usually this page allows you to choose whether\nyou have a high- or low-bandwidth connection. If you select the high-bandwidth\noption, you invariably get taken to a Flash version of the site, while the\nlow-bandwidth version of the site is static HTML.</p>\n<p>When faced with these types of choices, I often forget that one should <em>always</em>\npick the low-bandwidth option, even if one is using a high-bandwidth\nconnection. The main reason is that these Flash sites often have annoying\nbackground music or annoying animations. From a site design perspective, Flash\nis best used as a <em>supplementary</em> web technology. A website shouldn\u2019t be\ndesigned entirely in Flash. Some core reasons for this are accessibility and\nsearch-ability. Google and other spiders cannot crawl a Flash web site as\neasily. Not to mention the fact that these types of sites always have some\ncrazy navigation scheme and flashy transitions between sections that make it\nvery difficult to navigate around, because it doesn\u2019t fit the typical web\nmold. Finally, Flash sites are typically absolutely scaled at a specific\nresolution, which means they don\u2019t look or work great if they\u2019re not at a\nspecific window size. To combat this, they\u2019ll pop open a separate browser\nwindow at the specific size they want. Talk about annoying! There is very\nrarely <em>any</em> need at all to design your site in Flash completely. Many\nFlash-only site have a stripped down HTML version of the site, hence the intro page\nwhere you pick which version you want to see. Since you already have to create\nan HTML version of the site, why not scrap the flash site and focus your\nattention on making the HTML site much better?</p>\n<p>The trend of completely Flash-based web sites has declined dramatically in the\ncommercial web of late, which is a great development. Instead, sites are using\nFlash as a way to add a bit of pizzazz to the site in strategic places, or to\nadd a slightly more interactive portion to their site. Judicious use of Flash\nin this way is good.</p>\n<p>The next time someone tells you that you should design your entire web\npresence in Flash, or have two versions of your site, shoot them.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245947.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2006-12-29T09:00:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245947.gif"
        },
        {
            "id": "https://tylerbutler.com/buying-toothpaste/",
            "url": "http://feed.tylerbutler.com/link/18607/17245948/buying-toothpaste",
            "title": "Buying Toothpaste",
            "content_html": "<p>I had to buy a new tube of toothpaste the other day. This isn\u2019t something I do\nterribly often. I live alone, and even with my braces, which requires a more\nstringent dental hygiene regiment, I don\u2019t go through a tube that quickly.</p>\n<p>But as I browsed the seemingly endless toothpaste section at my local Fred\nMeyer, looking for a tube, I realized that I have never bought the same type\nof toothpaste twice. I get to the store and I realize that I don\u2019t know what\ntype I bought last time, and all of the tubes look the same and have\nfrustratingly similar names. <em>Did I get Mint Zing last time? Or was it Fresh\nMint? Maybe it was Minty Fresh\u2026 Yeah, it was Minty Fresh.</em></p>\n<p>Nope, it wasn\u2019t Minty Fresh. It wasn\u2019t even Fresh Mint or Mint Zing. It was\n<strong>Mega Mint with Scope, Baking Soda and Peroxide Whitening ++</strong>. <em>Sigh</em>. Why\ndoes it have to be so hard to buy freaking toothpaste?</p><img src=\"http://feed.tylerbutler.com/link/18607/17245948.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2006-12-25T11:25:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245948.gif"
        },
        {
            "id": "https://tylerbutler.com/nintendo-wii/",
            "url": "http://feed.tylerbutler.com/link/18607/17245949/nintendo-wii",
            "title": "Nintendo Wii",
            "content_html": "<p>I managed to snag a Wii this past weekend at Target. It was a bit of a chore.\nI spent seven hours in 30 degree weather with 20 other brave souls who dared\ntochallenge the elements. I brought my heavy coat, a couple of blankets, a\nfolding chair, and some reading material, and settled in with the other\nfriendly members of the line around 1 am on a Saturday night. I was 10th in\nline, and at about 3am the night shift manager walked out and told us that\nthey\u2019d \u201cprobably\u201d have 21 Wii\u2019s. The info was accurate, and at 8:30am, a very\ntired, cold Tyler walked out of the store with a bundle of Japanese electronic\nawesomeness.</p>\n<p>When I got home I plugged it in and got everything wired up. It was pretty\nstraightforward. I didn\u2019t have component cables yet, so I had to use the\ncomposite cable. My gosh, does 480i suck. Ever since I got my new 50\u201d plasma\nlast month I haven\u2019t been able to watch low quality signals for long. I had\ninitially planned to wait to get the component cable, but I ordered one from\nNintendo the very next day. They must have shipped from Redmond, too, because\nI got it the following day, which was awesome. 480p makes the picture less\nnauseatingly bad.</p>\n<p>Anyway, the Wiimote is surprisingly easy to set up and use. Just put the\nsensor bar in the appropriate location, and you\u2019re pretty much done. I\nexpected to have to do some sort of calibration like you do on a PDA touch\nscreen, but there wasn\u2019t any. Mnoving it around to select things on the screen\nis easy, and it has a very mouse-like feel. One of the coolest things is that\nit can detect the orientation of your hand, so if you hold the Wiimote upside\ndown, the pointer icon on the screen goes upside down as well. This capability\nis important in games too, most notably in Wii Sports Bowling. Pretty cool\nstuff from a technological perspective.</p>\n<p>I had a ton of problems getting my Wii on the internet, though. I still\nhaven\u2019t gotten it working with my own network. I\u2019m mooching off a neighbor\u2019s\nuntil I get mine figured out. I keep getting random errors when testing the\nconnection. The Wii of course just gives you an error code, and then you have\nto look it up on their support website to try and figure out what it is. And\nthen, you have to type in the error code and hit search, because they don\u2019t\njust have a flat list of the codes and what they mean. And to add insult to\ninjury, they have ranges of error codes that all have the same recommendation.\n<em>Change the wireless channel to 1 or 11. Check your SSID, blah blah blah.</em>\nNone of it has worked for me. This is one area where I think Microsoft really\nhas it down when you compare the 360 experience to the Wii.</p>\n<p>Once I got it online, updating it was painfully slow. It took about a half\nhour to get all the updates downloaded and installed. Compare this to the 360,\nwhich has taken less than 3 minutes for every update I\u2019ve ever applied.</p>\n<p>The Wii UI is very minimalistic. There\u2019s not a lot of color, just grey, black,\nand white, and the occasional blue. And it has this annoying pinging sound\nthat it makes whenever you\u2019re applying an update or testing a wireless\nconnection. It gets to you after awhile. And the Wii Store has this background\nmusic that is fun at first, but you get sick of it real quickly.</p>\n<p>After all of the fooling around with getting it online and updated, I was\npretty frustrated. It took me the better part of the day to get it up and\nrunning. So when I finally decided it was time to play Wii Sports, I was in a\nkind of bad mood. But within 5 minutes of standing in front of my TV,\ngesticulating wildly, my attitude had changed. Wii Sports is just freaking\nfun! I majorly suck at baseball and tennis, but I bowl pretty well, and I find\nboxing pretty fun. It took me awhile to figure out that I could use both hands\nwhile boxing. Yeah, I\u2019m an idiot.</p>\n<p>I also got Zelda, but I haven\u2019t played it yet. I also have a ton of GameCube\ngames that I haven\u2019t tried yet. That is one really cool thing \u2014 my Wavebirds\nare still useable, as are my memory cards with all my save games. I could\nfully retire my GameCube if it weren\u2019t for the Gameboy Player, which I use to\nplay Gameboy games on the big screen.</p>\n<p>I still have a lot of stuff to check out. I added Patrick to my address book\n(seriously, this is a painful experience compared to the Xbox Live accounts\nand friends list. A 16 digit number? Come on! I can\u2019t remember that to tell my\nfriends!), so hopefully we\u2019ll be exchanging Mii\u2019s soon. Not sure what that\nmeans, but no doubt it will be a cultural experience.</p>\n<p>It\u2019s clear that this console was designed by a Japanese company. The design\nand focus are very different from something like the 360. And that is awesome!\nVariety is good. I look forward to better online experiences as they roll out\nnew services and channels. There\u2019s a lot of potential, and just like Xbox\nLive, it\u2019s going to take some time to really grow.</p>\n<p>Until then, anybody up for a round of Wii Bowling?</p><img src=\"http://feed.tylerbutler.com/link/18607/17245949.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2006-12-25T11:00:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245949.gif"
        },
        {
            "id": "https://tylerbutler.com/the-zune-and-wireless/",
            "url": "http://feed.tylerbutler.com/link/18607/17245950/the-zune-and-wireless",
            "title": "The Zune and Wireless",
            "content_html": "<p>A lot of people have made a big deal about the limitations of the <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.zune.net%2F\">Zune</a>\nwireless functionality since it was released a few weeks ago. While I totally\nagree that there is a lot of untapped potential with the device currently,\nthere is at least one \u201cobvious\u201d omission that people have pointed out that\nsimply isn\u2019t a good idea, to be honest.</p>\n<p>I\u2019m talking about syncing to the device using the wireless. Sounds cool,\nright? You just walk into your apartment, turn on the Zune, and Boom! All of\nyour music is synchronized to it. But what people don\u2019t seem to realize is how\nslow this would be. The maximum bandwidth for USB 2.0 is <a href=\"http://en.wikipedia.org/wiki/USB_2.0#Transfer_speed\">480 Mbit/s</a>, or\n60 MB/s. 802.11g, on the other hand, has a <a href=\"https://en.wikipedia.org/wiki/802.11g#802.11g\">maximum raw data rate of 54\nMbit/s</a>, or about 24.7 Mbit/s net throughput. Now, by applying some simple\nmathematics:</p>\n<p>480 / 24.7 = 19.4332</p>\n<p>This means that syncing to your device using wireless would be roughly 20\ntimes slower than using USB 2.0. Even if we assume the theoretical max data\nrate for 802.11g, which isn\u2019t realistic, to be clear, you\u2019re still looking at\na transfer speed that\u2019s ten times slower. And don\u2019t even think about using\n802.11b. Frankly, this doesn\u2019t sound like a good idea.</p>\n<p>\u201cSo what?\u201d you say. \u201cI can leave the Zune syncing all night and it\u2019ll be ready\nto go in the morning. Speed isn\u2019t a real issue.\u201d OK, fine. You walk into your\napartment, you turn on your Zune, and it starts syncing. You go to bed. You\nwake up the next morning, and your Zune is finished syncing, but it\u2019s battery\nhas also been drained. Good luck using it on your commute.</p>\n<p>So what do you do next time? You plug it in so it can charge while it\u2019s\nsyncing. But at this point, why not just plug it directly into your computer\nto sync and charge at the same time, at a much faster rate? So to me, it\u2019s\nclear that isn\u2019t really a desirable feature, and I\u2019ll bet that some Program\nManager on the Zune team came to the same conclusion.</p>\n<p>One thing that I will point out, however, is that many times, when you sync,\nyou\u2019re not syncing that much data. Your library hasn\u2019t changed that much, and\nthe only thing that\u2019s being synced is play counts or updated track info or\nsomething. In that case, this feature might make sense. The amount of data\nwouldn\u2019t be large, so the process wouldn\u2019t take long and the battery drain\nwould be minimal. There might be some scenarios where this feature would be\nuseful. However, I think that a lot of people had a knee-jerk reaction and\nhaven\u2019t really thought through the ramifications and technical limitations of\nthat feature. But hey, that\u2019s what we PM\u2019s get paid for, right?</p><img src=\"http://feed.tylerbutler.com/link/18607/17245950.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2006-12-20T10:20:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245950.gif"
        },
        {
            "id": "https://tylerbutler.com/patrick-has-a-wii-or-experimenting-with-microformats/",
            "url": "http://feed.tylerbutler.com/link/18607/17245951/patrick-has-a-wii-or-experimenting-with-microformats",
            "title": "Patrick Has a Wii, or, Experimenting with Microformats",
            "content_html": "<p>My friend <a href=\"http://patrick.wagstrom.net/\">Patrick</a> managed to <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fpatrick.wagstrom.net%2Fweblog%2Fwii%2Fwiik-wiith-wii.xml\">get his hands on a Wii</a>, and I am a bit\njealous, to say the least. My own weekend Wii hunt did not go well, but I plan\nto persevere and head back out next weekend. Supposedly the Redmond\n<a href=\"https://www.target.com/\">Target</a> is getting a bunch in on December 17th, so I\u2019ll be standing in\nline if you want to join me.</p>\n<p>However, this post is <em>really</em> meant to be about <a href=\"http://microformats.org/\">Microformats</a>, an\ninteresting little technology that allows you to add a bit more metadata to\nexisting markup, ostensibly to provide a better way to work with that data and\nleverage it in unique ways. I learned about it at the Gilbane Conference a\ncouple weeks ago, and I wanted to do some checking to make sure you could\nleverage them on your MOSS site if you wanted. Seems like you can, as this\npost suggests.</p>\n<p>If you view this post in Firefox you\u2019ll see a little icon next to Patrick\u2019s\npicture above. This is done using CSS, but you won\u2019t see it in IE because <a href=\"https://www.quirksmode.org/css/beforeafter.html\">IE\ndoesn\u2019t support <code>:before</code> and <code>:after</code></a>. But anyway, this isn\u2019t all that\ninteresting, because I could already do that using CSS. What _is _interesting,\nhowever, is if you go to <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Finside.glnetworks.de%2F2006%2F06%2F05%2Fmicroformats-have-arrived-in-firefox-15-greasemonkey-06%2F\">http://inside.glnetworks.de/2006/06/05/microformats-\nhave-arrived-in-firefox-15-greasemonkey-06/</a> and download the <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fgreasemonkey.mozdev.org%2F\">Greasemonkey\n</a>script there. Then return to this page, and you\u2019ll see that miraculously\nthe following menu has been added above Patrick\u2019s name:</p>\n<p><img alt=\"This image has been lost to the sands of time\" loading=\"lazy\" width=\"1536\" height=\"1024\" src=\"https://tylerbutler.com/assets/lost.CVsYUaFq_zpuRP.webp?dpl=6a5d3631d1ce1d000817d694\" srcset=\"/assets/lost.CVsYUaFq_1FUr7N.webp?dpl=6a5d3631d1ce1d000817d694 640w, /assets/lost.CVsYUaFq_1N0dCU.webp?dpl=6a5d3631d1ce1d000817d694 750w, /assets/lost.CVsYUaFq_2UVpy.webp?dpl=6a5d3631d1ce1d000817d694 828w, /assets/lost.CVsYUaFq_2golDk.webp?dpl=6a5d3631d1ce1d000817d694 1080w, /assets/lost.CVsYUaFq_1PjINn.webp?dpl=6a5d3631d1ce1d000817d694 1280w, /assets/lost.CVsYUaFq_zpuRP.webp?dpl=6a5d3631d1ce1d000817d694 1536w\" /></p>\n<p>Nifty, huh? If you\u2019re using that same Greasemonkey script you\u2019ll also notice\nthat the text above about standing in line to get a Wii at Target is an event\nthat you can add to your calendar:</p>\n<p><img alt=\"This image has been lost to the sands of time\" loading=\"lazy\" width=\"1536\" height=\"1024\" src=\"https://tylerbutler.com/assets/lost.CVsYUaFq_zpuRP.webp?dpl=6a5d3631d1ce1d000817d694\" srcset=\"/assets/lost.CVsYUaFq_1FUr7N.webp?dpl=6a5d3631d1ce1d000817d694 640w, /assets/lost.CVsYUaFq_1N0dCU.webp?dpl=6a5d3631d1ce1d000817d694 750w, /assets/lost.CVsYUaFq_2UVpy.webp?dpl=6a5d3631d1ce1d000817d694 828w, /assets/lost.CVsYUaFq_2golDk.webp?dpl=6a5d3631d1ce1d000817d694 1080w, /assets/lost.CVsYUaFq_1PjINn.webp?dpl=6a5d3631d1ce1d000817d694 1280w, /assets/lost.CVsYUaFq_zpuRP.webp?dpl=6a5d3631d1ce1d000817d694 1536w\" /></p>\n<p>All of the data in the sentence I wrote is wrapped in some appropriate tags\nthat a compatible client reader (Firefox + Greasemonkey script in this case)\ncan parse out and act on. Plus, because it\u2019s well-known markup, there\u2019s a nice\nbackwards compatibility story for downlevel clients. For example, looking at\nthis page in IE is pretty boring, but stuff lights up when you use Firefox and\nthe script.</p>\n<p>Anyway, this all goes to show that there is a lot of opportunity for\nMicroformats to take off if there\u2019s better client support.\u00a0Just\u00a0consider\u00a0RSS -\nnow browsers inherently know how to read some markup in the header of the page\nand automatically detect RSS feeds on a page. It\u2019s not hard to image a time\nwhen Firefox will include the functionality currently offered through the\nGreasemonkey script natively. Plus there\u2019s some great tools already out there\nfor dealing with this type of data. Just check out this link to Technorati,\nwhich will <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Ftechnorati.com%2Fcontacts%2Fhttp%3A%2F%2Fwww.tylerbutler.com%2Fgeekdom%2FPages%2FPatrickHasaWii%2Cor%2CExperimentingwithMicroformats.aspx\">automatically parse out the hCards on this page</a>\u00a0and let you\ndownload them as vCards.</p>\n<p>I could also write some code that runs on the server and outputs special\nJavaScript and CSS when Microformats are encountered. Then no client side\nsupport would be necesarry. I\u2019ll be looking into this in the next few weeks.\nAnyway, I think there\u2019s a lot of potential to include Microformats in more\nplaces on my site, so keep your eyes peeled.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245951.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2006-12-12T08:45:00+00:00",
            "attachments": []
        },
        {
            "id": "https://tylerbutler.com/problem-finders-vs-problem-solvers/",
            "url": "http://feed.tylerbutler.com/link/18607/17245952/problem-finders-vs-problem-solvers",
            "title": "Problem Finders vs. Problem Solvers",
            "content_html": "<p>Many comedians begin their routine by stating the obvious differences between\ntwo groups of people. Perhaps it\u2019s men and women, or white and black, or\nwhatever. We humans <em>love</em> to categorize other people into groups. Pessimists\nand optimists, liberals and conservatives, the list goes on and on. Well, I\u2019m\nnot going to buck tradition that much; I am convinced that there are two basic\ntypes of people as well: problem <em>solvers</em> and problem <em>finders.</em></p>\n<p>The definition for these two groups is fairly self-evident. A problem finder\nis someone who excels at finding problems. That\u2019s a pretty large scope, to be\nsure. These are the types of people that are never satisfied. They find\nsomething to complain about in every situation. When you ask how they\u2019re\ndoing, they say things like, \u201cWell, I could be better.\u201d They are experts in\nidentifying the nearly-invisible cracks in the glass, the slight imbalance in\nthe supposedly symmetrical piece of machinery.</p>\n<p>You may be saying to yourself that this type of person is a pessimist, but I\nmaintain that an important distinction between a problem finder and a\npessimist is that a problem finder can be very specific about exactly <em>what</em>\nin a given situation or event is bad, while a pessimist is less able to do\nthis in general. A pessimist can tell you how bad he thinks it is, but getting\ndown to specifics is difficult because it\u2019s not about specific issues or\nproblems he sees, it\u2019s about the way he perceives his environment and the\nevents surrounding him. Hope that distinction makes sense.</p>\n<p>Obviously a problem solver is someone who solves problems. These aren\u2019t\nparticularly complex definitions, are they? This is the type of person\nthat is constantly trying to save the world. You have a problem? They have a\nsolution! Well, they believe they do. There is nothing they can\u2019t help you\nwith. If they\u2019re self-aware enough to realize they <em>don\u2019t</em> know the answer,\nthen they\u2019ll happily redirect you to someone who does. After all, they have a\npathological need to solve your problem, whether that\u2019s what you want or not.\nSometimes, you just want someone to listen to your story about your horrible\nexperience or situation, and simply agree with you. \u201cYeah, that <em>does</em> suck!\u201d\n\u201cYeah, that pisses me off too!\u201d You\u2019re looking for a friendly acknowledgement\nof the suckiness of your situation, and it can be frustrating when a problem\nsolver patronizes you by offering what they think is a simple solution for\nyour problem. \u201cWhat are you complaining about? Take action!\u201d they say.</p>\n<p>I think it\u2019s clear that everyone has a bit of both of these quirks in their\npersonalities. We all are proactive about solving problems on some occasions,\nand sometimes we\u2019re very good about finding the problems, the holes, the\ncracks. However, since I am an engineer, and I work with engineers, I have\nconcluded that engineers are predominately problem solvers.</p>\n<p>This makes sense. What is engineering? At its core, it\u2019s finding elegant\nsolutions to complex problems while maintaining an awareness of the needs and\nconstraints of the solution (such as cost). It\u2019s problem solving, pure and\nsimple, so it is not unusual that good engineers are good problem solvers.\nHowever, I maintain that problem finders are equally, if not more important\nthan problem solvers, if only because good ones are harder to find.</p>\n<p>I\u00a0know plenty of engineers who can solve problems in fantastic, elegant ways,\nbut can\u2019t easily identify the problems in their solutions, or even potential\nproblems outside of the original problem description that was given to them.\nThey need someone who can do that for them. The best teams at Microsoft in my\nopinion have a cynic, a guy who takes everything and tears it apart. It\u2019s\n<em>never</em> good enough. And the best problem solvers I know are able to take that\ninformation and make a better solution.</p>\n<p>So I guess my conclusion is that it\u2019s OK if you\u2019re not the best problem solver\nor problem finder. Just <em>know</em> that you aren\u2019t. Self-awareness is the key, you\nknow. In my own case, I have realized that I am a much better problem\nfinder. I\u2019m a natural cynic, and a bit of a perfectionist. And hey, I\u2019m OK\nwith that.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245952.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2006-12-07T14:35:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245952.gif"
        },
        {
            "id": "https://tylerbutler.com/building-tylerbutlercom-on-moss/",
            "url": "http://feed.tylerbutler.com/link/18607/17245953/building-tylerbutlercom-on-moss",
            "title": "Building tylerbutler.com on MOSS",
            "content_html": "<p>It was a bit of a toss-up whether to categorize this post under Geekdom,\nDaily Dose of Tyler, or Work, since this project certainly has a bit\nof all three. However, since I haven\u2019t gotten around to implementing arbitrary\ntagging on my site, I can only pick one, so I went with work. Anyway, as you\ncan see from visiting this site, I am in the process of transitioning things\nfrom my old <a href=\"https://www.geeklog.net/\">GeekLog</a>-based system to MOSS 2007. (A quick note on GeekLog -\nI love it. It\u2019s been great for me, it has a lot of great features, it\u2019s\ncustomizable, highly recommended! The only reason I\u2019m moving is because I\nhelped build MOSS, and I like it a lot.)</p>\n<p>Anyway, you can follow my progress by checking out <a href=\"https://learn.microsoft.com/en-us/archive/blogs/ecm/building-tylerbutler-com-part-1-planning-and-basic-branding\">my first post</a> on this\nprocess at the <a href=\"https://blogs.msdn.com/ecm\">Enterprise Content Management blog</a>. There will be several\nmore posts over there, and I am working on an in-depth piece-by-piece feature\nbreakdown for the site that I\u2019ll put up here at some point. Gotta get the site\nfinished first, though.</p>\n<p>This is a bit of a sandbox right now, as I am still actively working on the\nimplementation of the site. It might go up and down, and things will probably\nlook wrong. Feel free to send me bug reports if you find something that\nlooks wrong.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245953.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2006-11-04T10:15:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245953.gif"
        },
        {
            "id": "https://tylerbutler.com/content-deployment/",
            "url": "http://feed.tylerbutler.com/link/18607/17245954/content-deployment",
            "title": "Content Deployment",
            "content_html": "<p>Yesterday I posted an <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fblogs.msdn.com%2Fsharepoint%2Farchive%2F2006%2F05%2F02%2F588140.aspx\">entry</a>\non the Microsoft SharePoint team blog about Content Deployment, a feature I work on. Take a look if you\u2019re interested\u2026 This is the kind of thing that\u2019s causing me never to update this site\u2026</p><img src=\"http://feed.tylerbutler.com/link/18607/17245954.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2006-05-03T08:38:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245954.gif"
        },
        {
            "id": "https://tylerbutler.com/xbox-360-r0x0rs/",
            "url": "http://feed.tylerbutler.com/link/18607/17245955/xbox-360-r0x0rs",
            "title": "XBox 360 R0x0rs",
            "content_html": "<p>Yes, I have entered the ranks of the 1337 gamers. I finally gave into the urge\nand paid $75 premium to get an XBox 360 off of eBay. Yeah, I could have waited\neven longer, but frankly, I was sick of the constant monitoring of the\n<a href=\"http://untitlednet.com/\">unt1tled XBox tracker</a>, the random phone calls to friends to see if they\ncould pick me up one in their area, etc. Anyway, the unit arrived Saturday\nmorning, so I immediately plugged it in and wasted an entire day playing with\nit.</p>\n<p>So what do I think of it? Well, in a word, it is <strong>awesome</strong>. It outputs\nbeautifully on my 480p HDTV (alas, I don\u2019t think my TV supports 720p \u2014 time to\nbuy a 73\u201d) in glorious widescreen deliciousness, and it was brain-dead easy to\nget logged on to XBox Live. Once there, I downloaded a bunch of Arcade game\ndemos, including the utterly fantastic <a href=\"http://www.xbox.com/en-US/games/g/geometrywarsevolvedlivearcadexbox360/default.htm\">Geometry Wars</a>, which I bought for\n400 Microsoft Points ($5) within 20 minutes of playing. There is so much\nawesomeness in this sexy little machine that it is tough to write it all down.\nBut there are a couple of areas that really stand out, so I thought I\u2019d write\na little about them.</p>\n<h2><a href=\"https://tylerbutler.com#achievements\">Achievements</a></h2>\n<p>The concept is so simple \u2014 set mini goals within games and award players\npoints when they achieve these goals. Then centralize everything on a website\nso players can compare their results to all players globally, or just amongst\ntheir friends. This is what the XBox team has done with Achievements. An\nexample of an achievement in Geometry Wars is the Pacifism Achievement, which\nis awarded for playing the first 60 seconds of the game without shooting\n(pretty tough when you first start out). Another is awarded when you earn\n100,000 points, and still another when you make it all the way to 100,000\npoints without dying once. You get the idea. Because achievements are super-\npublic \u2014 you can go <a href=\"http://live.xbox.com/en-US/profile/profile.aspx\">visit my profile</a> on xbox.com and see all the\nachievements I\u2019ve attained for a certain game \u2014 it adds a huge competitive\nedge to the games. For example, because I can compare my achievements with my\nfriends, I am more apt to keep playing so that I can keep my edge over other\nplayers. It also adds extra incentive to purchase full versions of games,\nsince you can\u2019t earn achievements in demos.</p>\n<h2><a href=\"https://tylerbutler.com#demos\">Demos</a></h2>\n<p>And speaking of demos \u2014 the online nature of XBox Live allows publishers to\nput up downloadable game demos in the XBox Live Marketplace. So if you have\nthe hard drive, you can download demos of games such as Condemned, Fight\nNight, Full Auto, etc. before you buy them. It\u2019s great \u2014 but unfortunately the\ndemos are very large (nearly 600 MB for the Condemned demo), and there is no\nway to <strong>a)</strong> queue up multiple downloads and <strong>b)</strong> download in the\nbackground. This actually really sucks \u2014 it means that while you\u2019re\ndownloading a demo, or any other type of content, you can\u2019t do anything else\non your 360. The only silver lining is that downloads are resumable, so if you\nget bored downloading something and want to get in another round of Geometry\nWars, you can cancel it and resume it later. You\u2019d think with 3 cores on the\nCPU, they could spawn a background thread to handle downloads in the\nbackground, but whatever. Its still freakin\u2019 cool.</p>\n<h2><a href=\"https://tylerbutler.com#media-center\">Media Center</a></h2>\n<p>The original XBox had a Media Center extender that you could use with your\nMedia Center 2005 PC (I\u2019m ignoring the hacks you could use to get XBMC or\nLinux on there). Unfortunately, there were two core faults \u2014 it required a\ndisc to be inserted into the XBox, and it was pretty low quality because all\nthe graphic processing had to be done on the Media Center PC and then\ntransmitted through the network. Plus the XBox couldn\u2019t be turned on and of\nremotely (the 360 does this <strong>beautifully</strong>). In short, I bought it and did\nnot like it <strong>at all</strong>. The 360 changes that. It runs the media center app\nnatively, and connects up to your Media Center just to start streaming the\nvideo/music/pictures. I think all the graphics processing is done on the 360\nitself, so it just looks better and is more responsive. Plus, it uses the same\nremote as a typical media center remote, so you can move your large, loud\nMedia Center PC (which is what you wind up with when you build your own on a\nbudget as I did) into some dark corner of your apartment and use the 360 as\nyour sole media center. <strong>Trust me \u2014 words cannot describe how freakin\u2019\nawesome this is.</strong></p>\n<p>Well, there\u2019s a ton more to say about this stunning piece of hardware/software\nengineering, but I am already suffering Geometry Wars withdrawal, so I\u2019d\nbetter get back to it. I have achievements to earn, after all. Look me up\nif you\u2019re on XBox Live \u2014 my Gamertag is <a href=\"http://live.xbox.com/en-US/profile/profile.aspx?pp=0&amp;GamerTag=Diametrix\">Diametrix</a>.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245955.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2006-02-07T12:31:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245955.gif"
        },
        {
            "id": "https://tylerbutler.com/giving-thanks/",
            "url": "http://feed.tylerbutler.com/link/18607/17245956/giving-thanks",
            "title": "Giving Thanks",
            "content_html": "<p>Thanksgiving is a bit of a non-holiday to me. The problem is that it comes to\nclose to Christmas. Heck, I started hearing Christmas music in the grocery\nstore the week before Thanksgiving. What\u2019s up with that? Anyway, this makes\nthe third year that I haven\u2019t done anything for the holiday. I got invited a\nfew places this year, but frankly, I wasn\u2019t in the mood. I felt like I needed\nsome serious alone time (which is weird, because I am alone most of the time\nanyway), and I have definitely gotten it this weekend. But I realized that a\nlot of the posts \u2014 heck, all of the posts \u2014 I\u2019ve made today have been pretty\nnegative, so I guess it\u2019s time to be positive and post some of the things I am\nthankful for. This is a Thanksgiving tradition, I guess, but I was reminded to\ndo it after I read <a href=\"https://marcoandkristin.blogspot.com/2005/11/my-favourite-things.html\">Kristin\u2019s post about it</a> on <a href=\"https://marcoandkristin.blogspot.com/\">her and her husband\u2019s\nblog</a>. Thanks for the reminder Kristin. (I also read about her <a href=\"https://marcoandkristin.blogspot.com/2005/11/well-it-is-sunday-night-and-i-felt.html\">baking\npeanut butter cookies</a> for Marco. Lucky guy, that Marco.) Anyway, here\ngoes:</p>\n<ul>\n<li><strong>Friends</strong>: The transition to living in Puget Sound hasn\u2019t been easy, but it would have been harder if I didn\u2019t have some awesome friends that make an effort to keep in touch, come to visit when they can, and generally do their part to keep me in good spirits.</li>\n<li><strong>A good job</strong>: I complain a bit about my job, but I am thankful for it. Relative financial stability is a wonderful thing, and I know I\u2019m in the right line of work for now.</li>\n<li><strong>My desire to continue learning and improving myself</strong>: Not to toot my own horn, but I am thankful and proud that even though I am out of school and am a working stiff now, I continue to try and learn new things and improve myself. It\u2019s not just the learning, either, but also the physical stuff I am doing for my body and self. Losing weight has been tough, and two years in braces won\u2019t be easy (I start the orthodontic journey January 6th, wish me luck), but I am thankful I have a positive attitude about it, and am proud of myself for doing these things instead of just pushing them aside or to the back of my mind.</li>\n<li><strong>Music</strong>: I guess this is a little over-indulgent, but I am thankful for music. Both music I listen to and music I write/perform. It\u2019s such an important part of my life \u2014 I don\u2019t know where I\u2019d be without it. I have a hard time remembering what life was like without an iPod these days.</li>\n</ul>\n<p>I guess it\u2019s kind of short, but it\u2019s my list.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245956.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2005-11-27T07:27:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245956.gif"
        },
        {
            "id": "https://tylerbutler.com/being-sick-sucks/",
            "url": "http://feed.tylerbutler.com/link/18607/17245957/being-sick-sucks",
            "title": "Being Sick Sucks",
            "content_html": "<p>Guh. I hate being sick. And of course it has to hit me during my four-day\nThanksgiving weekend. To make matters worse, today is the <strong>only</strong> day this\nentire weekend that has been sunny. I\u2019ll probably force myself to hobble\noutside at some point to get some vitamin E, though. You can\u2019t waste a day\nlike this, considering what the weather\u2019s been like out here lately.</p>\n<p>Anyway, I feel like I\u2019ve got malaria. I know it isn\u2019t (if it was, I\u2019d still be\nin bed), but the nausea and fever/chills reminds me too much of it. Oh well,\neven if it is, I\u2019ve survived it before, so I can do it again. The only\nthing that would make this suck less is if my mom was here. She would serve me\nsoup and Sprite until I felt better. Mmmm\u2026 Luckily mom and dad\u2019ll be\nback in the US this Christmas, so maybe I can get sick again while they\u2019re\nhere. Gotta live it up while you can.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245957.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2005-11-27T07:14:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245957.gif"
        },
        {
            "id": "https://tylerbutler.com/new-music/",
            "url": "http://feed.tylerbutler.com/link/18607/17245958/new-music",
            "title": "New Music",
            "content_html": "<p>Since I\u2019ve moved out here to Seattle, I have discovered a ton of awesome new\nmusic. There are a ton of good local bands (Modest Mouse, Death Cab for Cutie,\nPresidents of the USA, and of course Pearl Jam\u2026), and several more great\nones from Portland (The Decemberists, for example). Plus thre is a great\nsupport for local bands and good music in general from the radio stations out\nhere, especially 107.7 The End. For all the complaining I do about Seattle,\nthe music scene is pretty good, and much more accessible than Chicago\u2019s (I do\nstill terribly miss 97.1 The Drive, though. Thank God for internet radio\nbroadcasting!)</p>\n<p>Anyway, it would take me forever to write individual reviews about all the\ngreat music I\u2019ve found, so I\u2019m just going to give brief synopsis of some of\nthe best new stuff I\u2019ve been listening to.</p>\n<h2><a href=\"https://tylerbutler.com#morningwood\"></a><a href=\"http://www.MorningwoodRocks.com\">Morningwood</a></h2>\n<p>The End has a new music show every weeknight, and I have heard some fantasic\nstuff on it, including this band. You can stream a couple of their songs\nonline from their website, <a href=\"https://www.morningwoodrocks.com/\">MorningwoodRocks.com</a> (<a href=\"https://www.morningwoodrocks.com/music.asp\">direct link to the\nmusic page here</a>). You have to listen to The Nth Degree - it\u2019s so awesome.\nReminds me a bit of The New Pornographers for some reason. It\u2019s very poppy,\nbut it works somehow without sounding too bubblegum. I was <strong>psyched</strong> when I\nfound out you can buy some of their stuff in the iTunes Music Store! When I\nplayed it for my friend Dan, he said, \u201cI want more Morningwood!\u201d I heartily\nconcur.</p>\n<h2><a href=\"https://tylerbutler.com#the-books\"></a><a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.rollingstone.com%2Fartist%2F_%2Fid%2F7292717\">The Books</a></h2>\n<p>This summer at Microsoft, while our intern population was quite high, I\nstarted a music-listening thing. We\u2019d get together in a conference room and\neveryone would play a song they thought no one else had heard. We only met a\nfew times, but I am definitely doing it again next year. This band was one\nthat a guy named Gilbert Bernstein brought in. Fantastic stuff. He played the\nsong \u201cTokyo\u201d for us, and it remains my favorite. Unfortunately, I can\u2019t find\nany of their stuff on iTunes, but Rolling Stone has some more info on them,\nand you can buy the discs from Amazon if you can\u2019t find it anywhere else. If\nyou want to have a listen beforehand, try Tokyo for starters. Stylistically\nit\u2019s pretty indicative of what you can expect from them. Good stuff.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245958.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2005-11-08T14:12:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245958.gif"
        },
        {
            "id": "https://tylerbutler.com/harsh-reality/",
            "url": "http://feed.tylerbutler.com/link/18607/17245959/harsh-reality",
            "title": "Harsh Reality",
            "content_html": "<p>When I told people I was moving out to Puget Sound earlier this year, a common\nreaction was, \u201cI hope you like rain.\u201d When I got here in late March, though,\nthe weather was beautiful, and it remained so until the last couple of weeks.\nI knew it was too good to be true. To get an idea of what I\u2019ll be dealing with\nfor the rest of the winter, look at what my <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.konfabulator.com%2F\">Konfabulator</a> weather widget\ntells me\u2026</p>\n<p><img alt=\"This image has been lost to the sands of time\" loading=\"lazy\" width=\"1536\" height=\"1024\" src=\"https://tylerbutler.com/assets/lost.CVsYUaFq_zpuRP.webp?dpl=6a5d3631d1ce1d000817d694\" srcset=\"/assets/lost.CVsYUaFq_1FUr7N.webp?dpl=6a5d3631d1ce1d000817d694 640w, /assets/lost.CVsYUaFq_1N0dCU.webp?dpl=6a5d3631d1ce1d000817d694 750w, /assets/lost.CVsYUaFq_2UVpy.webp?dpl=6a5d3631d1ce1d000817d694 828w, /assets/lost.CVsYUaFq_2golDk.webp?dpl=6a5d3631d1ce1d000817d694 1080w, /assets/lost.CVsYUaFq_1PjINn.webp?dpl=6a5d3631d1ce1d000817d694 1280w, /assets/lost.CVsYUaFq_zpuRP.webp?dpl=6a5d3631d1ce1d000817d694 1536w\" /></p>\n<p>Depressing\u2026</p><img src=\"http://feed.tylerbutler.com/link/18607/17245959.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2005-11-02T15:34:00+00:00",
            "attachments": []
        },
        {
            "id": "https://tylerbutler.com/nanowrimo-2005/",
            "url": "http://feed.tylerbutler.com/link/18607/17245960/nanowrimo-2005",
            "title": "NaNoWriMo 2005?",
            "content_html": "<p>November is nigh upon me, but I don\u2019t think I\u2019ll be able to fully participate\nin <a href=\"https://www.nanowrimo.org/\">NaNoWriMo</a> this year like <a href=\"https://tylerbutler.com/2004/11/tyler-a-novelist/\">I did last year</a>. Between the job\nand the working out, I\u2019m simply not going to have the time for a 50,000\nword novel this year. It really is a shame, since I had a couple of good\nideas. Oh well, store them up for the future.</p>\n<p>I am, however, considering trying to complete a short story during the month.\nI have a few ideas\u2026 They\u2019re listed below, along with some possible quotes\nfrom the story and some pros and cons about doing one. After you\u2019ve read the\ndescriptions, vote for your favorite on the left of the site\u2026</p>\n<h2><a href=\"https://tylerbutler.com#sex-drugs-and-polka\">Sex, Drugs, and Polka</a></h2>\n<p><strong>Description:</strong> A semi-autobiographical story about a guy who goes to\ncollege and deals with the overall college experience. He figures most of it\nout, but the fairer sex leaves him utterly confused \u2014 that is, until he meets\n<em>her</em>. (This makes it sound really cheesy \u2014 I don\u2019t think it will be once I\nget it written.)</p>\n<p><strong>Possible excerpts:</strong></p>\n<p>\u201cYears later he would think back in awe of the\nsquander in which he now lived \u2014 but at this very moment, it was home, and a\ngood one at that.\u201d</p>\n<p>\u201cHe had the fleeting thought that all men of his generation had. \u2018Am I gay?\u2019\u201d</p>\n<p>\u201cIn his heart he knew that what he really wanted was a meaningful relationship\nfilled with trust, sacrifice, and love, culminating in marriage and a slow\nride into the proverbial sunset of his later years with his beautiful bride;\nfor now, though, he\u2019d settle for a passionate make-out session in the corner\nwith some girl whose name he wouldn\u2019t remember tomorrow.\u201d</p>\n<p><strong>Pros:</strong> Will give me a chance to get some of my college experiences out on\npaper (with some fictional embellishments, of course) before middle-age sets\nin and I forget it all. Plus, would be a lot of fun for my friends to read\nsince they\u2019ll probably make appearances.</p>\n<p><strong>Cons:</strong> Far too much for a short story \u2014 I doubt I\u2019ll ever finish it once\nI start, because there\u2019s too much material to work with.</p>\n<h2><a href=\"https://tylerbutler.com#the-hill\">The Hill</a></h2>\n<p><strong>Description:</strong> A children\u2019s story about friendship. A boy grows up with a\nhill in his back yard, and when he grows older, a construction company buys\nthe property and threatens to flatten the hill, so the boy has to find a way\nto save it \u2014 or say goodbye.</p>\n<p><strong>Possible excerpts:</strong> Hmmm, I can\u2019t find them right now\u2026 I know they\u2019re\nsomewhere\u2026</p>\n<p><strong>Pros:</strong> I like to experiment with different styles (Mike\u2019s character in\n<a href=\"https://tylerbutler.com/tags/novel/\">Knot</a> was an experiment with anger and rage), so it would be interesting\nto try my hand at a children\u2019s story, with some simpler language and richer\ndescriptions. The presence of a non-talking character (the Hill) would allow\nme to forgo dialog and focus more on description (one of my weaker points, I\nthink).</p>\n<p><strong>Cons:</strong> Might be kind of boring, and difficult to prevent sounding cheesy\nor overly didactic. The core concept isn\u2019t very original either.</p>\n<h2><a href=\"https://tylerbutler.com#the-childrens-democracy\">The Children\u2019s Democracy</a></h2>\n<p>**Description: **A lonely suburban writer suffers writer\u2019s block until he\nstarts to observe a group of kids around his housing complex. He writes about\nhis observations about the way the children deal with each other socially and\npolitically.</p>\n<p><strong>Possible excerpts:</strong> Probably the same place <strong>The Hill</strong> excerpts are\u2026\nI\u2019ll put them in here when I locate them\u2026</p>\n<p><strong>Pros:</strong> Interesting concept to me, and I\u2019d get to alternate between\nanalytical essay-style writing, description, and dialog pretty easily with the\ncharacters.</p>\n<p><strong>Cons:</strong> Very little subject matter to use, since I don\u2019t have too much\ninteraction with kids. The idea is based on some run-ins I\u2019ve had with some of\nthe kids around my apartment complex, but I don\u2019t think I have nearly enough\nmaterial to keep this interesting.</p>\n<p>Have another plot idea you think I should write about? Let me know\u2026</p><img src=\"http://feed.tylerbutler.com/link/18607/17245960.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2005-10-17T10:39:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245960.gif"
        },
        {
            "id": "https://tylerbutler.com/java-memory-allocation/",
            "url": "http://feed.tylerbutler.com/link/18607/17245961/java-memory-allocation",
            "title": "Java Memory Allocation",
            "content_html": "<p>I saw this article linked over at Slashdot today and found it to be a very\ninteresting read. I\u2019ve had many debates with people that think that byte-\ncompiled languages like Java and C# just have inherent performance problems.\nOften they\u2019ll spout off some nonsense about how garbage collection is\ninefficient or something. Sure, <em>sometimes</em> it\u2019s better to have manual control\nover your memory allocation/deallocation, but this article makes a\nsurprisingly good case for why the perceived performance hits in dynamic\nmanagement don\u2019t even exist. A great read, especially if you don\u2019t know much\nabout how memory management works in the first place.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245961.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2005-10-10T08:00:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245961.gif"
        },
        {
            "id": "https://tylerbutler.com/operation-look-good-feel-good/",
            "url": "http://feed.tylerbutler.com/link/18607/17245962/operation-look-good-feel-good",
            "title": "Operation: Look Good, Feel Good",
            "content_html": "<p>One of the many benefits of working at <a href=\"http://www.microsoft.com\">Microsoft</a> is the relatively\nlittle-known weight management benefit. Essentially, the benefit pays for a\nlarge majority of a diet/weight loss/exercise program administered by the <a href=\"http://www.proclub.com/\">Pro\nClub</a>, the semi-official Microsoft sports club. I found out about it fairly\nsoon after I started, and I knew I wanted to get involved, but I didn\u2019t have\nthe time. Finally, about a month ago, I took the plunge and got things going.</p>\n<p>I\u2019ve been overweight for as long as I can remember, and though I\u2019ve been\nrelatively static the past few years in terms of weight gain, I\u2019ve known for\nawhile that I need to do something about it. Since I\u2019m making use of all the\nother Microsoft benefits (getting my teeth fixed, medical check-ups, etc) I\nfigured I might as well do everything.</p>\n<p>Anyway, I officially started on the diet last Thursday and the exercise the\nprevious day. This week I\u2019ve lost <strong>13.6 pounds.</strong> That\u2019s a lot, I know, but I\nshould put this in perspective. I work out 90 minutes 3 days a week with a\npersonal trainer, and 60 minutes 3 more days a week by myself. I bought a\nheart rate monitor and with the help of Jeremiah, my trainer, am learning how\nto do heart-rate-focused work-outs. But the big thing last week was the diet\u2026</p>\n<p>Basically I ate nothing but chicken, protein shakes, and a little peanut\nbutter. The dietitian called it \u2018detox\u2019 and she was right. I had withdrawal\nsymptoms including severe headaches and numbness in my hands and feet for the\nfirst 4-5 days. It seems like most of it has passed though, and fortunately\nthis week I get to add veggies back into my diet. I went out for a salad at\nlunch and it was quite possibly the best thing I\u2019ve ever had in my entire life\nafter 7 days of chicken and protein shakes. I also talked about my aversion to\nthe protein shakes (I had to drink 5 per day, so I was getting pretty sick of\nthem) with the dietician and she moved me to another diet without the shakes.</p>\n<p>I was having a lot of trouble keeping my calories up. I\u2019m supposed to eat\nbetween 1500 and 1600 a day, but last week I averaged ~1300. I was sluggish\nand mentally challenged the whole week, so I am eager to get my count back up\nso I can feel better while still losing the weight and eating better. I think\nI\u2019ll be a little happier now with the variety. Plus, with the veggies back and\nyogurt coming back next week, I should be good to go.</p>\n<p>I am pleased with the progress so far, but I do miss the freedom I exercised\npreviously when it came to food. As things go on, I\u2019ll be adding more food\ngroups back in, so I should be OK. The weirdest thing about the whole program\nis the counseling stuff. The counselor is awesome, and I only meet with here\nonce a month or so, but she gave me a business card that just said Sara\nS-----, Psychotherapy. That word just seems scary to me, especially since I\ndon\u2019t consider myself psychotic or even \u2018troubled\u2019 but whatever.</p>\n<p>Anyway, 1 week down, 19 left to go.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245962.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2005-10-06T00:35:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245962.gif"
        },
        {
            "id": "https://tylerbutler.com/celebrating-30-years-of-papua-new-guinean-independence/",
            "url": "http://feed.tylerbutler.com/link/18607/17245963/celebrating-30-years-of-papua-new-guinean-independence",
            "title": "Celebrating 30 Years of Papua New Guinean Independence",
            "content_html": "<p><a href=\"http://en.wikipedia.org/wiki/Papua_New_Guinea\">PNG</a> celebrated 30 years of independence on September 16, 2005. To\ncelebrate, I decorated my office at work, blew up some balloons, and served\n<a href=\"http://en.wikipedia.org/wiki/Timtam\">Tim Tams</a>. Pictures are\u00a0in the PNG Independence 2005 Gallery.\u00a0A few\nof my co-workers joined in the celebration by putting up balloons and\nlistening to PNG music in my office. Not a bad way to waste time on a slow\nFriday afternoon.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245963.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2005-09-19T03:52:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245963.gif"
        },
        {
            "id": "https://tylerbutler.com/thunder-thunder-thunder-thundercats-ho/",
            "url": "http://feed.tylerbutler.com/link/18607/17245964/thunder-thunder-thunder-thundercats-ho",
            "title": "Thunder, Thunder, Thunder, Thundercats - HO!!!",
            "content_html": "<p>I have gotten into a pretty nostalgic mood the last few years. I\u2019ve started\nre-watching a lot of the old cartoons I used to watch on static-ridden PAL\ntapes when I was a kid. One of my all-time favorite shows was Thundercats, and\nit seems that you can <strong>finally</strong> get <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.amazon.com%2Fgp%2Fproduct%2FB0009IW8AI%2Fref%3Das_li_ss_tl%3Fie%3DUTF8%26tag%3Dtylerbutlerco-20%26linkCode%3Das2%26camp%3D1789%26creative%3D390957%26creativeASIN%3DB0009IW8AI\">the first season on DVD</a>. All I can\nsay is, \u201cIt\u2019s about time!\u201d And with my new job, I might even be able to afford\nthem!</p><img src=\"http://feed.tylerbutler.com/link/18607/17245964.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2005-08-22T13:26:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245964.gif"
        },
        {
            "id": "https://tylerbutler.com/most-recent-songs-in-itunes/",
            "url": "http://feed.tylerbutler.com/link/18607/17245965/most-recent-songs-in-itunes",
            "title": "Most Recent Songs in iTunes",
            "content_html": "<p>I decided this morning that I was going to try and learn XSLT today. I think I\nsucceeded somewhat. I decided that my tutorial application would be an iTunes\nXML feed transformed into a page on my site with the most recent songs I\u2019ve\nlistened to in iTunes. I created my own iTunes XML schema (a really really\nsimple one), though in retropect, I probably should have just tried to use the\nbuilt-in iTunes XML stuff (though I don\u2019t know if this capability is exposed\nin the SDK). Anyway, once I had the XML (created by my program in C# and the\niTunes COM SDK), I started fooling with the XSLT. It still needs a lot of\nstyle work, but I managed to get it formatting the data the right way and\neverything.</p>\n<p>The album art is actually taken directly from the metadata on the audio files\nin my collection, not from another source like Amazon. I think this is a\nbetter solution because I have some crazy stuff that Amazon simply doesn\u2019t\nknow about. Besides, I spent a long time trying to clean up the album art in\nmy music collection, and though there are still a lot of gaps, I might as well\nget some reward for all my hard work.</p>\n<p>As far as the XSLT is concerned, it\u2019s pretty easy stuff, I guess, but there\nare a lot of \u201cgotchas.\u201d For example, I couldn\u2019t get things to render in\nFirefox until I added the \"\" line. It was working fine in IE and I couldn\u2019t\nfigure out what the heck was wrong. Plus, if you\u2019re not careful about dividing\nyour templates for different elements up properly, things come out pretty\nwierd. Also, my Apache web server isn\u2019t configured right, I guess, because it\nmesses up the MIME types on *.xslt files, so for awhile, Firefox complained it\ncouldn\u2019t attach the stylesheet. Rather than fool with Apache, I just changed\nthe extension of the stylesheet. How\u2019s that for lazy?</p>\n<p>Anyway, here\u2019s the xml file with attached stylesheet: <a href=\"https://tylerbutler.com/SiteCollectionDocuments/Post%20Content/nowplaying.xml\">nowplaying.xml</a>.\nObviously, you\u2019ll need at least IE 6.0 or Firefox (or another XSLT-ready\nbrowser)to see it right. And here\u2019s the <a href=\"https://tylerbutler.com/SiteCollectionDocuments/Post%20Content/fullview.xsl\">XSLT itself</a>. Like I said, I want\nto do a lot more styling, but I have been doing this stuff all day, so I\u2019m\ncalling it quits for now.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245965.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2005-08-22T06:19:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245965.gif"
        },
        {
            "id": "https://tylerbutler.com/i-have-no-friends/",
            "url": "http://feed.tylerbutler.com/link/18607/17245966/i-have-no-friends",
            "title": "I Have No Friends",
            "content_html": "<p><a href=\"https://www.netflix.com/\">Netflix </a>has this (relatively) new Friends feature. When I went there the\nother day, it kindly reminded me, with a happy-looking purple box that I have\nno friends yet. Totally brightened my day. It would have been worse, but at\nleast there was a link there where I could get a friend if I needed one. Too\nbad life\u2019s not that easy. Anyway, add me to your friends\u2019 list if you have\nNetflix.</p>\n<p><em>Lest some of you get the wrong idea\u2026 All of the above is mostly sarcastic.\nI have lots of friends. I just thought the fact that Netflix would blatantly\nsay \u201cNo friends yet\u201d on their website was funny.</em></p><img src=\"http://feed.tylerbutler.com/link/18607/17245966.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2005-08-14T05:10:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245966.gif"
        },
        {
            "id": "https://tylerbutler.com/wikipedia-in-tok-pisin/",
            "url": "http://feed.tylerbutler.com/link/18607/17245967/wikipedia-in-tok-pisin",
            "title": "Wikipedia in Tok Pisin",
            "content_html": "<p>While visiting Wikipedia this morning, I saw a link to the <a href=\"https://tpi.wikipedia.org/wiki/Main_Page\">Tok Pisin\nversion.</a> There doesn\u2019t seems to be a whole lot there, and the spelling and\ngrammer strikes me as being quite bad, but even so, I think it\u2019s pretty cool.\nI might need to start contributing some to keep my Pidgin skills up to par.\nAlso of interest: the <a href=\"http://en.wikipedia.org/wiki/Tok_Pisin\">main Wikipedia article on Tok Pisin</a> and <a href=\"https://en.wikibooks.org/wiki/Tok_Pisin\">an entry\non Wikibooks</a> with more about the grammatical structure. Of course, nothing\nbeats hearing it spoken for real, so give me a call and listen to the real\ndeal!</p><img src=\"http://feed.tylerbutler.com/link/18607/17245967.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2005-07-05T00:09:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245967.gif"
        },
        {
            "id": "https://tylerbutler.com/bad-product-designs/",
            "url": "http://feed.tylerbutler.com/link/18607/17245968/bad-product-designs",
            "title": "Bad Product Designs",
            "content_html": "<p>As a software designer, I ask myself these questions everyday: \u201cWill a user be\nable to figure this out? Is this intuitive?\u201d Someone at Microsoft shared this\nlink with me. It\u2019s about bad designs of physical things, but the principles can be applied\nto other design work. I don\u2019t agree with everything there, but it\u2019s a good\nread nonetheless.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245968.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2005-06-29T01:21:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245968.gif"
        },
        {
            "id": "https://tylerbutler.com/irony-of-ironies/",
            "url": "http://feed.tylerbutler.com/link/18607/17245969/irony-of-ironies",
            "title": "Irony of Ironies",
            "content_html": "<p>One of my peeves is having to register for websites just to <em>view</em> their\ncontent. You\u2019ll notice that while you do have to sign up for my site to post\ncomments (the reasoning is in <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.nytimes.com%2F2005%2F03%2F15%2Fnyregion%2F15annoyances.html\">this post</a>), my content is always visible to\neveryone.</p>\n<p>That\u2019s one reason I love <a href=\"http://www.bugmenot.com\">BugMeNot.com</a>, a website that stores usernames\nand passwords that can be used to access these types of sites without\nregistering yourself. There\u2019s even a <a href=\"https://roachfiend.com/archives/2005/02/07/bugmenot/\">nifty Firefox extension</a> that will\nautomatically fill in forms with BugMeNot data for you. Do you need any more\nreason to get Firefox?</p>\n<p>Anyway, there\u2019s <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.nytimes.com%2F2005%2F03%2F15%2Fnyregion%2F15annoyances.html\">a story at the NYTimes site</a> about \u201clife\u2019s little\nannoyances,\u201d and it mentions having to register for websites. But guess what,\nin order to read New York Times articles online, you have to register. Gosh,\nthat\u2019s dumb. Perfect time to try out BugMeNot.com! The article itself is\ninteresting, though, and has some good ideas about how to stick it to the junk\nmail advertisers. I think I\u2019m going to start doing some of the stuff in there,\nlike stuffing Business reply envelopes with heavy paper and sending it back\njust to make the company pay for the postage. Take <strong>that</strong> suckers!</p><img src=\"http://feed.tylerbutler.com/link/18607/17245969.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2005-06-18T02:24:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245969.gif"
        },
        {
            "id": "https://tylerbutler.com/interview-with-a-search-engine/",
            "url": "http://feed.tylerbutler.com/link/18607/17245970/interview-with-a-search-engine",
            "title": "Interview with a Search Engine",
            "content_html": "<p><a href=\"https://www.the-underdogs.org/game.php?id=330\">Dr. Sbaitso</a> was a psychiatrist program that I first played with as part\nof my Sound Blaster 16 (my first sound card!) Friends and I actually made some\nprank phone calls using it. Hysterical! Anyway, here is a funny article\noutlining a \u201cconversation\u201d with the Jeeves search engine of Ask.com. Prepare\nto laugh.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245970.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2005-06-16T06:41:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245970.gif"
        },
        {
            "id": "https://tylerbutler.com/what-have-you-done-for-your-country-lately/",
            "url": "http://feed.tylerbutler.com/link/18607/17245971/what-have-you-done-for-your-country-lately",
            "title": "What Have You Done for Your Country Lately?",
            "content_html": "<p>I hate a lot of things. There\u2019s a lot of things that really bug me; that\nreally get under my skin. But the one thing I am absolutely <strong><em>sick and\ntired</em></strong> of hearing about is Senators and Congressman tacking little\nprovisions onto other relatively benign bills in order to get them passed.\nThis <strong><em>really</em></strong> pisses me off, because it\u2019s blatently dishonest!</p>\n<p>The latest example of this is the Real ID Act, written by one Congressman <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.house.gov%2Fsensenbrenner%2Findex.htm\">F.\nJames Sensenbrenner, Jr. </a>(R), of Wisconsin. This act would mandate\nnational ID cards for all citizens that are machine readable, with a lot of\npersonal information going into some big government controlled database. It\u2019s\nbeing tacked onto a bill giving our troops in Iraq further governmental\nfinancial support. Now, what does a national ID card system have to do with\npassing funding requests for our troops in Iraq? <strong><em>Nothing!</em></strong></p>\n<p>This is being voted on <strong>tomorrow</strong>. Here\u2019s an email from my good friend\nPatrick Wagstrom with a little more information about it.</p>\n<blockquote>\n<p>Hey,</p>\n</blockquote>\n<blockquote>\n<p>So as part of the \u201cemergency\u201d funding bill for the troops, Sen Stensenbrenner\nof Wisconsin got the Real ID bill attached, and it passed the house. The\nsenate votes on it this Tuesday (TOMORROW), and Bush will certainly sign the\nbill if nothing happens.</p>\n</blockquote>\n<blockquote>\n<p>Here\u2019s a brief overview of what\u2019s going on:</p>\n</blockquote>\n<blockquote>\n<p>Real ID basically mandates a national ID card. It requires that all state\ndrivers licenses have a uniform set of data, including biometric data and that\nit be readable by a smart card and 2d barcode reader. In addition, this\ninformation will be forwarded to a federal government database of individuals.</p>\n</blockquote>\n<blockquote>\n<p>What\u2019s so bad about all this? After all, we don\u2019t have any privacy left\nanyway. Well, the issue is that your information in this centralized database\nbecomes a requisite for all sorts of things, bank accounts, plane tickets,\nsocial security, etc. Furthermore, it\u2019s a centralized clearing house for the\nthe government to spy/black list it\u2019s citizens. This could very realistically\nturn into a massive new form of the no-fly list where individuals will not\nknow why they\u2019ve been flagged. We could have thousands of second class\ncitizens who have no hopes of a better life because they fit a profile. What\u2019s\nworse, it could happen to you (nothing like fear mongering to make a point).</p>\n</blockquote>\n<blockquote>\n<p>The bill has lots of other nasty provisions that do things like take away\nhabeus corpus for non-citizens and SUSPECTED terrorists (technically leeching\nsomeone\u2019s wifi access is terrorism as it\u2019s unauthorized computer access which\nis classified as computer terrorism). The fact that this was attached to a\nspending authorization for the troops is horrible and it <em>MUST</em> be stopped.\nCall your senators and let them know that you don\u2019t support this sort of\npiggybacking and that the government needs to allow open and public debate on\nthis issue. It\u2019s too important to be piggybacked and rammed through in this\nmethod.</p>\n<p>\u2014Patrick</p>\n</blockquote>\n<p>I want to reiterate that this is being voted on tomorrow! This means that if\nyou want to speakup you need to do so now. There\u2019s a website that you can use\nto contact your seantor(s). <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.unrealid.com\">http://www.UnRealID.com</a>. <strong>[Note: The site\nseems to be having problems right now. I tried to submit my fax but I got an\nerror. If it doesn\u2019t come back up, you might have to call your Senator.]</strong>\nPlease take the time to speak up about this if you\u2019re even half as irate as I\nam. At the very least, even if you would support the Real ID Act, at least\ntell your Senator(s) that they should <strong>read</strong> a bill before passing it, just\nto make sure shenanigans like this don\u2019t happen.</p>\n<p>Oh, and if you\u2019re interested, here\u2019s what I wrote to the Washington State\nSenators.</p>\n<blockquote>\n<p>Good morning Senators Murray and Cantwell,</p>\n</blockquote>\n<blockquote>\n<p>I am writing to voice my opposition of the Real ID Act, which is being voted\non by the Senate on Tuesday, May 10. First of all, I feel that this Act is the\nfirst step leading to a national ID card system, not unlike that of Soviet\nRussia, communist China, and Vietnam. Frankly, if I wanted to live in China, I\nwould move there. I would like to think that here in the US we support our\ncitizens\u2019 right to privacy.</p>\n</blockquote>\n<blockquote>\n<p>Second of all, because these cards would be the same throughout all 50 states,\nand be machine readable, there is nothing preventing companies and individuals\nfrom the private sector from reading the data on these cards and selling\ncitizens\u2019 personal information to the highest bidder.</p>\n</blockquote>\n<blockquote>\n<p>Thirdly, there is no proof that ID documents help prevent or deter terrorism.\nAn ID document says nothing about evil intent. Forcing our citizens to\ndocument themselves is NOT a deterrant to terrorism; rather, it is a VICTORY\nfor terrorists!</p>\n</blockquote>\n<blockquote>\n<p>Finally, and most importantly, this Act has been tacked on to another bill,\nand has not been discussed or debated on the Senate floor. I believe that as\nSenators, it is your responsibility to read and understand all bills before\nyou, and make an informed decision. The fact that the Real ID Act is\npiggybacking on another bill seems to imply that the author did not feel it\ncould pass on its own merits. Please read and understand the Real ID Act in\nits entirety, and consider the ramifications of passing this bill.</p>\n</blockquote>\n<blockquote>\n<p>Sincerely,<br />\nTyler W. Butler</p>\n</blockquote><img src=\"http://feed.tylerbutler.com/link/18607/17245971.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2005-05-10T00:44:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245971.gif"
        },
        {
            "id": "https://tylerbutler.com/the-history-of-the-gui/",
            "url": "http://feed.tylerbutler.com/link/18607/17245972/the-history-of-the-gui",
            "title": "The History of the GUI",
            "content_html": "<p>I really enjoyed <a href=\"https://arstechnica.com/articles/paedia/gui.ars\">this article</a>, though it could have gone further in depth\nabout some of the advances made in the 90\u2019s. The 80\u2019s coverage was pretty\ngood, and the history of PARC and even before was excellent, but it abruptly\nended with Windows 95 and OSX, and left out a lot of the *nix GUI\n\u201cexperiments\u201d from the mid-90\u2019s. It really made me want to learn more,\nespecially about NeXT and BeOS (which I have actually used, believe it or\nnot!) and their history. Thank God for <a href=\"https://www.wikipedia.org\">Wikipedia</a>! Oh, and there\u2019s also a\ndecent screenshot archive at\n<a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.aci.com.pl%2Fmwichary%2Fguidebook%2Finterfaces\">http://www.aci.com.pl/mwichary/guidebook/interfaces</a>.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245972.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2005-05-08T11:52:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245972.gif"
        },
        {
            "id": "https://tylerbutler.com/how-lightsabers-work/",
            "url": "http://feed.tylerbutler.com/link/18607/17245973/how-lightsabers-work",
            "title": "How Lightsabers Work",
            "content_html": "<p>As if we needed any more proof that lightsabers are cool, HowStuffWorks.com\nhas a story explaining <a href=\"https://www.howstuffworks.com/lightsaber.htm\">how lightsabers work</a>. It is <strong>hilarious</strong>, and\nfrighteningly informative, and made my entire day at the office bearable. Here\nare some choice quotes from the article:</p>\n<blockquote>\n<p>\u2026be sure to handle any active lightsaber with extreme care until you are\ncompletely familiar with its feel and handling.</p>\n</blockquote>\n<blockquote>\n<p>By using the Force, the wielder can anticipate the path of the blaster bolt\nand align the blade with that path prior to the bolt\u2019s arrival. Using normal\nvisual tracking to accomplish the same effect can be far more difficult.</p>\n</blockquote>\n<blockquote>\n<p>The risk of personal injury is much higher with a double-bladed lightsaber,\nand their practical applications around the home are limited. Therefore, it is\nprobably best to save your money and stick with the single-blade version.</p>\n</blockquote>\n<blockquote>\n<p>Although a lightsaber is typically used as a defensive weapon by Jedi\nknights, the availability of lightsabers on consumer sites such as eBay is\ngrowing. It is a sad fact of life, but if a Jedi knight falls on hard times,\nhis lightsaber is one source of quick cash. He can always build another one.</p>\n</blockquote>\n<blockquote>\n<p>\u2026many new owners are pleasantly surprised by the many domestic uses of a\nlightsaber around the home or office.</p>\n</blockquote>\n<p>There are also some excellent pictures with captions.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245973.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2005-05-06T06:59:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245973.gif"
        },
        {
            "id": "https://tylerbutler.com/congratulations-hawktour/",
            "url": "http://feed.tylerbutler.com/link/18607/17245974/congratulations-hawktour",
            "title": "Congratulations Hawktour!",
            "content_html": "<p>I\u2019m pleased to say that the Hawktour project came away from IPRO Day with the\nwebsite award, and picked up second place in their track. I am really proud of\nthe team and how they managed to come together even though I abandoned them\nhalf way through this semester. Santhosh did a great job pulling everything\ntogether. Even though we didn\u2019t win our category, for three semesters we have\nbeen a top-ranked team, and it\u2019s a source of great personal pride to know that\nI was instrumental in getting us there.</p>\n<p>But the real boon this semester was to finally beat out our arch-nemesis in\nthe website category, <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.iit.edu%2F~ipro329s05%2F\">IPRO 329</a>. They have consistently beat us in the\nwebsite category for the past two semesters, even though we have consistently\nimproved our site and they have done very little, if anything at all, to\ntheirs. At the beginning of the semester, Satish (the designer of the website\nthat rocketed us to website stardom three semesters ago) said that it was his\ngoal to win that category this semester. I am glad he made it happen. Topping\nthem was an even bigger deal than winning our category. I feel that IPRO Day\nis a bit of a sham anyway. Of course, we\u2019ll take the awards if they want\nto give them to us.</p>\n<p>Check out the <strong>award-winning</strong> <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.hawktour.net%2F\">Hawktour website</a>, and see why all IPROs\nshould strive to be as good as we are.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245974.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2005-04-30T23:18:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245974.gif"
        },
        {
            "id": "https://tylerbutler.com/delicious-rss-feed/",
            "url": "http://feed.tylerbutler.com/link/18607/17245975/delicious-rss-feed",
            "title": "Del.icio.us RSS Feed",
            "content_html": "<p>I removed the <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fdel.icio.us%2F\">Del.icio.us</a> RSS feed from the right side of the site\nbecause it was getting too long. If I had <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fdel.icio.us%2Fpridkett\">as many</a> as <a href=\"http://patrick.wagstrom.net/\">Patrick</a>, the\nfront page would render about a mile long. So I\u2019m looking for a way to limit\nthe number of entries in the feed to something more manageable, like 10. I\nreally only want to share the most recent entries through a feed anyway \u2014\nthat\u2019s what a feed is for! If I want to share <em>everything</em> I\u2019ll point people\nto the site! So if anyone knows how to cut down the number of entries in the\nfeed, let me know.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245975.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2005-04-24T13:14:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245975.gif"
        },
        {
            "id": "https://tylerbutler.com/im-baaaaaack/",
            "url": "http://feed.tylerbutler.com/link/18607/17245976/im-baaaaaack",
            "title": "I'm Baaaaaack!",
            "content_html": "<p>I finally managed to get things set up here in Redmond. Hopefully The DNS\nchanges I made will take effect soon, so my domain will be redirecting\nproperly. I have lots to post after such a long abscence. Stay tuned!</p><img src=\"http://feed.tylerbutler.com/link/18607/17245976.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2005-04-22T13:20:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245976.gif"
        },
        {
            "id": "https://tylerbutler.com/code-line-counter/",
            "url": "http://feed.tylerbutler.com/link/18607/17245977/code-line-counter",
            "title": "Code Line Counter",
            "content_html": "<p>I have been working on HawkTour now for over two years, and I started\nwondering today exactly how much code we\u2019ve generated since we started. I\nthought maybe <a href=\"https://www.eclipse.org\">Eclipse</a> had a project-wide line counter somewhere, but I\ncouldn\u2019t find it, so I just wrote a simple <a href=\"https://www.python.org\">Python</a> script to do it. The\ncode is below.</p>\n<div><figure><figcaption><span>linecounter.py</span></figcaption><pre><code><div><div><div>1</div></div><div><span># Tyler Butler, 03/08/2005</span></div></div><div><div><div>2</div></div><div>\n</div></div><div><div><div>3</div></div><div><span>import</span><span> os</span></div></div><div><div><div>4</div></div><div>\n</div></div><div><div><div>5</div></div><div><span>total </span><span>=</span><span> </span><span>0</span></div></div><div><div><div>6</div></div><div><span>extensions </span><span>=</span><span> [</span><span>'java'</span><span>,</span><span> </span><span>'cpp'</span><span>,</span><span> </span><span>'h'</span><span>]</span></div></div><div><div><div>7</div></div><div>\n</div></div><div><div><div>8</div></div><div><span>for</span><span> root</span><span>,</span><span> </span><span>dir</span><span>,</span><span> files </span><span>in</span><span> os</span><span>.</span><span>walk</span><span>(</span><span>'.'</span><span>)</span><span>:</span></div></div><div><div><div>9</div></div><div><span>  </span><span>for</span><span> file </span><span>in</span><span> files</span><span>:</span></div></div><div><div><div>10</div></div><div><span>    </span><span>if</span><span> </span><span>str</span><span>(file)</span><span>.</span><span>split</span><span>(</span><span>'.'</span><span>)[</span><span>-</span><span>1</span><span>] </span><span>in</span><span> extensions</span><span>:</span></div></div><div><div><div>11</div></div><div><span><span>      </span></span><span>filename </span><span>=</span><span> os</span><span>.</span><span>path</span><span>.</span><span>join</span><span>(root</span><span>,</span><span> file)</span></div></div><div><div><div>12</div></div><div><span><span>      </span></span><span>f </span><span>=</span><span> </span><span>open</span><span>( filename )</span></div></div><div><div><div>13</div></div><div><span><span>      </span></span><span>total </span><span>+=</span><span> </span><span>len</span><span>(f</span><span>.</span><span>readlines</span><span>())</span></div></div><div><div><div>14</div></div><div><span><span>      </span></span><span>f</span><span>.</span><span>close</span><span>()</span></div></div><div><div><div>15</div></div><div>\n</div></div><div><div><div>16</div></div><div><span>print</span><span> </span><span>\"TOTAL LINES IN PROJECT: \"</span><span> </span><span>+</span><span> </span><span>str</span><span>(total)</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>Pretty simple, isn\u2019t it? It just works in the current directory, but you can\nchange that pretty easily. Also, if you want to add more extensions to count\nthen just add them to the extensions list.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245977.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2005-03-09T05:14:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245977.gif"
        },
        {
            "id": "https://tylerbutler.com/print-copy/",
            "url": "http://feed.tylerbutler.com/link/18607/17245978/print-copy",
            "title": "Print Copy",
            "content_html": "<p>I posted a new PDF copy of my novel on the site that is formatted for\nprinting. You can also read it on the screen, of course, but I wanted to print\nout couple of copies with nice typesetting to give to a couple of my\nprofessors. Anyway, enjoy. Also, I added a disclaimer, since there\u2019s some\nobjectionable material in there and I think it\u2019s fair to notify the reader\nbeforehand. Finally, I am working on a write-up of the entire NaNoWriMo\nexperience and will post it as soon as I get a chance. Bottom line, though: I\nrecommend it.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245978.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2005-02-19T04:56:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245978.gif"
        },
        {
            "id": "https://tylerbutler.com/microsoft-program-manager-interview-the-breakdown/",
            "url": "http://feed.tylerbutler.com/link/18607/17245979/microsoft-program-manager-interview-the-breakdown",
            "title": "Microsoft Program Manager Interview: The Breakdown",
            "content_html": "<p>Early last week I went through a <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.microsoft.com%2Fcollege%2Fft_pm.mspx\">Program Manager</a> interview at Microsoft. I am happy to say that it went reasonably well, since I did get an offer. This has been a long time coming\u2026 Since I did a fair amount of research before going into the interview, and was helped out a lot by the written experiences of others, I want to add my own experience to the mix. Also, while Googling for information on the interview process and what to expect, I found a lot on the Dev/Test side of things, but very little about the Program Manager interviews. There were significant differences (though I have never had a Dev/Test interview, so perhaps I\u2019m off-base here), so my hope is that I can shed a little light on the PM interviewing process itself.</p>\n<p>Before I go into more details about the actual interviews themselves, here\u2019s a brief overview of the entire day:</p>\n<ul>\n<li>Total number of interviews: <strong>7 + debrief</strong></li>\n<li>Total number of teams with which I interviewed: <strong>3</strong></li>\n<li>Length of day: <strong>8:30am --- 5:30pm</strong></li>\n</ul>\n<h2><a href=\"https://tylerbutler.com#interview-breakdown\">Interview Breakdown:</a></h2>\n<ul>\n<li><a href=\"https://tylerbutler.com#hr\">Human Resources (Ron Honcoop)</a></li>\n<li><a href=\"https://tylerbutler.com#pub1\">Publisher Team (Jeff Bell)</a></li>\n<li><a href=\"https://tylerbutler.com#pub2\">Publisher Team (Tara Kraft)</a></li>\n<li><a href=\"https://tylerbutler.com#cms1\">Content Management Server --- Lunch (Dave Quick)</a></li>\n<li><a href=\"https://tylerbutler.com#cms2\">Content Management Server (Dan Kogan)</a></li>\n<li><a href=\"https://tylerbutler.com#cms3\">Content Management Server (Jim Masson)</a></li>\n<li><a href=\"https://tylerbutler.com#project\">Project (Dieter --- didn\u2019t catch last name)</a></li>\n<li><a href=\"https://tylerbutler.com#debrief\">Debrief (Ron Honcoop) </a></li>\n</ul>\n<p>Being the conscientious young man that I am, I took notes on each interview and wrote down most of the questions I was asked, so I will share those. Please note that I honestly don\u2019t know exactly what they\u2019re looking for, but I did get an offer, so I must have done something right. I did do some preparation work for the interview.</p>\n<h2><a href=\"https://tylerbutler.com#pre-interview-preparation\">Pre-interview Preparation</a></h2>\n<h3><a href=\"https://tylerbutler.com#blog-reading\">Blog reading</a></h3>\n<p>I did a simple Google search for \u201cMicrosoft interview questions\u201d and wound up with quite a few blogs from people that had had interviews. The search process to uncover really useful information took me a couple of days. Here\u2019s a few of the ones that proved most helpful:</p>\n<ul>\n<li><a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.sellsbrothers.com%2Ffun%2Fmsiview%2F\">http://www.sellsbrothers.com/fun/msiview/</a></li>\n<li><a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fblog.mattgoyer.com%2Fstories%2Fftjobintinseattle.html\">http://blog.mattgoyer.com/stories/ftjobintinseattle.html</a></li>\n<li><a href=\"https://blogs.msdn.com/adamu/archive/2004/06/18/159130.aspx\">https://blogs.msdn.com/adamu/archive/2004/06/18/159130.aspx</a></li>\n<li><a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fblogs.msdn.com%2Fjobsblog\">http://blogs.msdn.com/jobsblog</a></li>\n</ul>\n<h3><a href=\"https://tylerbutler.com#brain-teasers\">Brain teasers</a></h3>\n<p>I had heard the Microsoft was fond of asking brain teaser questions, so I looked around for a few of those as well. Even though I had been told that they really no longer asked these questions, I was interested in trying to solve them anyway. They proved to be very stimulating bar conversation on my weekly Thursday-night outing to John Barleycorn\u2019s with the guys. Also, they helped to focus my nervous energy into something mentally stimulating, and provided hours of amusement at work. Here are a couple of the sites that had a lot of interesting problems:</p>\n<ul>\n<li><a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fhalcyon.usc.edu%2F~kiran%2Fmsqs.html\">http://halcyon.usc.edu/~kiran/msqs.html</a></li>\n<li><a href=\"https://www.cut-the-knot.org/algebra.shtml\">https://www.cut-the-knot.org/algebra.shtml</a></li>\n</ul>\n<p>It should be noted that these brain-teasers provided me <strong>absolutely no useful information for my interview!</strong> I was not asked any of these questions, nor any others that were similar. Their only value was in keeping my mind off of my nervousness and making me the life of the party at Barleycorn\u2019s.</p>\n<h3><a href=\"https://tylerbutler.com#phone-conversation\">Phone conversation</a></h3>\n<p>My friend Matt\u2019s sister had an interview with Microsoft a few months ago and got an offer (which she accepted), so Matt got us in touch and she provided me a lot of useful information. She had some tips for the actual day (scope out the location the night before, be ready for it to last the whole day, etc.), and she helped to calm me down a bit, since at that point I was pretty nervous. She did not interview for a PM position, though, so there were differences in my experience. If you know someone or can find a friend of a friend that interviewed for the specific position you\u2019re interviewing for, it would be the most useful.</p>\n<h3><a href=\"https://tylerbutler.com#important-points\">Important points</a></h3>\n<p>I also made a mental list of major points I wanted to be sure to mention during the interview. This basically reflected the major points I hit in my resume\u2019s professional summary. I wanted to be sure I hit a lot about <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.hawktour.net\">HawkTour</a>, since my experience there directly relates to the PM position. I also wanted to stress my multi-cultural background (lots of teamwork benefits there) and communication skills. These were the things that set me apart from other people --- I wanted to make sure I talked about them. I wrote out a list of questions that I wanted to ask each interviewer (things like \u201cwhat are your core responsibilities?\u201d and \u201chow many people are on your team?\u201d). This list gave me a baseline for every interview. I knew they would ask if I had any questions, so I always looked back and my list to make sure we\u2019d covered everything I wanted to go over.</p>\n<p>So with all of that background out of the way, let\u2019s get into the guts of every interview. I will go in chronological order. Please hold your questions until the end of the lecture.</p>\n<p>Oh, one other thing --- I got four basic flavors of questions during the day:</p>\n<p>Background\n:    Questions about projects I have worked on, what my interests are, why I am interested in Microsoft, how I solved past technical problems, etc. These are pretty easy if you anything about yourself.</p>\n<p>Greenlight/Ideas\n:    These are questions where you\u2019re given a scenario and you need to formulate ideas about usage. I got an equal number of these and design questions. This type of question seems to be all about formulating creative ideas quickly. I had some good ideas, some horrible ones for every question. The interviewer would often ask \u201cWhat else?\u201d after every idea, prompting me to frantically analyze the problem again to come up with something else. These are a lot of fun and pretty easy if you\u2019re creative and keep a cool head.</p>\n<p>Design\n:    These were the meat of my interview. Basically, they give you a new feature or new product idea and ask you to design a solution. I was clear about any assumptions I made and tried to ask questions to really understand the goal of the product/feature before I started designing. Design can and probably should be done on the ubiquitous office whiteboard. That\u2019s what I did. Design problems were tons of fun as well, and I had several good ideas throughout the day (and a few bad ones), which I was pretty proud of.</p>\n<p>Technical\n:    These are the hardest problems for me. Luckily, I only got one or two. These questions have to do with algorithms, computer architecture, etc. These are tough for me because they require complex thinking about details and optimizations which I don\u2019t do quickly. I am a big-picture sort of guy.</p>\n<p>My day began at 6:30am PST. I was supposed to be at Building 19 at 8:30 to report in. I had driven out to the campus from my hotel the night before, so I knew approximately how long it was going to take me to get there. I had intended to eat some breakfast, and in retrospect I probably should have, but I just didn\u2019t feel very hungry, so I filled up my water bottle, left the hotel about 7:15, and headed straight for Building 19.</p>\n<p>I arrived at 7:30. Traffic was kind of bad, but it certainly wasn\u2019t as bad as I had anticipated. The hotel was literally within walking distance of the building anyway, so leaving an hour early was not necessary by any means. I didn\u2019t really want to sit in a lobby for an hour, so I decided to just drive around the area for awhile and listen to the radio. The area is quite hilly and very beautiful, so I drove around in circles and through some rather affluent-looking neighborhoods for awhile. This helped to clear my head and allowed me to kind of mentally prepare for the day. As is typical of me, I wasn\u2019t nervous at this point (it always passes just before the big day), but I was a little worried because I didn\u2019t know what to expect. I consoled myself by remembering that after that day, whether I got an offer or not, it would be over. One of the hardest things for me during this whole job-hunting process has been uncertainty. At least after the interview I would have a better idea of my plans for the next few years.</p>\n<p>I got back to Building 19 at around 8:05. I parked and checked in with the receptionist, who gave a me a couple of forms to fill out, and pointed me to a rather nice sunlit lobby to sit and wait. I was soon joined by a Stanford sophomore who was there for a internship interview. He could not stop yawning. I inquired about how much sleep he had gotten, and he had actually gotten more than I had. And here I was, bouncing off the walls\u2026 Anyway, Rondell Honcoop, my HR contact, came to get me at about 8:45.</p>\n<h2><a href=\"https://tylerbutler.com#human-resources-----rondell-honcoop-----845-am-pst\"></a><a name=\"hr\"></a>Human Resources --- Rondell Honcoop --- 8:45 am PST</h2>\n<p>Ron began by explaining briefly how the day would go. I would not know the identity of my next interviewer until after each interview (I had been told this before). He also explained a little about the teams I\u2019d be interviewing with (Authoring and CMS). He didn\u2019t know much about CMS (indeed, no one seemed to have much info on it), but he told me that Authoring was Office-related. He asked me if there were other companies I was looking at. I told him Google and Lexmark. He asked me to rate them in order of interest, and I put Google at the top and Microsoft second. He asked me specifically what I liked about Google and what it would take to get Microsoft to the top of that list. I was very honest through this process and also made sure to let him know that I was not as far along at Lexmark or Google (I do not have interviews at either of them yet) as with Microsoft. He encouraged me to keep an open mind during the interview and try to figure out how Microsoft dealt with the things that excite me about Google.</p>\n<p>Somehow we eventually segued into a deep discussion about HawkTour. I gave him the entire story, from the summer NSF work to the IPRO to the current state of things. I was extremely thorough and he wrote <strong>everything</strong> down. At several points I had to stop so that he could catch up. I finally realized just how complex the project is, but I think I did a good job of describing everything and specifically my role. I discussed the design process, the reasons behind our decisions, and my far-reaching responsibilities. I didn\u2019t really focus on it, but I\u2019m pretty sure I came across as being passionate, which I know is a huge thing for them. I did not have to fake this, though, because I really am passionate about HawkTour. Otherwise I wouldn\u2019t have stayed on for two and a half years. They\u2019re certainly not paying me <strong>that</strong> well.</p>\n<p>I was pretty verbose in my discussion, so I ran over time with Ron. We stopped at 9:45 and he said he\u2019d call over to Jeff Bell to let him know we\u2019d gone late. I made more of an effort to trim down my discussion in future interviews, but when they kept asking questions, I kept giving answers.</p>\n<p>Ron walked me outside and made sure I got on the recruiting shuttle to the next building. He is a really nice guy --- it is easy to see why he works in recruiting. He is friendly, easy to talk to, and comes across as genuinely concerned about you. He asked me pointed questions about what I wanted and what my concerns were, and went to extra lengths to make sure the questions got answered or that my needs were met. He\u2019s the kind of guy I could see myself chilling out with on the weekends --- all in all, he\u2019s good at his job.</p>\n<p>I arrived at the next building and checked in with the receptionist. Jeff came to get me just before 10am.</p>\n<h2><a href=\"https://tylerbutler.com#publisher-team-----jeff-bell-----1000am-pst\"></a><a name=\"pub1\"></a>Publisher Team --- Jeff Bell --- 10:00am PST</h2>\n<p>Jeff, like all the people I met with, was very friendly. He talked to me about the basic role of the PM (manages features, not people; influence without authority), then asked me about the HawkTour project. I talked about the design architecture and our use of SOAP. He asked me about other solutions we had considered, and I mentioned XML-RPC. He asked me if there were any benefits to using it over SOAP other than it was more lightweight. He posed the question in an interesting way: \u201cIf someone else were to enter the market with a similar product, but that used XML-RPC, would they have any advantages over your product?\u201d</p>\n<p>He then posed my first greenlight question. He briefly talked about <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.microsoft.com%2Foffice%2Fonenote%2Fprodinfo%2Fdefault.mspx\">OneNote</a> and what it aims to do. Then he asked me how I would extend the note-taking functionality and possibly tie it into HawkTour. I discussed location-based notes, which makes a lot of sense in a tour application, and I talked about the importance of analyzing the needs of the customer to determine additional uses that they would like. All in all, it was a pretty weak answer, but I think I made a good case, and my approach to the problem was sound.</p>\n<p>We then switched gears and got into a design problem. He basically framed it like this (not direct quotes):</p>\n<blockquote>\n<p>I have a large digital audio collection. It works great in my computer room, but I want to pump the music to other rooms in my house without buying a lot of expensive equipment. Design a solution.</p>\n</blockquote>\n<p>I started by restating the problem, making sure I understood it fully. I asked a little about the customer and target price range. Then I started drawing on the board. I basically assumed that the user had a simple home network (I stated <strong>all</strong> of my assumptions --- if they were invalid assumptions, then the interviewer would tell me). My solution was a simple hardware device that was networked and had a simple web-based interface for configuration. I missed quite a few things initially (like volume, a way to connect speakers, a way to start playing the music, etc.), but I caught most of them with a little prompting from Jeff. He added a network constraint as well in the form of network cards.</p>\n<blockquote>\n<p>Lets say that my OEM can provide me with cheap network cards that only run at 10MBps. They\u2019re slower, but they\u2019re cheap. Is it worth it?</p>\n</blockquote>\n<p>I asked for information about the cost difference and made a decision based on that, and also disclosed the assumption that 10 MBps would be enough bandwidth to support streaming the audio. He then changed the scenario again.</p>\n<blockquote>\n<p>Someone has entered the market with a $60 device that does what you just described. We have research that indicates customers would be willing to pay $200 for a very full-featured solution. What features can you add that might push it into that price range and make it desirable to the target customer(s)?</p>\n</blockquote>\n<p>At this point it became a green light question, so I talked a little about adding video capabilities to it, and possibly higher fidelity audio. Again, pretty weak stuff, but my forte is designing software, not hardware, so I didn\u2019t let it get me down too much.</p>\n<p>Jeff led me to a waiting room after our interview, and I continued thinking through the problems he\u2019d posed, sketching on the whiteboard that was there in the room. Tara came and got me in a few minutes.</p>\n<h2><a href=\"https://tylerbutler.com#-publisher-team-----tara-kraft-----1100-am-pst\"></a><a name=\"pub2\"> </a>Publisher Team --- Tara Kraft --- 11:00 am PST</h2>\n<p>Tara talked to me a little about her role in the Publisher team and the overall PM position. She then asked me about HawkTour and asked for clarification when I said I was the \u201cgo-to\u201d guy for the project. She then posed a question related directly to Publisher. It was about an email sharing feature. She treated it as a greenlight question initially, then transitioned into design after I had a few ideas. We proed and conned the solutions, then made a decision based on the simplicity of the solution. I made all my assumptions clear, as per usual. I really enjoyed this interview, even though it was kind of short, because Tara actually got up and worked on the whiteboard with me, which made it seem more teamwork oriented, rather than observational.</p>\n<p>At this point I was kind of hungry, so I was glad that lunch was coming up. I had been told that the interviewers shared notes between meetings and stuff, but I don\u2019t know if they did it for me, because I got a lot of questions about HawkTour, even though I went into great detail with nearly every interviewer. Perhaps they just wanted me to talk about it each time. I\u2019m not sure. But by the end of the day, I was talking less and less about it because I was sick of defining context awareness and pervasive computing and explaining the architecture of the application.</p>\n<p>I had to take the shuttle to a different building for the next interview, and when I arrived, the receptionist informed me I would be meeting with Dave Quick instead of Dan Kogan, who I was scheduled to meet with. Dave came down in a couple of minutes and asked if I wanted to eat in the cafeteria or go out somewhere. It really didn\u2019t matter to me, so we went to a teriyaki place at his suggestion.</p>\n<h2><a href=\"https://tylerbutler.com#content-management-server-team-----dave-quick-----1230-pm-pst\"></a><a name=\"cms1\"></a>Content Management Server Team --- Dave Quick --- 12:30 pm PST</h2>\n<p>The beginning of the meeting was pretty informal, since we went to lunch. Dave talked a lot about his hobbies and interests, and we discussed technologies. He was Greek at <a href=\"https://www.rpi.edu/\">RPI</a>, and knew some of the Delts from the chapter there, which was cool. It was nice to talk to someone who knew about the Greek system and didn\u2019t find it strange that I was in a fraternity. I had a good time with him and enjoyed talking about blogging, movies, photography, cars, etc.</p>\n<p>When we got back to his office, we talked about the CMS product, since no one up to that point had really been able to tell me what it was, and he went over the PM position as it related to the CMS team. He then posed my first technical question:</p>\n<blockquote>\n<p>You have an array of positive and negative numbers. Find the largest consecutive sum of numbers. The summation can start and end at any array index and can be of any length.</p>\n</blockquote>\n<p>I told him I would start with the brute force approach and mapped out a dual for-loop solution that works, but is certainly the least efficient (<code>O(n^2)</code>). He asked me if I knew Big-O notation, which I do, but my brain was sizzling and I couldn\u2019t think of it. I offered to analyze the algorithm and try to optimize it, but he seemed satisfied with the solution. I\u2019m sure if I was interviewing for a Dev/Test position my solution would <strong>not</strong> have been sufficient. But then, I knew going in that I wanted a PM position because it\u2019s what I am best at, and I explained that to Dave as well.</p>\n<p>He then asked me about integrating the LCS into Excel. How could we do it? What makes the most sense? This was more of a design question. I developed a customizable bar based on the auto-sum feature that Excel already provides. I tried to keep it simple. When I suggested we make the bar customizable, Dave asked me to draw the user interface on the board. This was actually a recurring theme throughout the day: <em>\u201cWhat does the UI look like?\u201d</em> I discovered that the PM does a lot of interface designing, even though they may not have any design training or experience.</p>\n<p>Dave led me back down to the lobby and chatted with me a bit before heading back upstairs. Dan Kogan would be my next interviewer.</p>\n<h2><a href=\"https://tylerbutler.com#content-management-server-team-----dan-kogan-----200-pm-pst\"></a><a name=\"cms2\"></a>Content Management Server Team --- Dan Kogan --- 2:00 pm PST</h2>\n<p>This interview was my worst, I think. Dan and I didn\u2019t really hit it off and he mentioned that I was his third interview, so he was probably as tired as I was. I felt my brain slow down tangibly towards the end of my interview with Dave, and it pretty much stayed checked out for the entire interview with Dan. Dan asked me some questions about the HawkTour survey UI, and seemed to be checking that I knew what UI components made the most sense in certain situations.</p>\n<p>He then drew two boxes on the board, one labeled \u201cIIS\u201d and the other labeled \u201cbrowser.\u201d He wanted me to tell him what happens when someone requests a website in their browser. I wasn\u2019t really clear what he wanted, but couldn\u2019t get any clarification from him (though I just might have been asking the wrong questions. My brain was pretty fried at this point), so I just explained the basic request-response architecture. I skipped the network architecture part of things initially, like DNS, but came back to it later when he asked more pointed questions.</p>\n<p>Then he asked several localization questions. Things like:</p>\n<blockquote>\n<p>I have one page that I want displayed in three different languages. How do I do it? What changes are necessary on the server and client side? What does the site administrator see when he wants to add new languages? How do we determine what language to display by default? How to we make this setting persistent if the user changes it?</p>\n</blockquote>\n<p>I think I may have gotten a little too defensive in this interview. Dan made some good points about flaws in my solution(s), but I took it as an attack on my solution, so I immediately became defensive. Anyway, this interview could have gone better, but I suppose it could have gone worse as well.</p>\n<p>After the interview, Dan was unsure of who I\u2019d be meeting with next, so he took me to the lobby and said he\u2019d check for me. A few minutes later, Jim Masson came out and led me to his office.</p>\n<h2><a href=\"https://tylerbutler.com#content-management-server-team-----jim-masson-----315-pm-pst\"></a><a name=\"cms3\"></a>Content Management Server Team --- Jim Masson --- 3:15 pm PST</h2>\n<p>Jim got right down to business, I think because I was an unexpected interview for him, and he didn\u2019t have much time. He told me a little about himself, then set up the following scenario:</p>\n<blockquote>\n<p>My grandmother and I both have lots of digital photos. I am a conscientious computer user and I regularly back up, but my grandmother doesn\u2019t. However, we\u2019d both be equally heartbroken if we lost our photos because of some sort of computer failure. How do we make it easy for my grandmother to back up her photos?</p>\n</blockquote>\n<p>I did the typical clarify the problem approach, then started writing on the board. I tried to fit it in to a format that Microsoft is fond of: the wizard. So I designed the \u201cPhoto Migration Wizard.\u201d I divided the entire process into four major steps, then defined each step clearly. One thing I did not explain was that this was intended to be an iterative process --- after the initial run of the wizard, it should be a quick and painless process to run it again and update the backup. Some highlights from the design I came up with were that it should be able to export to multiple volumes (ie, multiple CD\u2019s), then import from just a subset of those CD\u2019s (in case you lose one), robust import options, scheduled running, tying in with online backup service of some kind, etc. Jim asked me to go into greater detail, including the UI screen shots, of the importing process, and also asked to consider other usage options for the feature. This led to me brainstorming about photo recovery options if you accidentally delete a photo, and simple comparison functions to compare existing photos to the version in the backup archive.</p>\n<p>I came away from the interview refreshed because I felt like I had offered a robust solution, and a couple of times I mentioned features that seemed to surprise Jim, so this served to re-energize me.</p>\n<p>Next up was Dieter from the Project Team. I never got fully introduced to him, so I don\u2019t know his last name. This was my final interview on-site.</p>\n<h2><a href=\"https://tylerbutler.com#project-team-----dieter-----400-pm-pst\"></a><a name=\"project\"></a>Project Team --- Dieter --- 4:00 pm PST</h2>\n<p>My interview with Dieter consisted of a lot of questions and answers (I\u2019d actually had a chance throughout the day to think of a couple of new ones) and a greenlight session that was interestingly related to pervasive computing:</p>\n<blockquote>\n<p>I want to integrate a PC into a refrigerator. Brainstorm possible uses and/or features.</p>\n</blockquote>\n<p>I went right to work. I\u2019d actually had some experience with this particular problem because it is an application of pervasive computing. I talked about getting the information of the contents of the fridge into the computer and using it to create shopping lists, and integrating recipes into the computer to make shopping lists based on what you need and what you have. Also, I talked about providing web access using the fridge computer, then mentioned that we would probably have to redesign the browser UI specifically for a touch screen. I discussed possible ways to let the fridge know what was inside it, and went into limitations and such for each of them.</p>\n<p>Dieter walked me to Building 19, I checked out with the receptionist, then headed back to my hotel room. I was pretty tired, but desperately needed food. I browsed the web for a bit and found a nice-looking steakhouse, and was almost ready to go when Ron gave me a call to debrief.</p>\n<h2><a href=\"https://tylerbutler.com#debrief-----rondell-honcoop-----545-pm-pst\"></a><a name=\"debrief\"></a>Debrief --- Rondell Honcoop --- 5:45 pm PST</h2>\n<p>Ron basically wanted to go over the day and how I felt things went. He asked me if I had gotten answers for my questions, and wanted to know how Microsoft stacked up against Google post-interview. Honestly, I was pretty impressed with the whole interview process and the people I had met, so I told him honestly that they were at the front now. He encouraged me to let him know if I had questions, and I got permission from him to follow-up if I hadn\u2019t heard anything from him by Friday (which ended up being overkill, because I got an offer the next day).</p>\n<p>I came out of the interview pretty confident that I would get an offer. I felt that I had done a very good job during the whole process, and was excited to hear what they would say. In the end they have made a very generous offer and I am happy to say that I accepted. Anyway, I hope that the information contained here will be of some use to you as you pursue employment at Microsoft.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245979.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2005-02-15T07:44:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245979.gif"
        },
        {
            "id": "https://tylerbutler.com/iit-student-sued/",
            "url": "http://feed.tylerbutler.com/link/18607/17245980/iit-student-sued",
            "title": "IIT Student Sued",
            "content_html": "<p>According to <a href=\"https://games.slashdot.org/games/05/02/10/0347222.shtml?tid=211&amp;tid=123\">this story</a> on <a href=\"https://www.slashdot.org\">Slashdot</a>, the maintainers of\nninjahacker.net are currently being sued by Tecmo under the DMCA. This is\npretty ridiculous, in my opinion, but I am anxious to hear how it turns out.\nGame hacking has been an interesting (sub)culture, and has provided us with\nawesome games, not the least of which is <a href=\"https://www.counter-strike.net/\">Counter-Strike</a>. Obviously, there\nis probably more to the supposed DMCA \u201cviolations,\u201d but I daresay it\u2019s a\nmisuse of the law nonetheless. Maybe the <a href=\"https://www.eff.org/\">EFF</a> should take a look? Oh, and\nby the way\u2026 the guy that runs (or ran, since it\u2019s now offline) the site\nlives in State Street Village and attends IIT. Cool!</p><img src=\"http://feed.tylerbutler.com/link/18607/17245980.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2005-02-12T06:00:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245980.gif"
        },
        {
            "id": "https://tylerbutler.com/interview-updates/",
            "url": "http://feed.tylerbutler.com/link/18607/17245981/interview-updates",
            "title": "Interview Update(s)",
            "content_html": "<p><strong>1:15 pm PST, Feb. 7, 2005</strong>\nI am writing this from the Marriott Courtyard hotel here in Bellevue, WA. It\u2019s\nprobably the nicest hotel I\u2019ve ever stayed in, and it has decent high-speed\ninternet service. I left my apartment in Chicago at 4:15 CST, and the flights\n(I was routed through Denver on Frontier) went pretty well. I only had 30\nminutes between flights in Denver so I was a little worried that I wouldn\u2019t\nmake it, but I ended up having plenty of time.</p>\n<p>Picking up the rental car and checking into the hotel was a breeze. It was\nnice to hear, \u201cWell, Microsoft has taken care of everything already, Mr.\nButler. Enjoy your stay,\u201d as they handed me the paperwork. I could get used to\nthis. :-)</p>\n<p>I went out and grabbed some lunch, and I plan on driving out to Building 19,\nwhere my interview is, later on this afternoon. I am trying to figure out if\nit\u2019s worth trying to go downtown and do something, but I might just take a\nnap. We\u2019ll see. I also have to go over my interview notes again. Anyway, more\nlater.</p>\n<p>** 12:06 am CST, Feb. 11, 2005**\nWell, I intended to write more, and I still do, but I have been getting quite\na few questions about my status, especially since I promised to put stuff\nhere, so here goes. I <strong>did</strong> receive an offer from Microsoft, which I am\ncurrently considering. More info will be coming, especially about the\ninterview itself and how it went/what I did, but for now: I do have an offer.\n:-)</p>\n<p><strong>3:43 pm CST, Feb. 14, 2005</strong>\nI have officially accepted Microsoft\u2019s offer, and am aiming for a start date\nof March 28th. I suppose it seems kind of fast, but there are benefits to\ngetting out there soon. Dr. Sun has accepted the news more gracefully than I\nhad anticipated, so things are looking up. I will be posting my overview of\nthe interview day itself in a few minutes.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245981.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2005-02-08T07:12:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245981.gif"
        },
        {
            "id": "https://tylerbutler.com/yiddish-curses/",
            "url": "http://feed.tylerbutler.com/link/18607/17245982/yiddish-curses",
            "title": "Yiddish Curses",
            "content_html": "<p>My friend Dan is Jewish, and he was telling me the other day about Yiddish\ncurses. He had some pretty funny ones, and he managed to find a site or two that listed some more. I don\u2019t know Yiddish, and I can\u2019t even pronounce it based on the spelling, so I\u2019m not going to waste the space of including the\nactual Yiddish here. If you actually want the Yiddish, go to the sites listed\nat the bottom of the page. Anyway, here are a few of my favorites.</p>\n<ul>\n<li>All problems I have in my heart, should go to his head.</li>\n<li>He should marry the daughter of the Angel of Death.</li>\n<li>God should visit upon him the best of the Ten Plagues.</li>\n<li>Venereal disease should consume his body.</li>\n<li>I should outlive him long enough to bury him.</li>\n<li>God should bless him with three people: one should grab him, the second should\nstab him and the third should hide him.</li>\n<li>He should have a large store, and whatever people ask for he shouldn\u2019t have,\nand what he does have shouldn\u2019t be requested.</li>\n<li>God should bestow him with everything his heart desires, but he should be a\nquadriplegic and not be able to use his tongue.</li>\n<li>He should be transformed into a chandelier, to hang by day and to burn by\nnight.</li>\n<li>May your bones be broken as often as the Ten Commandments.</li>\n<li>May you every day eat chopped liver with onions, herring, chicken soup with\nmatzo balls, carp with horseradish, roast beef with tsimmes (a sweet side\ndish), pancakes, and tea with lemon \u2013 and may you choke on every bite.</li>\n</ul>\n<p>[<a href=\"http://www.signonsandiego.com/uniontrib/20040401/news_1c1yiddish.html%5D%5B1\">http://www.signonsandiego.com/uniontrib/20040401/news_1c1yiddish.html][1</a>]\n[<a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.yiddishradioproject.org%2Fexhibits%2Fstutchkoff%2Fcurses.php3%3Fpg%3D3%255D%255B2\">http://www.yiddishradioproject.org/exhibits/stutchkoff/curses.php3?pg=3][2</a>]\n[1]: <a href=\"http://www.signonsandiego.com/uniontrib/20040401/news_1c1yiddish.html\">http://www.signonsandiego.com/uniontrib/20040401/news_1c1yiddish.html</a> (A news story about Yiddish curses.)\n[2]: <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.yiddishradioproject.org%2Fexhibits%2Fstutchkoff%2Fcurses.php3%3Fpg%3D3\">http://www.yiddishradioproject.org/exhibits/stutchkoff/curses.php3?pg=3</a> (A short list of curses\u2026 in Yiddish of course!)</p><img src=\"http://feed.tylerbutler.com/link/18607/17245982.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2005-02-02T01:45:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245982.gif"
        },
        {
            "id": "https://tylerbutler.com/title-droppers/",
            "url": "http://feed.tylerbutler.com/link/18607/17245983/title-droppers",
            "title": "Title Droppers",
            "content_html": "<p>In my line of work, I deal with uppity people every day. When you\u2019re in the\nposition to serve people, you will no doubt encounter countless people who\nthink their problem is more important than everyone else\u2019s. This is to be\nexpected. But what really gets me is when some fool appends their official job\ntitle to the end of their email communications, or in a phone conversation,\nfor the sole purpose of getting better service because they\u2019re \u201cimportant.\u201d If\nanything, it makes me do the exact <em>opposite</em>. If they think they\u2019re that\nimportant, then screw them. I do not care if you\u2019re the executive vice consul\npresidential aid\u2019s assistant. You will wait, just like everyone else. Screw\nyou and your self-important ego. We\u2019ll see how you talk to me when I\u2019m a\nmillionaire at 25.</p>\n<p><strong>PS.</strong> Something else that bugs me is people that feel it necessary to include <em>all</em> of their titles in their email signature. This is especially troublesome for students. For example, there was a semester when I could have signed all my emails like this:</p>\n<p>Tyler Butler<br />\nPresident, Delta Tau Delta, Gamma Beta Chapter<br />\nPresident, Keygrips Films<br />\nTechnical Manager, OTS Support Desk<br />\nTeam Lead, IPRO 305, HawkTour Project</p>\n<p>Now really\u2026 for any given email, only <strong>one</strong> title makes sense. I don\u2019t\nneed to notify the world that I am involved in lots of different things. If I\nwrite an email where a title the pertains to me is relevant, then I\u2019ll include\nit. Otherwise, I\u2019ll let my actions, not my titles, speak for me.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245983.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2005-02-02T01:11:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245983.gif"
        },
        {
            "id": "https://tylerbutler.com/parsing-xfdf-in-php/",
            "url": "http://feed.tylerbutler.com/link/18607/17245984/parsing-xfdf-in-php",
            "title": "Parsing XFDF in PHP",
            "content_html": "<p>This past week at work I have been working on using Adobe Acrobat to submit\nform data. The value of this is that the form data can be reimported into the\nPDF form then printed all purty-lookin\u2019. Anyway, Acrobat allows you to submit\nyour form data in several different formats. One, FDF, is usable in PHP\nprovided you load this module thingy. Unfortunately, the server I want to run\nthe PHP script on uses Irix and the module is unavailable for Irix. Poo.</p>\n<p>I then turned to XFDF, which is essentially FDF data all XML-ified. PHP has an\nXML parser built in, so I don\u2019t have to load any crazy modules to parse the\ndata. Unfortunately, PHP\u2019s parser is SAX-based rather than DOM-based, so it\ntook me a rather long time to figure out how to get it working right. Anyway,\nhere\u2019s the PHP code that essentially takes XFDF data (declare <code>$file</code> as a\nstring pointing to the location of your XFDF file) and parses it into an\nassociative array (<code>$values</code>). The array is indexed by the XFDF field names.\nThe code below is not entirely complete since I snipped it out of a larger\nfile, but if you look at it, I think you\u2019ll get the idea. It\u2019s pretty simple\nonce you figure out the way PHP does XML processing.</p>\n<div><figure><figcaption></figcaption><pre><code><div><div><span>/*\u00a0BEGIN\u00a0VARIABLE\u00a0DECLARATIONS\u00a0*/</span></div></div><div><div><span>//global\u00a0variables\u00a0for\u00a0XML\u00a0parsing</span></div></div><div><div><span>$values\u00a0=\u00a0array();</span></div></div><div><div><span>$field\u00a0=\u00a0\"\";</span></div></div><div><div><span>$curTag\u00a0=\u00a0\"\";</span></div></div><div><div>\n</div></div><div><div><span>/*\u00a0BEGIN\u00a0XML\u00a0PROCESSING\u00a0*/</span></div></div><div><div><span>//\u00a0XML\u00a0Parser\u00a0element\u00a0start\u00a0function</span></div></div><div><div><span>function\u00a0startElement($parser,\u00a0$name,\u00a0$attrs)</span></div></div><div><div><span>{</span></div></div><div><div><span><span>\u00a0\u00a0\u00a0\u00a0</span></span><span>global\u00a0$curTag,\u00a0$field;</span></div></div><div><div>\n</div></div><div><div><span><span>\u00a0\u00a0\u00a0\u00a0</span></span><span>//track\u00a0the\u00a0tag\u00a0we're\u00a0currently\u00a0in</span></div></div><div><div><span><span>\u00a0\u00a0\u00a0\u00a0</span></span><span>$curTag\u00a0.=\u00a0\"^$name\";</span></div></div><div><div>\n</div></div><div><div><span><span>\u00a0\u00a0\u00a0\u00a0</span></span><span>if(\u00a0$curTag\u00a0==\u00a0\"^XFDF^FIELDS^FIELD\"\u00a0)</span></div></div><div><div><span><span>\u00a0\u00a0\u00a0\u00a0</span></span><span>{</span></div></div><div><div><span><span>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0</span></span><span>//save\u00a0the\u00a0name\u00a0of\u00a0the\u00a0field\u00a0in\u00a0a\u00a0global\u00a0var</span></div></div><div><div><span><span>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0</span></span><span>$field\u00a0=\u00a0$attrs['NAME'];</span></div></div><div><div><span><span>\u00a0\u00a0\u00a0\u00a0</span></span><span>}</span></div></div><div><div><span>}</span></div></div><div><div>\n</div></div><div><div>\n</div></div><div><div><span>//\u00a0XML\u00a0Parser\u00a0element\u00a0end\u00a0function</span></div></div><div><div><span>function\u00a0endElement($parser,\u00a0$name)</span></div></div><div><div><span>{</span></div></div><div><div><span><span>\u00a0\u00a0\u00a0\u00a0</span></span><span>global\u00a0$curTag;</span></div></div><div><div>\n</div></div><div><div><span><span>\u00a0 \u00a0\u00a0</span></span><span>//\u00a0remove\u00a0the\u00a0tag\u00a0we're\u00a0ending\u00a0from\u00a0the\u00a0\"tag\u00a0tracker\"</span></div></div><div><div><span><span>\u00a0\u00a0\u00a0\u00a0</span></span><span>$caret_pos\u00a0=\u00a0[strrpos][1]($curTag,'^');</span></div></div><div><div><span><span>\u00a0\u00a0\u00a0\u00a0</span></span><span>$curTag\u00a0=\u00a0[substr][2]($curTag,\u00a00,\u00a0$caret_pos);</span></div></div><div><div><span>}</span></div></div><div><div>\n</div></div><div><div>\n</div></div><div><div><span>//\u00a0XML\u00a0Parser\u00a0characterData\u00a0function</span></div></div><div><div><span>function\u00a0characterData(\u00a0$parser,\u00a0$data\u00a0)</span></div></div><div><div><span>{</span></div></div><div><div><span><span>\u00a0\u00a0\u00a0\u00a0</span></span><span>global\u00a0$curTag,\u00a0$values,\u00a0$field;</span></div></div><div><div><span><span>\u00a0\u00a0\u00a0\u00a0</span></span><span>$valueTag\u00a0=\u00a0\"^XFDF^FIELDS^FIELD^VALUE\";</span></div></div><div><div>\n</div></div><div><div><span><span>\u00a0\u00a0\u00a0\u00a0</span></span><span>if(\u00a0$curTag\u00a0==\u00a0$valueTag\u00a0)</span></div></div><div><div><span><span>\u00a0\u00a0\u00a0\u00a0</span></span><span>{</span></div></div><div><div><span><span>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0</span></span><span>//\u00a0we're\u00a0in\u00a0the\u00a0value\u00a0tag,\u00a0so\u00a0put\u00a0the\u00a0value\u00a0in\u00a0the\u00a0array</span></div></div><div><div><span><span>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0</span></span><span>$values[$field]\u00a0=\u00a0$data;</span></div></div><div><div><span><span>\u00a0\u00a0\u00a0\u00a0</span></span><span>}</span></div></div><div><div><span>}</span></div></div><div><div>\n</div></div><div><div><span>//\u00a0Create\u00a0the\u00a0parser\u00a0and\u00a0parse\u00a0the\u00a0file</span></div></div><div><div><span>$xml_parser\u00a0=\u00a0xml_parser_create();</span></div></div><div><div><span>xml_set_element_handler($xml_parser,\u00a0\"startElement\",\u00a0\"endElement\");</span></div></div><div><div><span>xml_set_character_data_handler($xml_parser,\u00a0\"characterData\");</span></div></div><div><div>\n</div></div><div><div><span>if\u00a0(!($fp\u00a0=\u00a0fopen($file,\"r\")))</span></div></div><div><div><span>{</span></div></div><div><div><span><span>\u00a0\u00a0\u00a0\u00a0</span></span><span>die\u00a0(\"could\u00a0not\u00a0open\u00a0XML\u00a0for\u00a0input\");</span></div></div><div><div><span>}</span></div></div><div><div>\n</div></div><div><div><span>while\u00a0($data\u00a0=\u00a0fread($fp,\u00a04096))</span></div></div><div><div><span>{</span></div></div><div><div><span><span>  </span></span><span>if\u00a0(!xml_parse($xml_parser,\u00a0$data,\u00a0feof($fp)))</span></div></div><div><div>\n</div></div><div><div><span><span>\u00a0\u00a0\u00a0\u00a0</span></span><span>{</span></div></div><div><div><span><span>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0</span></span><span>die(sprintf(\"XML\u00a0error:\u00a0%s\u00a0at\u00a0line\u00a0%d\",</span></div></div><div><div><span><span>                    </span></span><span>xml_error_string(xml_get_error_code($xml_parser)),</span></div></div><div><div><span><span>                    </span></span><span>xml_get_current_line_number($xml_parser)));</span></div></div><div><div><span><span>\u00a0\u00a0\u00a0\u00a0</span></span><span>}</span></div></div><div><div><span>}</span></div></div><div><div>\n</div></div><div><div><span>xml_parser_free($xml_parser);</span></div></div><div><div><span>flclose($fp);</span></div></div><div><div>\n</div></div><div><div><span>/*\u00a0END\u00a0XML\u00a0PROCESSING\u00a0*/</span></div></div></code></pre><div><div></div><div></div></div></figure></div><img src=\"http://feed.tylerbutler.com/link/18607/17245984.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2005-01-25T06:56:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245984.gif"
        },
        {
            "id": "https://tylerbutler.com/c-messagebox-strangeness/",
            "url": "http://feed.tylerbutler.com/link/18607/17245985/c-messagebox-strangeness",
            "title": "C# MessageBox Strangeness",
            "content_html": "<p>I am working on a C# program and I want to pop up a message box when certain\nfields aren\u2019t filled out properly in the GUI. .Net\u2019s MessageBox class makes it\nsimple to do. However, when I ran my code, my message box looked like this:</p>\n<p><img alt=\"This image has been lost to the sands of time\" loading=\"lazy\" width=\"1536\" height=\"1024\" src=\"https://tylerbutler.com/assets/lost.CVsYUaFq_zpuRP.webp?dpl=6a5d3631d1ce1d000817d694\" srcset=\"/assets/lost.CVsYUaFq_1FUr7N.webp?dpl=6a5d3631d1ce1d000817d694 640w, /assets/lost.CVsYUaFq_1N0dCU.webp?dpl=6a5d3631d1ce1d000817d694 750w, /assets/lost.CVsYUaFq_2UVpy.webp?dpl=6a5d3631d1ce1d000817d694 828w, /assets/lost.CVsYUaFq_2golDk.webp?dpl=6a5d3631d1ce1d000817d694 1080w, /assets/lost.CVsYUaFq_1PjINn.webp?dpl=6a5d3631d1ce1d000817d694 1280w, /assets/lost.CVsYUaFq_zpuRP.webp?dpl=6a5d3631d1ce1d000817d694 1536w\" /></p>\n<p>I fooled around with it for awhile, trying different combinations of arguments\nto the <code>Show()</code> method, but I wasn\u2019t able to figure it out. Thankfully, my\nGoogle search turned up <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.xtremevbtalk.com%2Fshowthread.php%3Ft%3D191026\">this forum post</a> pretty quickly. Apparently\ndisabling McAfee\u2019s Buffer Overflow Protection solves the problem. But this\nmakes me wonder whose fault this is. Is it something in C#/.Net? Is it\nWindows\u2019 fault? Is McAfee just really dumb? Who knows\u2026 I\u2019m too lazy to try\nand figure it out right now.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245985.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2005-01-22T04:33:00+00:00",
            "attachments": []
        },
        {
            "id": "https://tylerbutler.com/ubuntu-lvm/",
            "url": "http://feed.tylerbutler.com/link/18607/17245986/ubuntu-lvm",
            "title": "Ubuntu + LVM",
            "content_html": "<p>I spent this past weekend hacking away at my Media Box, which serves as my\npersonal free PVR. I wanted to get <a href=\"http://www.ubuntu-linux.org\">Ubuntu</a> on it with LVM so I could use\nall four of my hard drives as one for <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fmythtv.org\">MythTV</a>. I borrowed one of Vlad\u2019s\nUbuntu CD\u2019s (mine haven\u2019t arrived yet and I couldn\u2019t find the one I burnt) and\ngot the installer running. During the partitioning section of the install, I\nset everything up for an LVM volume group and thought I had everything\nworking. Apparently I didn\u2019t. Silly me for not having a clue how LVM works\n(always read the directions, kids).</p>\n<p>Anyway, my installation was b0rked so I figured I\u2019d just reboot and start from\nscratch. No. My LVM data was still present every time I tried to install\nUbuntu. I would try to remove the volume groups and it would fail, reporting\nthe drives were still in use. I was getting manifest errors up the wazoo. So I\nthought, \u2018OK, I just need to wipe the drives with something else and I\u2019ll be\nfine.\u2019 So I tried booting off an XP CD into rescue mode and formatting the\ndrives there. No dice. I downloaded a few CD-based disk formatting tools that\n<strong>said</strong> they cleared things out but apparently they didn\u2019t. <a href=\"https://www.google.com\">Google</a>\nsearches were returning a whole bunch of information about how to remove\nvolume groups, but <strong>nothing</strong> about how to forcefully wipe LVM volumes.\nFunny\u2026 most people that use LVM and software RAID are concerned about\nkeeping their data safe. Whatever.</p>\n<p><strong>Finally</strong>, I came across <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Flists.suse.com%2Farchive%2Fsuse-linux-e%2F2001-Nov%2F1413.html\">this forum post</a>, which has the necesarry command. In retrospect it makes sense - just write zeroes to the first part of the disk. But I would have never figured it out. For posterity, here\u2019s the command you need to run on a device to remove all previous LVM info:</p>\n<div><figure><figcaption></figcaption><pre><code><div><div><span>dd if=/dev/zero of=/dev/sda bs=1k count=10</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>Then of course, I had to figure out how the Ubuntu installer was mounting all\nmy drives\u2026 but that\u2019s another story. And by the way\u2026 after all of this,\nMythTV just wasn\u2019t liking my remote, and I was suffering PVR withdrawal pretty\nbad, so I\u2019m back to MCE2005. Looks like I\u2019ll have to keep fast-forwarding\nthrough the commercials manually. Such is life.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245986.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2005-01-20T13:42:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245986.gif"
        },
        {
            "id": "https://tylerbutler.com/merry-christmas/",
            "url": "http://feed.tylerbutler.com/link/18607/17245987/merry-christmas",
            "title": "Merry Christmas!",
            "content_html": "<p>Ahhh, Christmas, a time for food, family, and of course, gifts. Some of my\nfriends this year, however, are giving me gifts that <strong>cost</strong> me money. These\ngifts come in the form of mobile phone text messages, which are not included\nin my cell phone plan. T-Mobile charges me 50 cents a pop for every one sent\n<strong>and</strong> received. Many of my friends have sent me Christmas greetings the past\nfew days via text message, and I can just see the ogres at T-Mobile jumping\nwith glee as my bill skyrockets. Oh well. At least I have friends.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245987.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-12-28T03:51:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245987.gif"
        },
        {
            "id": "https://tylerbutler.com/the-internet-is-down/",
            "url": "http://feed.tylerbutler.com/link/18607/17245988/the-internet-is-down",
            "title": "The Internet is Down!",
            "content_html": "<p>If you\u2019ve been at <a href=\"http://www.iit.edu\">Illinois Tech</a> this week, you\u2019ve had the absolutely\nwonderful opportunity to see what carnage a Denial of Service attack against a\ncore DNS server can create. Now, I honestly don\u2019t know much about network\ninfrastructure or the mechanics behind a Denial of Service attack; frankly, my\npassion is software, not hardware, so I\u2019ve never sought out the knowledge.\n(Unfortunately, <a href=\"https://www.howstuffworks.com\">HowStuffWorks.com</a> doesn\u2019t have anything specific on DoS.\nThey do, however, have articles on <a href=\"http://computer.howstuffworks.com/router.htm\">routers</a>, <a href=\"https://computer.howstuffworks.com/firewall.htm\">firewalls</a>, and\n\u201c<a href=\"https://computer.howstuffworks.com/internet-infrastructure.htm\">Internet Infrastructure,</a>\u201d for those that want to learn more about the\nhardware that makes the Internet work.) But despite my lack of knowledge, this\npast week has been an excellent chance to experience the effects a DoS can\ncause.</p>\n<p>A DoS <strong>destroys</strong> your ability to use the network \u2014 much moreso than I ever\nthought possible. For my own sake, I am going to write a little bit about what\nI\u2019ve seen and make some conclusions about what went wrong, and even try to\nsuggest possible solutions that we can implement to solve things in the\nfuture. But before we start, a little disclaimer. The network people here at\nIIT are not the most apt people in the world, but they\u2019re not the most inept\neither. We do have some truly brilliant people around here, but frankly, they\ndon\u2019t get recognized or listened to nearly enough. So before you start railing\non the fact that if <strong>you</strong> were a network engineer here, this never would\nhave happened, let me say this: the main problem I have seen this past week is\nnot a lack of technical experience, knowledge, or anything like that; the\nproblem is a <strong>lack of communication.</strong> I cannot stress that enough. So let\u2019s\nget started.</p>\n<p>On Sunday evening, Felix, one of our network engineers, noticed an inordinate\namount of traffic to random ports and stuff, and suspected a worm or virus had\nmade its way onto the network. In an effort to contain the attack, he blocked\nthe MAC addresses of 160 computers with the highest traffic on the network at\nthe time, effectively banning <strong>all</strong> network traffic from those people. The\nthought was that this would diagnose the problem \u2014 block the addresses, watch\nthings go back to normal, then go through the PC\u2019s that were blocked and\nfigure out what worm or virus had caused the problem, fix it, and reopen the\nnetwork.</p>\n<p>Problem was \u2014 blocking the addresses didn\u2019t fix the problem. In fact, it got\nworse. The DNS server started going down, and then finally went kaput\naltogether. This effectively knocked out internet access for all of campus.\nThe internal network still worked, and some cached DNS entries still resolved\nall right, but most people were locked out. Here at the Support Desk we got\nback up and running for awhile by switching to an external DNS, but we\ncouldn\u2019t exactly tell the whole campus to do that, because it wouldn\u2019t have\nsolved the root of the problem. Eventually, because of the bogus traffic that\nwas being spit out from our network and our DNS server, our own ISP blocked\nour DNS server.</p>\n<p>This is where things started to go downhill \u2014 fast. Felix provided us with the\nlist of blocked MAC addresses initially, but by the time the DNS went down,\nwhich was late Monday afternoon, that list was out of date. On top of that,\nbecause of the rampant random network issues, we couldn\u2019t tell a customer what\nwas wrong when they called. They might be blocked, they might not. It might\njust be the random DNS problems, it might not. We had still not been provided\nwith a process through which people could get checked and unblocked if\nnecessary. Thus, problem number one:</p>\n<p><strong>1) We at the Support Desk were not provided with information, sketchy or\notherwise, to tell people when they called.</strong></p>\n<p>So we started telling people whatever we knew \u2014 there were network issues,\nthere were some people with blocked MAC\u2019s, we didn\u2019t know when things would be\nback up. It is useful to remember that at this point, OTS had no idea what the\nproblem was (the DNS server was the <em>problem</em>, but it had been brought down by\nthe DoS attack, which hadn\u2019t been identified yet), and no information had been\nsent out to the IIT community. Hence, problem number two:</p>\n<p><strong>2) OTS was extremely slow at getting public information out to the IIT\ncommunity, and when they did, provided it via unreliable methods (email,\nmainly).</strong></p>\n<p>Yup, most information went out in the form of emails, which is certainly a\nvalid form of communication, but it shouldn\u2019t be the only one. But more on\nsuggestions later\u2026</p>\n<p>As the week dragged on, and more and more customers became agitated from a\nlack of information and a seeming lack of action on our part, things just got\nworse. Apparently, there was much debate about the actual cause of the problem\nwas. Virus scans and other searches had revealed nothing on many of the\nblocked PC\u2019s, except a small VBS worm that remained under most virus scanner\u2019s\nradar. One camp held that there was just a problem with the DNS server -\nsomething was wrong with it. The other camp held that we were under an attack.\nOne \u2014 it\u2019s our fault, two \u2014 it\u2019s not our fault (at least, not directly).</p>\n<p>It was suggested at this point that we remove the DNS server and replace it\nwith a fresh one, which would make the choice between the two theories simple.\nBut, for some unknown reason, this was resisted for quite some time.\nEventually, a new DNS server was put in. It lasted 30 minutes. It was clear we\nwere under attack. Thus, point number three:</p>\n<p><strong>3) When DNS went down, it should have been replaced immediately. That\nwould have made it clear from the beginning that we were under attack.</strong></p>\n<p>During all of this hullabaloo, we at the Support Desk remained ignorant of any\ninformation regarding the problem, its causes, and what OTS was doing to\nresolve it. The calls we received were getting angrier and angrier as final\u2019s\nweek loomed closer and they still couldn\u2019t get to their course websites, or do\nresearch, or browse the net to relax, or anything. In addition, we didn\u2019t have\nan updated MAC block list, which had been changed (at one point it got to 400\nMAC\u2019s) several times at this point. Points numbers four and five:</p>\n<p><strong>4) The Support Desk was not provided with up-to-date information (such as\nupdated MAC block lists) that would have assisted them in diagnosing the\nproblem(s), and cut down the workload on other OTS divisions, and maybe, just\nmaybe, would have left customers feeling a little happier about the state of\nthings.</strong></p>\n<p><strong>5) When OTS Communications went out, they were overly vague and seemed to\ntake forever to write. Communications went out with information that seemed\nout of date as a result.</strong></p>\n<p>Well, those are the main points. The core problem was a lack of communication\nand information-sharing amongst departments. If the Support Desk is a voice\nfor OTS, then we have to know what to say, and we simply weren\u2019t provided with\nany information. Also, (and this really bugs me) the OTS communications just\ntold people to call the Support Desk if they had a problem, presumably to get\nmore information, but we didn\u2019t have anything to tell them. So these were the\nproblems, now what about solutions? Here are my thoughts, for what they\u2019re\nworth.</p>\n<p><strong>Provide the Support Desk access to information such as MAC block lists.\nThe info has to be <em>up-to-date</em>, otherwise it\u2019s not really useful.</strong></p>\n<p>This seems to be a no-brainer to me. If we\u2019re going to be sending out emails\nthat say, \u201cCall the OTS Support Desk for assistance in troubleshooting your\nnetwork access,\u201d then the Support Desk has to have up-to-date information\nabout it. If people are going to be calling with their MAC\u2019s, we can\u2019t be\nlooking at a list over a week old. In fact, it was just this morning that we\nfinally got the updated list, <em>after</em> it had grown to over 400 people and\nshrunk back down to about 25.</p>\n<p><strong>Make one person responsible for communicating with the students.</strong></p>\n<p>By this, I don\u2019t mean that one person should be taking calls with problems.\nThat\u2019s the Support Desk\u2019s job. What I mean is that one person should write the\ncommunication emails, and should be responsible for getting accurate\ninformation from the appropriate people to send out. The process would be as\nfollows: Network goes down\u2026 Communicator calls Networks, finds out problem X\nis the cause, gets an ETA\u2026 Communicator sends out email information, and\nmakes arrangements to notify via other means. See below. The more I think\nabout this, someone at the Support Desk should have this responsibility. But\nit should only be one person.</p>\n<p><strong>Communication should be done through a variety of means.</strong></p>\n<p>In this instance, email was, and usually is, the primary form of\ncommunication. But we need to send out voice mail to faculty, put up flyers in\nMSV and SSV, and, dare I say it, <strong>hold a press conference</strong>. This isn\u2019t\nalways necessary, but in this case, it would have been nice if students could\nhave gone to a public meeting one evening in the MTCC auditorium or something,\nheard a brief statement about what the problem was and what action we were\ntaking, and had a chance to ask questions and get some straight answers.\nPeople who aren\u2019t in the dark are less likely to make up their own\nexplanations for why something went wrong. Ending speculation can help end\nangry customer calls.</p>\n<p>I guess that\u2019s really all I have. This week has been trying for all of us here\nat OTS, but I hope that maybe the staff here will learn from this experience\nand make it better the next time this happens. But of course, I am just a\nlowly peon here, so what do I know?</p>\n<p>By the way, for anyone that cares: <strong>The problem was caused by some (like\n8-10) PCs on campus getting hacked (externally, internally, who knows) and\nparticipating in a DoS attack against the DNS server. The problem now seems to\nhave been contained, and about 25 people still remain blocked.</strong> Yeah, DoS\nsucks, but it is kinda cool to realize that 8-10 machines can destroy a\nnetwork connection serving a university of 3000 people. <em>Kinda</em> cool.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245988.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-12-14T06:30:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245988.gif"
        },
        {
            "id": "https://tylerbutler.com/then-vs-than/",
            "url": "http://feed.tylerbutler.com/link/18607/17245989/then-vs-than",
            "title": "\"Then\" Vs. \"Than\"",
            "content_html": "<p>I started looking at some open-source software and came across Blender, a\ncool-looking 3D modeling program. On <a href=\"https://www.blender3d.org/\">their homepage</a>, I noticed this image\n(it may no longer be on their page):</p>\n<p><img loading=\"lazy\" width=\"1536\" height=\"1024\" src=\"https://tylerbutler.com/assets/lost.CVsYUaFq_zpuRP.webp?dpl=6a5d3631d1ce1d000817d694\" srcset=\"/assets/lost.CVsYUaFq_1FUr7N.webp?dpl=6a5d3631d1ce1d000817d694 640w, /assets/lost.CVsYUaFq_1N0dCU.webp?dpl=6a5d3631d1ce1d000817d694 750w, /assets/lost.CVsYUaFq_2UVpy.webp?dpl=6a5d3631d1ce1d000817d694 828w, /assets/lost.CVsYUaFq_2golDk.webp?dpl=6a5d3631d1ce1d000817d694 1080w, /assets/lost.CVsYUaFq_1PjINn.webp?dpl=6a5d3631d1ce1d000817d694 1280w, /assets/lost.CVsYUaFq_zpuRP.webp?dpl=6a5d3631d1ce1d000817d694 1536w\" /></p>\n<p>Now what\u2019s wrong with this picture? Well, the designer of the image was not\nvery careful when selecting the words to use. The words \u201cthan\u201d and \u201cthen,\u201d\nwhile differing only by one letter, are vastly different in meaning. <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fdictionary.reference.com%2Fsearch%3Fq%3Dthen\">Then</a>\nis most commonly an adverb, but can sometimes be a noun or adjective (time-\nrelated). <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fdictionary.reference.com%2Fsearch%3Fq%3Dthan\">Than</a>, on the other hand, is a conjunction, used to compare\nthings. <em>I am better at English <strong>than</strong> you are</em>, for example. So when you\nwant to compare things, as the person making this advertisement image\napparently wanted to, you want to use than.</p>\n<p>I think the confusion regarding this stems from the use of \u201cthen\u201d as a time-\nrelated adjective or noun. For example, \u201cI was there then,\u201d or \u201cthe then\ndirector of OTS\u201d are valid uses of the word, which confuses people when they\nwant to compare things, especially in time-related constructs, such as \u201cmore\nthan before.\u201d Then implies a previous state of being, so previously \u2014 then -\nthere were less than there are now. This, I think, is the root of the\nconfusion. If you really want to get your head spinning, try this: \u201cThere were\nmore employers there then than previously.\u201d I <em>think</em> that\u2019s grammatically\ncorrect, but many people seem to get this confused. It could also be that they\nare often pronounced similarly if not exactly the same, so drill yourself on\nit if you\u2019re having problems remembering.</p>\n<p>Since I have noticed some common grammatical and language-related mistakes at\nwork, in the IPRO, and just on blogs and websites in general, I think I might\nstart a regular column on here with common problems people have with similar\nsounding, yet different meaning words. After all, I am the master of all that\nis English. And I <a href=\"https://tylerbutler.com/tags/nanowrimo\">wrote a novel</a>.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245989.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-12-11T07:09:00+00:00",
            "attachments": []
        },
        {
            "id": "https://tylerbutler.com/official-comments/",
            "url": "http://feed.tylerbutler.com/link/18607/17245990/official-comments",
            "title": "Official Comments",
            "content_html": "<p>In case you haven\u2019t noticed, <a href=\"https://tylerbutler.com/tags/novel/\">my novel is done</a>. Well, at least the 50,000\nwords are done, so I am a <a href=\"https://www.nanowrimo.org/\">NaNoWriMo</a> winner. I still need to edit it, and\nwith some artistic help from Joe Parry, I will add some illustrations and lay\nit out in InDesign or something to make a nice PDF booklet. I am also going to\nwrite up an essay on the experience of NaNoWriMo and my influences for the\nbook. But that\u2019s in the future. I know at least one or two people have been\nfollowing along throughout the month, so now is the time for you to let me\nhave it\u2026 I will be putting some polls up soon for people that have read the\nnovel, but if you want to compliment me or criticize me for anything in the\nbook, comment in this post or send me an email. I really want feedback\u2026\nseriously. It\u2019s the only way to improve.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245990.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-12-03T03:27:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245990.gif"
        },
        {
            "id": "https://tylerbutler.com/november-29th/",
            "url": "http://feed.tylerbutler.com/link/18607/17245991/november-29th",
            "title": "November 29th",
            "content_html": "<p>Well, here\u2019s the last of it. I added some new material to previous chapters,\nso the additions are listed here along with the chapter in which they go. The\nPDF has been updated with all the new material.</p>\n<p><strong>Chapter 29: Epilogue</strong></p>\n<p>Angela was bobbing up and down in her chair almost uncontrollably as Melissa\ncame down the stairs into the kitchen. Lawrence , of course, sat reading a\npaper next to her, ignoring her completely as she knocked plates, cups, and\nother random items on the table to the floor with her movement.</p>\n<p>\u201cAngela, settle down and eat your brea kfast!\u201d Melissa knew it wouldn\u2019t\nhappen. The five-year-old looked down in disgust at the strange mixture of\nfoodstuffs on her plate. The toast was now soggy from spilled apple juice, and\nthe remaining bits of egg swam in a pool of juice as well. Angela turned her\nnose up at the plate primly and crossed her arms across her chest.</p>\n<p>She was pouting at the reprimand. Melissa rolled her eyes at her daughter\u2019s\nsilliness and flipped on the small television in the room, pushing down two\nslices of brea d in the toaster as the picture faded in.</p>\n<p>\u201cCan we watch cartoons, mommy?\u201d</p>\n<p>\u201cNo, we cannot,\u201d Melissa responded fla tly. The question was asked each\nmorning, and the answer always remained the same. But Angela nev er gave up;\none day her mother would relent, and she would get to watch cartoons while she\nate breakfast\u2026 <em>But today is not that day</em>, Melissa thought to herself.</p>\n<p>Lawrence had his morning paper and cup of coffee, Melissa had her morning\nnewscast and toast. It was their routine; the sole moment in the day that she\nwould not vary \u2014 it was her tether to the world and to her own sanity. No\nmatter what mischief Angela would cause throughout the day, it was all\nbearable if she\u2019d had her toast and caught up with the world.</p>\n<p>She sat down on the chair to Lawrence \u2018s right, ignoring her daughter\u2019s\ncontinued pleas for cartoons. \u201cAngela, I said no! Settle down and <em>be quiet</em>!\u201d\nAngela resumed her sulking, but at least it got quiet.</p>\n<p>She had just missed the weather report, but she was in time for the morning\nheadlines. The newscaster droned on with little emotion through the long list\nof headlines, and Melissa listened only passively until something caught her\nattention.</p>\n<p>\u201c Twenty-three-year-old McAllister Park resident Joel Mendocino is dead this\nmorning, the victim of a car accident at the Franklin-Niles intersection late\nlast night. Mendocino, who had recently returned from an overseas trip, had\nleft the Elston Memorial hospital where he was being treated for a near-fatal\ngunshot wound he received earlier in the day. His father was the vehicle\u2019s\ndriver, and is listed in stable condition at Elston Memorial.\u201d</p>\n<p>\u201c Lawrence , listen to this! This poor kid lived around here!\u201d Lawrence\nlooked over his paper and murmured an acknowledgement, then resumed reading\nhis paper. Melissa focused intently on the television as the news anchor\ncontinued.</p>\n<p>\u201cIn related news, police were able to discover an illegal \u201cfight club\u201d of\nsorts that is believed to be the source of a rash of unexplained abductions\nand beatings of homeless individuals that has been plaguing the city of late.</p>\n<p>\u201cIn a statement released early this morning, Detective Angus Cobb credited\nMr. Mendocino\u2019s identification of his attackers as the crucial clue that led\nthe detectives to a supposedly abandoned warehouse in the ind ustrial area of\nthe city.</p>\n<p>\u201cSeveral participants in the \u201cfight club\u201d were apprehended by city police\nofficers, and it is expected that the ringleader will soon be located.\u201d</p>\n<p>The news anchor seemed to be enthralled by the story as it continued on.</p>\n<p>\u201cBut the story doesn\u2019t end there, folks. Mike Turner, a former Copeland\nAdvertising executive, was shot and killed by detectives on the scene when he\nrefused to discontinue his beating of a mentally-challenged homeless man, and\ninstead charged towards police officers.</p>\n<p>\u201cIt is believed that Mr. Turner was also responsible for the brutal beating\nand death of his wife\u2019s lover, Brandon Lloyd, a story that we brought to you\nyesterday on the 6 o\u2019clock newscast.</p>\n<p>\u201cPolice are confident that the criminal\u2019s behind these recent activities\nwill soon be rounded up, but remind all city residents to report any\nsuspicious activity immediately and exercise common sense when moving around\nthe city at night.\u201d</p>\n<p>Melissa was almost sad to realize that the story had come to an end. It was\nmore interesting than the plot to one of the afternoon soap opera\u2019s that\nLawrence berated her for watching. Who knew so much could happen one day in\ntheir city?</p>\n<p>\u201cMakes you wonder sometimes, doesn\u2019t it honey?\u201d</p>\n<p>\u201cHmmm?\u201d Lawrence murmured, looking over his newspaper again.</p>\n<p>\u201cMakes you wonder how many people you see and interact with each day will be\ndead tomorrow. It\u2019s kind of sad, really.\u201d</p>\n<p>Lawrence looked back at his paper. \u201cI suppose. But I don\u2019t worry too much\nabout it. After all, what do they have to do with us?\u201d</p>\n<p>Melissa stood and ran her dishes under the warm water at the kitchen sink.\nShe wouldn\u2019t think about Joel much after that. Lawrence was right, after all;\nwhat did it all have to with her?</p>\n<p><strong>Chapter 3</strong></p>\n<p><em>Joel shrugged as she moved as quickly as she could to the opposite side of\nthe train, sat down, and eyed him warily. Whatever.</em></p>\n<p>While he had traveled in Asia , he\u2019d been amazed at the hospitality and\nfriendliness of nearly everyone he met, including the tourists with which he\u2019d\nhad the opportunity to converse. All travelers there seemed to be inexplicably\nlinked; they al shared that undeniable experience that was Asia , and that\nexperience drew them together. That experience, combined with the basic human\nneed to communicate, at least occasionally, with people from similar\nbackgrounds and worldviews, produced a level of camaraderie with some of his\nnew acquaintances that Joel had seldom had with friends from home.</p>\n<p>Two, in particular, Sean and Pang, had become very close to him during the\nthree days he\u2019d known them. They had met outside a market while he was staying\nin Thailand for a week. Sean had been excited at spotting someone with the\nsame color skin as his own, and Pang, who\u2019d spent a year studying at a\nuniversity in the States, was glad to have a Westerner with which she could\nconverse. Pang and Joel hit it off immediately; they both had an affinity for\nanalytical thought, much to Sean\u2019s dismay, and spent many of their nights\nchatting about philosophy, art, literature and even mathematics, late into the\nnight.</p>\n<p>Sean played the dumb oaf, but behind his goofy exterior was a curious, sharp\nyoung man with a razor sharp wit. Together, the three of them had traveled the\ncity high and low, seeking out coffee shops, bars and pubs, and sampling every\npiece of the Thai nightlife that Pang could think to show them. It was hard\nfor Joel to believe that they\u2019d only been together for three days before\nthey\u2019d split paths. He looked forward to calling them when he got the chance;\ntheir ongoing relationship was an opportunity to relive their past experience\nvicariously through each other, and it was an opportunity that Joel was\nthankful for.</p>\n<p>But it didn\u2019t stop there. The Asian people he\u2019d met, from Sumatra to\nThailand , were friendly, eager to please, and very rarely had any desire for\nprofit, monetary or otherwise. On several occasions, while he\u2019d carried his\nbags to and from a taxi, a random man off the street would run up to assist\nhim, and many times, refused payment. Their payment was his smile and\ngratitude, and in the wake of their unabashed kindness, Joel felt obligated to\nat least attempt to repay them by spreading that kindness. It was just too bad\nno one could believe he was just trying to be helpful.</p>\n<p><em>As the train began to move towards its downtown destination, Joel found an\nempty seat and sat down, peering out the window at the cars passing on the\nhighway alongside him.</em></p>\n<p><strong>Chapter 8</strong></p>\n<p><em>The path along State Avenue to the tower was relatively clear; it was so\nlate in the morning, a majority of people had already made it to their jobs.</em>\nHe eyed the homeless men on the corner warily. Why the hell didn\u2019t they get\njobs? They were always standing there, begging for change, occasionally\noffering a useless trinket or piece of shoddy journalism up in exchange.</p>\n<p>But even worse than the beggars were the ones with the squeegees. They\nattacked his car every single time he drove to work, splashing his windshield\nwith their vile liquid and doing a piss-poor job of cleaning it off. They\nalways left his car in worse shape than when they started, and they expected\nto get paid! Bull <em>shit</em>! The mere thought of them soured his entire mood\nconsiderably, if it were even possible for him to be more pissed off at this\npoint.</p>\n<p>His previous physical activity had left his body reeling, and he was unable\nto move faster than a brisk walk towards the tower. He was interrupted several\ntimes by beggars along the way, huddling against the looming stone buildings\nfor shelter from the wind. He ignored than each time, yelling whatever\nobscenities surfaced to his mind first, until finally he slapped at the hands\nof the last one, knocking the small collection of nickels and dimes from the\nman\u2019s hand. He smiled cruelly as the man cried out and dropped to his knees to\nreclaim the coins that would serve as his dinner for the day. That would show\nthe bastard.</p>\n<p>He continued as fast as he could along State Avenue, ding his best to ignore\nthe legs\u2019 increasing cries of anguish as they suffocated, until the doors of\nthe Tower stood before him, peering down at him with a foreboding gaze. <em>He\npushed his way through the revolving doors and ignored the pleasant greetings\nof the security guard as he headed straight to the elevator.</em></p><img src=\"http://feed.tylerbutler.com/link/18607/17245991.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-11-30T13:16:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245991.gif"
        },
        {
            "id": "https://tylerbutler.com/november-28th/",
            "url": "http://feed.tylerbutler.com/link/18607/17245992/november-28th",
            "title": "November 28th",
            "content_html": "<p><strong>Chapter 28: Goodbye</strong></p>\n<p>Holly and Ned sat together in Ned\u2019s dining room starling listlessly at the\nbroken Walkman sitting in the center of the table. The discovery of the\nWalkman on the street had filled them with a sense of elation at having made\n<em>some</em> progress in their search, but it had been short-lived when they\nrealized that its discovery ind icated Ernie was ind eed missing.</p>\n<p>Holly ran her hand against the worn buttons and the faint scrawls in the\nback that spelled out Ernie\u2019s name. She hoped he was okay.</p>\n<p>Lavina bustled into the room with a fresh pot of coffee and a platter of\npastries. She had not been pleased initially with Ned bringing Holly back with\nhim, but he had taken her to the kitchen and shared with her the story Holly\nhad told him outside St. Ives.</p>\n<p>Even Lavina\u2019s insecure jealousy was overcome by the sadness of the story,\nand she had set about making them all comfortable in the best way she knew how\n\u2013 by cooking for them. There had been no end to the del icious sweets produced\nin the kitchen, and the coffee seemed to be in infinite supply as well.</p>\n<p>The silence was broken by the sudden stentorian ring of the telephone,\nsending Holly bolting upright in her chair in surprise at the sound. Ned\npicked up the call.</p>\n<p>\u201cHello? Oh, hi Rhonda.\u201d Holly craned her neck anxiously. Did she have news\nabout Ernie?</p>\n<p>\u201cReally? Is he OK? Hmmmm. OK, Elston you say? Yeah, we\u2019ll be over in a few\nminutes.\u201d He slowly put down the phone. Holly asked impatiently, \u201cWell, what\ndid she say?\u201d</p>\n<p>\u201cThey found Ernie. He\u2019s in pretty bad shape. They\u2019ve got him up at Elston\nMemorial. The doctors aren\u2019t sure if he\u2019s gonna pull through.\u201d</p>\n<p>Holly\u2019s eyes moistened again. \u201cWell, we have to go see him.\u201d She stood up\npurposefully and grabbed her coat from the rack in the corner. Ned pushed the\nfront door open for her and smiled wryly at his wife as they stepped out into\nthe cold again.</p>\n<hr />\n<p>Ames and Cobb both brea thed a long sigh of relief as they sat down in their\ncar and started the engine, waiting for the heater to kick in. Once their\nbackup had arrived, the warehouse was a non-stop circus of detectives, beat-\ncops, and forensics experts. It seemed like Foster had called in the entire\nforce to the scene.</p>\n<p>Ambulances had arrived at the scene shortly after Ames had called them in,\nbut were now all gone, hurtling towards hospitals as fast as they could go.\nThe man that was shot, identified as Mike Turner by the license in his wallet,\nwas declared dead on arrival by the paramedics, but the victim, whose name was\nstill unknown, was barely clinging to life and had been sped away in an\nambulance quickly.</p>\n<p>Turner\u2019s death came as no surprise \u2014 few men could survive five bullets to\nthe chest from moderate range. The other man\u2019s survival came as a surprise to\nboth Ames and Cobb. He had been beaten badly, and both detectives had their\ndoubts as to whether he\u2019d make it through the night. Only time would tell.</p>\n<p>Cobb and Ames had answered hundreds of questions already, and there were\ngoing to be plenty more tomorrow, especially about the shooting and their\nabandonment of the car accident. Questions would have to wait for now, though;\nboth of them had agreed that they needed to go and check on the victims of the\ncar accident. It was the least they could do after abandoning the scene.</p>\n<p>\u201cSo did you hear about that guy, Turner?\u201d Ames asked as he leaned back\nwearily against the headrest.</p>\n<p>\u201cNo, what about him?\u201d Cobb replied.</p>\n<p>\u201cApparently, he killed his wife\u2019s boyfriend earlier today after he found\nthem in bed together. Beat him to a pulp with a baseball bat, and did a fair\nnumber on his wife, too.\u201d</p>\n<p>Cobb shook his head. \u201cWell, I can\u2019t say I\u2019m sad to see him gone, then.\nEspecially after seeing what he did to that poor guy.\u201d</p>\n<p>Ames nodded in agreement. \u201cSo where we heading? Were you able to find out\nwhere they took the car wreck people?\u201d</p>\n<p>Cobb replied as he looked over his shoulder to back out into the street,\n\u201cYeah, they all got taken to Elston Memorial.\u201d</p>\n<p>\u201cElston?\u201d Ames exclaimed. \u201cWasn\u2019t Schumann closer?\u201d</p>\n<p>\u201cYeah, but apparently some nut took a shotgun into the mall on Franklin and\nwent crazy, so Schumann was full of gunshot victims.\u201d</p>\n<p>Ames chuckled wryly. \u201cWell, nev er a dull day around here, huh?\u201d</p>\n<p>\u201cNo kidding. Well, they took the guy here to Elston as well, so we can check\nup on both of them, and let that Mendocino kid know what\u2019s going on, all at\nthe same time.</p>\n<p>\u201cNothing like killing three birds with one stone,\u201d Ames commented as they\ncareened down the road.</p>\n<hr />\n<p>Joel opened his eyes and noticed immediately that he was back in the strange\nroom of his dreams. Directly in front of him was the old man, roll of cloth\nbeside him, still looking intently at the mass of threads in his lap. He\ncontinued to ignore Joel.</p>\n<p>Joel looked around slowly. The room was exactly as it had been the last time\nhe had been here. The candle flickering on a low table, the infinitely long\ndark room stretching out behind him, light peeking in through a solitary\nwindow in the distance. Yes, this was definitely the room in which he\u2019d found\nhimself a few hours ago. What was he doing back here?</p>\n<p>\u201cJoel.\u201d He started at the sound and stepped back as the speaker strode out\nfrom the shadows behind the old man.</p>\n<p>\u201cDon\u2019t worry,\u201d the man smiled warmly. \u201cI\u2019m not here to hurt you.\u201d</p>\n<p>Joel looked the man up and down. He was dressed in a long thin robe, a rich\ndark brown in color. His features were nothing special \u2014 he appeared to be an\naverage middle-aged man in every respect. A thin black cord lined his neck,\nand his robe hung loosel over his broad shoulders.</p>\n<p>His skin was dark, but seemed to shine strangely as well, and the air was\nfilled with a pleasant freshness as he strode towards Joel and extended his\nhand towards him. Joel glanced in confusion at the old man, who sat,\nunperturbed by the strange man.</p>\n<p>The man laughed. \u201cOh, don\u2019t mind Qismah, he\u2019s married to his work. He\ndoesn\u2019t pay attention to anything except those threads. Come, I have plenty to\nshow you. I\u2019m sure you have questions, and hopefully I can answer some of them\nfor you. I am Hospes.\u201d</p>\n<p>Joel took his hand, marveling at the warmness exuded by it on his own\nchilled limb. Hospes led him beyond Qismah, to the back of the impossibly long\nroom, talking as the went slowly.</p>\n<p>\u201cWell, Joel, you were supposed to have been here some time ago, but Qismah\nhad to improvise a little when things didn\u2019t go as planned with Mr. Turner.\u201d</p>\n<p>What was he talking about?</p>\n<p>Hospes laughed again. \u201cI suppose you\u2019re a little confused, aren\u2019t you? Well,\nwelcome to the afterlife, Joel \u2014 or the gateway to it, anyway.\u201d</p>\n<p>Joel gaspe d in surprise. \u201cYou mean\u2026 I\u2019m\u2026\u201d</p>\n<p>\u201cDead? Yes\u2026 Or truly alive, depending on how you look at it.\u201d</p>\n<p>Joel was taken aback by his guide\u2019s flippant attitude. If he really was\ndead, he didn\u2019t think Hospes should be laughing about it.</p>\n<p>\u201cOh, I\u2019m sorry, Joel, but I think you\u2019ll find that there are worse things\nthan dying.\u201d Hospes continued along past Qismah\u2019s position.</p>\n<p>\u201cLike I said before, Joel, the last time you were here, I was supposed to\ngreet you and give you \u2018the talk,\u2019 as we call it, but Qismah ended up putting\nyou back out there, due to an unexpected development with Mr. Turner.\u201d Hospes\nmotioned to his right, and Joel saw, to his amazement, another bewildered man\nfollowing another robed figure, just beyond a mysterious glass partition.</p>\n<p>\u201cWe do our best to keep track of things around here, and Qismah does a fine\njob of keeping things running smoothly, but we\u2019re far from fortune tellers, so\nevery once in awhile something slips through that has to be dealt with, like\nwhat happened tonight. It makes things harder, for you especially, but I think\nyou can handle it.\u201d He stopped abruptly and turned to face Joel.</p>\n<p>\u201cWell here I am, prattling on\u2026 What about you? Do you have any questions?\u201d</p>\n<p>Joel had plenty. He was still unclear about where he was and what was going\non. But where to begin?</p>\n<p>\u201cUmmm, well, what exactly does \u2014 Qismah \u2014 do?\u201d</p>\n<p>Hospes smiled. \u201cQismah is the weaver. You see, Joel, you interact with lots\nof different people. Your choices and your actions affect a lot of different\nthings, even if you don\u2019t see those effects first hand. Qismah is responsible\nfor keeping the system sane, for making sure the knots get tied properly\u2026\u201d\nHospes could tell he was losing Joel.</p>\n<p>\u201cHere, it might make more sense if you could see some things.\u201d He motioned\nto the left wall, where Joel saw a window that he hadn\u2019t noticed before. He\npeered out, looking over the lush jungle, but then it faded, replaced by a\nbeaten man in a hospital bed.</p>\n<p>\u201cJoel, meet Ernie. You saved his life, but you didn\u2019t even know it until\nnow. In fact, that man you tried to save today when you were shot was a good\nfriend of Ernie\u2019s. But that\u2019s beside the point right now.</p>\n<p>\u201cWhen Qismah retied your knot, you went and got in that car accident, but if\nyou hadn\u2019t, a police car carrying two detectives would have been hit by the\nspeeding car instead, and Ernie would have died in the meantime. But now,\nthanks to you, he has a chance.\u201d</p>\n<p>\u201cBut will he be OK?\u201d</p>\n<p>\u201cI don\u2019t know. Like I said, we\u2019re not fortune-tellers. But I do know if you\nhadn\u2019t done what you did, he would have died. And here\u2019s another interesting\nfact,\u201d Hospes continued as the hospital scene faded, replaced by a scene that\nJoel recognized. He was standing on the train, holding the door for a man\nrunning towards the train.</p>\n<p>\u201cYou held the train for Mike this morning, a man who would later kill his\nwife\u2019s boyfriend and would try to kill Ernie, the man you ended up saving.\u201d</p>\n<p>\u201cSo I\u2019m actually responsible for Ernie\u2019s almost-death?\u201d Joel asked.</p>\n<p>Hospes nodded. \u201cSort of, but not really\u2026 It\u2019s complicated. That\u2019s the\npoint. Your entire life s one big complicated knot of events and interactions.\nMost people don\u2019t realize that, but I think you do, to some extent at least.\u201d</p>\n<p>Joel remembered some of the late-night conversations he\u2019d had while in Asia\n. What Hospes was saying made sense in a lot of ways.</p>\n<p>\u201cSo now I\u2019m dead?\u201d</p>\n<p>\u201cYes. But your time had come anyway. You were supposed to die from an\nunexpected heart failure, which is what brought you here in the first place,\nbut then, like I said, Qismah retied your knot. But he tied it in such a way\nthat would bring you back here while fixing things. It\u2019s not yet Ernie\u2019s time\n\u2013 at least, we don\u2019t think it is. Like I said before, this isn\u2019t fortune-\ntelling.\u201d</p>\n<p>\u201cWhat is going to happen to that guy, Mike?\u201d Joel motioned beyond the\ntransparent partition to his right. Hospes shook his head.</p>\n<p>\u201cI don\u2019t know, really. That\u2019s all up to the judge. My job is to answer your\nquestions. Do you have any more?\u201d</p>\n<p>Joel remembered suddenly that he was <em>dead</em>. What about his father? His\nmother?</p>\n<p>\u201cCan I see my parents?\u201d</p>\n<p>In response, an image of his mother, huddled by his father\u2019s side in a\nhospital room, faded in the window.</p>\n<p>\u201cYour dad\u2019s going to be all right. And your parents will grieve, to be sure,\nbut they\u2019ll move on eventually. And someday they\u2019ll be having the exact same\nconversation we\u2019re having now.\u201d</p>\n<p>Tears came to Joel\u2019s eyes as he considered the finality of everything Hospes\nhad told him. He was so young! He had so many things he had wanted to do, but\nnow he wouldn\u2019t get that chance!</p>\n<p>Hospes wrapped his arm around Joel\u2019s shoulder and walked him towards the\ndoor at the end of the room.</p>\n<p>\u201cIt\u2019s not so bad, Joel. I think you\u2019ll like the eternal afterlife.\u201d</p>\n<p>\u201cAm I going to heaven or hell?\u201d Joel asked. It seemed the logical question.\nIf he was going to be spending eternity somewhere, he wanted to know whether\nhis tears were warranted.</p>\n<p>Hospes chuckled. \u201cI was waiting for that one. It\u2019s a good question, but I\ndon\u2019t have the answer. It\u2019s up to the judge. But if you want my opinion\u2026\u201d He\nopened the door and motioned for Joel to walk toward the streaming light the\npoured from the opening.</p>\n<p>\u201cI think your chances are pretty good.\u201d</p>\n<hr />\n<p>Three rooms from where Mr. and Mrs. Mendocino cried together over the loss\nof their son, tears of a different kind were being shed. Both Rhonda and Holly\nhugged Ernie close as he came to and uttered a few indecipherable words. He\nwas going to be okay.</p>\n<p>Out in the hall, Ames and Cobb listened incredulously as Heather explained\nthat Joel Mendocino had been killed in the accident. It was a lot for two\ntired cops to take in, after all that had already occurred that day. Without\nJoel\u2019s help with the tattoo, they\u2019d never have found out about the fight club,\nand the poor other guy would probably be dead\u2026</p>\n<p>Ames and Cobb stopped by the Mendocino\u2019s hospital room to express their\ncondolences, then walked out to their cold car. It had been a long day.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245992.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-11-29T15:42:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245992.gif"
        },
        {
            "id": "https://tylerbutler.com/november-24th-27th/",
            "url": "http://feed.tylerbutler.com/link/18607/17245993/november-24th-27th",
            "title": "November 24th-27th",
            "content_html": "<p>So my server went down this weekend, hence I wasn\u2019t able to post updates.\nHere\u2019s what you\u2019ve missed. I\u2019ll update the PDF when I get a chance. I\u2019ve\npassed the 45,000 word mark\u2026 Almost there!</p>\n<hr />\n<p><strong>Chapter 23: The Knot</strong></p>\n<p>Joel felt disoriented. Where was he? He glanced around the small, dimly-lit\nroom in which he found himself, trying to remember how he\u2019d gotten there.\nLight streamed in from a lone window to his left. Outside, the lush Sumatran\njungle glistened with morning dew. But he didn\u2019t remember this place from his\ntravels. Where was he?</p>\n<p>Standing up unsteadily, he looked down the length of room, searching for the\nexit. He found none. The room was of a short width, about 15 feet, but\nimmensely long; it stretched out infinitesimally both in front and behind him.\nThe only perceptible light was from the window beside him, and he suck his\nhead out, peering around the landscape for signs of civilization.</p>\n<p>The jungle stretched out for miles below him, and looking out either side of\nthe window revealed a plain exterior that stretched out at least as far as the\ndark interior did. The building he was in was on a long plateau; looking down,\nhe realized that there would be no escaping through the window. The plateau\nabruptly ended at the edge of the building and dropped straight down 30 or 40\nmeters. <em>So much for that plan</em>, he thought.</p>\n<p>He stepped back into the dim inside of the building. Looking to his left, he\nnow noticed a dim flicker of light. \u201cHello? Is anyone there?\u201d his voice echoed\neerily down the length of the room, but he received no response.</p>\n<p>The flicker of light seemed to grow stronger, so he began to walk towards\nit. The light from the window faded behind him as he moved on, and he\nstruggled to see anything around him. The light ahead seemed to be much\nsteadier now, so he continued towards it, driven by burning curiosity and a\nstrong desire to determine how he was going to get out of the room. Surely the\nsource of the light would hold some answers for him.</p>\n<p>He blinked his eyes in the darkness, attempting to force them to adjust to\nthe near pitch-blackness of his surroundings, and when he opened them again,\nhe noticed a window, similar, if not identical, to the one he had passed some\ntime back. It hadn\u2019t been there before\u2026 had it? How could he have missed it?\nHe ran up to it and looked out of it towards the jungle and to either side of\nthe building. The view was the same as before; the precipice below him, the\nplain smooth sides of the building on either side, stretching out towards\ninfinity.</p>\n<p>The cool breeze was refreshing against his skin, moistened by perspiration\nfrom his short hike through the stuffy interior of the building. He inhaled\ndeeply, letting the clear, humid air clear his lungs and his mind. How he\nloved that feeling! The clear, warm air \u2014 such simple pleasures that you\nsimply couldn\u2019t get back home in the city.</p>\n<p>He reluctantly remove his head from the window and continued his journey\nthrough the long room. The window\u2019s light faded behind him, but then,\nunexpectedly, another appeared in front of him. The pattern continued as he\njourneyed endlessly on.</p>\n<p>The flickering light grew more steady, but seemed to increase in size almost\nimperceptibly. It occurred to Joel unexpectedly that perhaps he wasn\u2019t moving\nforward at all; the lack of substantial increase in the apparent size of the\nlight source ahead was less than encouraging. Somehow, though, he felt that\nthat light held the answer to his escape, so he pressed on towards it, despite\nhis doubts.</p>\n<p>He continued on for what seemed like miles. Window after window appeared and\ndisappeared as he journeyed, but he ignored them, intent on making it to the\nlight, to the answer.</p>\n<p>Then, without warning, as the windows had appeared, he blinked and he was\nthere. The light was coming from a solitary candle sitting on a low table.\nBehind the table, deep in the shadows, sat an elderly man with a strange\nlooking cloth draped over his shoulder and in his lap. His features were\nbarely visible in the candlelight, and Joel stepped closer to examine him.</p>\n<p>His long grey hair was unkempt and hung in long strings around his head,\nfurther sheltering his face from Joel\u2019s prying eyes. The man gazed intently at\nthe cloth in his lap, and Joel noticed his fingers working with expert\nprecision and the utmost care on the loose thin strings that spidered out from\nthe cloth. To the man\u2019s left, Joel saw a roll of finished cloth \u2014 the man was\nweaving it himself.</p>\n<p>The pattern was intricate, and the thin strings the man handled shone with a\nsparkle that Joel had never seen before. He was overcome with a desire to\ntouch the cloth, and he knelt down and placed his hand gently on the roll. It\nwas tremendously soft, and seemed to radiate a soft warmth as well as a gentle\nshine. Joel longed to take the cloth and wrap himself in it\u2019s comforting\nwarmth, but he was interrupted by the man\u2019s quiet voice.</p>\n<p>\u201cYou\u2019re not supposed to be here.\u201d Joel started at the sound. He removed his\nhand from the cloth quickly and looked at the man. He did not look up; his\ngaze remained inextricably fastened to the work in front of him.</p>\n<p>Joel gazed, transfixed, as the man reached back to the roll of cloth that\nJoel had though finished and pulled a loose thread from the center of the\nroll. He pulled it slowly and surely towards his lap; the thread seemed to\ngrow longer and longer as necessary until it reached his lap, where, with\nquick indecipherable flicks of the wrist, he tied it to the strands he had\nbeen presently working on.</p>\n<p>A small smile crossed his face as he completed the knotting of the\ncollection of thin strings, and pushed the multicolored mass towards the\nnearly completed line of cloth he held in his lap, guiding it slowly along the\nblack wire-like string to which they were all bound.</p>\n<p>\u201cYou\u2019re not supposed to be here,\u201d he spoke again, still not breaking his\nsteadfast gaze.</p>\n<p>\u201cI\u2019m sorry. I don\u2019t know how I got here\u2026\u201d Joel responded unsteadily. The\nman frowned as he grasped another two threads and tied a simple knot, binding\nthem together.</p>\n<p>\u201cThis isn\u2019t right\u2026\u201d</p>\n<p>\u201cAgain, I don\u2019t really know how I got here. If you could just\u2026\u201d</p>\n<p>The man interrupted before Joel could continue, \u201cYou\u2019ll need to go\u2026\u201d</p>\n<p>Joel sighed, perplexed. Was the man not hearing him, or was he simply\nignoring him? \u201cWell, if you\u2019d just tell me how to get out, I\u2019d gladly leave.\nCould you tell me where the exit is?\u201d</p>\n<p>The man continued staring at his lap, a look of utter vexation on his face.\nHe pulled one of the threads from the collection that laid in front of him. As\nhe pulled on it, the end broke unexpectedly off, and the man held in his hand\na single thread unattached to the others. He raised his eyebrows and furrowed\nhis brow. \u201cThis isn\u2019t right.\u201d</p>\n<p>Joel was confused. The man seemed o be totally ignoring everything he had to\nsay, totally engrossed in his own work. \u201cWhat are you doing?\u201d he asked.\nPerhaps a direct approach would be more effective.</p>\n<p>\u201cKnots,\u201d the man mumbled under his breath. Was it a response, or the\nverbalization of a random thought by a crazy old man? It was clear to Joel\nthat the man was tying knots \u2014 he didn\u2019t need to be schooled in the obvious,\nhe needed to be told how to get out of this endless room.</p>\n<p>\u201cHmmm, yes, I\u2019ll have to fix this\u2026\u201d the man continued mumbling under his\nbreath. \u201cWhat to do\u2026 What to do?\u201d Joel sympathized. He also wondered what he\nshould do.</p>\n<p>Unexpectedly, the man started smiling down at the mass of threads. He\ngrasped one of them by the end and pulled it up in front of his face, peering\ninto the swirling colors and light that seemed to emanate from it.</p>\n<p>Joel was enthralled by the string \u2014 what kind of cloth was it? As he peered\nmore closely at the thread, he noticed pictures reflecting on the man\u2019s face\nand the surrounding walls. The candlelight projected through the thread was\nproducing swirling images all around. Upon closer inspection, Joel noticed\nhimself in the pictures, which, he now noticed, were actually moving. They had\na home video quality to them; the colors were washed out, the overall picture\ngrainy, but his own image was unmistakable.</p>\n<p>There he was at his sixth birthday party, when Afton Matthews had hit him\nafter he called her a doodoo-head. In another, he was arguing with Sara over\ntheir breakup, pleading with her to reconsider. Then he was at St. Ig\u2019s\npresenting his solution to the Math Club\u2019s weekly mathematical brain twister,\nsoaking in the incredulous looks of the other students at his mental\nfaculties. And then, in another, he was lying in his hospital bed, doctors\nswarming over him, his parents standing outside, peering in the window\nfrantically.</p>\n<p>What was going on? He glanced back down at the man, who now held a small\npair of scissors open, prepared to cut the thread at it\u2019s base, severing it\u2019s\nconnection to the rest of the cloth. \u201cWait, what are you doing?\u201d Joel cried\nout as the man deftly snipped the thread free.</p>\n<p>\u201cI\u2019m sorry\u2026 this has to be done,\u201d the man spoke softly. Joel felt a sudden\nemptiness overcome him, and he collapsed to his knees. Joel felt as if his\nbody was disintegrating; he was wasting away rapidly. The pictures faded as\nthe man moved the now solitary thread away from the candlelight.</p>\n<p>Joel fell prostrate on the floor and struggled to turn, facing the man. \u201cWhy\nare you doing this?\u201d he asked, aware that his own voice was\nuncharacteristically low and raspy.</p>\n<p>The man picked up the thread he had previously examined, and, apparently\nfinding what he was looking for, took the newly cut thread and tied them\ntogether in a complicated knot, then fastened them to another thin black\nthread that protruded out of the cloth, using an even more intricate joint.</p>\n<p>Joel tried to cry out again, but no sound came. The man smiled broadly at\nhis work. \u201cThere, that should do it.\u201d Joel continued his attempts to cry out\nas everything disappeared from view.</p>\n<hr />\n<p>\u201cWhat happened?\u201d Doctor Ross said as he entered the room.</p>\n<p>\u201cI don\u2019t know,\u201d Heather responded fearfully. \u201cHe just went into cardiac\narrest \u2014 there was no forewarning. He was awake and talking, then this!\u201d</p>\n<p>\u201cOK.\u201d The doctor looked at the instruments along Joel\u2019s bedside, then\nexamined his chart quickly. Nothing seemed to fit. Two orderly\u2019s wheeled in a\nportable defibrillator and heather ripped open the hospital gown covering\nJoel\u2019s chest.</p>\n<p>The doctor barked almost incomprehensible orders and the nurses and\norderlies scrambled to fulfill them. As the defibrillator\u2019s cold metal leads\nwere placed on his chest, Joel shot up in his bed, shouting maniacally, \u201cWhat\nare you doing?\u201d</p>\n<p>The hospital staff froze in confusion and amazement. Joel grabbed Heather\u2019s\narm tightly and looked fiercely into her eyes. \u201cI have to go.\u201d</p>\n<p><strong>Chapter 24: Search</strong></p>\n<p>\u201cHolly, I don\u2019t see him anywhere. We\u2019ve been up and down every street I can\nthink of and he\u2019s just not here.\u201d</p>\n<p>\u201cWell, we have to find him, Ned. We have to.\u201d</p>\n<p>Ned was frustrated. All Holly could say was \u201cWe have to find him,\u201d but she\nhad no ideas as to how to go about doing just that. She just wanted to\ncontinue driving around in circles until they stumbled upon him. At first, Ned\nhad humored her, but he was now convinced they weren\u2019t going to find Ernie\nthis way. He wasn\u2019t ready to give up \u2014 quite the opposite, in fact \u2014 but he\nwanted to go back to St. Ives and talk to Rhonda, and see if she had any ideas\nas to his whereabouts. Perhaps she knew some of the places Ernie went when he\ndidn\u2019t stay at St. Ives.</p>\n<p>But Holly would hear none of it. She refused to go back to St. Ives with\nhim; she wanted to stay out on the street \u2014 the whole night if they had to \u2013\nto find Ernie. Ned was puzzled by her complete reluctance to go to St. Ives.\nShe was not entirely without reason or logic, even in her excited state of\nmind, but she refused to even entertain the idea, no matter how many times he\nmentioned it.</p>\n<p>But this was getting ridiculous. They weren\u2019t getting anywhere, and\nsomething had to be done. \u201cHolly, I am going to St. Ives to talk to Rhonda.\u201d</p>\n<p>\u201cNed,\u201d Holly protested. \u201cI don\u2019t want to go to St. Ives. He\u2019s probably just\naround the next alley\u2026 Come on, let\u2019s check.\u201d</p>\n<p>She wasn\u2019t going to get her way this time. \u201cNo. I am going to St. Ives, I\u2019m\ngoing to talk to Rhonda, and then we\u2019ll decide what to do.\u201d He spoke\ndefinitively, and Holly turned her head and stared listlessly out the window\nat the passing grayness of the outside.</p>\n<p>She remained quiet throughout the rest of the drive, and Ned wondered if he\nhad permanently damaged their friendship. Still, it had to be done. Their goal\nhad to be to <em>find</em> Ernie, not to merely <em>look</em> for him.</p>\n<p>As the looming stone structure of St. Ives came into view, Holly turned her\nhead away from the window and looked straight ahead. Her eyes closed as she\nbent down at the waist, placing her hands under her thighs and whimpering\nsoftly.</p>\n<p>It occurred to Ned, as he sat there observing her, how like his youngest\ndaughter she was acting. When his youngest didn\u2019t get her way, she would often\nsit down, wrap her arms around her body, and pout. Ned shook his head. The\ndifference between a three-year-old and a twenty-year-old weren\u2019t that great\nafter all.</p>\n<p>He pulled the van to a stop along the side of the nearly empty street and\nprepared to get out, but as he opened the door, he noticed Holly was crying\nagain softly. He closed thee driver side door again and touched her shoulder\ngently.</p>\n<p>\u201cWhat\u2019s wrong, Holly?\u201d Her body shook convulsively as her tears overwhelmed\nher. Ned kept his hand on her shoulder, and she gradually became calmer and\nstopped shaking so much.</p>\n<p>She pulled her head up from it\u2019s position on her forearm and looked at Ned,\nan expression of despair and immense pain on her face. \u201cYou know how I told\nyou I grew up in McAllister Park ?\u201d she asked.</p>\n<p>Ned nodded. They had had this conversation. She had told him she was born\nand raised right here in this neighborhood. \u201cWell, that\u2019s not exactly true,\u201d\nshe continued. I did spend a lot of time here when I was younger, but I was\nreally raised in a nice house out in the northwest suburbs.</p>\n<p>\u201cBut when I was 8, my parents were in a car accident and both of them were\nkilled \u2014 I told you that; that is true. And I did get put in a foster home,\nlike I told you. Well, I actually got put in three or four different foster\nhomes. I didn\u2019t adjust well to my parents\u2019 death, and I was a real wild child.</p>\n<p>\u201cWhen I was 16, I ran away fro my fourth foster family. I had planned to\nmove out west and build myself a new life out there, but I only made it as far\nas McAllister Park .\u201d She laughed hollowly. Ned looked intently at her and\nlistened.</p>\n<p>\u201cWell, the neighborhood wasn\u2019t too good, even back then, and things were\ntough for me. I lived on the street, but being a woman, and a young one at\nthat, I dealt with a lot of shit. A kind old woman \u2014 Elsie was her name, I\nthink \u2014 brought me here, to St. Ives, one especially cold night, and I liked\nit. It seemed to be perfect. Everyone was very friendly, they seemed to have\nplenty of food, and there were warm beds.</p>\n<p>\u201cI especially liked John, the director of the shelter. He would sit and tell\nme great stories, and he always listened to me when I talked. I honestly\nthought I was in heaven. I thought I could get back on my feet, then I could\nfinish my trip out to California . Things were going to work out.</p>\n<p>\u201cI stayed there \u2014 or here, I guess \u2014 for a few days, and everything was\nfine. But then I began to notice John touching my shoulder while I ate, or\nrubbing his leg on mine while he sat next to me at mealtimes. He seemed to go\nout of his way to find me, and he often asked me to come see him in his\noffice. Ordinarily, I wouldn\u2019t have considered that a big deal, but the way he\nwas touching me was making me feel extremely uncomfortable, so I always found\nan excuse, thankfully.\u201d She paused, and Ned wondered if perhaps she wouldn\u2019t\nbe able to or want to continue.</p>\n<p>\u201cIt\u2019s all right if you don\u2019t want to talk about it,\u201d he said.</p>\n<p>\u201cNo\u2026 I need to tell <em>someone</em>.\u201d She took a deep breath, then continued.\n\u201cUsually we were in rooms with at least another woman, but one night, the\nwoman who I\u2019d been staying with didn\u2019t come back for the evening, so I was in\nthe little room alone. John came in late that night. I was asleep, and the\nnext thing I knew, I had a pillow over my head and somebody was groping at my\npanties. I tried to scream, but the pillow covered it, and made it hard to\nbreathe\u2026\u201d She broke off, and Ned put his hand back on her shoulder. She\ncontinued haltingly, tears welling up in her eyes again.</p>\n<p>\u201cI don\u2019t really know what happened \u2014 I think I tried to block it out. He was\non top of me\u2026 <em>raping</em> me\u2026 and I couldn\u2019t do <em>anything</em>. He took off the\npillow because he \u2018wanted to see my beautiful eyes,\u2019 but even then I couldn\u2019t\ndo anything. Mentally, I wanted to scream and shout and twist and turn and\nscratch, but no matter what my brain said, my body just sat there. I can still\nremember the smell of the soup in the room, the muffled sound of the washing\nmachines down the hall, the feeling as he\u2026\u201d She broke off again, and Ned\nstrengthened his grip on her shoulder, hugging her shuddering body to him.</p>\n<p>There they sat in silence for what seemed like hours, until Holly finally\npushed herself away from him. \u201cI\u2019m sorry\u2026 but even now I can\u2019t bear the\nthought of that place. I didn\u2019t stay long after that night. John said if I\never told anybody, no one would believe me. I guess he\u2019s gone now, but the\nmemory\u2019s still with me\u2026\u201d</p>\n<p>Ned nodded. It made so much more sense now. He hated himself for bringing\nher here, when she had asked \u2014 begged, even! \u2014 him not to. He hated himself\nfor recommending on a daily basis that she volunteer here, reminding her each\nday of that terrible experience. What an idiot he\u2019d been!</p>\n<p>\u201cI\u2019m sorry,\u201d he spoke quietly. \u201cI shouldn\u2019t have made you come here.\u201d</p>\n<p>Holly smiled wistfully. \u201cHonestly, it feels kind of nice to finally tell\nsomeone \u2014 someone who believes me that it happened \u2014 someone that cares. So\ndon\u2019t beat yourself up over it. You couldn\u2019t have known.\u201d She looked out the\nwindow at the large stone building.</p>\n<p>\u201cWell, since we\u2019re here, you might as well go in and talk to Rhonda.\u201d</p>\n<p>Ned nodded and opened the driver door, stepping into the bitter cold of the\nnight. When he entered St. Ives, he found Rhonda in the kitchen, on the\ntelephone.</p>\n<p>\u201cMissin\u2019 for 24 hours? Hell, he might be dead in 24 hours! There\u2019s nothin\u2019\ncan be done? OK. Thank you.\u201d She hung up the phone angrily. \u201cCan\u2019t report\nsomeone missin\u2019 \u2018til they\u2019ve been missin\u2019 24 hours. Now that\u2019s just stupid!\u201d</p>\n<p>She looked up, noticing Ned in the kitchen doorway. \u201cOh, sorry \u2018bout that\u2026\nwhat can I do for ye?\u201d Ned walked in and explained the whole story of their\nsearch to her as she prepared them both a cup of tea.</p>\n<p>\u201cWal, I\u2019ve been feelin\u2019 a little strange myself \u2014 this isn\u2019t the firs\u2019 time\nErnie hasn\u2019t come back, but this time it seems different. I mean, he was out\nlast night, and I know that he wouldn\u2019t let it happen two days in a row \u2014 he\nknows I\u2019d lay into him for dat.\u201d She sighed and took another sip of her tea.\n\u201cBut da police say dey can\u2019t do anything yet. You say you\u2019ve looked through\nall the streets and alleys \u2018round here?\u201d</p>\n<p>Ned nodded. Holly had insisted that they leave no stone uncovered. \u201cWal, I\ndon\u2019t know then. I hope he\u2019s all right. Give me your number. If I hear\nanything or he shows up, I\u2019ll give you a call.\u201d</p>\n<p>Ned wrote his number on the pad she handed him, thanked her for the tea, and\nheaded back out in the cold towards the van. Holly was staring anxiously out\nof the window at the stone building as he approached.</p>\n<p>\u201cDid she have any ideas?\u201d she asked as Ned closed the door and started the\nengine.</p>\n<p>\u201cNo, but she said she\u2019d call us if she heard anything or he appeared there.\u201d\nHolly looked disappointed, and Ned couldn\u2019t blame her. He had hoped Rhonda\nwould have some ideas as well.</p>\n<p>\u201cWhere are you going?\u201d Holly asked, as Ned turned back towards their main\nsearch area instead of going straight back towards his home.</p>\n<p>\u201cWell, I figured we owed it to Ernie to check one more time. Maybe we missed\nsomething.\u201d Holly smiled.</p>\n<p>The roads were as empty as they\u2019d been during their previous search, and\nthere was still no sign of Ernie along any of the streets or the narrow\nalleyways. They were disappointed, but neither of them had really expected to\nfind anything. They were both tired \u2014 it was time to call it a night and hope\nfor new developments in the morning.</p>\n<p>\u201cNed, do you see that?\u201d Holly asked, pointing up ahead at a shiny glint on\nthe street curb.</p>\n<p>\u201cYeah.\u201d</p>\n<p>\u201cWhat is it?\u201d</p>\n<p>\u201cI don\u2019t know\u2026 Probably a plastic bag or a hubcap or something.\u201d</p>\n<p>\u201cStop for a sec.\u201d</p>\n<p>Ned obeyed and jumped as Holly threw the passenger door open and hopped out,\nrunning towards the glint up ahead. She returned a few seconds later, excited.\n\u201cLook, Ned!\u201d she exclaimed, thrusting the object in her hand at Ned\u2019s face. It\nwas Ernie\u2019s Walkman.</p>\n<p><strong>Chapter 25: Fight</strong></p>\n<p>When Mike came to he was alone in a small maintenance closet. He was no\nlonger tied to the chair, but the appearance of freedom was short lived. The\ndoor to the closet was closed, and a quick test revealed it was locked as\nwell.</p>\n<p>He sat down on the floor and waited, rubbing the back of his head gingerly.\nHe felt the telltale rough surface of the scab on the back of his skull where\nthe previous blows had broken the skin. His head was really taking a beating\ntoday. Between the bouts of unconsciousness earlier in the day \u2014 had that just\nbeen this morning? \u2014 and the more recent knocks given him by Angelo\u2019s goons,\nit was a wonder he was still standing.</p>\n<p>He was standing, though, unsteadily. He leaned against the door, balancing\nhimself, waiting for the lightheadedness to pass. The swirling of his brain\ncells slowly stopped, and he began to feel like his old self again.</p>\n<p>The slightly muffled sound of cheering could be heard beyond the door. He\nstrained his hearing to focus on the sound, to pick up any specific sound that\nmight tell him something about what Angelo had in mind.</p>\n<p>A man was speaking, his voice Angelo didn\u2019t recognize.</p>\n<p>\u201cWell, folks, we have a very special event tonight. You know, normally we\ntry to encourage audience participation during the \u201cbattle,\u201d as we like to\ncall it\u2026\u201d The crowd cheered again, louder than before.</p>\n<p>The man continued, speaking loudly over the din of the crowd. \u201cBut\u2026 BUT\ntonight, we have something special planned. I\u2019d like to tell you about Mike \u2013\nhe\u2019s a guy just like you. He had a job downtown, he had a nice house, a nice\nwife \u2014 things were great. But this morning, Mike got fired from his job\u2026\u201d\nThe crowd booed.</p>\n<p>\u201cWhen he got home, he found his wife in bed with another man.\u201d The crowd\nbooed even more loudly, and Mike discerned several insults flying from their\nmouths. \u201cThat bitch!\u201d \u201cWhore!\u201d \u201cCunt!\u201d</p>\n<p>\u201cBut Mike didn\u2019t sit back and take that shit, no! He fought back! He picked\nup a baseball bat and beat the fucking shit out of that adulterous bastard,\nand did a nasty number on his wife, too!\u201d The crowd cheered maniacally and\nsome even clapped. Mike felt pretty good. He <em>had</em> done the right thing,\nafter all. What else could he have done? Finally he was getting some\nrecognition for the hard work he\u2019d put in, for the talent that he had nurtured\nand developed over countless years.</p>\n<p>The door to the closet opened unexpectedly, and Angelo stood there, backed\nby two large sullen-looking men. He looked Mike up and down, and smiled\ncryptically.</p>\n<p>\u201cLooking good, Mike. Have you heard what they\u2019re saying about you? Mike, I\u2019m\ntelling you, this is the place for you. The guys here <em>love</em> you! Listen to\n\u2018em!\u201d He motioned down the hall where the sound of the crowd grew louder\nagain. \u201cNow let\u2019s go and show \u2018em why you\u2019re king shit of fuck mountain.\u201d</p>\n<p>Mike hated Angelo, but the sound of that crowd was incredibly enticing. They\nwere now shouting his name. \u201cMike\u2026 Mike\u2026 Mike\u2026\u201d</p>\n<p>\u201cYou really want to see him? You want to see him fight some degenerate\nbastard?\u201d The crowd cheered even more, and the chant of his name grew more\npowerful. Mike felt good. They wanted him. They needed him. The rage from the\nday\u2019s events came rushing back, and he smashed his fist against the closet\ndoor impulsively.</p>\n<p>\u201cThat\u2019s right,\u201d Angelo smirked. \u201cTap into that anger. You have a right to,\nafter what those bastards have done to you. Go show \u2018em all why you\u2019re a bad-\nass motherfucker.\u201d Angelo stepped aside and motioned down the hall. Mike\nhadn\u2019t heard him. He was focused on the chanting from the crowd.</p>\n<p>He followed the noise into the large room. There must have been hundreds of\nmen there, all shouting for him. The announcer glanced over his shoulder, and\nseeing Mike behind him, turned back to the raucous crowd and announced his\narrival.</p>\n<p>\u201cHere he is, Mike Turner!\u201d The crowd shouted in frenzied excitement, and\nMike stepped forward confidently. He didn\u2019t feel like himself \u2014 he felt more\npowerful. He felt like a hulking menace, a \u201cbad-ass motherfucker,\u201d as Angelo\nhad termed it, and he was going to give these fans a show.</p>\n<p>He stepped out in the center clearing and the announcer stepped back,\nallowing the circle of excited faces to close around him. Mike looked around\nat the faces. The men were mostly dressed in suits, and all looked to be about\n30 or 40 years old. Their faces were tired, but a maniacal frenzy shone in\ntheir eyes, and they cheered, clapped and shouted as Mike raised his right\nhand above his head, fist closed defiantly. They were not unlike him \u2014 they\nwere his peers. And he commanded their respect. Every man in that room wanted\nto be him at that moment, and the ceaseless applause confirmed it.</p>\n<p>He turned around 360 degrees, hand still in the air, letting each and every\nmember of the crowd survey their new god. Their look of awe was magnificently\nboosting his ego, and any qualms he had about participating in something\nAngelo had suggested and sanctioned were now only distant considerations. He\nhad killed a man, and tonight, he\u2019d kill another.</p>\n<p>Much more than at any other point in his life, Mike knew that this was his\ndestiny. This was his purpose, his reason for existence. Everything up until\nthis night was preparation \u2014 the shaping of his temper, his nightly boxing\nworkout to funnel away the constant anger he felt, the events of the past day\n\u2013 they had all prepared him to find himself. And when all was revealed, there\nwas no sign of Mike Turner, the man. There was only Mike Turner, the _animal\n_.</p>\n<p>He was primal, he was brutal, he was everything that Angelo had said he was.\nAnd this was his arena \u2014 his home. This battleground was the place where he\nwould complete the transformation. But to do that, he would need an opponent.\nWhere was the man these joker\u2019s had found to fight him?</p>\n<p>He wheeled around, searching for the man he would soon kill. The crowd\nparted, and a man was pushed roughly into the right side of the circle. He\nstood there unsteadily, peering out from behind thick glasses.</p>\n<p>This was the man they had selected for Mike to fight? <em>This</em> was him, this\nscared, shaking man with geeky glasses? For a moment, Mike felt slighted. As\npsychotically driven as he was, he probably could kill a man twice his size,\nmaybe even ten men, and they had found this little bastard.</p>\n<p>The crowd\u2019s shouting and cheering would not let him object, however; he\u2019d\nhave to fight the man, no matter how small or insignificant he was. This fight\nwould be easy. He\u2019d win their favor, then they\u2019d send him someone greater,\nsomeone more powerful to fight the next time. But this man would need to be\nkilled, of that Mike was certain.</p>\n<hr />\n<p>Ernie was confused. He had been unconscious until his abductors had pulled\nhim out of the car trunk and waved some strange-smelling stuff in front of his\nnose. They had pulled him roughly into some building and held him firmly in a\nsmall hallway. He could hear loud shouting ahead.</p>\n<p>Then, without warning, the two men holding him pushed through a mass of\nbodies and threw him out into a large circle, facing another man who paced in\na frenzy around the outside of the circle, his fist raised above his head.</p>\n<p>His glasses were foggy from the warm humidity in the building, but he dared\nnot remove them to wipe them off. He was frightened beyond reason, and he\ndidn\u2019t want to risk the blindness that would come with the removal of his\nglasses. He had to be able to see everything.</p>\n<p>The man across from him lowered his arm when he noticed Ernie. His eyes were\ncrazed and bloodthirsty, and Ernie got the distinct impression from his look\nthat he was not in the mood to make friends.</p>\n<p>The man sidestepped towards him slowly. Ernie was unsure what to do, but he\ndidn\u2019t want to get in the man\u2019s way. All he wanted to do was get away. He\nturned and tried to get out through mass of bodies that now blocked the path\nthrough which he had entered the circle, but the men there laughed and grabbed\nhim pushing him back into the center.</p>\n<p>As he turned his head, his jaw met with the man\u2019s fist, sending him\nsprawling to the floor. His glasses clattered on the concrete alongside him.\nThe man towered over him menacingly, silently daring him to get up. Ernie\ndidn\u2019t want to, but the man\u2019s fists were less damaging weapons than his feet,\nso against his will, he forced himself to stand again.</p>\n<hr />\n<p>Mike had been right about his opponent. There was very little resistance. He\nhad initially tried to turn and run, but the circle of fans had sportingly\nprevented <em>that</em>. Mike had taken the opportunity to run up behind him\nquickly, and planted his first punch squarely on the man\u2019s jaw. It had been a\nclean punch, a powerful one, and the man had crumpled to the floor under his\nstrength.</p>\n<p>Mike grinned and stepped towards the man, raising his hand at the crowd\nagain, proclaiming his strength. The man looked up fearfully, bleary-eyed\nwithout his glasses, tears streaming from his eyes.</p>\n<p>Mike ignored him completely, and as the man struggled to stand again, on all\nfours, Mike planted a swift kick to his stomach, eliciting a gasp and low moan\nas the man went down again.</p>\n<p>Mike diabolically repeated the cycle, following the man as he crawled around\nthe circle, trying to find means of escape. Sometimes he\u2019d let the man stand,\nthen punch him down to the floor again, other times he\u2019d kick viciously while\nthe man stood moaning on the ground. Blood was now everywhere, and the sight\nof the maroon flow only increased the crowd\u2019s agitation and Mike\u2019s frenzy.</p>\n<p>He was no longer himself. His sole purpose was to beat the pure existence\nout of this man. The crowd pulsated at every punch, every kick, and he drew\npower from their yells and shouted encouragement.</p>\n<p>At one crowd member\u2019s shouted suggestion, he kicked the man\u2019s head, hard,\nwhile he lay on the ground. The neck whipped back with a satisfying crack, and\nthe man\u2019s body curled up, motionless. He made no attempt to rise this time.\nThe crowd crooned approvingly.</p>\n<p>Mike stood over the man\u2019s limp, crumpled body, his bare muscled back\nglistening magnificently under the fluorescent lights of the warehouse. The\ncircle of men chanted methodically. \u201cFinish him\u2026 Finish him\u2026\u201d Mike looked\nup the faces around him. They were crying for finality, for annihilation, for\nblood, and he would give it to them. This was it. He had finally found it.\nThis was his shining moment.</p>\n<p><strong>Chapter 26: Crash</strong></p>\n<p>\u201c Just where are we going, son?\u201d Joel\u2019s father seemed puzzled by his son\u2019s\nstrange request to leave the hospital and drive off somewhere, but he knew his\nson well enough to not ask too many questions; Joel wouldn\u2019t flip out like he\nhad about anything that wasn\u2019t important.</p>\n<p>Joel wished he could answer his dad, but he honestly didn\u2019t know where they\nwere going. He had woken up in the hospital with an uncontrollable urge to get\nup, leave the hospital, and drive somewhere, <em>anywhere</em>. His mother, not to\nmention the doctors, had all protested valiantly, but in the end his father,\nsensing the urgency that Joel was attempting to communicate, had volunteered\nto take his son where he felt he needed to go, and had successfully silenced\nthe doctors.</p>\n<p>But his faith in his son was thinning as they drove on aimlessly. Joel was\nunable to give any concrete information about their destination, instead\ngiving last-second directions, forcing him to make hairpin turns and nearly\nflipping their old station wagon over several times. But the urgency on Joel\u2019s\nface never wavered.</p>\n<p>Joel looked intently out the window, waiting for the next spur of intuition\nthat would prompt another turn. He thought back on the fading memory of the\ndream \u2014 is that what it was? \u2014 and of the man with the threads, weaving the\ncloth. What had it all meant? His father had told him that his heart had\nstopped suddenly in the hospital, for no apparent reason, but Joel felt fine\nnow. In fact, the pain in his side was almost non-existent, though the bloody\npiece of gauze taped tightly to his side served as a reminder of his injury.</p>\n<p>He had a suspicion that there was more to his dream than normal. Something\nabout it felt final, like he was supposed to learn something from it. And the\nfeeling of complete emptiness when the man had cut the thread\u2026 He glanced\ndown as the memory of that feeling returned; no, there was no hole in his\nstomach, thank God.</p>\n<p>He finally answered his father, \u201cI don\u2019t know, Dad.\u201d</p>\n<p>\u201cWhat?\u201d</p>\n<p>\u201cI don\u2019t know where we\u2019re going.\u201d</p>\n<p>\u201cUmmm, OK\u2026 Well, just try to give me a little more warning with the turns,\nall right?\u201d</p>\n<p>Joel smiled. His dad hated driving anything more than the speed limit; their\nbreakneck speed and last minute turns could not be good for his nerves.\n\u201cThanks for doing this, Dad.\u201d</p>\n<p>His father smiled wryly. \u201cWell, it\u2019s not like you gave me much\u2026\u201d</p>\n<p>\u201cRight! Turn right!\u201d Joel shouted suddenly, bracing himself against his seat\nas his father complied. The tires screeched angrily, and the drivers behind\nthem honked as they screamed by, seemingly balanced on two wheels.</p>\n<p>\u201c\u2026choice. It\u2019s not like you gave me much choice,\u201d his father continued\nhaltingly as they bounced along the narrow side street Joel had directed them\nonto.</p>\n<p>\u201cSorry,\u201d Joel said sheepishly. He didn\u2019t even really know why he had yelled\nto turn \u2014 it just sort of came out. Well, hopefully it would all make sense\nonce they arrived at their destination, where ever it was.</p>\n<hr />\n<p>Cobb and Ames were on their way to Delome when the call came in over the\nradio. \u201cUnit 402\u2026 Cobb, Ames , you there?\u201d</p>\n<p>It was Foster. Ames picked up the radio transmitter and responded. \u201cYeah,\nFoster, we\u2019re here. What\u2019s up?\u201d</p>\n<p>\u201cThere\u2019s some trouble over on Delome\u2026 You guys are headed there, right?\u201d</p>\n<p>\u201cYeah, we\u2019re on our way right now.\u201d</p>\n<p>\u201cWell pick it up. There\u2019s somethin\u2019 wrong over there. OC called and said\nthey can\u2019t raise either of the blue and whites on the radio, and Mrs. Riley,\nthe old woman that had been calling to complain, called in and said that the\nnoise was louder than it had ever been before. He said it sounded like a war\nwas goin\u2019 on over there. You\u2019re the closest unit we\u2019ve got, so step on it.\nWe\u2019re sending backup \u2014 be careful.\u201d</p>\n<p>\u201cYou\u2019ve got it, Lieutenant.\u201d Ames hung up the radio receiver and looked at\nCobb. \u201cWell, you heard her partner. Let\u2019s go.\u201d Cobb flipped on the siren and\nlights, and, as instructed, floored the accelerator.</p>\n<hr />\n<p>Neither Joel nor his father even saw the other car zooming into the\nintersection. They had heard the siren approaching behind them, and had pulled\nas far as possible to the right as the cop car passed them, speeding into the\nintersection.</p>\n<p>Joel\u2019s father, monitoring the fla shing lights in his left-side mirror, had\nnot noticed the red light in the Franklin \u2014 Niles intersection until it was\ntoo late. Suddenly the left side of station wagon crumpled with a magnificent\nscreeching sound, and the world was spinning around them.</p>\n<p>Joel felt weightless for a moment, then felt searing pain in his legs as\nthey were crushed in a mass of metal. His head bounced viciously against the\ntop of the station wagon as the huge vehicle spun out of control, and finally\ncame to a scrapping stop, upside down on the far side of the intersection.\nJoel looked over at his father, whose head was slumped back against the\nheadrest, cuts and scrapes on his face and neck. He wasn\u2019t moving.</p>\n<p>Cold air rushed in from the windows, now free of glass. Joel tried to speak,\nbut everything was silent. His ears were ringing; he couldn\u2019t hear anything;\nthe entire world seemed to move in silent slow motion, like a Charlie Chaplin\nfilm at half speed.</p>\n<p>He became aware of movement outside the car. Strange upside-down people came\nrunning towards the car. Faces peered in both windows, shouting something at\nhim, but he couldn\u2019t hear them above the ringing in his ears.</p>\n<p>His unexplainable sense of purpose, which had driven him to rise from the\nhospital bed and brought his father out here along with him, was now gone. He\njust wanted to sleep. Couldn\u2019t these people see he just wanted to rest? With a\nwave of his hand, he dismissed the faces and closed his eyes, beckoning sleep\nto come as his door opened and strong hands pulled him out of the car.</p>\n<hr />\n<p>Cobb sat dazed in the driver seat of the car as it came to a stop, having\ncompleted a full 360 degree spin, facing the direction it had initially been\nheaded. \u201cHoly shit!\u201d he said under his brea th. He looked over at Ames , who\nwas clutching the dashboard with white-knuckled hands, a breathing hard and\nlooking straight ahead, wide-eyed.</p>\n<p>\u201cHoly shit is right\u2026\u201d Ames responded, peeling his hands from the dashboard\nand looking back over his shoulder at the wreckage behind them. The blue fla\nshing lights cast at eerie glow over the whole scene.</p>\n<p>Cars on either side of the intersection had stopped, doors hanging open as\nmotorists stepped out and ran towards the vehicles to offer what assistance\nthey could.</p>\n<p>Cobb and Ames now had a dilemma. Ordinarily, their purpose would have been\nclear; they would have exited their vehicle and gone back to the scene of the\naccident, offering whatever help they could. But in this case, there was also\na developing situation down on Del ome that also required their attention. It\nwas not immediately clear what they should do, and in fact, either choice\nwould no doubt leave them with a disciplinary inquiry.</p>\n<p>Ames decided that the other motorists had the accident covered. Ames \u2019 and\nCobb\u2019s presence would only add more confusion to the scene. He picked up the\nradio and motioned for the still-stunned Cobb to move on.</p>\n<p>\u201cDispatch, this is unit 402, we\u2019ve got an accident at the Franklin \u2014 Niles\nintersection. Looks pretty bad, send ambulances and road clearing equipment.\nOfficers leaving the scene in pursuit of another possible crime.\u201d</p>\n<p>\u201cTen four, unit 402, ambulances are on their way.\u201d</p>\n<p>\u201cHope everybody\u2019s all right,\u201d Cobb muttered as he sped up again, continuing\non towards the ind ustrial section of town.</p>\n<p>\u201cNot much else we could do. I have a feeling something is wrong with those\nblue and whites, and even if we\u2019d stayed, the ambulances would have taken just\nas long to get there.\u201d</p>\n<p>\u201cYeah, I know, but it seems wrong to just leave them there, you know.\u201d</p>\n<p>\u201cYeah. Let\u2019s hope whatever\u2019s going on down here is worth it.\u201d</p>\n<p>**Chapter 27: Takedown **</p>\n<p>Angelo had a problem. That bitch old woman from down the street had been\ncalling the cops again, and not one, but <em>two</em> blue and whites were running\nalong the street, looking for signs of trouble.</p>\n<p>There was no way he could stop the fight now. The crowd was in too much of a\nfrenzy, and Mike was doing a hell of a job beating this guy to a pulp. It was\ntrue magic, and if Angelo hadn\u2019t been so preoccupied with dealing with the law\nenforcement threat, he would have enjoyed watching the fight himself.</p>\n<p>But now, he stood pacing in front of four bound and gagged city cops,\nwondering what he should do. He had sent out several of his best men to grab\nthe cops before they could call for backup, but he couldn\u2019t be sure they had\nsucceeded entirely, and even if they had, it wouldn\u2019t be long until backup\nwould show up anyway, since no one was responding to the radio calls.</p>\n<p>Shit! Why tonight? Mike was giving them the show of a lifetime out there \u2013\nhe\u2019d bring in at least <em>double</em> the normal attendance next week! But he\u2019d\nprobably have to stop the fight early. He couldn\u2019t risk getting shut down at\nthis point, and he had little doubt that more cops were on their way.</p>\n<p>He motioned to the men who stood guard over the bound officers, and they all\nstepped out of the small closet room, closing and locking the door behind\nthem.</p>\n<p>\u201cOK, here\u2019s what I want you to do\u2026 Go around quietly to the outside of the\nfight circle and let people know cops are on their way. It won\u2019t take long for\nword to get around. People\u2019ll start clearin\u2019 out on their own. I\u2019m getting\u2019\nout of here.\u201d</p>\n<p>\u201cWhat about the guy?\u201d one of the men asked, motioning towards the arena\nwhere Mike stood hunched over, delivering vicious blows to Ernie\u2019s back and\nskull.</p>\n<p>\u201cLeave \u2018im. We don\u2019t have time to deal with \u2018im right now.\u201d It was a pity,\nreally, since Mike had already shown such promise, but Angelo didn\u2019t have much\nchoice at this point. Mike was crazed \u2014 out of his mind \u2014 right now. It would\ntake him too long to cool down enough to be lucid. Angelo couldn\u2019t take the\nrisk of being anywhere near here when the cops showed up.</p>\n<p>His men ran off to follow his directions, and he turned, Marty close behind,\ntowards the door where his car waited outside. He shot one glance back towards\nthe arena, where Mike\u2019s latest maneuver elicited another scream of approval\nfrom the frenzied crowd. _What a shame. _</p>\n<hr />\n<p>As Cobb and Ames made the final turn towards the industrial section, they\nnoticed several cars moving quickly towards the highway, headed the opposite\ndirection. \u201cLooks like we missed the party,\u201d Ames commented, taking note of\nthe frantic, frightened look on the face of one of the drivers as he passed\nby.</p>\n<p>\u201cNot quite,\u201d Cobb responded. \u201cLook.\u201d He pointed ahead to a warehouse on the\nleft side of the street. Faint light streamed from the windows, and men in\nbusiness suits and loose ties poured out of the doors, scrambling over each\nother towards lots on either side of the building, where their cars sat,\nobscured behind overgrown weeds and shrubbery.</p>\n<p>\u201cWell, somethin\u2019s been goin\u2019 on,\u201d Ames commented, drawing his gun from his\nwaist and preparing to jump out of the car at a moment\u2019s notice.</p>\n<p>\u201cI\u2019m going to pull up to the back,\u201d Cobb said, turning the steering wheel\nexpertly to the left. \u201cThere\u2019s no way we\u2019re gonna take all these guys by\nourselves. Let\u2019s go in the back and see if we can find out what\u2019s going on.\nThere\u2019s gotta be somethin\u2019 going on in there.\u201d</p>\n<p>Ames nodded as he checked the barrel on his gun again. He was ready.</p>\n<p>Cobb pulled the car to a screeching halt and the detectives threw both doors\nopen, pumped out, and ran to the back door, one on either side of it, backs\npressed against the wall. Ames nodded, and Cobb turned and kicked the door in\nwith a crash. Ames followed him into the building, gun held ahead of him at\nthe ready.</p>\n<p>They moved quickly through the small labyrinth of office and maintenance\nrooms, checking for anyone or anything, but no one was there.</p>\n<p>They eventually came to the small hallway which led to the main area of the\nwarehouse. Light crept under the closed double doors leading into the room,\nand from their position they could hear echoic footsteps a man shouting.\n\u201cWait! Where are you going? What the hell do you think you\u2019re doing? Get back\nhere! You\u2019re missing the fuckin\u2019 grand finale!\u201d</p>\n<p>They stepped through the heavy doors and saw a man, bare-chested, covered in\na sheen of perspiration and grit, standing over a bloody mess of a man, a\ncrazed look in his eyes, shouting at the opposite side of the room, where the\nswinging doors indicated the last of the spectators had recently departed.</p>\n<p>\u201cFreeze! Police!\u201d</p>\n<hr />\n<p>Mike\u2019s audience was gone. Out of the corner of his eye, he had seen the\nexodus begin. Someone had yelled, \u201cThe cops are coming!\u201d With that, the entire\nroom had turned into a stampede of suits, each one heading for the door as\nfast as he could.</p>\n<p>Mike was surprised and annoyed that they were such pussies. The cops? What\ncould they do to him? He was fuckin\u2019 invincible! He could take a whole army of\ncops on himself, none of the men would have to worry at all \u2014 he could protect\nthem.</p>\n<p>He shouted at them to stay, to watch his finale, to observe his final\ncrushing of the man beneath his foot, but his words fell on deaf ears. When\nthe last of the men passed through the double doors to the cold night outside,\nhe became aware of movement behind him.</p>\n<p>\u201cFreeze! Po lice!\u201d He turned and eyed the two men warily. Were they serious?\n<em>This</em> was who\u2019d been sent to take <em>him</em> on? They leveled their guns on him\nand repeated their warnings.</p>\n<p>Mike looked down at the mess below him. He had done quite a job. Angelo had\nbeen right when he had called him an artist. The blood smeared across the\ncold, dusty concrete from his opponent\u2019s escape attempts did remind him of a\nJackson Pollack work.</p>\n<p>He leveled his eyes with the two police officers in front of him. They\ncontinued to yell at him, but he ignored them. He was invincible, right? Fuck\nthem! They\u2019d pay, just like everyone else had.</p>\n<p>With that thought he screamed his battle cry and ran towards them, sweat,\nblood, and dirt sliding off of him and landing in miniature puddles on the\nfloor behind him. He was an ancient warrior, an animal, the personification of\nrage, brutality incarnate. None would stand in his way.</p>\n<p>The first bullet struck him on his right side, and threw him slightly off\nbalance, but the second bullet struck his left side, restoring his balance.\nWas this the best they could do? He barreled on, until the third, fourth, and\nfifth bullets whizzed through his chest. He was vaguely aware of the small\nexplosions of blood that erupted as they pierced his skin, and he faltered.\nHis mind willed his legs to continue their motion, their support of his body,\nbut they refused.</p>\n<p>He fell on the floor in front of the detectives, sliding forward as far as\nthe force of his momentum would carry him, and ended in a heap of crumpled\nhumanity at the feet of the detectives.</p>\n<p>His chest heaved, and he willed himself to rise up, to destroy these\nbastards, but his body refused, and he exhaled once in final defeat before his\nbody ceased to move at all.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245993.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-11-29T08:38:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245993.gif"
        },
        {
            "id": "https://tylerbutler.com/turducken/",
            "url": "http://feed.tylerbutler.com/link/18607/17245994/turducken",
            "title": "Turducken!",
            "content_html": "<p>I really should be writing my novel right now, since it is due in six days and\nI still have quite a bit to write, but this is just too cool. I heard about it\non the radio yesterday, and I wish I\u2019d heard about it sooner, because I would\nhave ordered a turducken for Thanksgiving, instead of buying a bunch of fried\nchicken from Popeye\u2019s, which is what I am probably going to do. What is a\nturducken, you ask? Only the <strong>coolest</strong> thing ever known to man: It\u2019s a\nboneless chicken stuffed in a bonless duck, stuffed in a boneless turkey. The\nwhole thing is stuffed with Cajun sausage, I believe. I should have known\nsomething this awesome would come from the Cajun culture. Anyway, you can\nactually purchase them online at <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.cajungrocer.com%2Fproduct_info.php%3FcPath%3D15_24%26products_id%3D340\">CajunGrocer.com</a>, which I plan to do as\nsoon as the holiday is over. I\u2019ll let you know how it goes. My mouth is\nwatering already\u2026</p><img src=\"http://feed.tylerbutler.com/link/18607/17245994.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-11-25T00:32:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245994.gif"
        },
        {
            "id": "https://tylerbutler.com/november-23rd/",
            "url": "http://feed.tylerbutler.com/link/18607/17245995/november-23rd",
            "title": "November 23rd",
            "content_html": "<p><strong>Chapter 21: The Mark</strong></p>\n<p>Ames and Cobb were excited. Joel had been able to give them a description,\nalbeit a rather poor one, but he\u2019d also been able to give them a rough sketch\nof the tattoo the man had on his hand, and <em>that</em> was something that they\ncould look into.</p>\n<p>They ignored the dagger-like stares of Joel\u2019s parents as they stood up\nquickly, their movements taking on an almost frenzied speed, and rushed out of\nthe room, murmuring thanks to Joel as they went. Joel was just glad to be rid\nof them. The pain had returned, and he was overcome with weakness again. Sleep\novercame him as Karen wordlessly maneuvered the notebook from his hands and\nwalked briskly out of the room, trying to catch up to Ames and Cobb.</p>\n<p>Ames had a feeling that he had seen the mark before, but he couldn\u2019t\nremember where. Maybe if he looked at it again\u2026 Wait, where was the sketch?</p>\n<p>\u201cDamn it, Cobb, we forgot the sketch.\u201d They both turned and nearly bowled\nover a panting Karen, who thrust the note book at them. Cobb and Ames smiled.\n\u201cThanks Karen. See you back at the station.\u201d</p>\n<p>They turned and continued out of the hospital and on to their car. Ames took\nthe passenger seat and examined the sketch more closely as Cobb started the\nengine and headed out of the parking lot, turning towards the station.</p>\n<p>\u201cRecognize something, Ames ? \u201d Cobb asked, amused at his partner\u2019s look of\ncomplete perplexity as he peered at the sketch.</p>\n<p>Ames sighed and reluctantly moved his eyes away from the sketch. \u201cI dunno.\nIt looks so familiar.\u201d He shook his head. \u201cBut I can\u2019t put my finger on it\nright now.\u201d He rubbed his eyes and leaned his head back against the headrest.</p>\n<p>\u201cWhat a day. I\u2019ll be glad when we can get some rest. What time is it,\nanyway?\u201d</p>\n<p>Cobb glanced at the green clock in the dash. \u201c\u2018Bout 4:30,\u201d he said. \u201cNo rest\n\u2018til we get this thing straightened out though \u2014 I\u2019ve got a feeling we\u2019re on\nto something. We need to finish this out as soon as we can. This is a make-it-\nor-break-it case for us, you know?\u201d</p>\n<p>Ames gave a low snore as a response, and Cobb smiled. Might as well let him\nsleep for the few minutes it would take them to get to the station. It would\nhopefully clear his head enough to help him remember where he\u2019d seen the\ntattoo before.</p>\n<p>The station was clearing out when they arrived. It was quitting time for\nmany of the administrative workers, and the parking lot was becoming deserted\nas they pulled in.</p>\n<p>Their first stop was Foster\u2019s office. She was on the phone when they\nentered.</p>\n<p>\u201cI understand that, Mrs. Mendocino. I will speak to them. Of course. If you\nhave any other concerns, please just give me a call. I know\u2026 you\u2019ll be the\nfirst to know. And if your son happens to think of anything else, please let\nus know. OK, you have a nice day, and I am sorry about your son\u2026 Bye bye.\u201d</p>\n<p>Foster exhaled slowly as she laid the handset down. \u201cThat was Joel\nMendocino\u2019s mother. She was upset because you stormed in and disturbed her\nson.\u201d She looked up at them pleadingly. \u201cWas it really necessary to barge in\nthere like you did?\u201d</p>\n<p>\u201cWe ran into a complete dead end, Lieu. We figgered the kid could probably\ngive us more information than he already had, and based on other things we\nwere able to find out, we think this case may be bigger than just a simple\nmugging.\u201d</p>\n<p>\u201cReally? What have you found?\u201d</p>\n<p>Both Cobb and Ames pulled out their notebooks, scanning the cluttered pages\nfor reminders of the day\u2019s conversations. \u201cWell, we got confirmation that the\ndead victim <em>is</em> homeless. His name is Darryl; we weren\u2019t able to get a last\nname. He\u2019s in and out of St. Ives, a homeless shelter down around McAllister\nPark .\u201d</p>\n<p>Ames continued, \u201cWe went and talked to a number of homeless people in the\narea, especially down on 59 th , and they all told us stories of some\n\u2018abductions,\u2019 for lack of a better word, of homeless people these lat few\nweeks. Seems they all show up a day later, all beat up. Apparently it happened\nto Darryl, but no one we spoke to could tell us if it somehow related to his\ndeath.\u201d</p>\n<p>Ames paused, and Cobb interjected again. \u201cBoth of us feel like the\nabductions and Darryl\u2019s death are related, but we\u2019re not sure how yet\u2026\u201d</p>\n<p>\u201cBut this,\u201d Ames said, slamming the sketchbook down on Foster\u2019s desk\nexcitedly. \u201cMay be the link between everything. Joel Mendocino was able to\nsketch this for us. He said that the man who\u2019d shot him had that symbol\ntattooed on his hand.\u201d</p>\n<p>Foster held the sketch up to the light, examining it more closely. She\nfrowned. \u201cYou said there have been a lot of abductions lately?\u201d</p>\n<p>Ames nodded. \u201cIs it possible that Darryl told someone a little too much\nabout his experience and they had to have him killed?\u201d</p>\n<p>Cobb smiled. \u201cThat\u2019s what we\u2019re thinking.\u201d</p>\n<p>\u201cWell, check with Organized Crime,\u201d Foster said, handing the sketch back to\nAmes . \u201cSee if the sketch rings any bells with them. If these abductions are\nrelated, then there\u2019s probably a kingpin involved somewhere along the line. OC\nmight know something about it.\u201d</p>\n<p>Ames and Cobb nodded before turning and exiting the office, walking to their\nown desks in the main office. The station was still populated, but the usual\nbustle of the day had calmed down substantially since everyone had gone home.</p>\n<p>Cobb picked up his phone and dialed the extension for the Organized Crime\ndivision as Ames headed back towards the records room. \u201cHi, this is Detective\nCobb from Homicide. We got a victim over here, homeless man, possibly related\nto a rash of abductions and assaults that\u2019s been happening recently in the\nMcAllister Park area. One of the shooters had a mark on his hand. We\u2019ve got a\nsketch, and we were wondering if you guys could take a look and see if you\nrecognize it. Sure. OK, I\u2019ll do it right now.\u201d</p>\n<p>He out down the receiver. \u201cThey want me to fax it over.\u201d He walked over to\nthe fax machine and fed the paper quickly through. Ames returned carrying a\nstack of folders and sat down, poring through them.</p>\n<p>\u201cThese are reports from some of the other assaults that have been reported\nby hospitals recently. Most of them are from McAllister Park , which isn\u2019t\nsurprising in and of itself, but here\u2019s something interesting. There are other\nreports of assault-like wounds from some middle-aged businessmen from the same\nday or the day following the same report from a homeless man. Coincidence?\u201d</p>\n<p>Cobb glanced over Ames \u2019 shoulder at the cluttered data in front of them.\n\u201cSo what are you thinking?\u201d</p>\n<p>\u201cI dunno. But it seems strange to me that a bunch of businessmen get beat\nup, and a bunch of homeless men get beat up, all at the same time, and nobody\nwants to press charges or talk about it. Hell, a lot of them made excuses\nlike, \u2018I fell down the stairs,\u2019 or some bullshit like that.\u201d</p>\n<p>The phone rang, shattering their contemplation. Cobb picked up. \u201cThis is\nCobb. Uh-huh. Really? So soon, huh? Great. Yeah, fax it over. You say there\u2019s\na unit over in the area right now? OK, yeah, I\u2019ll do that. OK, thanks a lot.\nBye.\u201d</p>\n<p>Ames looked up from his reading excitedly.</p>\n<p>\u201cWell, we got a match,\u201d Cobb said, walking over to the fax machine, where a\ncopy of a police report was spitting out. \u201cThe OC guys said there\u2019s an\nwarehouse over on Delome that has been investigated by some blue and whites\nfor the past couple of weeks. A woman has been calling to complain about noise\ncoming from it for awhile, but by the time the blue and whites get out there,\nthere\u2019s nothing to be seen.\u201d</p>\n<p>\u201cBut how does this tie into the tattoo, and what does OC have to do with it?\nAnd furthermore, what\u2019s a woman doing <em>living</em> down on Delome?\u201d</p>\n<p>Cobb chuckled. The old industrial section of the city centered around Delome\nAvenue , and it was generally considered to be one of the worst places in the\ncity to live, but some residents refused to move.</p>\n<p>\u201cWell, OC started looking into it because there was a major OC-related drug\nbust around the area, and they\u2019re thinking the entire area is probably used by\ngangs and whatnot for all kinds of nefarious activities. So they had a few of\ntheir guys look into it, and he remembers seeing a symbol sort of like the\ntattoo on the shooter\u2019s hand etched into a door on one of the warehouses. They\nsent a blue and white out there tonight to keep an eye on things, and see if\nthey could figure out what\u2019s going on. What do you say we join \u2018em.\u201d</p>\n<p>\u201cWorth a shot, I guess. Strange that a mark like that would be etched in a\ndoor, but whatever. Thank God for small miracles, I suppose. Let\u2019s go.\u201d</p>\n<p><strong>Chapter 22: Disappearance</strong></p>\n<p>The silence that had followed James\u2019 story was finally broken by Holly\u2019s\nexpression of thanks. She stood up slowly, reaching her hand towards the\ngrizzled storyteller.</p>\n<p>\u201cThank you, James, for telling us about this.\u201d</p>\n<p>\u201cWal, I figgered somebody oughtta know. Somethin\u2019s got to be done, I think.\nI mean, most folks don\u2019t seem to care too much about us down here, but still,\nit just ain\u2019t right for us to get kidnapped and beat up like we do. Anyway, I\nhope maybe you all can tell the right people\u2026\u201d</p>\n<p>Holly smiled as she released his hand. Ned nodded in acknowledgement and\nthanks as he and Holly turned around, looking for Ned and Ken. They weren\u2019t\nsitting behind them where they had been initially. Where had they gone?</p>\n<p>Holly glanced around frantically and began to call Ernie\u2019s name. Ned calmed\nher down. \u201cHolly\u2026 maybe they\u2019ve just gone to the van\u2026 let\u2019s just go and\nlook.\u201d He took her hand and led her towards the van. Holly wasn\u2019t calm. The\nstress of the day was finally catching up to her. She needed a stiff drink \u2013\n<em>very</em> stiff.</p>\n<p>And now Ernie had disappeared! Her emotional side had taken over, leaving\nrationality by the wayside, and Ned\u2019s confidence was not as comforting as it\nordinarily was. She continued to look around as Ned dragged her towards the\nvan, and called Ernie\u2019s name at increasing volume even after they had left the\nbounds of the bridge community.</p>\n<p>Ned, unlike Holly, still had a sense of rationality despite the straining\nand confusing events of the day. Perhaps it was the fact that he was an\nengineer, a professional, perhaps it was that he was male, but whatever the\nreason, he was dealing with the situation as calmly and coolly as could be\nexpected.</p>\n<p>Upon their arrival at the van, he peered around, looking for signs of Ernie\nand Ken both in and around the vehicle, but he found none. And Ken\u2019s bike\nwasn\u2019t in the back. His initial reason for going to the van was to see if the\nbike was still there, but upon inspection, he remembered that Ken had insisted\nthat he remove it when they had arrived. Holly was growing increasingly\nagitated, allowing the worry of her maternal instinct get the best of her.</p>\n<p>\u201cHolly! Cal m down! I am going to go back and see if they went to the east\nside of the bridge. I\u2019ll be back in a few minutes. You wait here in case they\ncome back. OK?\u201d</p>\n<p>Holly nodded reluctantly in response. Ned made sure she was comfortable in\nthe passenger seat of the van, then turned and walked back towards the bridge.\nHe made his rounds, following roughly the same path that the quartet had made\nearlier in the day, but no one had seen Ernie or Ken for quite some time. Some\npeople reported seeing them ride off on the bike about 45 minutes ago, so\nNed\u2019s suspicion that they had left of their own accord was satisfactorily\nanswered.</p>\n<p>He returned to the van and continued to try and calm Holly, reassuring her\nthat both Ernie and Ken were not stupid, that they knew this area of town\nwell, that they had most likely ridden home on their own; they were fine.</p>\n<p>Holly didn\u2019t seem to believe him, but she reluctantly calmed down and agreed\nthat they should drive home. She could call St. Ives from home and make sure\nErnie was back. Ned was glad when he finally spun the wheel and maneuvered his\nway back onto the road. He wanted to get home and have a stiff drink himself.</p>\n<p>When he reached Holly\u2019s small apartment, he debated whether or not to leave\nher alone. She had calmed down considerably during the trip, and assured him\nthat she\u2019d be fine. If she felt she needed anything, she\u2019d call him and let\nhim know. She exited the van and waved half-heartedly as she opened the door\nto her apartment building and entered.</p>\n<p>Ned felt like he needed to calm his nerves, and driving had always been a\ngood way to do that, so he decided to take the long route home. His mind\nwandered back to his homeland as he drove.</p>\n<p>One of the core reasons that he and Lavina had emigrated to America was to\nescape the violence that had plagued their country. Thankfully, neither Ned\nnor Lavina had ever experienced the violence firsthand, but they had heard\nterrible stories of roving \u201cdeath gangs\u201d that would travel around, raping,\nbeating and robbing anyone who got in their path. If they didn\u2019t physically\nkill you, they\u2019d do enough psychological damage that it was essen tially the\nsame.</p>\n<p>Ned shook his head. America was not the land of promise that he had hoped\nand dreamed it would be when he had contemplated the move from his European\nhome. America was no better than the rest of the world \u2014 it had the same\nvices, the same violence and depravity, the same distaste for the less\nfortunate. No, America was not the land he had been promised.</p>\n<p>He approached the small house that his family called home and parked the van\non the street on the next block. His six children poured out of the front door\nof the house, the older ones smiling in warm welcome, the youngest running up\nto him and attaching themselves steadfastly to his legs. It had been an entire\nday! How had they <em>ever</em> gotten along without him?</p>\n<p>He walked, children in tow, towards their home. Lavina stood in the doorway,\na strange expression of disapproval on her round face. Ned entered the house\nand hugged her close, ignoring the children\u2019s burst of laughter as he swept\nher back and kissed her fiercely on the lips. What a wonderful family they had\ncreated \u2014 together!</p>\n<p>But it soon became apparent that Lavina was not in the mood to revel in the\nmarvelous nature of their family. She pushed him away and said, \u201cSomeone is on\nthe phone for you. Young and she sounds upset.\u201d</p>\n<p>Ned sighed. Lavina had so many astonishing qualities, but she was jealous.\nShe thought that every young America n girl was on a personal mission to steal\nher husband away, and she fought fiercely for her man, though Ned knew <em>that</em>\nbattle had been won long, long ago.</p>\n<p>He walked into the small living room, sitting down heavily on the chair that\nwas his. The children did try, on many occasions, to claim it for themselves,\nbut it was well acknowledged among all members of the family that when Ned was\nhome, the chair was <em>his</em>, and no one else\u2019s.</p>\n<p>He was looking forward to a few minutes of relaxation on the chair, then it\nwould be time to do something really fun \u2014 work on the Jetta and get it up and\nrunning again. He grinned just at the thought of getting under the hood and\nimmersing his hands in the greasy machinery.</p>\n<p>He picked up the receiver and held it to his ear. \u201cHello?\u201d</p>\n<p>\u201cNed\u2026\u201d It was Holly, and she was crying. \u201cI called St. Ives, and they said\nhe isn\u2019t there! He hasn\u2019t come home yet! Ned, something\u2019s wrong, I know it. I\ncan\u2019t explain it, but I <em>know</em> something isn\u2019t right!\u201d</p>\n<p>\u201cOK, what do you want to do?\u201d Ned was tired, but he knew he couldn\u2019t just\nlet her sit in her apartment, by herself, and worry. No, he had an obligation,\nas both a friend and a man, to help her \u2014 to make sure she felt like she was\nhelping the situation \u2014 if there even was a \u201csituation.\u201d</p>\n<p>\u201cLet\u2019s go look for him. Maybe he\u2019s hurt or something, you know, and if we\ncould just\u2026\u201d</p>\n<p>\u201cHolly, he\u2019s probably OK \u2014 the chances of something happening are just\nso\u2026\u201d</p>\n<p>\u201c <strong><em>Dammit</em></strong>, Ned! I <strong><em>know</em></strong> he\u2019s not OK!\u201d she screamed into the\nphone, forcing Ned to move the handset away from his hear in a self-preserving\nreflex.</p>\n<p>\u201cOK, OK, we\u2019ll go looking for him. I\u2019ll be there in 20 minutes.\u201d</p>\n<p>\u201cThanks Ned.\u201d</p>\n<p>\u201cOK. I\u2019ll see you in a few minutes.\u201d</p>\n<p>\u201cOK, bye.\u201d</p>\n<p>\u201cBye.\u201d</p>\n<p>He set the handset gently back on it\u2019s rest, and laid his head back on the\nchair, closing his eyes blissfully for a few seconds. Well, rest, relaxation,\nand the Jetta would have to wait.</p>\n<p>He stood up and called to Lavina. \u201cI have to go out. Holly is worried about\none of the homeless guys she knows, and I\u2019m going to go help her look for him.\nI should be back in a couple of hours or so.\u201d</p>\n<p>Lavina met him in the hallway with yet another disapproving gaze. Out with a\nbeautiful young woman, no doubt. Well, <em>this</em> one wouldn\u2019t steal her husband\naway, oh no. She\u2019d make sure of <em>that</em>.</p>\n<p>Ned shook his head, knowing what she was thinking. \u201cYou needn\u2019t worry,\ndarling. You\u2019re the only woman for me.\u201d He reached for her but she pulled\naway. Oh well, someday she\u2019d get over it.</p>\n<p>\u201cOK, well I will see you and the children when I get back. Children, be\ngood, obey your mother, and I\u2019ll be back soon.\u201d A chorus of acknowledgments\ncame from various corners of the house, and he turned, threw his jack over his\nshoulders, and stepped out into the darkness.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245995.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-11-24T14:52:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245995.gif"
        },
        {
            "id": "https://tylerbutler.com/november-21st/",
            "url": "http://feed.tylerbutler.com/link/18607/17245996/november-21st",
            "title": "November 21st",
            "content_html": "<p>**Chapter 20: Kidnapped **</p>\n<p>Mike\u2019s surrounding\u2019s slowly faded into view as he came to. He had been\nunconscious twice today! It was starting to wear on his mind physically, not\nto mention his self-confidence.</p>\n<p>He soon realized that he was tied, completely unable to move, to a chair in\nthe center of Angelo\u2019s office. The pieces of the broken coffee table still lay\nin front of the loveseat, though the girl was now gone. He struggled against\nthe ropes that tied him down, but they were tight around his wrists and\nankles, and the metal chair to which he was tied seemed too tough to break. It\nwouldn\u2019t matter much, anyway. There was no way he\u2019d make it out of the\nwarehouse alive. He was more likely to rob a casino and run out of the front\ndoor unopposed than to get out of the warehouse with his skin intact.</p>\n<p>He was, to be honest, a little surprised to find himself still alive anyway.\nIt was very uncharacteristic of Angelo. But Angelo did have a bit of the James\nBond villain in him, and Mike assumed that a delightfully painful death or\nmaiming awaited him.</p>\n<p>Angelo entered from the side door, smiling at Mike\u2019s present consciousness.\nHe was closely followed by Marty, the man whose blow from behind had created a\nlump on Mike\u2019s head that still ached painfully.</p>\n<p>\u201cWell, Mike, it certainly is good to see you awake. It\u2019s just not\ngentlemanly to come and visit someone, then fall asleep while they\u2019re trying\nto be hospitable.\u201d Mike ignored him as he paced around the chair to which Mike\nwas tied, his hands held behind his back in their customary formation, a smile\nof supreme, gloating self-confidence written on his face.</p>\n<p>\u201cYou may be wondering, Mike, why you are still alive after such an egregious\nbreach of my rules, of the trust that you and I have built over these past\nmonths.\u201d He paused, waiting for a response from Mike. There was none.</p>\n<p>\u201cAnd well you should. Ordinarily I would have killed you immediately \u2013\nwouldn\u2019t have blinked, wouldn\u2019t have given you a second thought.\u201d He paused\nagain, ensuring Mike was listening.</p>\n<p>\u201cBut I like you, Mike. I do. So I thought I\u2019d give you a chance. You\u2019ve\nalways been one to stick to my rules in the past, Mike, which gave me reason\nto believe that something had happened to you. So, being the extremely\ngenerous individual that I am \u2014 I <em>am</em> a humanitarian at heart, Mike, you\nmust believe me \u2014 I did a little sleuthing and discovered some very\ninteresting things about you Mike.\u201d</p>\n<p>Mike bristled. What the hell had Angelo dug up on him? And how had he done\nit so quickly? Surely he hadn\u2019t been out <em>that</em> long\u2026</p>\n<p>\u201cMike, I don\u2019t know how to express to you my regret that Copeland saw fit to\nfire you today.\u201d That son of a <em>bitch</em>! \u201cBut Mike, you have to understand the\ncompany\u2019s position \u2014 you simply weren\u2019t performing for them. You were a bad\nhorse to bet on, Mike. And you know something about betting on bad horses,\ndon\u2019t you?\u201d Angelo glanced at Mike, taking a perceptible pleasure in his\ndiscomfort at the enraging comments.</p>\n<p>\u201cBut it didn\u2019t stop there, Mike, and I can honestly say that I fully\nunderstand your actions in light of the new developments on the Turner home\nfront. From what I hear, Mrs. Marie Turner has told the police all about her\nenraged husband who came home early and, in a fit of rage, brutally killed the\nman she called her \u2018one, true love.\u2019 Sad, really. You really need to learn to\ncontrol your anger, Mike. Didn\u2019t I warn you about that last time we discussed\nthe races? Well, it doesn\u2019t matter\u2026 it\u2019s obvious you didn\u2019t listen.\u201d He\nraised his hands above his head in mock consternation.</p>\n<p>\u201cWhy do I even try? It\u2019s so obvious that no one ever takes my advice to\nheart!\u201d Mike struggled violently against the ropes, causing the chair, and\nhimself, to fall to the floor, crushing his immobile arm uncomfortably beneath\nhim as he lay on his side.</p>\n<p>Angelo knelt down, bringing his sweaty face within inches of Mike\u2019s. His\nbreath reeked of acrid smoke and stale coffee; his eyes were still bloodshot\nand spacey from the drugs. The toothpick he chewed in his mouth was crushed to\nfine fibers from hours of nervous chewing. \u201cThe police are crawling the city\nlooking for you, Mike. It won\u2019t be long before they find your wife\u2019s SUV\noutside\u2026 and then, I\u2019ll have no choice but to hand you over. After all, I am\na law-abiding citizen \u2014 I don\u2019t want to be party to a <em>murder</em>!\u201d</p>\n<p>He stood up, resuming his pacing. Mike remained on the floor, looking up at\nAngelo, whose body seemed oddly out of proportion from this strange angle. \u201cI\nhave a little surprise for you, Mike. A solution to <em>all</em> your problems. You\nsee, I have the resources necessary to keep you from the pigs\u2019 hands. I can\nkeep you safe. And all I ask in return is a little\u2026\u201d He held his index\nfinger and thumb slightly apart, illustrating just how little \u201ca little\u201d was.\n\u201c\u2026Cooperation. Just a little cooperation. And if this goes well, I may even\nbe willing to forgive you that sizeable debt that you owe me. Now wouldn\u2019t\nthat be something?\u201d</p>\n<p>Angelo\u2019s mock-friendliness was beginning to annoy Mike, and the lack of\nblood flow to his right arm was becoming extremely uncomfortable. He struggled\nagain against the ropes, but he had even less mobility than when he had made\nhis previous attempt, and his movements only confirmed the futility of his\nsituation.</p>\n<p>\u201cOh, Mike, forgive me, please! What a terrible host I am!\u201d Angelo motioned\nto Marty, who stood Mike\u2019s chair back on it\u2019s four legs. Mike winced as the\nblood rushed back into his right arm, sending burning needles through its\nentire length.</p>\n<p>\u201cYou must forgive me, Mike. Sometimes I just get so caught up in the moment\nthat I forget my guests completely. It\u2019s never intentional, I promise you.\u201d</p>\n<p>The phony act was really getting old. \u201cYou know what, Angelo, just cut the\nbullshit and get to the point.\u201d</p>\n<p>Angelo frowned. He was having fun. But business was business. \u201cFine,\u201d he\nsaid. \u201cMike, you\u2019re in deep shit. The cops are after you because of your\nlittle \u2018indiscretion\u2019 back at your house. So really, you don\u2019t have much\nchoice. You\u2019re going to do what I tell you, or I turn you over to the cops.\nIt\u2019s that simple. Understand?\u201d</p>\n<p>Mike chose not to dignify the patronizing question with a response. Angelo\ncontinued anyway. \u201cYou really should see the pictures of the man you killed,\nMike. It\u2019s brilliant, the brutality of it, the unbridled primal passion of it\nall. It\u2019s damn near a work of art! And that\u2019s what I need \u2014 an artist \u2013\nsomeone with a sense of the truly brutal, the truly primal. Someone like you,\nMike.</p>\n<p>\u201cThe organization I work with organizes a weekly \u2018fight,\u2019 of sorts, and\nyou\u2019re going to be the next prime attraction. You\u2019re going to tap into that\nvicious side of yourself that you love to channel so much and beat some other\nguy to all hell. Or you\u2019ll get beat to hell yourself. Either way, I win.\u201d</p>\n<p>He got close in to Mike\u2019s face again. \u201cRemember what I used to tell you,\nMike. The house <em>always</em> wins.\u201d He smiled eerily. \u201cTell you what, you think\nabout it, and let us know.\u201d</p>\n<p>With that, a swift painless knock against his head brought on the blackness\nonce again.</p>\n<hr />\n<p>Ernie was walking alone along the nearly empty street, on his way back to\nSt. Ives. He hadn\u2019t lasted long when James had started telling his story.\nThere were too many details, too many things to remember. Ernie liked his\nstories short and sweet, and happy too. That was the worst part about James\u2019\nstory \u2014 it had a sad ending.</p>\n<p>He had grown bored and restless quickly, so he and Ken had left Ned and\nHolly and had continued around the area asking people about Darryl. But Ken\nhad grown restless too, worried that his parents would be expecting him soon.</p>\n<p>Ned and Holly were nowhere to be found, but fortunately, Ken had already\nclaimed his bike from the back of Ned\u2019s van, anticipating needing to leave\nbefore the others. 59th Street was within biking distance of Ken\u2019s home, so\nhe and Ernie set off towards the nice suburban neighborhood, Ernie riding on\nthe rear pegs again.</p>\n<p>The corner was empty as they passed by on Ken\u2019s bike; the kids had all gone\nin for the evening. The sun was sinking low \u2014 night was almost upon them.</p>\n<p>Ken had offered to let Ernie stay in the garage again, so that Ernie\nwouldn\u2019t need to make the dangerous journey back to St. Ives, but Ernie had\ngrown hungry again, and he longed for some of Rho nda\u2019s soup and the warmth of\nhis soft, familiar bed. So despite Ken\u2019s protests and his own judgment, he had\nset off alone back towards St. Ives.</p>\n<p>The light had steadily decreased as he had progressed on his trip, until the\nsun had dropped completely beyond the curvature of the earth, leaving nothing\nbut the occasionally visible stars and moon and the flickering streetlamps to\nlight the way.</p>\n<p>Ernie wasn\u2019t particularly nervous. He had made the trip plenty of times\nbefore, and even in the darkness, but the stories that he and Ken had been\nhearing throughout the day of mysterious abductions caused him to be more wary\nthan normal.</p>\n<p>There was nothing to give him concern, though. The street was quiet, except\nfor the occasional rustle of a paper cup or newspaper blowing along the\nasphalt in the wind. Every so often, a car would round a corner and pass\nslowly by him, but for the most part, he had the entire quiet street to\nhimself.</p>\n<p>And so he walked on, not paying much attention to the car that passed by\nhim, moving more slowly than the others, and not noticing that it was the same\ncar that had passed him three ties now. It came to a stop at the curb a half\nblock in front of Ernie, and the back door opened. A nice looking man stepped\nout, dressed in a suit and tie, wearing a fedora on his head, and smiling\nbroadly at Ernie as he approached.</p>\n<p>\u201cErnie!\u201d he exclaimed as he approached, arms wide in greeting. \u201cI thought it\nwas you! I\u2019m glad I stopped. No music today?\u201d</p>\n<p>Ernie didn\u2019t recognize the man. How did he know his name? He stiffened as\nthe man encompassed his body with his arms.</p>\n<p>\u201cI haven\u2019t seen you in awhile! Hey, are you heading to St. Ives? How about a\nride? It\u2019s getting kind of chilly out here\u2026 I\u2019m sure Rho nda would prefer it\nif you came in and got yourself something to eat. How about it?\u201d He motioned\nto the still open back door of the car a few meters in front of them.</p>\n<p>Ernie nodded. This man may know him, but Ernie didn\u2019t recognize his face,\nand Rho nda had warned him nev er to get into strange cars with people he\ndidn\u2019t know. In fact, Rho nda had been clear that he shouldn\u2019t even speak with\nthose he didn\u2019t know, but he wasn\u2019t really brea king that particular rule; the\nother man was doing all the talking.</p>\n<p>Ernie stepped around the man and continued on his way, but the man followed\nhim and kept talking. \u201cOh, come on, Ernie,\u201d he said, wrapping one arm around\nhim as if they were pals. \u201cI really have something I want to talk to you\nabout! I know you have a lot of problems\u2026 you know, money problems, and\nproblems remembering things, and stuff\u2026 I just want to help you out. Tell\nyou what, get in the back of the car, and I\u2019ll feel you in on my plan\u2026 I can\nsolve all of your problems, I can get you out, Ernie, honest, but you need to\nget in the car.\u201d</p>\n<p><em>If a man ever comes to you, sayin\u2019 he\u2019s got da answer, dat he can get you\nout, you just gots to do one thing, don\u2019t listen to \u2018im.</em> Darryl\u2019s warning\ncame flooding back to him, and he felt a sudden chill of fear. He wrenched his\nbody away from the man\u2019s arm and began to run down the street, but the man\u2019s\ncar was already pulling up ahead of him.</p>\n<p>Two men stepped out and ran towards him. He attempted to turn and cross the\nstreet, but they were surprisingly quick, and headed him off in the middle of\nthe street. They wrapped their strong arms around his body, and forced a\nstrange-smelling rag in his face. He struggled briefly, and felt his Walkman\nslide from it\u2019s customary position on his waistband and clatter on the floor.\nThe men dragged him towards the car, and pushed him roughly into the trunk as\nhe passed out.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245996.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-11-22T15:59:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245996.gif"
        },
        {
            "id": "https://tylerbutler.com/november-20th/",
            "url": "http://feed.tylerbutler.com/link/18607/17245997/november-20th",
            "title": "November 20th",
            "content_html": "<p>**Chapter 19: Story **</p>\n<p>Holly and Ned sat down along the slope beside the drain pipe, looking\nintently at the grizzled man who lounged on the pipe in front of them. He wore\na small, faded green kufi on his head, hiding his graying hair underneath it.\nHis face was crinkled with age, and his kind eyes glowed warmly out of the dim\nsurroundings. He held his hands in his lap, moving them expressively as he\nspoke softly. His dark, rich voice echoed below the bridge as he told his\ntale.</p>\n<p>\u201cWell, like I was sayin\u2019, me and Darryl was good friends. We tried to stick\ntogether, you know, have each other\u2019s back. \u2018Course it wasn\u2019t always that way.\nFact is, when we first met, we didn\u2019t much care for each other at all.</p>\n<p>\u201cYou see, we first met when I tried to work his part of State Ave. one day.\nI hadn\u2019t been doing too well on my old strip, so I thought I\u2019d move up further\nnorth and see if I could do any better.</p>\n<p>\u201cThe week before, I\u2019d managed to come across some tools at a construction\nsite and had nabbed a squeegee there, so not only was I imposin\u2019 on Darryl\u2019s\nsection of the street, I was also doing the exact gig he was. Not to mention,\nI was just learnin\u2019 the trade, you know, and I hadn\u2019t really had a chance to\nhone my technique. So I wasn\u2019t doin\u2019 the best job of cleain\u2019 the windows,\n\u2018specially compared to Darryl.</p>\n<p>\u201cIt was all right the first few days, since we didn\u2019t run into each other. A\ncouple of guys had told me that Darryl normally squeegeed that section of the\nstreet, but to be honest, I didn\u2019t care. I was just trying to eke by, know\nwhat I mean?</p>\n<p>\u201cBut eventually, Darryl and I ran into each other. He had been hearin\u2019 stuff\nabout another guy down on his street ruinin\u2019 his reputation and all, so when\nhe finally saw me, he wasn\u2019t to pleased. But if you know Darryl, he wadn\u2019t one\nto get real angry and up in your face about somethin\u2019. So he stopped me later\nthat afternoon after most people had cleared the street ad I was headin\u2019 home,\nand he simply asked me to move either further north or further south.</p>\n<p>\u201cHe explained that he\u2019d been workin\u2019 that partickler section of the street\nfor some time, and that he had reputation that he\u2019d built, and it just\nwouldn\u2019t work to have two guys tryin\u2019 to squeegee the same section. He\nexplained that it made more sense for us to split up \u2018cause we\u2019d be able to\nhave more customers.</p>\n<p>\u201cWal, what he said made sense, but it wasn\u2019t what I wanted to hear. And him\nbein\u2019 so friendly about everything, I didn\u2019t take him seriously. So I told him\nhe could shove it and I just kept on goin\u2019, doin\u2019 what I always did.</p>\n<p>\u201cNext day, Darryl came up and said basically the same thing, askin\u2019 me to\nmove on north or south again. And again, I told him the same thing. But he was\na persistent bastard, and every day he came up to me, polite as the last time,\nand explained the situation again.</p>\n<p>\u201cEventually, it got to the point where I was considerin\u2019 movin\u2019 on just so I\nwouldn\u2019t have to listen to his lecture every day. I started tryin\u2019 to avoid\nhim during the day, but he usually found me.</p>\n<p>\u201cOne day, I had had it partickly rough, and there he was, comin\u2019 on to ask\nbe to move on, and I just lost it. I let him have it. We got into a bit of a\nscuffle, and Darryl, bein\u2019 as mild-mannered and small as he was, didn\u2019t put up\nmuch of a fight. Oh, don\u2019t get me wrong, I didn\u2019t hurt him real bad or\nnothin\u2019, but I did pound on him a bit.</p>\n<p>\u201cIt made me feel a lot better, and I thought that he\u2019d finally get the\npicture that I wasn\u2019t plannin\u2019 on goin\u2019 anywhere, but the next day, he found\nme again and started talkin\u2019 to me.</p>\n<p>\u201cThis time, though, he\u2019d changed his tactics. He said that if I wasn\u2019t\nmovin\u2019 on, the least I could do was stop ruinin\u2019 his reputation. So he offered\nto teach me how to do a better job with the squeegee. I could hardly believe\nmy ears. I mean, I\u2019d just hit him up the day before \u2014 he still had a bruise on\nhis face from where I\u2019d let him have it.</p>\n<p>\u201cBut as usual, it was a genuine offer, so I spent that day workin\u2019 with him,\nlearnin\u2019 his technique and listenin\u2019 to him ramble on about his experiences\nand whatnot. Man, he liked to talk.\u201d He paused, smiling and shaking his head.</p>\n<p>\u201cI mean, Darryl\u2019d talk and talk and talk \u2014 didn\u2019t matter if no one was\nlistenin\u2019. He just liked to talk. But anyway, that night he invited me back\nhere, to this bridge, with him, and we spent the rest of the night talkin\u2019\n\u2018bout everything under the sun.</p>\n<p>\u201cAnd that was really all it took. We started workin\u2019 together every day, and\nhe taught me a lot. And he and I just became real good friends. I don\u2019t really\nknow why. By all accounts, we really shoulda still hated each other. We were\nvery different people, but somehow we ended up makin\u2019 it work.</p>\n<p>\u201cEventually he and I agreed to stop workin\u2019 together. It really made the\nmost sense, since we could cover twice as much area in the same amount of\ntime. He finally got his way, I guess \u2014 I moved on up a lit further north and\nhe stayed working his area, but we would get together here at the end of the\nday, and share whatever we had. Sometimes he had a good day, sometimes I did,\nmost times neither of us did, but we shared everything and we ended up all\nright I guess.</p>\n<p>\u201cAs time went on, me and him didn\u2019t talk as much as we had, and he started\nspending more time at the shelter, I guess. I never much cared for places like\nthat, though he told me St. Ives was diff\u2019rent. Anyway, when we started\nhearin\u2019 all the stories \u2018bout people disappearin\u2019, we decided we\u2019d better\nstart stickin\u2019 together again. It just made sense. So we started workin\u2019\ntogether again, and we did all right.</p>\n<p>\u201cBut one night, Darryl decided he wanted to go to the shelter for a meal,\nand when I told him I really didn\u2019t want to go, he just left without me. I\ndidn\u2019t seem him until really late the next day. I figgered he\u2019d just ended up\nstayin\u2019 the night there or somethin\u2019, but when he came back he was all beat\nup. He\u2019d stopped by St. Ives ad I guess got cleaned up, but he looked\nterrible. He was limpin\u2019, cuts and bruises all over his body \u2014 he was a wreck.</p>\n<p>\u201cHe wasn\u2019t talkin\u2019 much either, and I knew better than to press him to tell\nme what had happened. So we just kept on doin\u2019 what we always did for the next\nfew days. I figgered he\u2019d tell me when he was ready. And finally, about a week\nafter it had happened, he did.\u201d</p>\n<p>James paused and leaned forward, lowering his voice substantially. \u201cNow,\nthere were two cops snoopin\u2019 around here earlier today, askin\u2019 about him and\nshowin\u2019 pictures and whatnot, but I didn\u2019t tell \u2018em anything.\u201d Holly and Ned\nglanced at each other as James frowned. So Ames and Cobb <em>had</em> been by.</p>\n<p>\u201cI don\u2019t like cops \u2014 don\u2019t trust \u2018em. Anyway, you have to understand, I\u2019m\ntakin\u2019 a big risk tellin\u2019 you this, just like Darryl took a risk by tellin\u2019\nme, but people need to know. Maybe then somethin\u2019 can be done.\u201d</p>\n<p>He paused again, drawing Ned and Holly in closer before continuing at an\neven lower volume. \u201cDarryl told me, that as he was walkin\u2019 to St. Ives, that a\nman had pulled over on the street \u2014 he couldn\u2019t remember exactly where \u2014 and\nstarted talkin\u2019 to him. He had said he recognized Darryl from a time when he\u2019d\ncleaned the windshield of his car, and he just wanted to compliment him on the\njob.</p>\n<p>\u201cHe gave Darryl a twenty dollar bill, and then asked him if he wanted to\nmake a lot more. He told Darryl that it was a really simple thing he needed\ndone, and that if Darryl was willing there could be a lot of money in it.</p>\n<p>\u201cDarryl wasn\u2019t one to believe in these get-rich-quick schemes, but he told\nme that the man seemed so sincere \u2014 so honest and friendly. So Darryl accepted\nthe offer and had accepted a ride in the man\u2019s car. He didn\u2019t know where they\nhad gone. He said they had driven for quite awhile.</p>\n<p>\u201cThey arrived at some warehouse or somethin\u2019, and the man had led Darryl\ninto this huge empty room. Then, while Darryl waited, a whole bunch of men\nstarted coming in and standing around the inner walls of the room. Darryl said\nat least 30 to 40 men had come in, and they just stood around, not talkin\u2019 to\nhim or anything, just stayin\u2019 quiet with these serious expressions on their\nfaces, like they were anticipatin\u2019 somethin\u2019 exciting. Most of \u2018em were\nwearin\u2019 suits or sports jackets, Darryl had said, and they all seemed to be\nbusinessmen or somethin\u2019 judgin\u2019 from what they were wearin\u2019.</p>\n<p>\u201cThen the man who had picked Daryl up walked in and started talkin\u2019. \u2018Well\ngentlemen, tonight we have a man named Darryl. He works down on State Ave. ,\nwhere many of you work, and squeegees your windows for loose change\u2026 I think\na lot of you are familiar with him.\u2019 A lot of the men standing around let out\na whoop, and the man smiled. \u2018Well, I think you all know how this works, so\nwho\u2019s first tonight?\u2019 A bunch of men raised their hands, and the man pointed\nto one in the back of the room. \u2018OK, looks like you\u2019re our lucky guy tonight.\nMake us proud.\u2019 The man who\u2019d picked Darryl up stepped out with the other men,\nand the one he\u2019d pointed out stepped into the center of the circle with\nDarryl. Darryl didn\u2019t know what was happenin\u2019.</p>\n<p>\u201cThe man took his shirt off and ran towards Darryl, and hit him square in\nthe face, knocking him to the ground. He waited for Darryl to get back up,\nthen hit him again. Darryl tried to get up and run away, or out of the room,\nbut the men in the circle would grab him and throw him back in.</p>\n<p>\u201cI asked \u2018im if he tried to fight back, and he said he did, but there were\ntoo many of \u2018em. As soon as he got a good shot in, somebody else would step\ninto the circle and beat him even harder. By the end of the night, he said he\nwas just layin\u2019 on the floor, blood leakin\u2019 out of him, prayin\u2019 that\u2019d all be\nover soon. He passed out while they were still beatin\u2019 on him.\u201d</p>\n<p>Holly felt like she was going to be sick. She had experienced her share of\nviolence, but this beating that James spoke of sounded almost sports-like. Who\nwere all these men? Did they really get off on beating a defenseless homeless\nman nearly to death?</p>\n<p>James noticed his audience\u2019s discomfort and broke off his more detailed\ndescription that Darryl had given him. His voice was still low and he looked\naround nervously, searching for anyone that might be listening in\nsurreptitiously. Satisfied that all was clear, he continued.</p>\n<p>\u201cAnyway, Darryl came to after the man who\u2019d picked him up splashed some\nwater on his face. They threw him back into the car and drove him back to the\nstreet where they\u2019d picked him up. Before they dropped him off, the man said,\n\u2018Darryl, I hope you understand that if you tell anyone about this, and I mean\nanyone,\u2019 \u2014 he was very clear on this point \u2014 \u2018I\u2019m gonna hunt you down and kill\nnot only <em>you</em>, but <em>every single person that you told</em>.\u2019 Darryl believed\nhim. He said there was somethin\u2019 in his eyes that told him he was serious.</p>\n<p>That\u2019s why Darryl wouldn\u2019t tell nobody \u2014 and that\u2019s why I\u2019ve been careful\nm\u2019self. But there comes a time when this kinda things got to be exposed, and\nmaybe y\u2019all can do it.\u201d</p>\n<p>James sat back on the pipe and sighed heavily. He was pleased to finally\ntell someone Darryl\u2019s story, but worried too \u2014 now these fine people, friends\nof Darryl\u2019s, also had the burden of Darryl\u2019s experience? There was little\ndoubt in James\u2019 mind that the man responsible for Darryl\u2019s abduction and\nbeating was also responsible for his death. Would he also now harm these\npeople, and James himself?</p>\n<p>Holly and Ned looked at each other. They also understood the magnitude of\nthe situation. It seemed their quest for answers had yielded some, but also\ncreated more questions.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245997.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-11-21T15:59:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245997.gif"
        },
        {
            "id": "https://tylerbutler.com/november-18th/",
            "url": "http://feed.tylerbutler.com/link/18607/17245998/november-18th",
            "title": "November 18th",
            "content_html": "<p>**Chapter 18: Memory **</p>\n<p>\u201cJoel?\u201d He opened his eyes slowly, allowing them to adjust to the bright\nlight that now shone into his room. His mother\u2019s concerned eyes stared down at\nhim, his father smiled grimly from the corner.</p>\n<p>\u201cIt\u2019s good to see you awake, son,\u201d his father said, walking over and placing\na hand on his shoulder as his mother buried her teary face in his chest.</p>\n<p>\u201cMom, I\u2019m OK\u2026\u201d he protested. Why did she always have to worry so much?</p>\n<p>\u201cI know, that\u2019s why I\u2019m crying.\u201d He rolled his eyes. His mother slowly tore\nherself away from him, content eventually to hold his hand.</p>\n<p>\u201cWhen we didn\u2019t hear from you, we started to worry,\u201d his dad began. \u201cBut we\nfigured you were tired and forgot to call or something. Then the police\ncalled, and we tried to get down here as fast as we could, but you were in\nsurgery, and even after that the police wouldn\u2019t let us get in here until\nthey\u2019d had a chance to talk to you. What did they want to know, anyway?\u201d</p>\n<p>\u201cJust what happened, that\u2019s all,\u201d Joel answered, staring up at the white\nceiling.</p>\n<p>\u201cWell, we\u2019re just glad that you\u2019re all right,\u201d his mom interjected.</p>\n<p>\u201cI am, mom, I am.\u201d He patted her hand in reassurance.</p>\n<p>\u201cWell, how was the return trip? We read all your letters. Sounds like you\nhad a great time.\u201d</p>\n<p>\u201cYeah, the trip back was pretty uneventful. It was sort of sad, really. I\nmean, I was excited to be coming back here, you know, but I sort of felt like\nI was leaving home, too. It was very strange.\u201d</p>\n<p>\u201cWell, son you were there for almost 6 months. I suppose that place is a\npart of you now.\u201d</p>\n<p>Joel smiled at his father\u2019s phrasing. It was a little melodramatic, to be\nsure, but he did like the sound of it, and in truth, it wasn\u2019t that far off\nthe mark. The culture he\u2019d experienced there, the people, the way the people\nthere had approached life \u2014 it was all a part of him. It was something that\nhe\u2019d nev er forget, something that would shape all of his decisions and\nthoughts from now on.</p>\n<p>\u201cWell, I guess if you\u2019ve read my letters, then there\u2019s not a whole lot left\nto tell\u2026\u201d</p>\n<p>\u201cOh, nonsense! We have plenty of questions! Do you feel up to talking?\u201d</p>\n<p>Joel smiled. If there was one thing he felt like doing, it was talking. It\nwas nice to revel in their interest for awhile, to explain the experiences\nwhich had changed him so much, and the pain was bearable now, so he should\nmake the best of the opportunity.</p>\n<p>His father pulled up a chair and sat, and Joel told them about his trip from\nstart to finish, making embellishments here and there for dramatic effect.\nThey were a captive audience \u2014 neither of them had nev er traveled outside the\nstate, let alone the country \u2014 and Joel did his best to explain the paramount\ndifferences in culture and world-view that he had experienced on his trip, and\nwhat he had felt he learned.</p>\n<p>None of the trio noticed when Ames and Cobb entered the room.</p>\n<p>\u201cSo Sean pauses, for effect, you know, then says, \u2018A date with Natalie Port\nman.\u2019 That\u2019s all he wanted!\u201d His parents broke out in appreciative chuckles.\n\u201cSo after we all got done laughing\u2026\u201d</p>\n<p>\u201cExcuse me Mr. Mendocino,\u201d Ames broke in, clearing his throat to get their\nattention. Joel looked up at him. What did they want?</p>\n<p>\u201cHi detective. What can I do for you?\u201d</p>\n<p>The two detectives strode in, dragging chairs from the small table in the\ncorner and sat down around his bed. They had been traveling around for most of\nthe day, talking to every homeless man they could find in an effort to figure\nout who was responsible for Darryl\u2019s murder.</p>\n<p>What they had been told baffled them. The homeless men had told them all the\nsame story \u2014 some mysterious disappearances had occurred, people would wind up\nbeaten up, but wouldn\u2019t say anything more about it. No one they\u2019d spoken to\nknew Darryl personally, so they said, but both Ames and Cobb had gotten the\nfeeling that some of them were holding back, especially a grizzled man down on\n59 th .</p>\n<p>They had checked some records back at the station and at local hospitals,\nand had found several unsolved crimes the past few mont hs, all involving\nhomeless people. Nearly 100% of the cases they had found involved men.</p>\n<p>None of the homeless had pressed charges, of course, and were tight-lipped\nabout what had happened, so the cases were closed and no one took a second\nlook. But Ames and Cobb agreed \u2014 there was a pattern there.</p>\n<p>It was still a long shot to tie Darryl into the whole scheme. By most\naccounts, he had been abducted, but none of the other abductees had been\nkilled, and it was still a distinct possibility that his death was just\nrandom. But in the end, Cobb and Ames agreed that their instincts needed to be\ntrusted, especially this early in the investigation, and their instincts said\nthat there was something behind all of this \u2014 something sinister, something\nthat needed to be stopped, and behind it all, there was a case that could make\ntheir careers.</p>\n<p>Bereft of clues, they decided to go back to the source, to the only witness\nto the crime, even though he hadn\u2019t been able to tell them anything useful on\ntheir first visit. Perhaps he\u2019d remember more now.</p>\n<p>\u201cWell, Mr. Mendocino, we\u2019re hoping you can give us some more information.\nYou see, we\u2019ve been around talking to a lot of homeless people today, and\nthey\u2019ve given us some leads, but we really need a description of your\nassailants.</p>\n<p>\u201cAdmittedly, this is a long shot, but we think the men who killed Darryl \u2013\nthat was the name of the homeless man we found with you \u2014 and shot you are\npossibly connected to a lot other violent crime, especially among the\nhomeless. Obviously, if these guys have escalated to m ur der and have a\nhistory of violence, we\u2019re probably going to see a lot more needless deaths if\nwe don\u2019t find them soon.\u201d</p>\n<p>Joel protested, \u201cWell, I already told you what I know\u2026 I\u2019m not sure what\nelse you want me to try and remember. I didn\u2019t really get a good look at\nthem\u2026\u201d This wasn\u2019t entirely true. In fact, Joel had gotten a solid look at\ntheir faces, but he hadn\u2019t been paying attention. After all, they were\npointing a gun at him. He wasn\u2019t making mental notes about their shoe size or\nthe number of freckles on their faces at that point.</p>\n<p>His mother joined in the protest. \u201cDetectives, my son just got shot! Can\u2019t\nyou give him a little time to recover before you come in here barraging him\nwith questions and making\u2026\u201d</p>\n<p>\u201cMonica,\u201d Joel\u2019s father interrupted. \u201cThey\u2019re just trying to find the men\nthat did this. Joel can say no if he wants to. It\u2019s his decision.\u201d</p>\n<p>Ames continued. \u201cWell, what we\u2019d like to do, Joel, if I may call you that,\nis just have you relax and concentrate on the experience as you think back on\nit. We\u2019ve found that many times, if you just relax and focus on a single\nelement of your memory, you can recall things that you forgot or didn\u2019t even\nfully realize before.\u201d</p>\n<p>Joel nodded. He wasn\u2019t terrible keen on trying to think back on the\nexperience of getting shot, but if it would help the detectives find the men\nand possibly save someone else, then it would be worth his discomfort.</p>\n<p>Ames motioned outside Joel\u2019s door, where a young woman stood with a large\nsketch pad and an assortment of pencils in her arms.</p>\n<p>\u201cJoel, this is Karen, one of the artists on our staff down at the station.\nShe\u2019s just going to try and draw some sketches based on the descriptions that\nyou can give us. Don\u2019t worry about her. Just close your eyes and ell us what\nyou can. We\u2019ll do the rest.\u201d</p>\n<p>Joel laid back against the pillow and shut his eyes as Karen moved yet\nanother chair into the cramped suite and sat down, pencil at the ready.</p>\n<p>He thought back to the delicious taste of the bagel on his tongue, the feel\nof the concrete and loose gravel as it crunched under his feet, and the\nfeeling of sudden isolation he felt upon discovering he was lost.</p>\n<p>He was standing in the empty alien alley again, turning round and round,\nlooking for signs of familiarity, but he found none.</p>\n<p>\u201cI was in this alley that I\u2019d nev er been in before \u2014 I didn\u2019t know where I\nwas.\u201d</p>\n<p>Bang! There it was \u2014 the shot! But was it a shot, or just a firecracker, or\na car misfiring?</p>\n<p>\u201cI heard a loud shot, but I didn\u2019t know what it was.\u201d</p>\n<p>Then he was running, running, running towards the shot. Why was he running\ntowards it? Why not away? His actions made no sense. He tried to force his\nbody to turn, to stop, to at least slow, but he ran on.</p>\n<p>There were voices now\u2026 what had they said?</p>\n<p>\u201cI heard them talking before I got there. One of them was yelling at the\nother for pulling the trigger and shooting the man, and he was saying he\ndidn\u2019t do it on purpose.\u201d</p>\n<p>He rounded the corner \u2014 there they were, looking down at the dumpster, where\nthe shot man was lying, his body obscured from Joel\u2019s view by the dumpster.</p>\n<p>\u201cOK, I see them now. They\u2019re looking down at the man, but they don\u2019t see me\nyet. The man with the gun is average height and build, dark brown hair,\nleather jacket, stubble on his face. The other man is a little shorter, say 5\u2019\n5\u201d or so, with blonde hair, clean shaven, and a light black windbreaker. Both\nof them are wearing jeans.\u201d</p>\n<p>Ames glanced at Karen, then at Cobb. This description was so generic it\u2019d be\nimpossible to get Karen to create a useful drawing from it. Yet another dead\nend\u2026</p>\n<p>They turned and spotted him. He felt a strange, uncontrollable sense of\nfear. The gun was pointed directly at him. The man was saying something\u2026</p>\n<p>\u201cJoel,\u201d Cobb broke in. \u201cCan you see any distinguishing features on either of\nthe men? Something bout the way they walk, or a scar, or something?\u201d</p>\n<p>\u201cNo, no, don\u2019t shoot\u2026\u201d A sweat broke out on his brow and he shook his head\nfrom side to side on the pillow, eyes still clenched shut.</p>\n<p>\u201c Cal m down Joel, it\u2019s all right,\u201d Cobb continued. \u201cConcentrate \u2014 is there\nanything that stands out in your mind?\u201d</p>\n<p>Joel let out a gasp, then a low moan, then went limp on the bed. He was\nlying on the sidewalk, reeling in agony; his insides felt as though they\u2019d\nbeen ripped apart. He looked up at the men as they t ur ned away, vaguely\naware of Cobb\u2019s voice trickling down from the heavens.</p>\n<p>Then, a sudden point of clarity \u2014 there, on the shooter\u2019s hand, a mark. As\nthey turned and ran, Joel willed himself to focus on that mark. Time slowed\ndown; he stepped frame by frame through the scene, and zoomed in on the mark,\nbringing it into better focus. Then, suddenly, it was gone, and he was falling\nendlessly again.</p>\n<hr />\n<p>He awoke a few minutes later, amidst confused chatter and argument from his\nparents, the detectives, and Heather, who had come in after hearing the\ncommotion.</p>\n<p>\u201cGive me the paper,\u201d Joel said. No response. \u201cGive me the paper!\u201d he said\nagain, finally getting the attention of the others in the room. There was a\nmoment of stunned silence, then Karen thrust her pad and pencil at him. She\nheld the pad for him while he awkwardly sketched the mark he had seen on the\npage as best he could.</p>\n<p>He finished it, and handed the pencil back to Karen. \u201cThat mark was tattooed\non the right hand of the shooter, between the thumb and forefinger. Now _that\n_ is all I can remember.\u201d He sunk back into the bed \u2014 he wanted peace, quiet,\nand sleep.</p>\n<p>Cobb and Ames looked at the picture, than at each other. Now <em>this</em> was\nsomething they could work with.</p><img src=\"http://feed.tylerbutler.com/link/18607/17245998.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-11-19T15:03:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245998.gif"
        },
        {
            "id": "https://tylerbutler.com/november-17th/",
            "url": "http://feed.tylerbutler.com/link/18607/17245999/november-17th",
            "title": "November 17th",
            "content_html": "<p><strong>Chapter 17: Journey</strong></p>\n<p>Ernie was stuffed. He and Ken pushed away from the table, entirely satisfied\nwith the hearty meal that Rhonda and the other St. Ives volunteers had\nprovided them. The dining hall, which had been silent during the meal as\ngroups of hungry homeless dug in to their meals, was now home to a healthy din\nof activity, as well-fed men and women chatted, discussed, and joked.</p>\n<p>Rhonda and her staff bustled around the hall, stopping occasionally to say\nhello to someone they hadn\u2019t seen in a long time, or to welcome someone new\nand make sure they felt welcome to come and dine at St. Ives any time.</p>\n<p>This afternoon, Rhonda was particularly busy. The unseasonably warm weather\nhad brought visitors from all over. When the weather was warm, people tended\nto get out and walk further, so the dining hall was bursting at the seams with\nhungry mouths. She ran back and forth from the kitchen, stopping every once in\nawhile to greet some of the visitors personally and introduce herself\npersonally. She wore a big friendly smile on her face, and despite her\nbusiness, always gave each individual her full attention while she talked with\nthem.</p>\n<p>Ernie and Ken were seated a smaller table in the corner of the room right\nnext to the kitchen door, where they observed the other diners with passive\ninterest. Ernie didn\u2019t recognize many of the people there today. They were\nprobably from the west side, and were only able to make it to St. Ives today\nbecause of the weather.</p>\n<p>He had overheard a couple of conversations, while he and Ken ate their soup\nquietly, about Darryl. It wasn\u2019t uncommon to hear familiar names, especially\nafter someone got arrested, hurt, or killed, particularly amongst residents or\nfrequent visitors to St. Ives.</p>\n<p>He hadn\u2019t gotten any more information about exactly what had happened to\nDarryl, but there had been quite a bit of talk about the mysterious\ndisappearances of people the past few weeks, and their reappearance with fresh\ncuts and bruises. The general consensus among those Ernie overheard was that\nDarryl had gotten \u201cabducted\u201d as well, except this time, he\u2019d wound up dead.</p>\n<p>Ernie and Ken relaxed at their table once the meal was complete, waiting for\nthe dining room to clear out somewhat. It was just as well; their bellies were\nso overstuffed with Rhonda\u2019s hearty soup that they could barely move.</p>\n<p>It didn\u2019t take long for the crowd to leave the dining hall after lunch was\ncomplete. It was a warm day, after all; a day that would best be spent working\ntheir corner or block, making the most of the warmth. It was __ a day to\nbe spent inside, warming oneself in the heated interior of the shelter.</p>\n<p>Ken, who\u2019d been keeping a watchful eye on the clock that peered down across\nthe dining hall, motioned to Ernie that they should get going. They had a few\nminutes to walk back to Dominick\u2019s and meet Holly there. Neither Ken nor Ernie\nreally knew what to expect from their journey to 59 th Street , but Holly\nseemed to think that someone there would know something, and it made sense to\nfollow her lead. Ernie\u2019s presence with them would increase their credibility\nanyhow, and they\u2019d be more likely to get the information they were seeking.</p>\n<p>Ken\u2019s zeal for the investigative arts had cooled somewhat. He had come to\nthe conclusion, after they were unable to gain access to the hospital, that\nthe life of a true investigator was nothing like that in his books, and that\nhe\u2019d be better off finding another occupation. He had, however, dragged Ernie\nalong on this whole escapade, and felt somewhat responsible to see it through\nto its conclusion. Besides, if they did by some miracle manage to find out\nwhat happened to Darryl\u2026 well, <em>that</em> would be cool. His friends on the\ncorner would <em>definitely</em> give him mad props for that.</p>\n<p>They stood up from the table and waved at Rhonda in the kitchen, then headed\nout of St. Ives towards Dominick\u2019s.</p>\n<hr />\n<p>The hours between Ernie and Ken\u2019s initial visit and three seemed to stretch\non forever as Holly and Ned rang up customer after customer. Ned was moving a\nlittle more slowly than usual; his mind was on other things. He worried about\nHolly. She had put on a brave face when they had come back into the store, but\ninside he knew she wasn\u2019t doing so well. He had seen her talking at length\nwith Darryl after work in the parking lot; they had talked about life, love,\nthe pursuit of happiness, and everything else under the sun.</p>\n<p>It continued to amaze him how easily Holly spoke to everyone, especially the\nhomeless. Her natural listening ear combined with Darryl\u2019s love to speak had\nnaturally drawn them to each other. Ned had not been privy to many of their\nconversations, but he knew that to Holly, Darryl was a special friend \u2014 she\nwould miss him.</p>\n<p>He looked at his watch for what seemed like the millionth time. Only a few\nminutes had passed, but three o\u2019clock was almost upon them. He flipped the\nlight on his register, signaling that he was now closed.</p>\n<p>\u201cDon\u2019t worry,\u201d he said to the confused customers still in his line. \u201cI\u2019ll\nfinish up with whoever\u2019s in my line right now, I\u2019m just not going to be taking\nany new customers.\u201d He smiled reassuringly back at them, and finished checking\nout the final customer in record time.</p>\n<p>Holly was already headed back towards he back of the store to punch out, so\nhe quickly double-checked his register and followed her blonde head back to\nthe time-card system.</p>\n<p>They remained silent as they walked together to the front of the store and\npushed through the revolving door into the glaring mid-afternoon sun. Ernie\nand Ken were just walking into the parking lot, and the four of them\nrendezvoused in the middle of the nearly deserted lot.</p>\n<p>Ernie still wasn\u2019t his usual active self, Holly noticed, but the lunch had\ndone him good; at least he didn\u2019t look so peaked \u2014 just sad. His headphone\u2019s\nstill hung around his neck uselessly, which was unusual and ind icated that\nperhaps he had been taking this harder than she had initially thought. Well,\nhopefully the guys at 59 th street would be able to shed some light on the\nwhole situation and give them all a little bit of closure.</p>\n<p>Ned was glad that he\u2019d driven the van today. Normal ly he drove an old,\nbarely running Volkswagen Jetta, but it had not been cooperating this morning,\nso Lavina had offered to take the bus to her job across town, so Ned could\ntake the van. The van would easily accommodate all four of the travelers; the\nJetta would have been quit a squeeze.</p>\n<p>Everyone piled in, Ned driving, Holly in the passenger seat, and Ken and\nErnie in the back, staring silently out the window as they pulled out of the\nparking lot. The trip to 59 th was not far, and traffic was light at this\npoint in the afternoon, so they arrived at the underpass within a few minutes.</p>\n<p>Ned pulled over to the right and turned on his emergency fla shers. There\nwas nowhere to park in this area, but he hoped they wouldn\u2019t be staying long;\nthough Holly knew several of the people here, and Ernie was no doubt a\nfamiliar face to most, he still felt uncomfortable. He didn\u2019t readily admit\nit, especially to Holly, but the grubby faces with their piercing eyes and\nwary stares, the dirty, worn corduroys, jeans, and jackets, and the makeshift\ndwellings made of cardboard and newspaper \u2014 all of it made him very\nuncomfortable.</p>\n<p>He stuck close to Holly as she moved confidently through the individual\ndwellings under the bridge, Ernie and Ken trailing a short distance behind.\nShe stopped several times to speak with people she recognized, but moved on\nafter determining that the person knew nothing about Darryl.</p>\n<p>They milled about for around 20 minutes, Holly growing more and more\nimpatient as they walked. No one knew anything \u2014 or if they did, they weren\u2019t\ntelling her. As they passed by the dark recesses of a drain pipe along the\nlower end of the slope, a low, rich voice called out softly.</p>\n<p>\u201cHey.\u201d Holly turned, peering in the direction from which the voice had come.\nShe saw nothing. \u201cDown here, in the pipe.\u201d Looking down she saw the\nsilhouetted outline of a man lying inside the large pipe, a thin blanket\nwrapped around him.</p>\n<p>\u201cAs long as the water ain\u2019t runnin\u2019, there\u2019s not a better bed for miles,\u201d he\nsaid, referring to the pipe in which he laid. \u201cI hear you guys are lookin\u2019 for\nDarryl.\u201d</p>\n<p>Holly stepped closer to the man, who pulled himself out of the pipe and\nstood to greet them.</p>\n<p>\u201cWell, not exactly\u2026 Darryl\u2019s dead\u2026\u201d Holly said softly, looking down at\nher feet as she spoke.</p>\n<p>\u201cOh, I know,\u201d the man responded. \u201cMy name\u2019s James. We\u2019se quite a pair, me\nand him. Used to share everything we made, everything we had. We were good\nfriends. So if there\u2019s somethin\u2019 you want to know about him, I\u2019m your man.\u201d He\nthrust his hand out at Holly, who took it and shook it firmly. Ned followed\nsuit.</p>\n<p>\u201cWell, it ain\u2019t much,\u201d James said, motioning at the concrete slope alongside\nthe drain pipe. \u201cBut have a seat\u2026 let\u2019s talk about Darryl.\u201d</p><img src=\"http://feed.tylerbutler.com/link/18607/17245999.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-11-18T15:45:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17245999.gif"
        },
        {
            "id": "https://tylerbutler.com/november-16th/",
            "url": "http://feed.tylerbutler.com/link/18607/17246000/november-16th",
            "title": "November 16th",
            "content_html": "<p>The scene faded out, movie like, and Joel was once again in the hospital.\nHis body ached, but at least the sharp pain had dulled. <em>It must have been a\ndream</em>, he thought. A dream based on the memory of that tremendous night the\nthree of them had shared. The following day he had said goodbye to both Pang\nand Sean, and had continued on his trip alone. He had taken Sean\u2019s thoughts to\nheart, and had made a concerted effort throughout the rest of his trip to just\nsit back and take it all in; to fully absorb the experience and make it his.\nHis only regret had been that Sean hadn\u2019t made the comment earlier.</p>\n<p>But now, laying in the hospital bed, staring up at the ceiling, he wondered\nif Sean had been right. He didn\u2019t feel like he had a lot of time. He had been\n<em>shot</em>! He felt robbed. This was supposed to be his triumphant return. He had\nlearned so much, and now he was to apply it to his life, to make sense of\neverything, and to make things <em>better</em>. But instead some idiot had shot him,\nfor no apparent reason, and he was laying in a hospital, probably barely\nclinging to his life.</p>\n<p>It seemed ludicrous. Fate had such a twisted sense of humor. He had gone so\nfar, learned so much, only to be idle again, his brain left to stew and figure\nout ways to defeat itself.</p>\n<p>Heather appeared in the doorway again, looking as angelic as she had before.\nAt least it wasn\u2019t <em>all</em> bad around here.</p>\n<p>\u201cHi again, Joel. Feeling all right?\u201d she asked softly, sitting down in the\nchair next to his bed. He looked over at her and smiled weakly.</p>\n<p>\u201cI\u2019m OK.\u201d</p>\n<p>She smiled back. \u201cWell, there are a couple of detectives here that would\nlike to talk to you if you\u2019re feeling up to it. They\u2019re trying to figure out\nwhat happened.\u201d</p>\n<p>Joel nodded. \u201cOK.\u201d</p>\n<p>Heather stood up and signaled to the two men waiting outside, then moved to\nthe back of the room as they entered.</p>\n<p>\u201cGood afternoon, Mr. Mendocino, I\u2019m Detective Cobb, and this is my partner,\nDetective Ames. We know you need to rest, but it would really help us out if\nyou could tell us what happened.\u201d</p>\n<p>Joel closed his eyes and thought back to the plane, to the train ride, to\nthe bagel, and to the altercation in the alley \u2014 all of the events that had\nhappened since his return. His thoughts were muddy, everything seemed to run\ntogether.</p>\n<p>\u201cI was walking to my apartment\u2026\u201d he began. \u201cI had gotten off the train,\nand had stopped by Dominick\u2019s to get something to eat.\u201d</p>\n<p>Ames interrupted, \u201cWe found you a few blocks east of your apartment? How did\nyou wind up there?\u201d</p>\n<p>Joel furrowed his brow, trying to remember exactly what had happened. \u201cI\ndon\u2019t know,\u201d he responded. \u201cI wasn\u2019t really paying attention. I was pretty\ntired and wasn\u2019t concentrating. I remember hearing a loud bang and running\ntowards it\u2026 there were two men there, and one of them had a gun. I pleaded\nwith them, but they were crazy. The guy with the gun just shot me for no\nreason, then they ran off.\u201d</p>\n<p>\u201cI didn\u2019t see the other guy on the ground until after I got shot. I picked\nhim up and tried to walk to the street, but I don\u2019t know how far I made it.\nThat\u2019s all I remember.\u201d He laid back against the pillow. The pain was growing\nagain.</p>\n<p>\u201cDid you know the other man?\u201d Cobb asked, taking notes on a small notepad.</p>\n<p>\u201cNo. Is he OK?\u201d</p>\n<p>\u201cUnfortunately, he was dead when we found you. From what the doctor tells\nme, you barely made it yourself.\u201d</p>\n<p>Joel groaned. The pain was becoming unbearable again. \u201cI think that\u2019s enough\nfor now, Detectives,\u201d Heather spoke up as she moved towards Joel\u2019s bedside\nagain.</p>\n<p>Cobb nodded. \u201cOK, Mr. Mendocino. Thanks a lot for your help. We\u2019ll let you\nknow if we find anything.\u201d The detectives turned and exited, and Joel\nfloundered, feeling for the plunger that would bring him relief. Heather\nplaced it back in his hand and he pressed it, feeling the relaxing drug flow\nwonderfully through him again.</p>\n<p><strong>Chapter 16: Angelo</strong></p>\n<p><em>Breakin\u2019 the law, breakin\u2019 the law\u2026</em></p>\n<p><em>Breakin\u2019 the law, breakin\u2019 the law\u2026</em> Mike sang along with the Judas\nPriest song blaring on the radio as he hurtled down the highway at high speed,\nweaving in and out of traffic, using the shoulder as his own private lane. He\nfelt __. In fact, he felt invincible! He was going to go to Angelo\u2019s\nseedy \u201coffice,\u201d explain the situation to him, and if he didn\u2019t understand,\nthen tough shit.</p>\n<p>He was sick of taking it up the ass from everyone. Bill at work, Marie at\nhome, and Angelo\u2026 he was sick of it. It was going to stop today \u2014 <em>now</em>.</p>\n<p>He abruptly noticed his exit on the left and swung the wheel dramatically,\ncutting across the four lanes of traffic that separated him and the exit, and\nlaughed aloud as the cars behind him slammed on their brakes and their horns.\nHe was in control \u2014 everyone else still worried about their cars, their jobs,\ntheir <em>lives</em>, but he was free. He didn\u2019t care about any of it anymore, and\n<em>that</em> made him powerful.</p>\n<p>He careened toward the old warehouse that Angelo called his office, just\neast of the highway, in a part of town that was about as far from ritzy as you\ncould get. Mike didn\u2019t know exactly which arm of the underworld Angelo worked\nfor, but he knew he wasn\u2019t all that powerful. If he had been, Mike would never\nhad seen him \u2014 he would be protected behind other, more expendable characters.</p>\n<p>Angelo was not to be underestimated, though. He had quite a temper, despite\nhis cold, calculating persona, and enough goons under his control that Mike\nknew it would be suicidal to approach Angelo violently. That wasn\u2019t his goal,\nat least at this point.</p>\n<p>He parked the oversized SUV in the empty lot across from Angelo\u2019s abandoned\nwarehouse, wondering as he stepped out of the vehicle just <em>how</em> Marie had\nmanaged to talk him into buying something so obviously out of place in a city.\nHe locked the door remotely, a happy beep-beep confirming the vehicle\u2019s\nsupposed security as he stepped towards the warehouse entrance.</p>\n<p>He looked at the dilapidated brick and faded signs posted on the outside of\nthe warehouse. Angelo really didn\u2019t keep his place in very good condition,\nconsidering his annual income \u2014 all tax-free, Mike noted. It really wasn\u2019t a\nbad deal, if you could handle the constant worry of law enforcement and the\nthreat of prison. Not a bad deal at all.</p>\n<p>Mike pounded on the door with his fist, then stepped away, anticipating the\nburly guard who swung the door open and inquired in a gruff voice. \u201cWhaddya\nwant?\u201d</p>\n<p>\u201cI\u2019m here to see Angelo about a payment,\u201d Mike replied, brushing past the\nguard as he spoke. The door closed behind him, and the small sliver of\nsunlight disappeared. Mike stopped, waiting for his eyes to adjust to the\ndimly lit interior of the warehouse.</p>\n<p>European techno-pop blasted from a deceptively small boom box in the corner,\nwhere a group of card players seated around a table ignored his entrance\ncompletely, engrossed in their own game of chance.</p>\n<p>On his left, a group of shady-looking characters stood next to a makeshift\nbar constructed of stacked crates and other miscellaneous junk; they regarded\nhim with little interest as he walked on down towards Angelo\u2019s main place of\nbusiness in the back of the warehouse, maneuvering around crates of random\nitems as he went.</p>\n<p>The guard who\u2019d granted him passage trailed behind him, monitoring his\ntravel and ensuring he didn\u2019t deviate from his stated purpose of visiting\nAngelo.</p>\n<p>Upon reaching the door to what had been the warehouse\u2019s small records\noffice, he knocked quickly three times and twisted the doorknob, not waiting\nfor the invitation to enter. There Angelo sat before him on the small love\nseat facing the door, three rather long lines of cocaine laid out on the low\ncoffee table in front of him. A thin waif sat next to him, rouge and blush\nsmeared clumsily on her once-attractive face.</p>\n<p>Angelo looked up from the table, and seeing Mike, broke into a smile.\n\u201cMike!\u201d he stood, opening his arms in welcome. \u201cYou know, I was just thinking\nabout you. Here, here\u2026\u201d He motioned at the table in front of him. \u201cJoin me,\nthere\u2019s plenty for everyone.\u201d</p>\n<p>The girl bent down and inhaled one of the lines, whimpering softly upon its\ncompletion, then laid back in the love seat, bringing her hand to her nose as\nher pupils dilated and the stimulant began to take effect.</p>\n<p>\u201cNo thanks, Angelo.\u201d</p>\n<p>\u201cNo? Well, more for me, I suppose.\u201d He sat down and promptly inhaled both\nremaining lines, one in the left nostril and the other in the right, shaking\nhis head hard when he was done. He looked up at Mike again, his nose bright\nred and an unfocused look in his eyes.</p>\n<p>\u201cWell, where is it?\u201d</p>\n<p>\u201cI don\u2019t have it,\u201d Mike stated calmly.</p>\n<p>Angelo raised his eyebrows. \u201cYou don\u2019t have it?\u201d</p>\n<p>Mike nodded. \u201cI don\u2019t have it.\u201d</p>\n<p>Angelo stood again and approached Mike slowly. His five-foot-three frame was\ndwarfed next to Mike\u2019s, but the maniacal gleam in his eyes indicated to Mike\nthat he meant business. Mike stood his ground.</p>\n<p>\u201cMike, your debt isn\u2019t due until the end of the month, but you know the\nrules.\u201d</p>\n<p>Mike did know the rules, but he knew that that wouldn\u2019t stop Angelo from\nreminding him of them now. Angelo seemed to take special pleasure in reminding\npeople of the rules after they\u2019d already been broken.</p>\n<p>\u201cThe only reason you come to visit me unannounced is to pay off a debt.\nAnything else, you call me and I <em>invite</em> you here or we deal with it over\nthe phone. You know how it works.\u201d The girl on the couch looked up at them\nboth and giggled, giddy with the coke and tension in the room.</p>\n<p>\u201cShut up, bitch!\u201d Angelo turned and yelled at her, causing the smile to melt\nright off her face. He turned back to Mike</p>\n<p>Mike nodded. \u201cI know, Angelo, but I wanted to come and tell you in person\nthat I won\u2019t be able to pay you back\u2026 ever.\u201d</p>\n<p>Angelo raised his eyebrows even higher in disbelief. \u201cEver? Hmmm\u2026\u201d</p>\n<p>He turned, clasping his hands behind him as he paced slowly in the small\nroom. \u201cWell, I certainly appreciate the gesture, Mike, but as you know, I\ndon\u2019t run that kind of business. Around here, we have strict rules that we\nadhere to, and when someone breaks them, they\u2019re punished. And whether you\u2019ll\nhave the money by the time it is due or not is really irrelevant to these\nproceedings. You came to visit me uninvited, without payment, which is an\negregious breach of the contract you and I arranged at the time you bet on\nthat horse. What was it\u2019s name?\u201d He paused, trying to remember the name, then\nresumed his pacing when the name eluded him.</p>\n<p>Mike became aware of the guard from the entranceway behind him. \u201cWell, it\ndoesn\u2019t matter what it\u2019s name was now, I suppose.\u201d</p>\n<p>The guard reached towards Mike\u2019s arm, but Mike was prepared. He\u2019d been\nwaiting for this moment. He sidestepped, grabbing the guards own wrist as he\nreached for Mike\u2019s, and thrust his body against the guards, forcing him off\nbalance and sent him tumbling towards the cocaine powdered coffee table.</p>\n<p>He smashed face first into it, sending shards of imitation wood throughout\nthe room. The girl screamed and picked her feet off the floor just in time to\navoid getting them smashed by the falling body. Angelo moved towards the\nfalling twosome, and Mike pushed himself off of the falling body and whirled\naround 180 degrees, grasping his hands together as he spun. His two united\nfists collided with Angelo\u2019s cheek as he completed his spin, sending Angelo\nreeling.</p>\n<p>Mike didn\u2019t skip a beat. He separated his hands and pounced on Angelo while\nhe was still off balance, pinning him against the wall and grabbing him around\nthe neck. He was in control, and it felt good. He searched Angelo\u2019s face for\nsigns of fear, but there were none.</p>\n<p>\u201cYou motherfucker,\u201d Angelo squeaked, pushing hard on Mike\u2019s hands with his\nown, trying to release Mike\u2019s strangle hold, but it was useless.</p>\n<p>\u201cYou don\u2019t control me, Angelo!\u201d Mike yelled, squeezing his hands tighter\naround the soft flesh of Angelo\u2019s neck. His face was turning a satisfying\ncolor of red. \u201cI\u2019m going to fucking kill you, just like I killed that other\nfucking prick.\u201d</p>\n<p>The feeling of complete supremacy that he\u2019d had while pounding away on\nMarie\u2019s lover returned. He <em>was</em> invincible.</p>\n<p>He felt a sharp pain on the back of his neck and felt his muscles go\nsuddenly limp, then another strike to the back of his skull brought complete\nblackness.</p>\n<p>Angelo pushed his motionless body off of him, inhaling deeply to regain his\ncomposure. He leaned on Marty, who had come to his rescue from the interior of\nthe warehouse, catching his breath. He kicked Mike\u2019s body as hard as he could.\n\u201cWho\u2019s in control now, bitch?\u201d</p><img src=\"http://feed.tylerbutler.com/link/18607/17246000.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-11-17T15:59:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246000.gif"
        },
        {
            "id": "https://tylerbutler.com/november-15th/",
            "url": "http://feed.tylerbutler.com/link/18607/17246001/november-15th",
            "title": "November 15th",
            "content_html": "<p><strong>Chapter 14: Watson</strong></p>\n<p>Ernie wasn\u2019t his usual self. His thoughts had cleared a bit since he had\nfirst set his eyes on Darryl\u2019s motionless body, but the image kept coming back\nto him at inopportune times, sending a shudder through his body each time.</p>\n<p>Ken was riding alongside him, occasionally breaking off to scout out ahead\nin a large circle, then riding back to resume a slower pace beside him. The\nboth of them were headed to Elston Memorial hospital to see the other guy\nwho\u2019d been shot. Ken had said his name was Joel.</p>\n<p>Ernie wasn\u2019t particularly interested in any of this, but Ken seemed excited\nabout trying to figure out what had happened, and Ernie felt it necessary to\ncome along, if only to keep Ken company. They had, in the past, kept each\nother out of trouble by posing as father and son, or uncle and nephew, or any\none of a number of fictitious relationships that proved advantageous in\ncertain situations. It had gotten them out of a few scrapes, and rewarded Ken\nwith a rather large collection of otherwise unattainable mens\u2019 magazines.</p>\n<p>Ernie\u2019s thoughts wandered back to what Darryl had said that day in the\ndining hall at St. Ives. He wasn\u2019t much of an analytical thinker. He knew he\nhad been frightened at the tone of Darryl\u2019s voice, and he\u2019d made it a point to\nremember exactly what he\u2019d said, even though his memory was especially\nterrible. But what could the meaning have been? It seemed obvious that\nDarryl\u2019s comments and his death were somehow linked, but how, Ernie didn\u2019t\nknow.</p>\n<p>Ken returned from one of his scouting trips and said hurriedly, \u201cCome on,\nErnie, let\u2019s <em>go</em>! We\u2019re almost there.\u201d He motioned to the large riding pegs\nmounted on his rear wheel. \u201cHop on\u2026 it\u2019ll be faster.\u201d</p>\n<p>Ernie grimaced as he stepped up onto the pegs and gripped Ken\u2019s shoulders\nfor balance. He hated riding with Ken this way \u2014 he much preferred to walk.\nBut when Ken was in a hurry, there was no arguing with him, so Ernie held on\ntightly and together they zoomed down the shallow hill towards Elston\nMemorial.</p>\n<p>Ken was right; the bike was faster, and the looming multistoried building\nthat was Elston Memorial was soon upon them. The hospital wasn\u2019t as busy as\nKen and Ernie had imagined. The parking lot was only half-full, and the\noccasional flashing lights and flurry of activity at the emergency room\nentrance as an ambulance drove up was the only sign of life in the entire\nhospital grounds.</p>\n<p>Ken wheeled around the parking lot, weaving between parked cars, and Ernie\nheld on more tightly. He knew Ken was doing this for his benefit. He\u2019d have to\nget him back later. He had to admit that the wind rushing through his hair\nfelt nice, though. If he could get the fear of falling off out of his head,\nriding with Ken might actually be <em>fun</em>.</p>\n<p>Ken pulled to a stop in front of the main entrance and pulled his chain lock\naround the front tire, locking it securely. Together he and Ernie walked into\nthe hospital.</p>\n<p>Ernie wasn\u2019t exactly sure what Ken\u2019s plan was, but hopefully it\u2019d be\nsomething they\u2019d done before. Ernie didn\u2019t improvise well, but they had a\nlarge enough repertoire of practiced scams that improvisation was rarely\nnecessary.</p>\n<p>They approached the front desk and Ken peered over the counter at the nurse\nsitting there. \u201cWe\u2019re here to see Joel Mendocino,\u201d he said.</p>\n<p>The nurse looked over at them. \u201cOK, friends or family?\u201d She addressed the\nquestion to Ernie. Ken interjected, \u201cMy uncle\u2019s deaf; you\u2019ll have to have me\nask him questions in sign language. But we\u2019re family. Joel\u2019s my cousin. We\nheard something had happened to him, and that he\u2019d been taken here.\u201d</p>\n<p>Ernie was relieved; no quick thinking would be necessary today. The deaf\nuncle role was one with which he was very familiar. Neither he nor Ken really\nknew sign language, but they had perfected a series of motions that convinced\nmost people they were really communicating, and if faced with someone who\nactually did know ASL, they would simply say that Ernie had learned a little\nknown Eastern European signing style, and leave it at that. It was a simple\nscam, but worked amazingly well.</p>\n<p>The nurse turned back towards the computer in front of her. \u201cMendocino, you\nsay? Hmmm, he\u2019s still in surgery. He should be out in the next hour or so, but\nhe\u2019ll be unconscious for awhile after that. I\u2019m afraid I can\u2019t let you see\nhim.\u201d</p>\n<p>Ken frowned. This wasn\u2019t working out at all like the mystery novels he\u2019d\nbeen reading. He\u2019d have to think of something else. Ken motioned at Ernie with\nhis hands. Ernie responded, waving his hands in a strange wavy arc.</p>\n<p>\u201cMy uncle wants to know if anyone else in his family has been contacted, or\nif anyone else has come to see Joel.\u201d</p>\n<p>The nurse examine her monitor again. \u201cWell, it looks like the police have\ncontacted his parents. They should be here shortly.\u201d</p>\n<p>Ken and Ernie exchanged hand motions again. \u201cOK, thanks a lot miss. You have\na nice day.\u201d The two of them turned and walked out of the hospital back into\nthe afternoon sun. Ernie suddenly realized he was getting hungry.</p>\n<p>Ken seemed to read his mind. \u201cLet\u2019s get something to eat, Ernie. You think\nRhonda would mind if I ate with you at St. Ives?\u201d Ernie nodded. Unlike the van\nZandt\u2019s, Rhonda\u2019s kitchen was open to everyone. Ernie\u2019s rumbling stomach got\nthe better of him and he hopped on the back of Ken\u2019s bike. Ken knew a few\nshort cuts, which combined with the faster speed of the bike would put them\nback at St. Ive\u2019s in pretty good time.</p>\n<hr />\n<p>As Ken dodged the large puddles of water behind the Dominick\u2019s, one of his\nfavorite shortcuts, Ernie glanced over behind the store, and glimpsed the nice\ngirl from the store talking with two other strange looking men. He didn\u2019t\nrecognize the other man that stood with them, but he was dressed the same way\nthe girl was, so he probably worked with her.</p>\n<p>He tapped on Ken\u2019s shoulder, signaling him to stop. Ken put on the brakes\nand looked over his shoulder. \u201cWhat is it?\u201d</p>\n<p>Ernie motioned towards where the girl and her companions stood talking. The\ngirl had started to cry and the her apparent coworker was hugging her.</p>\n<p>Ken knew what Ernie was thinking. He turned the handlebars and wheeled\naround the sidewalk towards the back of the store, staying within the bounds\nof the alley in order to appear as though the two of them were just innocently\nriding by. After they cleared the back wall of the store, he stopped and they\nboth dismounted. He laid the bike down on the asphalt and together they poked\ntheirs heads around the wall, peering surreptitiously at the motley group\nbefore them.</p>\n<p>The two strange looking men turned and walked back towards the store,\nforcing both Ken and Ernie to quickly hide their heads back behind the wall to\navoid being seen. After a minute, Ken slowly stuck his head back around and\nlooked again. The coast was clear this time; the two men were gone, and the\ngirl stood with her head against her coworker\u2019s chest, crying quietly.</p>\n<p>\u201cErnie, you know her, right?\u201d Ken turned and looked back at Ernie, who was\nstill pressed against the wall, eyes closed. \u201cDon\u2019t worry, they\u2019re gone. I\ndon\u2019t think they saw us.\u201d</p>\n<p>Ernie opened his eyes and relaxed slightly, then nodded in response to Ken\u2019s\ninquiry.</p>\n<p>\u201cWell, let\u2019s go talk to her. I\u2019m think she knew Darryl.\u201d Ernie nodded again.\nHe was aware that the girl and Darryl knew each other; in fact, Darryl was\npartly responsible for introducing Ernie to her in the first place.</p>\n<p>Ken picked his bike up off the asphalt and together they rounded the corner\nand walked towards the girl and her companion.</p>\n<p>Holly noticed them approaching and smiled at Ernie amidst her tears. She\nbroke from Ned\u2019s arms and walked over to meet them, a small smile on her face\ndespite the tears in her eyes. \u201cHi, Ernie,\u201d she said, wrapping her arms around\nhim in a short embrace.</p>\n<p>\u201cHi\u2026\u201d Ernie replied softly, willing himself to remember her name.</p>\n<p>\u201cHolly,\u201d she smiled as she pulled away from him. She giggled softly, then a\nsad looked reappeared on her face.</p>\n<p>\u201cDid you hear about Darryl?\u201d she asked. Ernie nodded, sadness enveloping his\nface as well. Holly looked down at her feet. \u201cDo you know what happened?\u201d</p>\n<p>Ernie nodded again, memories of Darryl\u2019s face in the ambulance swirling in\nhis mind once again. They stood in silence for awhile, looking at their feet,\nthoughts of Darryl pin balling between them.</p>\n<p>Holly looked up a few minutes later, dried tears on her face, the sign of\ndeep thought in her eyes. \u201cDo you think maybe some of the guys down at the 59\nth Street bridge might know what happened to him?\u201d Ernie looked up at her and\nlocked his gaze with her clear green eyes. He shrugged.</p>\n<p>They looked down at the asphalt again, until Holly turned to Ned, who had\nquietly approached from behind them. \u201cWhat time do you get off work, Ned?\u201d</p>\n<p>\u201cThree o\u2019clock today,\u201d he said, glancing at his watch.</p>\n<p>\u201cMe too,\u201d Holly replied. \u201cFancy a trip down to 59 th Street ?\u201d</p>\n<p>Ned shrugged. How could he refuse her now, with her tear-stained face and\nbright, expectant eyes?</p>\n<p>Holly turned back to face Ernie, who was gazing at his feet once again.\n\u201cWe\u2019re going to go to 59 th street to talk to some of the guys there at 3\no\u2019clock, if you want to come, Ernie.\u201d She glanced at Ken to make sure he\u2019d\nheard the time, knowing Ernie wouldn\u2019t remember it. She looked back at Ned.\n\u201cWell, I guess you and I had better get back to work.\u201d</p>\n<p>Ernie looked up again and nodded in affirmation before turning slowly and\nwalking back towards the alley beside the store and the sanctuary of St. Ives.\nHolly called over his shoulder at him as Ken walked his bike up alongside him.</p>\n<p>\u201cErnie, I <em>am</em> sorry. I know Darryl was your friend too.\u201d Holly turned and\nfollowed Ned back into the store. Ernie kept walking towards St. Ives, Ken\nalongside him.</p>\n<p><strong>Chapter 15: Awakening</strong></p>\n<p>Joel awoke in the hospital, only vaguely remembering how he\u2019d gotten there.\nThe circumstances surrounding his arrival at the hospital were not at the\nforefront of his mind \u2014 the pain he was in was. His side ached terribly.\nLooking down at his torso, he saw the white gauze covering it. He groaned as\nhis movement shot white hot pain through his entire abdomen.</p>\n<p>He rubbed his head and moaned again. His movement seemed to have set off a\nchain reaction of pain within his body that now radiated from his stomach\nthrough to the tips of his fingers. The door opened quietly and a strikingly\nattractive nurse glided in.</p>\n<p>She smiled compassionately down at him and reached down to cover him with\nhis blanket. He hadn\u2019t even realized he was so cold, but her firm warm hands\non his body made its uncontrollable shaking that much more apparent.</p>\n<p>\u201cHi, Mr. Mendocino. My name is Heather. It\u2019s good to see you awake. Try not\nto move too much. Your body needs some time to try and recover. I know you\u2019re\nin a lot of pain. We\u2019ve got you hooked up to a morphine drip, so just push on\nthis to administer yourself another dose.\u201d She placed a small white cylinder\nin his hand and gently wrapped his fingers around it.</p>\n<p>\u201cJoel\u2026\u201d he murmured.</p>\n<p>\u201cExcuse me?\u201d Heather replied.</p>\n<p>\u201cJoel\u2026\u201d he swallowed. \u201c Cal l me Joel.\u201d</p>\n<p>Heather smiled. He pushed the small button on the top of the white cylinder\nand felt a wonderful warmness spread throughout his body. He relaxed almost\nimmediately and lay back against the soft pillow. He sighed. Heather\u2019s smiling\nface was the last thing he saw before he drifted off to sleep again, oblivious\nto the two men who stood outside his door, arguing with the doctor.</p>\n<hr />\n<p>\u201cSo what do you think, Joel?\u201d</p>\n<p>Joel looked around to get his bearings. Where was he? He examined his\nsurroundings slowly, taking in the dark claustrophobic walls of the building\nhe was in, the light painting soft silhouettes against the tables and chairs,\nthe murmur of mouths loosened by too much alcohol. This was the bar that he,\nSean and Pang had gone to the night before Sean headed back to the States. He\nremembered now.</p>\n<p>Sean repeated the question, getting Joel\u2019s attention. \u201cHuh?\u201d</p>\n<p>\u201cWow Joel, you can be so spacey sometimes!\u201d Sean and Pang both laughed. Joel\nchuckled as well. \u201cCome on, what\u2019s the most important thing you want to do\nbefore you die?\u201d</p>\n<p>Joel looked down at his nearly empty cup of beer, now warm. \u201cI don\u2019t know,\u201d\nhe said. \u201cThere\u2019s a lot of experiences I want to have, you know? I mean, the\nreason I came all the way over here was to try and figure things out, to find\nout who I am, to experience parts of the world I\u2019ve only read about, you\nknow?\u201d Sean and Pang grinned and nodded in understanding.</p>\n<p>\u201cBut I feel like I\u2019ve wound up with more questions than answers. I feel even\nmore confused than I did when I came. This whole trip has made me realize that\nthere\u2019s so many things in the world that I will nev er see, let alone\nunderstand, and how can I have an impact on anything, when the world is so\nbig, and I understand so little of it.\u201d He became conscious that he was\nrambling.</p>\n<p>\u201cI guess I just feel like it doesn\u2019t matter what I do in the end, and that\u2019s\ndisheartening for me, because I need to feel like what I do matters, that it\nhas an effect\u2026\u201d He looked down at his beer again and took the final swig of\nit.</p>\n<p>\u201cWell, you know\u2026\u201d Pang began. Sean groaned, rolling his eyes and burying\nhis head in his hands. \u201c Cam us might say that life\u2019s all about amassing\nexperience, and that it doesn\u2019t really matter what you do, or what effect you\nhave, it only matter\u2019s what experiences you\u2026\u201d</p>\n<p>\u201cOh come off it, Pang.\u201d Sean interrupted good-naturedly. They all laughed.\nPang had a habit of bringing up literature or philosophy at somewhat random\npoints in a conversation, and Sean, not being the most scholarly person one\nwould ever meet, always ended up confused. None of them could deny the simple\nfacts though; they had all come to Asia by different means, but searching for\nthe same thing: answers to the big questions, or at least a compass to help\nthem find the right direction.</p>\n<p>Joel sighed, peering once again into his now empty glass of beer. \u201cI used to\nthink I had the world figured out,\u201d he murmured. \u201cI used to think that life\nwas just a simple equation, and if I could figure out all the variables and\nall the constants, I could solve it and be happy. But it\u2019s not that simple is\nit?\u201d It was a rhetorical question, and there was a brief moment of silence\nbefore Sean interjected.</p>\n<p>\u201cYou two,\u201d he said, shaking his head. \u201cI ask a <em>simple</em> question about what\nyou guys want to do before you die, and <em>you</em> start talking about literary\nthemes, and <em>motifs</em>, and all that <em>crap</em>, and <em>you</em> go off on this sad sob\nstory about how you can\u2019t figure life out. And to think I came all the way\naround the world just to run into two self-indulgent idiots like you guys.\u201d</p>\n<p>Pang and Joel exchanged satisfied glances. They enjoyed making Sean squirm.</p>\n<p>\u201cSince you guys can\u2019t give a straight answer, I guess I\u2019ll have to show you\nhow it\u2019s done.\u201d He sat up straight in his chair, pausing for dramatic effect\nbefore continuing. \u201cI would be totally complete, if I could do only one thing\nbefore I die.\u201d He paused again, milking the attention that Pang and Joel were\npaying him.</p>\n<p>\u201cJust one date with Natalie Port man. That\u2019s all.\u201d He pushed back from the\ntable as Pang and Joel burst out in laughter.</p>\n<p>\u201cWhat? I think it\u2019s a noble pursuit! And trust me, with my charm and good\nlooks, she\u2019ll be putty in my hands. _Putty! _\u201d He nodded confidently.</p>\n<p>The other patrons of the bar shot confused glances over at Pang and Joel,\nwho were laughing raucously, pounding on the table in an effort to rid\nthemselves of the excess energy the mental image of Sean on a date with\nNatalie Portman had given them.</p>\n<p>Sean pulled his chair back into the table as their laughter died down and\nthe din of the bar returned to normal.</p>\n<p>\u201cAre you serious?\u201d Joel asked, eyes still teary from the laughter.</p>\n<p>\u201cHell, yeah! In all honesty, there\u2019s not much else I want or need right now,\nreally.\u201d</p>\n<p>\u201cYeah, I know, I feel the same way, but aren\u2019t there things you want to see\nand experience while you can? I mean, you\u2019re the one who asked the stupid\nquestion.\u201d</p>\n<p>\u201cYes, there are plenty of things I want to see and experience, but I also\ntry my hardest not to take for granted what I do have, and what I have been\nable to experience. I seriously think you\u2019re just pining away for things that\nyou haven\u2019t had a chance to experience yet. I guess it\u2019s a clich\u00e9, but you\nseriously seem to think the grass is greener on the other side, but you\nhaven\u2019t even tasted the grass on your side, you know?\u201d</p>\n<p>Joe started to interrupt, but Sean held up his hand.</p>\n<p>\u201cWait a second. Think about this. You\u2019re sitting in a bar in Thailand , on a\ntrip to Asia you saved up for mont hs and mont hs to take, with two random\npeople you met during your travels, shootin\u2019 the shit, and all you can talk\nabout is how you\u2019re worried that you don\u2019t have it all figured out. Look\noutside, man, and remember where you <em>are</em>. Friggin\u2019 just enjoy it.\u201d</p>\n<p>Joel looked out the open window, where the bustle of the nighttime street\nwas slowing down gently, and the stars peeked out behind a haze of clouds that\nhad earlier graced them with a gentle rain. The goofy oaf had a point. He\nsighed and let a smirk cross his face. Sean smiled.</p>\n<p>\u201cYou\u2019ve got plenty of time to change the world, Joel, if that\u2019s what you\nreally want to do. Plenty of time.\u201d</p><img src=\"http://feed.tylerbutler.com/link/18607/17246001.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-11-16T15:24:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246001.gif"
        },
        {
            "id": "https://tylerbutler.com/november-13th-and-14th/",
            "url": "http://feed.tylerbutler.com/link/18607/17246002/november-13th-and-14th",
            "title": "November 13th and 14th",
            "content_html": "<p>The lights downstairs were all off. The dishes from Mike\u2019s breakfast earlier\nin the morning still sat in the sink; the soft sound of water drops echoed in\nthe silent twilight of the room.</p>\n<p>Mike glanced around expectantly, all five of his sense on maximum awareness,\nready to respond. Someone was in his house \u2014 he could feel it. Someone had the\naudacity to enter his home \u2014 <em>his home</em> \u2014 and do something \u2014 what he didn\u2019t\nyet know \u2014 but whatever it was, he knew he wasn\u2019t going to like it.</p>\n<p>He stepped quietly to the closet in the den and picked up his trusty\nbaseball bat. If someone wanted to get physical with him, he was going to have\nsomething other than his fists to protect him. He still had seen no sign of\nthe intruders, but he knew they were there somewhere, and he was going to\nintroduce them to Big Bertha.</p>\n<p>Now armed with the bat, he moved slowly towards the stairs up to the second\nfloor of the house. The creaking of the carpeted stairs hid the sounds\nfloating down from upstairs until he made it to the narrow hall at the top of\nthe stairs.</p>\n<p>Once there, the sound was clearly audible. He turned left towards it, bat\nheld at the ready, and crept towards the bedroom. The perspiration collected\nin large beads along his forehead, then ran down into his eyes. He didn\u2019t dare\nremove his hands from the bat to wipe them, and instead ignored the burning\nsensation and slightly blurred vision the saline sweat produced.</p>\n<p>He reached the bedroom, the apparent source of the sound. The door was only\npartly open, and he sidled alongside the doorway, back pressed against the\nwall. He peered inside the crack of the door, but nothing was visible.</p>\n<p>The sounds were growing louder. Soft, hushed breathing and occasional low\nmoans had turned into groans and raspy, labored breaths, coming at a much\ngreater frequency than before. Mike took a deep breath, gripped the handle of\nthe bat till his knuckles turned white, turned and stormed into the bedroom,\nyelling at top of his lungs.</p>\n<p><strong>Chapter 12: Identification</strong></p>\n<p>\u201cWow, what a dump,\u201d Cobb said as he stepped into the small one bedroom\napartment. \u201cNot much of a decorator, is he?\u201d The apartment was bare except for\na small unmade bed in the corner. The floor was bare cement, the normally\nwhite walls a light brown from months of city soot and grime.</p>\n<p>\u201cWell, I guess you get what you pay for,\u201d Ames commented as he moved deeper\ninto the interior of the apartment. \u201cDoesn\u2019t look like there\u2019s a whole lot\nhere. The landlord did say the kid had been subletting the place, and that the\nother two tenants left about a month ago.\u201d</p>\n<p>\u201cTwo people lived here?\u201d</p>\n<p>\u201cWell, not everyone has the benefits of a detective\u2019s salary, Cobb,\u201d Ames\nsmiled wryly. Cobb shook his head in response. \u201cHard to believe, that\u2019s all.\u201d</p>\n<p>He detectives glanced around again.</p>\n<p>\u201cYeah, I don\u2019t think there\u2019s anything here. Maybe the kid was just coming\nback today. He did have those tickets in his backpack.\u201d</p>\n<p>\u201cAll right. What next?\u201d</p>\n<p>Cobb sat down on the bed, looking around the room in thought. \u201cThey said the\nother guy was most likely homeless, right?\u201d Ames nodded. \u201cNot too unusual in\nthis part of town. I think there\u2019s a shelter down on Sullivan. Maybe somebody\nthere knows the guy.\u201d</p>\n<p>\u201cYou read my mind. Let\u2019s go.\u201d He slapped his hands on his thighs and stood\nup, following Ames out of the ground floor apartment and back to their car.\n\u201cYou drive,\u201d he said, throwing Ames the keys.</p>\n<p>Ames was surprised. \u201cSay what? You never let me drive? What\u2019s the deal?\u201d</p>\n<p>\u201cI just want to look around a bit. You drive.\u201d</p>\n<p>Ames didn\u2019t argue. Cobb was reticent as he started up the engine and pulled\nslowly out of the apartment complex and back onto the main road, making his\nway towards Sullivan Street .</p>\n<p>Cobb looked out of the passenger side window at the groups of homeless men\nand women underneath the bridges as they passed. Their faces were dirty, hair\ngreasy, a broken, beaten look in their eyes.</p>\n<p>He thought back to the last summer he\u2019d spent with his mother. He\u2019d grown up\nin a neighborhood not unlike this one. He didn\u2019t remember exactly how it had\nhappened, but one day, his mother had come home from work telling him to pack\nhis things into his small backpack, and they\u2019d left the apartment that had\nbeen his home.</p>\n<p>They had walked forever that day, him with his backpack, his mother with a\nsmall blue suitcase. When evening fell, they had found shelter under a bridge\nwith others like themselves \u2014 others with nowhere else to go.</p>\n<p>Cobb hadn\u2019t liked it there at first. The cement was a hard, cold bed, and\nthe others there had smelled funny, but his mother had held him close, told\nhim that everything was going to be OK, and eventually he was able to fall\nasleep.</p>\n<p>Every day they followed the same routine \u2014 they\u2019d get up, repack their\nbelongings, and walk around the city streets, looking for whatever they could\nfind. At first, his mother went into a few places looking for jobs. Cobb would\nsit out in front of the store, patiently watching his backpack and the blue\nsuitcase, but every time his mother returned with a sad look on her face, and\nthey started walking again.</p>\n<p>Eventually, his mother stopped looking for jobs and started looking for\nfood. Cobb was always hungry, and so their lives became a constant search for\nsustenance. His mother would take his hand and they\u2019d walk along the alleys,\nlooking in dumpsters for food or other things that might prove valuable in\ntrade to someone else.</p>\n<p>This had been his life for that summer. Towards the end, his mother had\nstarted leaving him under the bridge in the evening. She would return a few\nhours later, often with new bruises, but the next morning, his mother would\npull out a small wad of crumpled cash, and they would go out and have a big\nbreakfast, with orange juice, eggs, and pancakes, and sometimes, they\u2019d go to\nthe carwash and wash themselves with the hose. Those had been his favorite\ndays.</p>\n<p>One day a policeman had stopped them on the street and had taken them to the\npolice station. He had sat on the bench with his mother fearfully clutching\nher hand, and had cried incessantly when she said she had to go and he would\nhave a new family and a new life.</p>\n<p>Social Services had placed him with a foster family, and he had gone back to\nschool. The foster family was nice enough, but all he had really wanted was\nhis mother. He hadn\u2019t seen her since that day in the police station. He\nwondered now, as he peered out on the dirty faces, if perhaps one of them was\nher.</p>\n<p>Abruptly, the car turned onto Sullivan Street and Cobb was drawn back into\nreality.</p>\n<p>\u201cThere it is, at the corner, on the right,\u201d said Ames quietly as they\napproached the St. Ives shelter. Cobb looked up at the large stone structure\nlooming in front of them. The white brick exterior was worn and caked with\ncity grime. The large orange neon cross above the entrance flickered \u201cJesus\nLoves You.\u201d A few grubby, coated figures sat on the large stairs, sharing a\ncigarette between them.</p>\n<p>Ames pulled up next to the entrance and parked the car. \u201cReady?\u201d</p>\n<p>\u201cYeah, let\u2019s go.\u201d Cobb pulled his jacket tighter around him as they exited\nthe car and walked towards the figures sitting on the stairs. They seemed to\nhave the right idea. He could really use a cigarette right now. He pulled one\nfrom his pocket and lit it as he and Ames took the stairs towards the\nentrance.</p>\n<p>\u201cBetter not smoke that inside,\u201d one of the figures on the stairs said as\nthey passed by. Cobb stopped and turned. \u201cWhy not?\u201d</p>\n<p>\u201cRhonda won\u2019t like it. She doesn\u2019t let us smoke inside. Why else you think\nwe\u2019d be sittin\u2019 out here? Shit, it\u2019s <em>warm</em> in there.\u201d The man gestured\ntowards St. Ives. The others sharing the cigarette laughed.</p>\n<p>Cobb handed the cigarette to the man. \u201cWell, I guess you guys can have this\none on me.\u201d</p>\n<p>\u201cThanks, officer,\u201d the man responded, accepting Cobb\u2019s offer.</p>\n<p>\u201cIs it that obvious?\u201d Cobb asked, putting his hands in his jacket pockets.</p>\n<p>\u201cOnly cops move the way you two do,\u201d the man responded, inhaling Cobb\u2019s\ncigarette slowly before passing it along to the next one in the small circle.</p>\n<p>Cobb smiled. \u201cMust be our police training.\u201d A few men chuckled as he turned\nand followed Ames into the large St. Ives vestibule.</p>\n<p>\u201cSounds like Rhonda\u2019s the one we want to talk to,\u201d said Cobb as they hung\ntheir coats on the rack in the corner. Ames murmured in agreement, and they\nwalked up the short staircase into the large dining hall. It was mostly empty,\nexcept for one of two men sitting at distant tables, eating.</p>\n<p>The only sounds seemed to be coming from a door at the far side of the room,\nso they walked in that direction, aware of the strong smell of food wafting\nmore strongly as they approached.</p>\n<p>\u201cThey say it\u2019s warm in here?\u201d Ames commented as they entered the doorway to\nthe kitchen. \u201cSeems chilly to me.\u201d</p>\n<p>\u201cWal, you try heatin\u2019 a big old place like dis wit what money we got!\n\u2018Sides, it\u2019s warmer than outside, and that\u2019s warm enough for most folks here.\u201d\nRhonda turned from the kitchen sink and wiped her hands on her apron.</p>\n<p>\u201cAre you Rhonda?\u201d Ames asked, stopping at the entrance to the kitchen.</p>\n<p>\u201cSho \u2018nuff,\u201d Rhonda replied. \u201cAnd you must be cops. Only cops walk the way\nyou do. What can I do for you?\u201d</p>\n<p>Cobb interrupted, \u201cHi Rhonda, I\u2019m Detective Cobb and this is my partner,\nDetective Ames. I don\u2019t know if you\u2019ve heard yet, but there were a couple of\nmen found earlier this morning, and one of them is dead. He appeared to be\nhomeless, so we were wondering if he\u2019d have maybe come in here. We\u2019re just\ntrying to find out who he is and how he got shot.\u201d</p>\n<p>\u201cShot? Well, dat\u2019s a new one for one of my guys. Usually they do a pretty\ngood job of staying out o\u2019 da way of guns. You got a picture?\u201d Ames nodded,\nreaching into his jacket pocket for the Polaroid.</p>\n<p>\u201cMa\u2019am, this is from the crime scene, so\u2026\u201d</p>\n<p>\u201cJust let me see it. I\u2019ve seen worse, I\u2019m sure.\u201d Rhonda walked over,\naccepted the picture, and inspected it with a frown on her face, shaking her\nhead.</p>\n<p>\u201cYeah, this is Darryl. I don\u2019t know his last name.\u201d She shook her head\nagain. \u201cPoor guy. Guys around here call him da Squeegee Man, on \u2018ccount o\u2019 his\nalways cleaning car windows down on State Ave. Last time he came in, he was\npretty beat up, but he didn\u2019t seem to wanna talk about it. We don\u2019t pressure\n\u2018em \u2018round here. He ate a bit, talked to Ernie once, but didn\u2019t stay the\nnight. I hadn\u2019t seem him since den.\u201d She handed the picture back to Ames .</p>\n<p>\u201cDo you know anything more about him? Any reason you can think of that he\nwould have been shot?\u201d Rhonda shook her head.</p>\n<p>\u201cNo, Darryl was a nice guy, real friendly and he\u2019d talk your ear off if you\nlet him. He was different last I saw him, though. Real quiet. Like I said, he\nwas beat up. I spect he got in front of that bullet by accident \u2014 he wasn\u2019t\nthe kind to seek out trouble.\u201d</p>\n<p>\u201cOK. You mentioned he talked to Ernie last time he was here. Who\u2019s Ernie?\u201d</p>\n<p>Rhonda smiled. \u201cHe\u2019s a reg\u2019lar \u2018round here. He\u2019s not all right in the head,\nbut he\u2019s a sweet boy. He didn\u2019t have anything to do with this, I can tell you\ndat. He used to talk to Darryl a lot; went out with him to State Ave. once.\u201d</p>\n<p>\u201cAny idea where we can find him?\u201d</p>\n<p>\u201cWal, he usually goes down and hangs out with some kids around 34 th and\nBroadway, but I doubt you\u2019ll get much from him. Ernie can\u2019t describe things\nvery well. His mind don\u2019t work dat way. Tell you what, though, there\u2019s a girl\nthat some of da guys talk about \u2018round here. She works up at the Dominick\u2019s\njust up the street. Da guys say she\u2019s real nice. I know Darryl knew her; Ernie\ndoes too. She might know somethin\u2019 more. Sometimes dey talk to other people\nbetter \u2014 they don\u2019t tell me too much. Now, I\u2019ve gotta get the rest of this\nfood made, we\u2019ll be having a large crowd here for lunch in a bit. \u2018Scuse me.\u201d\nShe brushed pas Ames and Cobb and rummaged around the counter.</p>\n<p>\u201cOK. Thanks a lot ma\u2019am. If you hear anything just give us a call at the\nstation.\u201d Rhonda nodded, and Cobb turned back and left the kitchen, Ames close\nbehind.</p>\n<p>\u201cYou want to head over to the Dominick\u2019s?\u201d Ames asked.</p>\n<p>\u201cMight as well. Foster\u2019s going to call us when the kid wakes up. Might as\nwell try to figure out why the homeless guy\u2019s dead.\u201d</p>\n<p>Cobb pulled out another cigarette as they exited St. Ives. The men on the\nstairs were gone.</p>\n<p>\u201cMaybe the kid was bein\u2019 held up or something, and this Darryl guy went to\nhelp him out. From what she said, he sounds like he might have done somethin\u2019\nlike that,\u201d Ames commented as he unlocked the doors. \u201cAm I still driving?\u201d</p>\n<p>\u201cYeah.\u201d</p>\n<hr />\n<p>Ned felt uneasy as soon as Cobb and Ames entered the store. There was a\npurposefulness in their walk that said they were on the job, they were looking\nfor someone; this was not just friendly stop for donuts and coffee.</p>\n<p>Positioned at the register nearest to the entrance, he was their first stop.\nThey flashed a badge. \u201cPolice. Can you call the manager down for a second? We\nneed to speak with him.\u201d</p>\n<p>Ned nodded and walked to the intercom mounted on the support beam behind the\nregister. \u201cBob, please come to register one, Bob, to register one.\u201d Bob was\nthe nearest thing to a manager today. He wasn\u2019t the big man himself, but he\nwas in charge for the time being.</p>\n<p>Ned returned to his position behind the register. \u201cHe\u2019ll be right over.\nAnything I can do for you gentlemen?\u201d</p>\n<p>Ames looked at Cobb for confirmation. \u201cWe\u2019re looking for a girl that works\nhere, may be real friendly with the homeless guys that live around here.\u201d</p>\n<p>They were talking about Holly, no doubt. \u201cThis girl in some kind of\ntrouble?\u201d Ned asked.</p>\n<p>\u201cNot at all. There was a homeless man that was murdered earlier this\nmorning, and we\u2019re trying to identify him and figure out what happened. Rhonda\nfrom St. Ives said this girl might know him.\u201d</p>\n<p>Ned was relieved. He had been concerned as soon as they had mentioned Holly.\nHe knew she\u2019d had her run-ins with law enforcement before, but she was a good\nkid \u2014 he didn\u2019t want anything bad to happen to her. It looked like the police\nofficers just needed information.</p>\n<p>\u201cYeah, she was probably talking about Holly. She works here. She knows a lot\nof the guys that live around here. I go out with her and talk to them every\nonce in awhile. Maybe I can help you out.\u201d</p>\n<p>Ames had already taken the Polaroid out of his pocket and thrust it into\nNed\u2019s hand. He peered into it. It was a grisly photograph \u2014 the man in it was\nobviously dead.</p>\n<p>\u201cYeah, Holly\u2019s talked to him a couple of times. He\u2019s stopped by when she\nbrings pizza or hot chocolate or something, but I don\u2019t know if she knows\nanything more than what he does and where he works \u2014 on the street, I mean.\nNone of these guys have real jobs.\u201d He handed the photo back to Ames .</p>\n<p>\u201cTell you what, I think Holly just took a break. She might be out back\nsmoking or something. I can take you out there if you\u2019d like.\u201d He wanted to be\nthere when they talked to her \u2014 he could keep an eye on things and make sure\nthey hadn\u2019t been lying to him about why they wanted to talk to her.</p>\n<p>Bob approached from the back of the store, smile pasted on his pale face as\nalways. \u201cHey Ned, you called? What do you need?\u201d</p>\n<p>Cobb spoke up before Ned had a chance to answer. \u201cWell, your employee here\nhas been kind enough to help us out. We\u2019ll let you know if you need anything\nelse.\u201d He flashed his badge again. A confused expression clouded Bob\u2019s face,\nbut he replaced it quickly with his award-winning smile and nodded.</p>\n<p>Ned grinned to himself. It was satisfying to see the cops put Bob is his\nplace. Bob was too used to having things under his control, to being the\nultimate decision maker. But the cops didn\u2019t even give him a second glance as\nNed led them to the back of the store.</p>\n<p>As Ned had expected, Holly was standing outside in the back parking lot, a\nlit cigarette between her lips. She smiled as Ned and the cops joined her on\nthe sidewalk. Cobb lit another cigarette and smoked while Ames explained the\nsituation.</p>\n<p>Holly\u2019s eyes teared upon inspection of the Polaroid. \u201cYeah, this is Darryl.\nHe\u2019s really friendly. Such a great guy.\u201d She cried harder, and Ned put his arm\naround her.</p>\n<p>\u201cI\u2019m sorry ma\u2019am. Do you happen to know anyone who would have wanted to kill\nhim?\u201d</p>\n<p>Holly nodded, still crying softly. \u201cOh no, not at all. I mean, every once in\nawhile somebody\u2019d get huffy with him for cleaning their windshield, but Darryl\njust let it go. I can\u2019t imagine him doing anything to anyone that\u2019d make them\nwant to kill him.\u201d</p>\n<p>Ames looked at Cobb, who signaled their departure by flicking his half-\nfinished cigarette to the ground. \u201cThank you, ma\u2019am. And again, we\u2019re sorry.\u201d\nThe detectives made their way towards the back entrance to the store.</p>\n<p>\u201cWait!\u201d Holly called softly. She ran up, tears still in her eyes. \u201cSome of\nthe guys have been talking lately about something. Something that has them all\nscared. They were saying that sometimes, one guy disappears for a night, then\nshows up the next day all bruised and beat up. It happened to Darryl one time.\nI tried to talk to him about it, but he wouldn\u2019t tell me what had happened.\nBut everybody seems nervous about it these days. Even the homeless guys try to\nstay in pairs now, just to be safer. Maybe it has something to do with that, I\ndon\u2019t know.\u201d</p>\n<p>Ames and Cobb thanked her again and continued on into the store. Holly was\nstill crying as Ned put his arm around her again.</p>\n<p>**Chapter 13: Beat Down **</p>\n<p>Mike\u2019s vision focused slowly as he stormed into the room, yelling wildly.\nHis own voice was soon drowned out by Marie, shrieking maniacally at the top\nof her lungs, and by that of a man as he jumped free from his position on top\nof her and rolled off the side of the bed.</p>\n<p>Marie clutched the sheets around her naked body and continued to shriek on\nthe bed, a fearful look in her eyes. Mike\u2019s hands were still tightly grasping\nthe bat, and he ignored her screaming as he scanned the room for the man. He\nmoved around to the left side of the bed, where the man was cowering next to\nthe night table, holding his hands in front of his nude, trembling body in an\nattempt to shield himself.</p>\n<p>Well, this was an interesting development. He glanced around the room in an\neffort to discredit the conclusion he already knew to be true. The room was in\nperfect condition, just like the rest of the house; no, Marie had <em>let</em> this\nbastard into the house.</p>\n<p>Marie regained her composure to some degree and shouted, both in fear and\nanger, \u201cMike, what the hell are you doing?\u201d</p>\n<p>Mike\u2019s mission now seemed clear. His job was gone, Angelo was going to kill\nhim, and Marie was cheating on him; with this pasty-faced bastard, no less. He\ncouldn\u2019t do anything about the job or Angelo, but he\u2019d be damned if he was\ngoing to let her get away with this. She was going to pay.</p>\n<p>The weakness he\u2019d been feeling on his trip home was now fading, replaced by\nthe familiar rage that fueled all his best work. He was starting to feel\nnormal again \u2014 in control. But this time was going to be different. He wasn\u2019t\ngoing to stomp around, screaming vulgarities and throwing things around the\nroom. This time he was going to do it fucking <em>right</em>.</p>\n<p>Mike glanced back at Marie, a strange stillness in his eyes. He replied\nicily, eyes staring blankly into the distance, \u201cI\u2019m fuckin\u2019 killing your\nboyfriend, that\u2019s what I\u2019m doing.\u201d</p>\n<p>He swung the bat down forcefully, striking the pale, sweating man on the\nleft side. His arm crumpled as he cried out in pain. He scrambled towards the\nbed, looking for shelter, but Mike bent down, grabbed his ankle, and pulled\nhim out one handed. With his other hand he swung the bat again, hitting his\ntarget just between the shoulder blades.</p>\n<p>The man gasped, then went limp, and Mike struck again, with both hands this\ntime. The man\u2019s body was unresponsive, and in his subconscious Mike realized\nthat he was either dead or knocked out, but the beating continued.</p>\n<p>Marie jumped from the bed onto his back, screaming nonsensically at him and\npounding weakly at him with her fists. The man groaned unexpectedly and Mike\nsmiled inwardly at the realization that he wasn\u2019t dead <em>yet</em>. The beating\ncould continue.</p>\n<p>He grabbed Marie\u2019s arm and swung her off his shoulder, then clutched her\ntowards him and threw her hard towards the left closet door. She smashed\nawkwardly into the full-length mirror there, sending fireworks of sunlight\nfrom the early afternoon sun around the room, and landed in a heap of broken\nglass, broken skin, and tears.</p>\n<p>Mike smiled at her. \u201cThat\u2019s right, bitch,\u201d he spoke smoothly, resuming his\nswings with the bat. The man was now in a fetal position below him, moaning\nsoftly. Bruises had already started to form on his legs and back, and his\ndisfigured arm gushed blood where white bone jutted incongruently out of his\npasty skin.</p>\n<p>Mike pounded on him mercilessly with the bat, paying special attention to\nhis broken arm and now purple back, then abruptly dropped to his knees and\ncontinued with his own fists, focusing on the face and neck. His own blood\nmixed with the man\u2019s as the cuts on his knuckles reopened. He raised his hand\nfor another blow, and without warning, stopped short, instead grabbing the bat\nagain and standing slowly up.</p>\n<p>The tip of the bat was smeared a dark crimson now, and flecks of a similar\ncolor dotted the sheets and bed surrounding the crumpled body of the man. Mike\nsmiled coldly, satisfied with his work. He looked over at Marie, where small\nrivulets of her own blood ran along the glass pathways on the clean hardwood\nfloor, fueled by constant drops from fresh cuts on her back, legs and\nbuttocks. She caught his cold stare from behind a shroud of matted, blood-\nflecked hair.</p>\n<p>Mike turned and threw the bat at her feet. Its noisy clatter was drowned out\nby her own surprised shriek, and she scrambled away quickly, leaving a broad\nswath of crimson in her path.</p>\n<p>Mike reached down and picked up the telephone on the night table, throwing\nit at her. \u201cYou\u2019d better call 911, Marie. I think your boyfriend needs to see\na doctor.\u201d With that, he turned and strode quickly out of the room, down the\nstairs, and into the kitchen.</p>\n<p>He stopped at the sink, running cold water over his own wounded hands. The\nwhite of his own knuckles shone through as the blood washed away. He saw\nMarie\u2019s purse in it\u2019s customary position on the kitchen counter, and he swung\nit over his shoulder as he walked to the garage.</p>\n<p>Marie wouldn\u2019t be needed her SUV \u2014 he might as well take it. It was really\nhis anyway, he\u2019d paid for it. The angry adrenaline surged pleasantly through\nhim as he pressed the garage door button. Sunlight streamed brightly into the\ndark garage as the door opened. <em>What a beautiful day</em>, he thought. He pulled\nout slowly onto the street, and continued on through the path of finely\nmanicured lawns, stone yard fountains, and hedge art. It was time to go see\nAngelo.</p><img src=\"http://feed.tylerbutler.com/link/18607/17246002.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-11-15T15:18:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246002.gif"
        },
        {
            "id": "https://tylerbutler.com/november-10th/",
            "url": "http://feed.tylerbutler.com/link/18607/17246003/november-10th",
            "title": "November 10th",
            "content_html": "<p><strong>Chapter 11: Debt</strong></p>\n<p>Mike came to propped up against the side of the tower. His head hurt. It\ntook him a few moments to remember what he was doing there. He was vaguely\nconscious of a uniformed security guard standing just inside the tower door,\npeering out the window at him. As he looked back at the man, the security\nguard raised his walkie talkie to his mouth, uttered a few words, and turned\naway from Mike.</p>\n<p>The two security men who\u2019d escorted Mike out of the tower hadn\u2019t known what\nto do with his unmoving body. It wasn\u2019t uncommon for them to drag a recently\nfired employee out of the office, but they had always stayed conscious.</p>\n<p>Mike collected his muddy thought, rubbed his head and slowly stood up. The\nadrenaline that had fueled his angry tirade earlier was now gone, and the\nrealization that he was in deep shit had fully sunk in, leaving his mouth dry,\nhis head aching, and his knees weak.</p>\n<p>He was dizzy. What was he going to do? He tried to ignore it, but the\nthought of what Angelo was going to do to him kept coming back. He had needed\nthat bonus! He willed himself to get angry again \u2014 to muster up the chemicals\nin his brain that would restore him to his normal self \u2014 but nothing would\ncome. He was too tired. He wanted to sleep for a very long time. In his\ndejection he found it strangely humorous that he would soon get his wish; when\nAngelo found out he didn\u2019t have the money, he\u2019d make sure that Mike would be\nsleeping for a <em>very</em> long time.</p>\n<p>He eventually became aware of the people staring at him. He must have looked\nvery awkward, staggering on his feet, blood on his shirt, hair mussy, a\ndistant look in his unfocused eyes. But why did they stare? Had they never\nseen a jobless guy downtown before?</p>\n<p>\u201cScrew you!\u201d he yelled at a passing woman who\u2019d kept her eyes on him for a\nmoment too long. She jumped and scurried on along, looking back every so often\nas if she was worried he might follow her.</p>\n<p>Finally his head stopped swimming and he gingerly stepped off the tower\nstairs down towards the street. The security guard was there in the window\nagain, no doubt ordered to keep an eye on him. He spoke into his walkie talkie\nagain, and maintained his watchful gaze as Mike stepped along the street\nslowly.</p>\n<p>It occurred to Mike, as he staggered down the street, that he had no money\nfor a cab on his person. He normally kept his wallet on him, but on this\nparticular day he\u2019d worn his nice Italian pants; the back pocket was far too\nsmall for his oversized wallet, stuffed with business cards, credit cards, and\npictures of his wife to show potential customers. It\u2019s large bulge in the back\npocket of these particular pants was unsightly, not to mention uncomfortable,\nso he had placed it in the briefcase along with his files \u2014 the briefcase that\nwas by now being ransacked by Maureen and her team in search of his notes on\nhis new campaign.</p>\n<p>He reached in his pocket, feeling for his keys and cell phone \u2014 they were\nstill there, along with his train pass and a few cents in loose change. At\nleast he could call Marie. He fumbled with the phone a few minutes before he\nfinally got the number punched in. There was no answer? She hadn\u2019t been there\nearlier either; where was she?</p>\n<p>Without consciously realizing it, he\u2019d been walking towards the State Avenue\ntrain station. It was just as well. He could at least ride the train up\ntowards his house, then try calling Marie again and hope she would answer. She\ncould pick him up at the station.</p>\n<p>As he approached the platform, he reached in his pocket and quickly counted\nthe change he had. He was 50 cents short of what he needed to get back up\nnorth.</p>\n<p>He sighed, defeated, realizing the sick sense of humor the universe must\nhave. He began to ask passersby if they could help him out with a little\nchange, but they shrugged him off and hurried by. Why didn\u2019t they believe his\nstory? He wasn\u2019t a degenerate \u2014 he was an important man! And he only needed 50\ncents! It wasn\u2019t a big deal! The irony was not entirely lost on him as he\nremembered the earlier events of the morning. referring back to beggar story\nwith Mike, need to addYes, the universe had a sick sense of humor.</p>\n<p>After several unsuccessful attempts at soliciting assistance, and a couple\nof close scrapes with a public transportation employee who seemed to enjoy\npointing ominously at the small signs posted around the station that read,\n\u201cSolicitation Prohibited,\u201d Mike tried a new approach. He checked around the\nvending machines at the station, poking his finger into the change return and\nfishing under the machine with his hands. His efforts yielded two dimes, three\nnickels, and a collection of pennies, which he exchanged with the public\ntransportation employee for additional nickels and dimes.</p>\n<p>Before long, he had the requisite 50 cents and found himself on a northbound\ntrain, heading home. He was emotionally drained. Hopelessness enveloped him,\nand he tried to sleep, but was constantly plagued by nightmares of Angelo\u2019s\nresponse to Mike\u2019s explanation of why he didn\u2019t have the money.</p>\n<p>It had all started two months ago, when Mike was riding high on the success\nof another of his accounts. This account was much, much smaller than Richmond,\nbut the campaign he\u2019d designed had worked considerably well, and he felt the\nneed to celebrate that fact in some way.</p>\n<p>He had overheard a conversation in the office regarding a horse that was \u201ca\nsure thing.\u201d Mike had never thought of himself as a gambler, though others\nwould no doubt have termed him that, but when thinking about just how to\ncelebrate his recent victory at Copeland, a sizable bet on a \u201csure thing\u201d\nseemed to be just the thing. There were few things more exciting to Mike than\nwatching money turn into more money (this was an important thing in\nadvertising \u2014 it was his job to turn a client\u2019s advertising budget into\nrevenues), and his cursory research into the horse, named Day Tripper,\nindicated that he had a good chance to do well with his bet. His own research\ncoupled with the overheard office discussion made his decision decisively\nsimple.</p>\n<p>He had called up Angelo, whose number had been collecting dust in his\nRolodex, and put a sizable bet on Day Tripper to win. Angelo had been more\nthan happy to take Mike\u2019s bet, reminding him again of the debtor\u2019s obligations\nto his creditor. Mike had brushed it off; Day Tripper was a sure thing \u2014 it\nwas money in the bank.</p>\n<p>That was when things started to go wrong. Day Tripper had lost miserably,\nand the following day at Copeland he was informed that his client had\nmisreported their revenue from the last campaign, and the ads weren\u2019t doing as\nwell as they had initially thought. Mike had had his first and only out of\nbody experience at that point, and upon returning to normal, had proceeded to\nthrow random objects around the office and threaten to fire each and every\nperson on his team.</p>\n<p>Angelo, of course, was pleased with the outcome, and was sickeningly calm\nand collected when he phoned Mike to inquire about payment. Mike was in for a\nlot, and without the expected bonus from that recent campaign, he didn\u2019t even\nhave the money he\u2019d put up, let alone enough to cover the juice Angelo was\nalready running.</p>\n<p>Angelo had been more than happy to extend Mike\u2019s repayment period; after\nall, the interest went straight to his pocket. He had, of course, informed\nMike in no simple terms the extreme regret he\u2019d feel if he didn\u2019t pay the\nmoney back when it was due.</p>\n<p>Mike had readily agreed \u2014 he figured he could get the money somehow \u2014 he\nwould have done anything to get Angelo off his back for the time being. And\nwhen the Richmond guys said they were looking at renewing their contract, Mike\nwas confident that the bonus would pay his debt and leave plenty left over for\na little celebration. As the bonus began to seem more and more a reality,\nAngelo and the debt were demoted to the back corners of Mike\u2019s thoughts.</p>\n<p>But now, it was all he could think about. Mike didn\u2019t know exactly what\nAngelo was capable of, but he knew enough to worry. Angelo wasn\u2019t the kind of\nguy you could look up in the yellow pages. Mike had a need to be discreet\nabout his gambling; that\u2019s why he went through Angelo in the first place. He\nhad never anticipated actually having Angelo hunt him down.</p>\n<p>He couldn\u2019t decide whether he should call Angelo and let him know he\nwouldn\u2019t have the money, or wait for Angelo to wonder where he was and send\nsomeone for him. Either way, the outcome would be the same. He shook his head,\ntrying to shake off the uneasiness and worry that plagued him. Well, no matter\nwhat, he was going home now. He was going to drink a large glass of scotch \u2013\nperhaps the whole bottle \u2014 and accept Marie\u2019s soft, tender arms around his\nneck to comfort him. And then, perhaps\u2026 well, he would have to wait.</p>\n<p>Then he would figure out what to do. The alcohol and Marie would help to\ncalm him down; it would clear his head, it would make everything better. Then,\nand only then, would he be able to make a rational decision, to do the right\nthing.</p>\n<p>As the train passed by the Allerton station, he looked out towards the\nhighway, hoping to catch a glimpse of his car. It wasn\u2019t there. He sighed; it\nhad probably been towed to the city impound, which meant he\u2019d have to pay to\nget it back. It was surprising how quickly something as small as an impound\nfee could become a financial burden.</p>\n<p>The train pulled up to the far north station \u2014 his station \u2014 and he stood\nup, head still swimming somewhat from his earlier bout with unconsciousness.\nHe phoned Marie as he stepped out of the nearly empty train; she still wasn\u2019t\npicking up. Her lack of attentiveness to his needs, whether she knew they\nexisted or not, was starting to wear on him. She was his wife, dammit! What\nthe hell was she doing.</p>\n<p>The few cents in his pocket had not, unfortunately, transformed into more\nduring the trip, so he was still unable to afford a cab. He had no choice but\nto continue on foot. He called Marie at about every block, but she never\nanswered. Eventually he started getting busy signals; was she there, and\nsimply ignoring him? That bitch!</p>\n<p>The mile-long walk to his home went by quickly. He had too much on his mind\nto feel the growing blisters on his feet, cramped inside the Italian leather\nshoes; too much to feel the throbbing pain of the reopened wound on his hand,\nnow oozing blood again.</p>\n<p>The house was dark and quiet when he reached the front door. He grabbed his\nkey from his pocket, and inserted it into the deadbolt. As he pushed the key\nin, the door swung open silently; it was unlocked. Something was wrong \u2014 the\ndoor was never unlocked. Marie was obsessive about security \u2014 the only reason\nthe door would have been unlocked was\u2026</p>\n<p>He bolted into the room, looking around frantically. Nothing seemed out of\nplace.</p><img src=\"http://feed.tylerbutler.com/link/18607/17246003.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-11-11T15:59:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246003.gif"
        },
        {
            "id": "https://tylerbutler.com/november-8th/",
            "url": "http://feed.tylerbutler.com/link/18607/17246004/november-8th",
            "title": "November 8th",
            "content_html": "<p><strong>Chapter 9: Warning</strong></p>\n<p>Ernie felt weak. His stomach hurt, his heart was racing, and all he could\nthink of was getting out of there. He wasn\u2019t prepared to see a dead body, let\nalone the body of someone he knew.</p>\n<p>He turned and ran back out of the alley, leaving Ken scrambling to pick\nhimself off of the pavement and follow. Ernie didn\u2019t go far. He ducked behind\nthe building at the end of the alley and sat down, back against the side of a\ndumpster, and hugged his knees close to his chest.</p>\n<p>He didn\u2019t cry, but he felt like it. He couldn\u2019t get the image out of his\nhead \u2014 Darryl, with his grimy face and bloody hands, lying there motionless on\nthe gurney, a twisted expression of fear on his face. At least his eyes had\nbeen closed\u2026 Ernie shuddered again.</p>\n<p>Ken caught up with him, and assumed the same position as Ernie just to his\nleft.</p>\n<p>\u201cHey, Ern, what\u2019s goin\u2019 on, man? You know that guy or somethin\u2019?\u201d Ernie\ndidn\u2019t reply audibly, but nodded slightly. Ken knew him well enough to realize\nthat if you wanted information from Ernie, you were better off to just ask a\nlot of questions.</p>\n<p>Ken hadn\u2019t gotten a really good look at the man, since Ernie had dropped him\nbefore his eyes could fully focus, but he knew Ernie didn\u2019t know a whole lot\nof people except the kids at the corner and the residents of St. Ives.</p>\n<p>\u201cWas is one of the guys from St. Ives, Ernie?\u201d Ernie nodded ever so slightly\nagain. \u201cMan, that sucks.\u201d Ken leaned his head up against the dumpster, hugging\nhis knees even closer to his body.</p>\n<p>A burst of inspiration struck Ken like a lightning bolt. This was a perfect\nopportunity to do some sleuthing! Like many children, Ken vacillated when it\ncame to \u201cwhat he wanted to do when he grew up.\u201d But lately, he\u2019d been leaning\ntowards the glorious life of a private eye, due in no small part to the\nmystery novels that his friend Rex provided him.</p>\n<p>He could use this opportunity to get some valuable experience. By\ninvestigating the cause of the mystery man\u2019s death, he could try out his\ngumshoes and maybe even help Ernie somehow. It was an opportunity that\nshouldn\u2019t be missed.</p>\n<p>\u201cHey, Ern, I\u2019m going to head back to the store and see if I can figure out\nwhat\u2019s going on. Just stay here; I\u2019ll be right back.\u201d</p>\n<p>Ernie was more than happy to stay right there. He was still feeling quite\nsick. Sweat gathered quickly on his brow, and his breath became shallow. As\nKen scuttled back towards the flashing lights of the emergency vehicles,\nErnie\u2019s mind cleared enough for him to think about what Darryl had told him a\nfew weeks previous.</p>\n<p>Darryl was a regular at St. Ives, though he wasn\u2019t there nearly as often as\nErnie. He was known by many of the other St. Ives residents as \u201cthe squeegee\nman,\u201d largely due to the fact that he spent his days down on State Avenue\ncleaning the windshields of commuters as they waited at the lights. It\ncouldn\u2019t be called a living, since he still made moderate use of St. Ive\u2019s\nfree food supply, but he did better than many of the others who begged at\nstreet corners or outside grocery stores.</p>\n<p>Part of Darryl\u2019s success was due to his easy smile and the fact that he\nnever <em>ever</em> asked for any money in return for his services. He strove to\nmake it appear that he was simply helping people out; he didn\u2019t want people to\nthink he needed their charity, even though he most definitely did.</p>\n<p>Darryl preferred instead to believe that people would pay for a service well\ndone, even though they didn\u2019t necessarily know they needed the service. He\ntold Ernie on one occasion that most people didn\u2019t realize how dirty their\nwindows really were until he\u2019d cleaned them, and after that, they were more\nthan happy to throw a few cents his way in thanks. His attention to detail\ncertainly didn\u2019t hurt his enterprise either; Darryl made sure your windows\nwere clean. This was not a cursory effort; this was professional service, even\nif it did come from a grimy, off-smelling homeless man.</p>\n<p>Ernie had accompanied Darryl one day, and initially he found it interesting,\nbut he didn\u2019t excel at smalltalk and smiling the way Darryl did, and the\ncustomers\u2019 looks of dismay upon their approach was more than enough to\nconvince Ernie that he was better off to stick to his jive.</p>\n<p>He\u2019d learned a lot from Darryl, though, especially about keeping a positive\nattitude. Darryl had told Ernie stories of drivers that had gotten\nparticularly angry at him \u2014 so angry that they had stepped out of their cars\nand gotten physical with him. Every so often, Ernie would see Darryl with\nfresh bruises on his arms, or a cut above his eye. But he never let it get him\ndown. He had explained his philosophy to Ernie once.</p>\n<p>\u201cYa see, Ernie, da way I figger it, everybody\u2019s got a lot goin\u2019 on that we\ndon\u2019t see. Take you and me, fer example. Most folks don\u2019t realize you and me\nain\u2019t gots no home, ain\u2019t gots no food, but at the same time, we gots to\nunderstand that they\u2019se maybe had a rough day. Maybe da wife left \u2018em and took\nda kids. Maybe dey got fired an\u2019 worry about endin\u2019 up like you and me. I\ndunno. But da point is, we don\u2019t know. We gots to give them the opportunity to\nbe mad, cuz we don\u2019t know why dey are. Maybe it\u2019s me, but I don\u2019t think so. I\nthink it\u2019s something else. It\u2019s like my momma used to always say, \u2018Dey\u2019s more\nto it than just a broken leg.\u2019\u201d</p>\n<p>Ernie had never quite understood what Darryl\u2019s mother had meant, but if\nDarryl\u2019s account was at all truthful, she was the most intelligent and\ninsightful woman the earth had ever known, \u201ca true angel,\u201d as Darryl liked to\nsay.</p>\n<p>Ernie wasn\u2019t sure if he and Darryl were friends or not, but he knew he\nenjoyed his company, and whenever Darryl was at St. Ive\u2019s, Ernie sought him\nout.</p>\n<p>A few weeks ago, Darryl had come to dinner at St. Ives a changed man. He was\nbleeding from numerous cuts on his face, his clothes ripped and torn more than\nusual, and his hands were blistered so he could barely hold the now broken\nsqueegee.</p>\n<p>Rhonda had clucked over him for an hour, dressing his wounds and cleaning\nhim up as best she could. Darryl was strangely reticent during the whole\nprocedure and on into the evening, despite Rhonda\u2019s attempts to get him to\nexplain what had happened.</p>\n<p>Ernie hadn\u2019t had any luck either. He sat with Darryl at the dining room\ntable long after dinner, waiting for Darryl\u2019s explanation, but it never came.\nHe just stared aimlessly into space, seemingly lost in his thoughts.</p>\n<p>Finally, Ernie grew restless and stood up to leave, but Darryl had grasped\nhis arm urgently.</p>\n<p>\u201cErnie, listen!\u201d He spoke with an uncharacteristic urgency that immediately\ncaught Ernie\u2019s attention. There was a bizarre fire in his eyes, but they\nstared aimlessly the way they had that entire evening.</p>\n<p>\u201cIf a man ever comes to you, sayin\u2019 he\u2019s got da answer, dat he can get you\nout, you just gots to do one thing, don\u2019t listen to \u2018im. Don\u2019t let him take\n\u2018vantage o\u2019 you. Tell him you\u2019ll get out y\u2019own way. Tell him you don\u2019t need\n\u2018im. Hear me?\u201d He clenched Ernie\u2019s arm so hard he cried out in surprise.</p>\n<p>Ernie nodded a slow acknowledgment and drew his arm away quickly. Darryl had\nnever done anything that would hurt him before, but his eyes still stared off\naimlessly into space; he didn\u2019t seem to even realize he\u2019d done or said\nanything.</p>\n<p>Ernie had gone to bed that evening troubled, and he had wanted to ask Darryl\nwhat he was talking about, but Darryl was gone in the morning. It wasn\u2019t\nunusual \u2014 Darryl often didn\u2019t spend the whole night at the shelter. He\npreferred to find his own place to sleep. But Darryl hadn\u2019t returned, and no\none Ernie had spoken to had seen him around his normal Stae Avenue workplace.</p>\n<p>Ernie hadn\u2019t worried too much, though. Darryl was an old-timer; he\u2019d been on\nthe street for a long time. He knew the ropes and could take care of himself.</p>\n<p>But now, seeing Darryl\u2019s still body in the ambulance, the look of pain in\nhis eyes, Ernie wondered if perhaps there had been more to Darryl\u2019s admonition\nthan he\u2019d thought.</p>\n<p>**Chapter 10: Investigation **</p>\n<p>Ken was having considerable luck on his first foray into the investigative\narts. He had quickly found a perfect listening post from a fire escape just\nbeyond the row of police cars and ambulances. From his vantage point, he could\nget a relatively complete view of the mass of blue-suited officers with little\nrisk of being seen. And if he was quiet and listened carefully, he could make\nout the conversations of them men below without too much difficulty.</p>\n<p>Two men in trench coats and white dress shirts seemed to be running the\nshow. Ken had heard them be addressed as Detectives. Detective \u2014 that was a\ntitle he could get used to. Detective van Zandt \u2014 yes, it had a nice ring to\nit. This investigation stuff was going to be a blast!</p>\n<p>Despite the fun he was having, Ken tried to keep a serious attitude. A man\n<em>was</em> dead, and while that in and of itself wasn\u2019t terribly stunning,\nespecially in McAllister Park , this was someone Ernie knew, and that made it\neven more important that Ken take things seriously. He desperately wanted to\nfind out something that would put Ernie at ease, or at least give them a clue\nas to what had happened. He\u2019d never seen Ernie this way before, which meant\nthat he knew the dead man pretty well.</p>\n<p>One of the detectives approached the ambulance where Darryl\u2019s body lay. Ken\ncraned his neck to hear the conversation.</p>\n<p>\u201cAny idea who we\u2019ve got here?\u201d</p>\n<p>\u201cNo, sorry. No identification at all. But judging from his appearance and\nsmell, he was probably homeless. We had more luck with the other guy. We found\na few books and some plane tickets from Sumatra in his backpack, and I think\nsomebody mentioned that they had his wallet as well.\u201d</p>\n<p>\u201cOK, any idea on what happened?\u201d</p>\n<p>\u201cNot really. Both victims had gunshot wounds, but judging from the blood\nloss, I\u2019d say John Doe over here got hit first. The kid probably stumbled on\nthe perps or tried to help the guy or something. A regular saint, I guess.\u201d</p>\n<p>\u201cWhere\u2019s the other victim?\u201d</p>\n<p>\u201cWell, they\u2019ve got him on the train back up to Elston Memorial. Stomach\nwound, but it seemed to have missed all the important stuff, so maybe he\u2019ll be\nall right. We\u2019ll see.\u201d</p>\n<p>\u201cOK, thanks.\u201d The detective turned and walked towards his partner.</p>\n<p>\u201cWhat do we have, Cobb?\u201d</p>\n<p>\u201cLooks like a homeless guy,\u201d the first detective said, removing the\ntoothpick he\u2019d been chewing on nervously from his mouth.</p>\n<p>\u201cWell, we\u2019ve got the other guy\u2019s wallet. His name is Joel Mendocino. Address\non his license is for an apartment just west of here. They\u2019ve taken him to\nElston.\u201d</p>\n<p>\u201cYeah, that\u2019s what I hear. Is Foster gonna call us when he\u2019s awake so we can\nget statement?\u201d</p>\n<p>\u201cYeah, she said she would.\u201d</p>\n<p>\u201cAll right, let\u2019s head to the apartment and see what we can find there.\u201d</p>\n<p>Ken watched as the two men headed on up the road towards their car, debating\nwhether the rest of the uniformed cops would have any useful information. None\nof them seemed to be talking \u2014 they were all simply looking around the scene\nand taking notes. He decided it was time to go let Ernie know what was going\non, and scrambled noiselessly off the fire escape and headed towards the\ndumpster behind the alley, where Ernie was still sitting, head on his knees.</p>\n<p>Ken pulled gently on his arm.</p>\n<p>\u201cErnie, I found out where they\u2019re taking the other guy. There were two of\n\u2018em. Come on, lets go see if he can tell us anything.\u201d He pulled more strongly\nagainst Ernie\u2019s resistance.</p>\n<p>Ernie reluctantly stood up slowly and followed Ken to where his bike lay on\nthe asphalt. He didn\u2019t much feel like \u201cinvestigating,\u201d but Ken seemed to think\nit was the right thing to do. He instinctively reached for the headphones\naround his neck, but stopped short of pulling them to his ears. No, he didn\u2019t\nfeel much like jiving either, so he and Ken made their way up the street in\nsilence.</p><img src=\"http://feed.tylerbutler.com/link/18607/17246004.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-11-09T15:01:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246004.gif"
        },
        {
            "id": "https://tylerbutler.com/november-7th/",
            "url": "http://feed.tylerbutler.com/link/18607/17246005/november-7th",
            "title": "November 7th",
            "content_html": "<p><strong>Chapter 8: The Weakest Link</strong></p>\n<p>The train didn\u2019t seem to be moving as quickly as it had the last time he\u2019d\nridden, mont hs ago. He was getting restless. The executives would be\nexpecting him momentarily. He glanced at his watch for the millionth time.\nTime seemed to be slogging along at an incredibly slow rate.</p>\n<p>The jagged cuts on his knuckles had stopped bleeding, and now pulsated a\ndull pain through his entire right hand. He\u2019d inadvertently gotten blood on\nhis fresh white shirt and dark tie; he probably wouldn\u2019t have the time to\nclean himself up before the meeting \u2014 if he even made it.</p>\n<p>Thee train creaked to a stop. Was this it? No, one more to go. He examined\nhis appearance in the low-contrast reflection of the train window. Wow, he was\na wreck; hair mussed up from the run, the gritty dull white powder of dried\nsweat on his forehead, blood on his shirt, collar and tie loose and wrinkled.\nHe certainly didn\u2019t look like a poster child for one of the most powerful\nadvertising firms in the city.</p>\n<p>A wave of anger passed over him, largely directed at Marie. After all, it\nwas <em>her</em> fault that all of this was happening. If she\u2019d made sure he was up\nthis morning, he could have gotten on the road earlier. Granted, it was he\nthat was out late last night, but <em>that</em> was her fault too. If she\u2019d kept him\nsatisfied, he wouldn\u2019t have had the need to stay out late cheating on her to\nsatisfy his sexual appetite. See, it was all her fault. He ought to leave her.\nWell, she\u2019d be kissing the nice house in the Glade goodbye if he didn\u2019t get\nhis bonus. At least this affected her as much as it affected him \u2014 she\nwouldn\u2019t get away scot-free.</p>\n<p>After what seemed like an eternity, the train finally made it to State\nAvenue , and not a moment too soon. Mike grabbed his briefcase and hurried out\nthe door, pushing past the mob of people and ignoring their shouted protests\nas he continued along.</p>\n<p>The path along State Avenue to the tower was relatively clear; it was so\nlate in the morning, a majority of people had already made it to their jobs.\nHis previous physical activity had left his body reeling, and he was unable to\nmove faster than a brisk walk towards the tower. He pushed his way through the\nrevolving doors and ignored the pleasant greetings of the security guard as he\nheaded straight to the elevator.</p>\n<p>He pressed the up button urgently, somehow feeling that the faster he\npressed it, the faster the elevator would descend. The pristine ding of the\nelevator\u2019s arrival could not come soon enough, and he boarded the car\nanxiously. He was followed by two other nicely dressed individuals who ogled\nhis appearance as they boarded. He forced himself to smile smoothly, despite\nhis strong desire to rip their heads off. Who the hell did they think they\nwere?</p>\n<p>\u201c34, please.\u201d He murmured at the two other passengers as the doors slid to a\nclose with a hiss. A brief downward force signaled their ascent, and Mike\nlooked at his watch again. Shit, it was going to be close. The other\npassengers departed at the 18 th floor, taking their time, much to Mike\u2019s\nchagrin. He pressed the door close button even more urgently than he had the\nelevator call, and leaned back against the far elevator wall with an anxious\nsigh. Fortunately for his sanity, it appeared no one else had any need to use\nthe elevator at this late morning hour, and his trip to the 34 th floor\ncontinued uninterrupted.</p>\n<p>The doors opened and Mike flew out frantically, briskly heading towards his\noffice to grab the collection of charts and mock-ups for the new campaign.</p>\n<p>\u201cOh, Mr. Turner, I\u2019m so glad you\u2019re here! They\u2019re waiting for you in the\nconference room! Oh my, are you all right? Do you need\u2026\u201d</p>\n<p>\u201cNo, Susan, just let them know I am on my way right now. I\u2019ll be there in a\nminute.\u201d He tightened his tie and buttoned the top button of his collar, then\nquickly glanced at himself in the glass reflection of his office window. Well,\nthis was as good as it was going to get. He pulled the rolled posters from his\ndesk and walked towards the conference room.</p>\n<p>He pushed the door to the conference room open with his back, and turned to\nnotice that a majority of the management staff was present. That was odd \u2014 he\nthought this was just between Bill, his direct supervisor, a few of the other\nexecutives, and himself. And what was Marlene doing here? She shouldn\u2019t have\nanything do with this.</p>\n<p>\u201cAh, Mike, glad you made it\u2026 Oh, are you all right? Do you need a few\nminutes?\u201d Bill stood in greeting.</p>\n<p>\u201cNo, no, I\u2019m OK. I just cut my hand on my way over. No big deal.\u201d</p>\n<p>\u201cWell, all right then. Go ahead and have a seat.\u201d There was something\nstrange in his demeanor. He was too professional, too friendly. He and Mike\nwere barely on speaking terms \u2014 why the charade? And what were all these\n<em>people</em> doing here?</p>\n<p>\u201cMike, as you know, we\u2019re here to talk about the Richmond account\u2026\u201d</p>\n<p>\u201cYeah, yeah, I\u2019ve got some mock-ups here for you to look at.\u201d Mike\ninterrupted in excitement. He was especially proud of his ideas for the new\ncampaign. They were quite possibly his best, and equipped with the right team,\nhe could really deliver the goods on this one.</p>\n<p>He reached down for one of the rolled-up posters and began to unfold it. \u201cAs\nyou can see, I\u2019ve totally rethought the logo and how it integrates with the\nrest of the campaign, and I\u2019ve got some new\u2026\u201d</p>\n<p>\u201cWell, Mike, let\u2019s just wait on that. You see, we\u2019ve had a lot of discussion\nabout the Richmond account, and as you know, they haven\u2019t been pleased with\nthe latest campaign. We rely on their business, and we really need to pick up\nthe pace f we want to get them to sign a new con\u2026\u201d</p>\n<p>Mike was annoyed. He already knew all of this. He knew how important the\naccount was, both to the company and his own career. Why did Bill have to\nrehash all this stuff here?</p>\n<p>\u201cYeah, I know, Bill, which is why I\u2019ve totally rethought our approach, and\nif you\u2019d just give me a second to exp\u2026\u201d</p>\n<p>\u201cPlease Mike,\u201d Bill said, holding up his hand and shaking his head. \u201cPlease\nlet me finish. We\u2026 all of us\u2026\u201d He motioned to the rest of those in the\nroom. \u201cWe\u2019ve decided that we need some new leadership on the Richmond account.\nMarlene, as you know, has a working relationship with some of the Richmond\nguys from her days at Alliance , and we think that she might be able to\nleverage that relationship to produce some good results.\u201d</p>\n<p>Well, that explained Marlene\u2019s presence. \u201cWhat the hell is going on, Bill?\nAre you letting me go?\u201d Mike could feel himself getting hot.</p>\n<p>\u201cIn a word Mike\u2026 yes.\u201d That son of a bitch. He looked around the room at\nthe rest of the observers. They all averted their gazes, looking at the floor\nor out the window. Was this really happening?</p>\n<p>He stood up suddenly, causing a gasp to ripple through the rest of those\npresent. Marlene pushed away from the table quickly. Bill stood up to meet\nhim, a nervous look on his face. He moved his hands slowly, obviously trying\nto calm the situation.</p>\n<p>\u201cNow Mike, settle down\u2026\u201d</p>\n<p>Mike didn\u2019t want to settle down. He didn\u2019t want to calm the situation. He\n<em>wanted</em> to rip into someone.</p>\n<p>\u201cThis is why you called me down here, Bill? This is the meeting you told me\nabout <em>two weeks</em> ago? This is what I\u2019ve been preparing for, spending late\nnights in this fucking office, cultivating and developing what is quite\npossibly the most brilliant idea this firm has ever had? You son of a bitch!\u201d</p>\n<p>Mike advanced towards Bill. There was too much going through his head. He\ncouldn\u2019t think everything through. His blood was boiling! Did they honestly\nthink that Marlene, that <em>bitch</em>, was going to be able to take over for him?\nHe was the heart of this company \u2014 Richmond was his account! What the hell\nwere they doing?</p>\n<p>Bill backed away slowly, still moving his arms in a vain attempt to calm\nMike down.</p>\n<p>\u201cCome on Mike, you have to understand\u2026\u201d</p>\n<p>\u201cWhat?\u201d Mike shouted. He was pissed now. \u201cWhat do I have to understand,\nBill? Do you really think this little cunt can take the Richmond account?\u201d\nThere was no answer. \u201cFine. Let her try!\u201d With a roar, Mike turned and slammed\nhis right fist into the wall. Pain shot like hot needles through his arm, but\nhe didn\u2019t care.</p>\n<p>He turned back to where his briefcase and posters sat, leaving a streak of\nmaroon conspicuously on the cream conference room wall. Someone must have\ncalled the tower security; two hefty-looking gentlemen stood in the doorway\nstolidly.</p>\n<p>\u201cMike,\u201d started Bill again, as Mike began to pick up his briefcase and mock-\nups. With mock-ups like these, he\u2019d at least be able to get another job.</p>\n<p>\u201cLeave the stuff here. You know you can\u2019t take it with you.\u201d</p>\n<p>Shit, he was right. Nothing Mike had done while working at the company was\nhis \u2014 it all belonged to Copeland. Those sons of bitches. He now understood\nwhy they\u2019d waited to tell him they\u2019d decided to fire him; they knew he\u2019d put\nall of his energy into revamping the campaign if he thought he had an\nopportunity to really change it. Now they could take his work, give it to\nMarlene, and turn it into a money-making campaign. And all it cost them was\nhis severance pay.</p>\n<p>\u201cYou\u2019re all sons of bitches, you know that?\u201d He dropped the posters and\nbriefcase as the two stolid gentlemen grabbed his arms and led him towards the\nelevators. His rage continued to mount as the elevator descended. He\nconsidered his options. He could try to take out the two security men and go\non a rampage through the office, but sadly, he had no weapons. The men looked\npretty solid, anyway; he wouldn\u2019t be able to take both of them out.</p>\n<p>This sucked. No amount of profanity murmured under his breath could fully\nexpress the sense of betrayal he felt. As the security men dragged him out of\nthe elevator on the ground floor, a sudden weight fell down on him. The\nadrenaline that his anger had brought forth unexpectedly dissipated, and he\nfelt light-headed. The last thing he saw before passing out was two delivery\nmen wheeling a large cake through the tower lobby. The icing read,\n\u201cCongratulations Marlene!\u201d</p><img src=\"http://feed.tylerbutler.com/link/18607/17246005.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-11-08T15:24:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246005.gif"
        },
        {
            "id": "https://tylerbutler.com/november-6th/",
            "url": "http://feed.tylerbutler.com/link/18607/17246006/november-6th",
            "title": "November 6th",
            "content_html": "<p>**Chapter 7: Shopping **</p>\n<p>Angela ran up and down the aisles, shrieking gleefully at each brightly\ncolored box of food that she did not recall being there the week before.\nMelissa pushed the now overflowing cart behind her rambunctious daughter,\nignoring the disapproving stares of the store employees and other customers.\nShe\u2019d grown accustomed to them over the years.</p>\n<p>\u201cCan we get this, please?\u201d Angela asked, throwing yet another box into the\ncart before turning around quickly and running back to grab more useless\nproducts, pony tail bobbing happily. Melissa sighed again. If she could get\npaid a nickel, or even just a <em>penny</em>, for every sigh she\u2019d uttered since\nAngela\u2019s birth\u2026</p>\n<p>Melissa could hardly wait until Angela was old enough to start dating. That\nhellion would eat a boy for breakfast! Melissa nearly laughed out loud at the\nthought of some boy seeking Angela\u2019s affections, standing at the door with\nflowers, nervous upon meeting his date\u2019s father. Melissa chuckled again.\nSomeone frightened of Lawrence , ha! Whatever boy wanted to date Angela would\nbe in for a surprise, that was for sure. If he could handle <em>her</em>, then the\nrest of the family would be a piece of cake.</p>\n<p>Melissa shook her head sternly as Angela rounded the corner with a new box\nin her hand. A shadow fell across the five-year-old\u2019s face. The fun and games\nwere over, it seemed. Melissa motioned with her finger, maintaining the stern\nexpression on her face.</p>\n<p>\u201cCome on, Angie. I told you you had to settle down, and you haven\u2019t. Come\non, up in the cart.\u201d She motioned towards the toddler seat in the overloaded\ncart.</p>\n<p>\u201cBut Mommy, I\u2019m not a baby anymore,\u201d Angela replied, putting on her best\npouting face. She looked pitiful, but Melissa was not falling for the act.\nLawrence might, but she was tougher than he, especially when it came to their\ndaughter.</p>\n<p>\u201cWell, you certainly seem to <em>act</em> like a baby, so I think you can ride\nlike a baby. Come on, up you go.\u201d She lifted the girl and placed her in the\nseat. Angela crossed her arms across her chest and forced her frown to become\neven more pronounced. It was comical. The entire store seemed to erupt in\nsilent applause at the site of the annoying blonde trapped in the toddler\nchair.</p>\n<p>Melissa pushed the cart along each aisle, silently replacing each item that\nAngela had placed in the cart, ignoring the small whimpers escaping her mouth\nat the loss of each incredibly important item. The rest of the excursion would\ntranspire in silence, since Angela\u2019s method of retribution when wronged was to\nkeep her mouth shut. Lawrence hated it. If he\u2019d made her angry, he\u2019d spend the\nnext hour trying to get her to talk to him, but Melissa simply ignored her.\nMaking her angry was often the only way to get her to shut up anyway.</p>\n<p>At last the final one of Angela\u2019s contributions to the day\u2019s purchases was\nreplaced on the shelf, and Melissa double checked her short list to ensure\nthat she had found everything she needed. The cart seemed sparse after\nremoving all the superfluous items, but she had everything she needed.\nSurveying the surrounding aisles quickly for any last-minute things she might\nhave forgotten, she turned the cart briskly and strode towards the checkout\nlines, which were overpopulated with customers.</p>\n<p>\u201cOK, Angela, you can have one small thing \u2014 just one. What do you want?\u201d</p>\n<p>The girl didn\u2019t respond. Apparently she was still angry. Melissa shook her\nhead and sighed. It was her loss.</p>\n<p>She peered around the register lanes, looking for Ned, the nice man who\nalways helped her to the car and always said something kind to Angela. There\nhe was, ringing up a constant stream of customers, as usual. The wait in his\nline would be worth it. She could use a pick-me-up today.</p>\n<hr />\n<p>Ned was back in his groove. The brief break earlier had really rejuvenated\nhim, and he\u2019d been visited by several of his regular customers already today,\nwhich kept him feeling good. The pain in his knee had grown duller, and while\nstill present, was bearable.</p>\n<p>He was scanning items more efficiently than he had in awhile, passing item\nafter item quickly over the glowing red bars of the UPC scanner. He had\nexplained once to some of the other cashiers how the scanning machine worked.\nThey all were amazed at his knowledge, and for a brief shining moment, he had\nfelt like he was himself again. A smart, respected engineer, whose knowledge\nof mechanical and electrical machines was belied by his soft eyes and quiet\ndemeanor.</p>\n<p>Of course, Bob had quickly disbanded the small group of listeners to Ned\u2019s\nexplanation, somehow turning a UPC scanner into a major character in the\nlatest episode of his corporate kiss-ass saga. Holly had been kind enough to\nlisten to his further explanation during one of their mutual breaks. She had\nseemed genuinely interested, though Ned knew she had promptly forgotten\neverything he\u2019d said. It didn\u2019t matter. She\u2019d given him the chance to feel\nsmart and useful again, and that was what he needed.</p>\n<p>Ned often spent his breaks chatting with Holly when he could. They often sat\nout on bench in the parking lot, while Holly smoked a cigarette. She never\nfailed to offer one to Ned, though he always declined. Truth be told, he found\nthe habit disgusting and repulsive, but Holly was interesting to be around,\nand her presence offset the acrid smell of the smoke. In fact, there were\nseveral things that Ned disapproved of about Holly, and if she had been his\ndaughter, they certainly would have a lot to discuss. But she wasn\u2019t his\ndaughter, and as their work relationship turned into a true friendship, he\nfound that the eyebrow piercing and smoking habit defined their relationship\nless and less.</p>\n<p>He was constantly astounded by her generosity. She often invited the beggars\nstanding outside to join her for a snack, and always listened to their stories\nof heartache and longing. That was her real gift to them, whether they\nrealized it or not \u2014 the gift of a listening, interested ear. Anyone could\ngive them a piece of pizza or the loose change in their pocket, but Holly\u2019s\ngenuine concern for them and inquiries about their well-being lasted longer\nthan both the food and the loose change.</p>\n<p>Ned knew that many of the homeless men and women that frequented the area\nsurrounding the store were residents, either permanent or otherwise, of the\nSt. Ives shelter. He had mentioned to Holly that she should consider\nvolunteering there or something, but she seemed reluctant. She always just\nsmiled and said, \u201cYeah, Ned, I know,\u201d but to his knowledge, she never had even\nset foot in the shelter.</p>\n<p>He shot a glance to register 7, where Holly was now busy ringing up her own\nlong line of customers. She caught his glance and smiled. He smiled back. He\nmight hate his job, but at least he had to opportunity to become friends with\ngood people.</p>\n<p>\u201cThanks a lot, Ned. I\u2019ll see you next week.\u201d</p>\n<p>\u201cYou too, Mark. Be careful on the way out, it\u2019s a bit slick by the door,\u201d he\nreplied, referring to the small puddle of soda, remnants of an overactive\nbottle of Sprite.</p>\n<p>He looked up to identify his next customer, and groaned inwardly as he saw\nMelissa and Angela. Melissa was nice enough, but her daughter was a brat. Ned\nhad seen the way Melissa and Lawrence doted on her every whim, and it made him\nsick. If _she\u2019d _ been his daughter \u2014 well, he was just glad she wasn\u2019t. He\u2019d\nhave picked Holly over her any day.</p>\n<p>\u201cHi, Ned! How\u2019ve you been?\u201d Melissa inquired cheerfully, her smile\ncontradicted by the obvious tension and exhaustion in her voice.</p>\n<p>\u201cOh, I\u2019m fine, fine. And your husband?\u201d</p>\n<p>\u201cHe had to work today. It\u2019s just me and Angie.\u201d</p>\n<p>\u201cAh, I see. And how are you, little miss?\u201d He smiled, eyes peeking over the\nedge of his nose at the girl who looked very angry, arms crossed defiantly\nacross her chest.</p>\n<p>\u201cFine,\u201d she replied, not looking up.</p>\n<p>He began to scan the items on the small conveyor belt. He knew that would\nget Angie\u2019s attention. She was always intrigued by the speed at which he\nloaded the bags, so much faster than any other cashier.</p>\n<p>Today was no exception. As the <em>beep</em>, <em>beep</em>, <em>beep</em>, of the scanned\nitems reverberated in the echoic store, Angela became transfixed on Ned\u2019s\nhands. They seemed to blur as he scanned and bagged each item with lightning\nspeed.</p>\n<p>Ned grinned at her, willing his arms to move even faster, mentally\nconfirming that every item had scanned by carefully listening for the\nconfirmation beep. He was going <em>fast</em> today.</p>\n<p>Unexpectedly, his hands faltered. The jar of peanut butter, fortunately\nplastic, flew from his fingers and clattered loudly on the tiled floor. The\nstore seemed to freeze; the all of the customers\u2019 attention was focused on\nhim, and him alone.</p>\n<p>The silence was broken by Angela\u2019s childish laughter. She clapped her hands\nwith glee, apparently deriving some sadistic pleasure from Ned\u2019s mistake. Ned,\nspeechless at this unexpected development, knelt down silently and picked up\nthe jar. He scanned it again and continued, moving more slowly and del\niberately this time.</p>\n<p>The rest of the store reanimated itself, and Ned glanced up again to see\nHolly still looking his direction. Her eyes asked, \u201cAre you OK?\u201d He nodded\nback at her and painted his smile back on before looking back up at Melissa.</p>\n<p>\u201cWell, will there be anything else for you this morning?\u201d</p>\n<p>\u201cNo, Ned, that\u2019ll be all. How much do I owe you?\u201d</p>\n<p>\u201cWell, you owe me a smile, but the store will want $87.13.\u201d Ned joked back,\ntrying to shake off the embarrassment he felt at having dropped the peanut\nbutter. Melissa grinned.</p>\n<p>\u201cWell, here\u2019s your smile, and here\u2019s the check for the store. Can I trust\nyou to make sure they get it?\u201d</p>\n<p>\u201cBut of course,\u201d he replied. \u201cWould you like some help getting out to your\ncar?\u201d</p>\n<p>\u201cWell\u2026 Actually, yes, that\u2019d be great.\u201d</p>\n<p>Ned glanced around, looking for one of the young cart collectors to help\nMelissa, but there were none to be found. Oh well. \u201cI\u2019ll be right back,\neveryone.\u201d He flipped the light on his register off and limped along behind\nMelissa to her car, ignoring the faces Angela made at him as they walked. He\u2019d\nbe glad when they were gone, especially the little brat.</p>\n<p>Melissa opened the trunk and Ned quickly loaded the bags into it with his\nstrong arms, oblivious to the sound of sirens as they passed along the street\nin front of the store.</p><img src=\"http://feed.tylerbutler.com/link/18607/17246006.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-11-07T15:59:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246006.gif"
        },
        {
            "id": "https://tylerbutler.com/november-5th/",
            "url": "http://feed.tylerbutler.com/link/18607/17246007/november-5th",
            "title": "November 5th",
            "content_html": "<p>**Chapter 6: Disembarkation **</p>\n<p>Joel didn\u2019t notice when the man he\u2019d held the train for stepped off. He was\nmore interested in sleeping at that point. The metal bar alongside the train\nseat wasn\u2019t the most comfortable pillow he\u2019d ever used, but it wasn\u2019t the most\nuncomfortable either. The mounting fatigue of the trip had finally overwhelmed\nhim and he would have slept anywhere.</p>\n<p>Lucky for him, the McAllister Park stop was the last, and the train operator\nwoke him with a harsh clap on the shoulder and a shout, looking less than\npleased. Joel smiled sheepishly and rubbed his eyes as he was pushed out onto\nthe platform.</p>\n<p>The sun was looming higher in the sky now, and it was beginning to warm up.\nHis bare arms and legs felt quite comfortable as he twisted from side to side,\nstretching his stiff body. He drew in a deep breath, let it out slowly, and\nbegan walking towards the exit.</p>\n<p>He considered briefly walking straight home. His apartment wasn\u2019t far, and\nhe <em>was</em> tired. But looking around him, he realized that days as beautiful as\nthis one were in short supply here at this time of year, and he should make\nthe best of it while he could. Besides, he could really use a bagel \u2014 he\nhadn\u2019t had one while he\u2019d been in Asia.</p>\n<p>He had sampled much of the local cuisine \u2014 a variety of curried rice,\ncountless vegetables, and fruits that few western mouths had tasted. But the\nsimplicity of a bagel slathered with cream cheese was something he had missed\ngreatly during his absence.</p>\n<p>It took him a moment to get his bearings. Things hadn\u2019t changed that much\nsince his departure, but months of trekking through real jungle had left him\nunready to tackle the asphalt one.</p>\n<p>He set off east the opposite of his apartment, heading towards the\nDominick\u2019s that serviced all of McAllister Park\u2019s grocery needs. He\u2019d suffered\na little culture shock during his return flight, largely due to the wide array\nof various items that were made available in even the smallest airport\nconvenience shop. Dominick\u2019s was sure to shock him even more.</p>\n<p>The streets appeared to him much cleaner than when he last saw them. It was\ncertainly an observation colored by his experiences with much dirtier streets\nin Asia. Most any street would appear cleaner than those.</p>\n<p>He soon settled into a now familiar stride, born of countless hours spent\nhiking in secluded mountain jungles and vast grassy valleys. The distance to\nthe store was more than an average American would consider walkable, but then,\nJoel was no longer an average American, was he?</p>\n<p>A few children passed by on bikes, sending inquisitive glances his direction\nas they sped by. They probably didn\u2019t see too many young men walking along the\nstreets of McAllister Park. It wasn\u2019t known as the best neighborhood in the\ncity. Joel had ended up here just because it was cheap, and he\u2019d never had any\nreal problems. Every once in awhile you\u2019d hear of someone getting beat up, or\na bike getting stolen, or something, but Joel just did his best to be careful\nand didn\u2019t let himself get too worked up about it.</p>\n<p>He had sublet his apartment to a young couple that were still in school\nrelative close by. They were strapped for cash, and he didn\u2019t really want to\ngive up his lease because of the trip. They had agreed to be out of the\napartment by a month before Joel\u2019s scheduled return, so by now the place would\nprobably require a thorough cleaning. The bed, though, would be clean enough\nfor a good night\u2019s rest \u2014 no need to concern himself with that now.</p>\n<p>What he did need to concern himself with was getting food. His stomach\u2019s\ncomplaints grew audible as he crossed the nearly abandoned parking lot of\nDominick\u2019s. He entered through the automatic doors and thought idly how lazy\npeople had become.</p>\n<p>The scent of fresh-baked bread beckoned his nose frantically upon entry to\nthe store. It didn\u2019t take him long to find the bakery section of the store,\ndespite his unfamiliarity with the new configuration of the store. It was much\ndifferent that when he last saw it, but he let his nose do the leading, and\nall was well.</p>\n<p>He pulled a large plain white bagel from an oversized bin and smiled as he\nimagined the joy he was about to experience while consuming it. He considered\nbriefly buying a few more items while he was there, but he he hadn\u2019t had a\nchance to convert any of his larger foreign currency, and the change in his\npocket was barely enough to cover his bagel.</p>\n<p>The line at the register was much longer than he had anticipated given the\ndeserted parking lot. A man with graying hair and a Dominick\u2019s smock motioned\nat him as he walked past the registers. The man seemed a little weak on his\nlegs, but he hobbled over and flipped the light on his register back on.</p>\n<p>\u201cGood morning, sir,\u201d he said, smiling slightly and quickly typing in the\ncode for bakery goods. \u201cWill that be all for you?\u201d</p>\n<p>\u201cYes, I\u2019m just a little hungry,\u201d Joel replied, smiling back. \u201cJust got off a\nlong plane trip.\u201d</p>\n<p>\u201cAhh, I see. Was it a good trip?\u201d</p>\n<p>\u201cYes, I think so. I certainly learned a lot.\u201d</p>\n<p>\u201cGood to hear, good to hear. Well, enjoy your bagel, and have a nice day.\u201d</p>\n<p>\u201cYou too\u2026\u201d Joel glanced at the man\u2019s name tag. \u201c\u2026Ned. I\u2019ll see you\nlater.\u201d They both smiled at each other again. Joel was grateful for the\nconversation. The man sounded tired, but he had made a concerted effort to be\nfriendly and engage with Joel. It was a quality he hadn\u2019t seen a lot of since\nhis return, and it was something he knew he\u2019d miss from his trip.</p>\n<p><em>[Insert another Asia back story here.]</em></p>\n<p>He exited the store and began making his way back towards his apartment. The\nbagel was heavenly delicious, and for a time he became so lost in its flavor\nthat he didn\u2019t pay attention to where he was going. When he finally realized\nhe\u2019d missed a turn and was headed down the wrong street, it had turned eerily\nquiet and deserted. The sudden lack of sound struck him as strange, and he\npeered around in a vain attempt to get his bearings.</p>\n<p>It was not in Joel\u2019s nature to get nervous, but something about the air made\nthe hairs on the back of his neck stand at full attention. He felt for a\nmoment like a lawman from the wild west, stepping out into the main street of\na seemingly deserted town, expecting ambush, but not knowing from where it\nwould come. A newspaper, floating lazily by on the breeze, so tumbleweed-like,\ndid nothing to erase the image from his mind.</p>\n<p>In the silence, the unexpected **bang! ** from the east was startlingly\nstentorian. His mind stumbled for a moment \u2014 was it a shot, a firecracker, or\nwhat? Then he just started running, not really knowing why. Instead of running\naway from the sound, he ran <em>towards</em> it. It didn\u2019t make much sense, he knew,\nbut he felt that east was the only direction that made sense to run in. He\ncouldn\u2019t explain it, and the question of why he ran towards it instead of away\nwould later plague him, but for now, he was running.</p>\n<p>As he drew closer to the source of the sound, voices became clearer.</p>\n<p>\u201cHoly shit, man! Why\u2019d you do that?\u201d</p>\n<p>\u201cI wasn\u2019t tryin\u2019 to hit him! He jumped out of the way\u2026 I don\u2019t know\u2026\nShit!\u201d</p>\n<p>\u201cWe\u2019d better get the hell out of here, man.\u201d</p>\n<p>Joel emerged from an alley and saw what had transpired. Two men, the\napparent sources of the screaming, were standing in the opposite corner of the\nalley, facing a dumpster, hands waving animatedly. One held a gun. Well, that\nanswered his question about what caused the bang.</p>\n<p>Joel froze in his tracks almost immediately, but the men noticed him quickly\nand he soon found himself eying the barrel of the pistol.</p>\n<p>\u201cDon\u2019t move, man. Shit!\u201d</p>\n<p>\u201cCome on Charlie, let\u2019s get out of here!\u201d</p>\n<p>\u201cNo man, he\u2019s seen us, he can ID us.\u201d</p>\n<p>\u201cJust forget it, Charlie. Come on, let\u2019s go. We\u2019re already in deep shit\nman.\u201d</p>\n<p>\u201cYeah, and this\u2019ll make it worse.\u201d</p>\n<p>Both men approached Joel slowly; Joel stood frozen.</p>\n<p>\u201cDon\u2019t worry, guys\u2026 I won\u2019t say a thing\u2026 I just took a wrong turn, you\nknow. I just want to get home\u2026 Either one of you know where Western is from\nhere?\u201d He tried to steady the shaking in his voice. Who\u2019d have thought having\na gun pointed at you could reduce you to jelly so quickly?</p>\n<p>\u201cYeah, I know where Western is,\u201d replied the man with the gun. \u201cBut I think\nyou\u2019ll be needin\u2019 more than directions to get there.\u201d</p>\n<p>Joel didn\u2019t even hear the shot. He was suddenly on the ground, a sharp pain\nin his belly, nausea washing over him. He blinked and tried to focus as the\nmen turned and ran, feet pounding hard on the asphalt.</p>\n<p>\u201cShit! Charlie, you\u2019re a fuckin\u2019 idiot!\u201d</p>\n<p>Joel groaned. His head was swimming. What had happened? He looked down at\nhis stomach and was surprised to see a hole that hadn\u2019t been there before.\nWhere did that come from? He tried to stand, but found any attempt to use his\nabdominal muscles sent wave after wave of pain coursing through his body.</p>\n<p>He rolled over, and that\u2019s when he noticed the crooked body beyond the\ndumpster. It wasn\u2019t moving. Joel steeled himself against the pain and pushed\nupwards with one hand, using the other to hold his aching stomach. His mind\nstill wasn\u2019t entirely clear, but he knew he had to help the other guy crumpled\nthere and get himself some help. He put his left arm under the man\u2019s shoulder\nand lifted upward with all his might, keeping his right hand pressed against\nhis abdomen.</p>\n<p>The blood ran out over his fingers and dropped silently onto the asphalt as\nhe dragged himself and his new companion out of the alley. He didn\u2019t know\nwhere he was headed \u2014 he hoped the right direction. He made it about a block\nbefore an unexpected wave of lightheadedness hit him. He was suddenly falling\ntowards a field of daffodils and butterflies, and then, nothing.</p><img src=\"http://feed.tylerbutler.com/link/18607/17246007.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-11-06T13:02:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246007.gif"
        },
        {
            "id": "https://tylerbutler.com/november-4th/",
            "url": "http://feed.tylerbutler.com/link/18607/17246008/november-4th",
            "title": "November 4th",
            "content_html": "<p><strong>Chapter 4: Mike</strong></p>\n<p>_Come on, come on\u2026 Just start already! _Another wheeze and gasp from the\nengine, but it still wouldn\u2019t fully turn over. \u201cDammit!\u201d Mike shouted as he\nsmashed his right fist down against the front dashboard, cracking the brittle,\nsun-bleached plastic of the air vents.</p>\n<p>The day had not been going well. Come to think of it, the week, the month,\nthe <em>year</em> had not been going well. But today had been especially trying.\nMarie had given him crap again for coming in late last night, he\u2019d overslept\nand got on the highway later than he\u2019d hoped (no thanks to Marie, who hadn\u2019t\nbeen persistent enough in making roll out of bed), and now the car was <em>not</em>\ncooperating.</p>\n<p>This was ridiculous. Any other day but this one! Today was important! Today\nwas the meeting about the Richmond account \u2014 his account. An account that he\nhad nursed from its infancy at Copeland. An account that he had brought to the\ncompany himself. Copeland didn\u2019t even know Richmond <em>existed</em> until he\u2019d\nbrought it in. And he\u2019d turned the account into a cash cow. Mike Turner was\ntotally responsible for turning Copeland Advertising into a large, well-\nrespected firm, and he wasn\u2019t getting any credit at all.</p>\n<p>Not enough, anyway. And these new executives \u2014 young enough to be his\nchildren \u2014 were coming in, acting like _they\u2019d _ built the company, yanking\nhis talented staff away and putting them under other, less adept leaders. Then\nthey had the audacity to complain when the returns on the Richmond account\nweren\u2019t as high as usual. How could he be expected to produce results when\nthey were giving crappy, unskilled kids to work with? Most of these kids\ndidn\u2019t know Z-Form advertising from their ass. And he was expected not only to\ntrain them, but use them to produce high-quality advertising for the company\u2019s\nbiggest account. Yeah, right, the logic made sense.</p>\n<p>And these kids \u2014 all they knew how to do was use a computer. If they\ncouldn\u2019t do it digitally, they couldn\u2019t do it. Not an ounce of artistic talent\nbetween them. They only knew how to click a few buttons, move a cursor around\na screen, and hit the print key. Mike had come in with a few physical mock-ups\nand these kids were amazed. \u201cThis must have taken you so long,\u201d they\nexclaimed. Damn kids, with their skateboards, their body-art, their Japanese\nanime bullshit. They didn\u2019t know jack about advertising. How the hell did they\nget degrees?</p>\n<p>Today was the day he was going to fix the problems. The bigwigs upstairs\nwanted to talk Richmond , and Mike was ready. He\u2019d prepared several new ideas\nfor the account, and had outlined a plan to rejuvenate Copeland\u2019s advertising\nefforts. He\u2019d even formulated a sound argument to get some of the more\nseasoned staff back on his team. Surely they could listen to reason. After\nall, it was the least the company could do for him. And the Richmond guys were\nready to sign a contract renewal, provided Mike could produce some quality\nmock-ups for the new campaign. A renewed contract meant a bonus for Mike \u2014 a\nbonus he desperately needed.</p>\n<p>But now the damn car wouldn\u2019t start. He\u2019d asked Marie three weeks ago to\ntake it to the mechanic while he was at work, but apparently she hadn\u2019t. She\nwasn\u2019t good for much of anything these days. She was a decent cook, though,\nand he kept her around as a back-up if he couldn\u2019t get any from the younger,\nmore lithe interns. A man had needs, right?</p>\n<p>Besides, in his occupation, he needed a wife \u2014 someone he could bring to\ncompany functions and provide his account-holders a sense of stability and\nconstancy. The latest in a string of vacuous office biddies wasn\u2019t the best\nchoice for a dinner companion if clients were present; they needed to see him\nas reliable, honest, and consistent, even if none of those words had ever\naccurately described him.</p>\n<p>This was ridiculous. The anger of the surrounding drivers on the highway was\nmounting quickly, and they sped by him honking their horns and screaming\nobscenities in his general direction. What was he going to do? He could call a\ntow truck, but by the time they arrived and he made it downtown, he\u2019d have\nmissed the meeting and his opportunity to get things back on track at Copeland\nwould be gone. He already felt he was on thin ice with many of the executives\n\u2013 he couldn\u2019t afford to make a bad impression at this meeting.</p>\n<p>So what was he going to do? He slammed his fist on the dash again, sending\npieces of broken plastic flying, and dialed Marie on his cell. No answer.\nWhere the hell was she? There was absolutely no reason she wouldn\u2019t be picking\nup this early in the morning. Dammit, <em>dammit</em>, <strong><em>dammit</em></strong>! He hit the\ndash three more times for emphasis, this time driving plastic splinters into\nhis knuckles. He didn\u2019t care. He had to get downtown.</p>\n<p>There was more riding on this meeting than anyone realized. He <em>needed</em>\nthat bonus, and in order to get the bonus, had had to convince the execs to\ngive him his old team back. And to do that, he <em>had</em> to get to the meeting!\nIt was a chain of events, all connected and reliant on the other, and he\ncouldn\u2019t afford to screw any one of them up at this point.</p>\n<p>In a moment of sudden clarity, Mike noticed the train track to his left,\nrunning parallel to the highway. How close was he to a station? He could see\nthe outline of the Whoorsley station in the distance ahead of him. Could he\nmake it on foot? He glanced back and saw the light of an approaching train\npulling to a stop at the faraway Allerton stop. He\u2019d have to chance it.</p>\n<p>He threw the door of his black Mercedes open, grabbed his briefcase, and\ndodged oncoming traffic and verbal assaults over to the shoulder. He briefly\nlooked back at the car; he\u2019d probably never see it again, but it was a small\nprice to pay.</p>\n<p>He loosened his tie and began to run towards Whoorsley as fast as he could.\nHe hadn\u2019t run like this since college, and his body apparently took great\npleasure in reminding him of that fact with burning lungs, rubbery legs, and\nthe complexion of a pickled beet. And this was only the first hundred feet.</p>\n<p>The train passed him with about 1000 feet left. He felt as if his lungs were\ngoing to explode, but he kept going. He had to. Mike was not a religious man;\nhe hadn\u2019t prayed since he was a small child kneeling at his bedside, hands\nfolded, but he prayed harder than he ever had that something, some <em>one</em>,\nwould make that train wait. If he could make it, he might be able to make it\nall the way downtown and still have a few minutes to take the elevator up to\nthe office.</p>\n<p>And the train waited. Time just seemed to stop. The rest of the world kept\nmoving, but that train was rooted, statue-like, at the Whoorsley station. Mike\nkept running, sweat pouring from his brow, legs numb, lungs pumping furiously,\nblood oozing from the dashboard-incurred injury he hadn\u2019t even noticed yet. He\nmade it to the rear car and literally fell into it. The passengers looked at\nhim strangely, but he didn\u2019t care. He\u2019d made it, somehow. Perhaps this day\nwasn\u2019t going to be so bad after all.</p>\n<p><strong>Chapter 5: The Corner</strong></p>\n<p>Ernie stepped his way back along Sullivan Street . The music was roaring in\nhis ears again. The walk would get him warmed up; he\u2019d be more than prepared\nto take on the kids at 34 th and Broadway by the time he arrived.</p>\n<p>Some of the kids on \u201cthe corner,\u201d as it was known to those in the elite\ncircle of participants, resented Ernie\u2019s presence, but no one could deny that\nhe could move. Ken was sure to set straight anyone who argued about Ernie\u2019s\nparticipation. Ken understood that despite appearances, Ernie wasn\u2019t a grown-\nup, and the rest of the kids had nothing to fear from him.</p>\n<p>A rising rhythm in the music caused a requisite wave to ripple through\nErnie\u2019s body. He loved that part of the song. In a sudden burst of\ninspiration, he jumped up, spun 180 degrees and landed on his back heels,\nstill moving the same direction. A new move! He didn\u2019t discover that many\nanymore. He\u2019d have to try that out at the corner today. It would drive the\nkids nuts \u2014 especially Karen.</p>\n<p>Ken teased Ernie all the time about his crush on Karen. He tried to deny it,\nbut he had to admit to himself that it was true. There was something about the\nway she shook her body while out on the floor, moved her hips back and forth,\nand seemed to look right through him when their eyes met\u2026 he grinned. She\nshould be there today, and armed with a new move, he was sure to impress her.</p>\n<p>He rounded the corner and made his way along the Dominick\u2019s parking lot. He\nstole a glance in the storefront window, searching for the nice girl with the\nblonde hair and a metal bar in her eye. Ernie had always found the piercing\nstrange \u2014 why someone would do that to their body was beyond his comprehension\n\u2013 but she had been friendly to him, providing him with the occasional sandwich\nor soda on a warm day, so he eventually accepted the shiny metal accessory as\na part of her.</p>\n<p>She was kind to all the residents, past and present, of St. Ives, and many\nothers that had never set foot there. She always had some spare change, a kind\nword, or a candy bar, or <em>something</em>. She often brought a pizza out on her\nlunch brea k and dined with the less fortunate in the lot, or, during the\nwinner, brought small mugs of del iciously warm hot chocolate for all.</p>\n<p>Ernie could nev er remember her name, but he\u2019d nev er forget her face. She\nalways took the time to talk to him when she could, and he appreciated it. She\nreminded him of Rho nda, but he could nev er remember her name. She\u2019d told it\nto him many times, but it wouldn\u2019t stick. She always giggled when he repeated\nit countless times in her presence to make sure he\u2019d know it for next time.\nPerhaps he forgot it just so he could make her laugh again the next time they\nmet.</p>\n<p>There she was in the store, scanning items over the laser reader and smiling\nat the customers. She didn\u2019t see him, but he didn\u2019t have time to try and get\nher attention. Ken would be waiting at the corner.</p>\n<p>In fact, Ken came out to meet him a couple blocks before the corner.</p>\n<p>\u201cHey, Ern, didja hear?\u201d Ernie nodded in confusion.</p>\n<p>\u201cSomethin\u2019s going on down by the store. Cops and everything! Come on, lets\ngo check it out!\u201d Ken whizzed by on his bike, made a wide u-turn, and pedaled\nup beside Ernie.</p>\n<p>\u201cMan, I hope we can see somethin\u2019. Maybe there\u2019ll be a body and everything!\nWouldn\u2019t that be awesome?\u201d Ernie wasn\u2019t entirely sure he was ready to witness\na dead body. He certainly wasn\u2019t as excited as Ken, but with something this\nexciting going on, it was doubtful anyone would be at the corner anyway.</p>\n<p>The fla shing red and blue of the emergency vehicles were visible a few\nblocks from the convenience store. Ken sped up and pedaled on ahead, leaving\nErnie alone with his thoughts for a few moments. All he really wanted to do\nwas jive down on the corner. Maybe he should just go back towards St. Ives and\njive by himself for the day. No, eventually the kids would get bored or\nrealize they weren\u2019t going to see anything, and the corner would ramp back up\nto it\u2019s usual buzz of activity. He\u2019d just have to wait it out.</p>\n<p>As he approached Ken\u2019s chosen vantage point, men in blue police uniforms\nwere wheeling a gurney into the back of an ambulance.</p>\n<p>\u201cWell, they ain\u2019t in no hurry. He must already be dead. Come on, let\u2019s go\ntake a look!\u201d Ernie groaned inwardly, but followed Ken as he clandestinely cut\nup the alley behind the store and emerged beside the nearly deserted far side\nof the ambulance.</p>\n<p>\u201cCome on, Ern, lift me up,\u201d Ken whispered, gesturing at the small side\nwindow of the ambulance. Ernie grasped Ken under his arms and heaved him\ntowards the window, holding him steady as he himself peeked in the window.</p>\n<p>Ernie dropped Ken hard on the pavement as his vision cleared and he\nrecognized who it was on the gurney.</p>\n<p>It was Darryl.</p><img src=\"http://feed.tylerbutler.com/link/18607/17246008.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-11-05T14:43:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246008.gif"
        },
        {
            "id": "https://tylerbutler.com/november-3rd/",
            "url": "http://feed.tylerbutler.com/link/18607/17246009/november-3rd",
            "title": "November 3rd",
            "content_html": "<p><strong>Chapter 3: Joel</strong></p>\n<p>\u201c\u2026like to thank you for flying with American Airlines. We know you have a\nchoice when you fly and we\u2019re glad you chose American. Enjoy your stay, and we\nhope to fly again with you soon.\u201d</p>\n<p>Joel stirred from his light slumber and stretched his arms above him in a\nwide arc. Finally, the flight was over. It was about time, too. Fourteen hours\non the plane had left him stiff, tired, and certainly not the most pleasant to\nbe around. But the trip was over. He wasn\u2019t in a particular hurry to get off\nthe plane, so he sat back and allowed the rest of the crowd to clamor for\ntheir bags.</p>\n<p>That was one of many things he\u2019d learned this trip. Time was simply not as\nimportant as everyone seemed to think it was. Waiting patiently ten minutes\nfor a majority of the passengers to clear out would not negatively impact\none\u2019s life beyond repair. But if the frenzied approach of the other passengers\nwas any indication, this particular philosophy was certainly not the most\npopular. At least it was different elsewhere.</p>\n<p>Joel closed his eyes and smiled, leaning his head back against the\nuncomfortable hard foam of the seat. It had been a good trip. He\u2019s learned a\n<em>lot</em>, about <em>everything</em>. He didn\u2019t know whether it was more incredible\nthat it had come to an end or that it had even started in the first place.</p>\n<p>When he\u2019d graduated high school, he\u2019d never imagined he\u2019d take a trip like\nthis. Many of his friends traveled to Europe for that summer before college,\nbut Joel hadn\u2019t been able to afford it. He\u2019d attended St. Ignatius College\nPrep on a merit scholarship, and unlike most attendees, didn\u2019t have a trust\nfund. His father owned a gas station, his mother was a seamstress, and pretty\nmuch everything about Joel\u2019s life contrasted starkly with that of his\nclassmates at St. Ig\u2019s.</p>\n<p>But Joel was a whiz with numbers. They just made sense to him. He couldn\u2019t\ndraw, he couldn\u2019t sing, and he spelled at about a third-grade level, but he\ncould do wonders with numbers. At St. Ig\u2019s, he had been led through the\nmagical world of mathematics by Dr. Alan Sparrow, who had impressed upon Joel\nthe fact that math was everywhere.</p>\n<p>It was a fact that opened up an entire universe of opportunities to Joel.\nAfter he realized that there were few things in life that couldn\u2019t be broken\ndown mathematically, his entire world began to make sense. He began to compose\nmusic mathematically, writing entire symphonies and handing them out to\nfriends to play on real instruments, because he didn\u2019t play any himself. He\ncreated complex formulas that, when graphed, produced wonderful works of art.\nHe turned his entire world into numbers, and he excelled.</p>\n<p>During his senior year at St. Ig\u2019s, Joel met his first girlfriend, Sara.\nThey hit it off immediately, and began dating exclusively after two weeks of\nknowing each other. For awhile, life was good. But eventually, as he did with\nall things, Joel began to analyze their relationship statistically, attempting\nto find the magic formula that would allow him to make sense of the complex\ninteractions between them.</p>\n<p>At first, Sara was amused and intrigued by Joel\u2019s approach. His analytical\nmind had been a major contributor in her attraction him from the start, and\nhis fascination with her <em>mathematically</em> was, in her words, \u201ccute.\u201d\nIncreasingly, though, Sara began to resent her role as a mere variable in\nJoel\u2019s increasingly complex formula. It became clear to her that Joel was\nsimply running an elaborate experiment, and she was the guinea pig. He didn\u2019t\nseem to care about her at all except in the context of his attempt to quantify\nhuman interactions. So, in the middle of their final semester at St. Ig\u2019s, she\nexplained to him that their relationship, such as it was, was over.</p>\n<p>Sara had not been totally correct about Joel\u2019s feelings towards her. In\nreality, Joel cared very much for her. His \u201cexperiment,\u201d as she termed it, was\nreally his attempt to figure the relationship out and put it into a context\nthat he could understand. He had a burning need to know exactly what action he\nshould perform in a given scenario in their relationship, and Sara simply\nwasn\u2019t telling him.</p>\n<p>He was beside himself with depression after the breakup. His statistical\nmodel had never, <em>ever</em>, predicted this outcome. Sara should be enthralled by\nhim \u2014 he was doing <em>everything right</em>! Wasn\u2019t he?</p>\n<p>The failure of his model to predict the breakup was a source of great\ndistress for Joel. It meant only one of two things; either he had made a\nmistake in his abstractions or calculations, or human interaction simply\ncouldn\u2019t be analyzed in terms of mathematics. Both options made him shudder.\nHe was fairly certain he hadn\u2019t made any mathematical mistakes, which left\nonly\u2026 Joel hadn\u2019t been able to come to terms with the possibility that he\nwouldn\u2019t be able to arithmetize human sociality.</p>\n<p>The emotional repercussions of the unexpected breakup did not contribute\npositively to his situation, so Joel had consoled himself by throwing himself\ninto college preparations. He\u2019d already been accepted and was enrolled, so he\nfound out what classes he\u2019d be taking, and spent most of his days that summer\nin the local library reading the text books and other material for his\nclasses. In retrospect, it probably wasn\u2019t the best decision. During his first\nsemester at college, he became <em>very</em> bored, <em>very</em> quickly. His above-\naverage intelligence combined with the foreknowledge of most of the material\nforced him to look for other things \u2014 some of them good, most of them bad \u2014 to\nkeep himself occupied.</p>\n<p>It wasn\u2019t long before Joel realized that more schooling simply wasn\u2019t in the\ncards for him. The nagging suspicion that mathematics weren\u2019t everything just\nwouldn\u2019t go away, and he didn\u2019t feel as though he were truly learning anything\nin his classes that he couldn\u2019t learn in a library.</p>\n<p>He dropped out after his freshman year with no plans, no job, and\nrealistically, no real future. His uncle owned a lawn mowing business, and\nJoel eventually began working there. It wasn\u2019t especially difficult work, but\nit kept Joel busy, and he had plenty of time to contemplate the questions that\nwere plaguing him about his approach to life.</p>\n<p>It didn\u2019t take long for him to realize that he needed to get out and\nexperience the world if he wanted to try and understand it. That realization\ngave birth to the trip he was now returning from.</p>\n<p>He had saved pennies for two years to afford it. Two years of ramen,\nweekends spent reading instead of going to the movies, and shirking vacation\ntime in favor of overtime pay. Two years of blood, sweat, and tears for this \u2013\nthe trip of a lifetime.</p>\n<p>Fortunately for Joel, the trip was all he had imagined it would be and more.\nHe had hiked through countless mountains, seen wonders he never thought\nexisted, and had met so many <em>good</em> people. The cultures of the places he had\nbeen were so much friendlier, so much more, he thought, evolved. His smile\ngrew broader as he leaned back on the airline seat again and remembered the\nsheer incredibility of it all. He had done it.</p>\n<p>His thoughts were brought back to the present by the sudden realization that\nall was quiet. He opened his eyes and glanced around. Nary a soul was present,\nsave a woman and her two uncooperative children in the section behind him. He\nfound his backpack, the sole possession he had with him and ambled towards the\nexit of the plane.</p>\n<p>The hustle and bustle of the airport terminal was another wake-up call. It\nwas now clear that he was far from the quiet jungles from which he had\nrecently departed. Everyone seemed in such a hurry. People brushed by him\nroughly, not even stopping to apologize. It was strange, the difference\nbetween the attitudes of those he\u2019d met in his travels and the people that now\nsurrounded him.</p>\n<p>It was a transition that he had noticed on this return trip. He had had some\ntrouble with his tickets on the return flight. The airline in Thailand had\nsuggested that he confirm his reservations with the local agent at each stop\nalong his itinerary, so he did. At most stops, the agents were helpful,\nfriendly, and understanding. One even made several frantic phone calls and\nescorted him personally to his gate to make sure he made his flight.</p>\n<p>As if he\u2019d crossed some invisible line, the agents on the American side of\nthe world turned snobbish, were far less than helpful, and seemed determined\nto make interaction with them a living hell. And that was only part of it. The\npassengers on the domestic flights were closed off as well \u2014 they seemed to\nactively avoid all contact with other passengers, content rather to cower\nunder their blankets and read the in-flight magazines. Joel had, on several\noccasions, attempted to start a friendly conversation during a flight or while\nwaiting at a gate, but he was always pushed away. He had a lot of adjusting to\ndo before he\u2019d feel at home again in this place.</p>\n<p>He arrived at the terminal train station just as a shuttle was departing. Oh\nwell, no matter. He\u2019d just get the next one. Stepping outside, he realized\nhe\u2019d forgotten how cold the city could be at this time of year. It was in fact\nquite warm, relative to the usual temperature of the city, but the gentle wind\nagainst his bare legs and sandaled feet only accentuated the remaining chill\nhe had from the frosty airplane cabin. Yet another thing he\u2019d have to readjust\nto.</p>\n<p>Looking around him, he noticed several other travelers standing on the\nplatform, donned in light autumn jackets, each one with a serious expression,\ntalking on a cell phone and smoking a cigarette. Everyone seemed so isolated \u2013\nhe wondered for a moment if perhaps two of the people standing there were\nperhaps talking to each other, not realizing that they were in fact less then\ntwenty feet apart. It wouldn\u2019t be that surprising. None of them looked at each\nother. They were too engrossed in their own private conversations to care bout\nor notice the rest of the world around them.</p>\n<p>Joel decided to take a short stroll around the platform while he waited. The\nconversations he overheard were topically different, but equally indicative of\nworried, frightened people.</p>\n<p>\u201cI know I\u2019m late, Gerald. You don\u2019t have to keep telling me. If the damn\nplane had been on time, I would have made it. Well, you\u2019ll just have to\nwithout me for the time being. Yes, I have the portfolio. I\u2019ll bring\u2026\u201d</p>\n<p>\u201cDid you get Mikey to school? Is he feeling better? What did the doctor say?\nWas he sure it was just a cold? I thought\u2026\u201d</p>\n<p>\u201c\u2026got me thinking, you know? I mean, it was just a little fender-bender,\nno big deal, right? But the insurance company is saying that they might not\ncover it, and the mechanic is charging me my left nut to get it realigned.\nYeah, I know\u2026\u201d</p>\n<p>Joel shook his head. So many things to worry about \u2014 so many things to push\nout of proportion. He silently wished he was back in Asia . Things seemed a\nlot simpler over there. He chuckled. He was \u201chome\u201d less than an hour and\nalready complaining. That made him a true America n, right?</p>\n<p>The train pulled up and Joel stepped on behind a tired-looking woman pulling\nthree large suitcases. She was trying to pull them, anyway.</p>\n<p>\u201cCould I give you a hand, ma\u2019am?\u201d Joel asked, placing a hand on the largest\nof the three and preparing to pull it up into the train. Confused, the woman\ngave Joel a quick visual appraisal and apparently judged him unworthy of the\ntask.</p>\n<p>\u201cNo, no, I\u2019m fine, I\u2019m fine. Just leave me alone.\u201d</p>\n<p>Joel shrugged as she moved as quickly as she could to the opposite side of\nthe train, sat down, and eyed him warily. Whatever.</p>\n<p>As the train began to move towards its downtown destination, Joel found an\nempty seat and sat down, peering out the window at the cars passing on the\nhighway alongside him. Every driver had the same serious expression as the\ncommuters at the station. Eyes gazing straight ahead, hands clenching the\nsteering wheel tightly, lead foot on the accelerator. Everyone had somewhere\nto be, apparently.</p>\n<p>Joel distracted himself by watching the autumn leaves perform complex\nacrobatics in the winds above the highway. The seasons were one thing that\nhe\u2019d missed while he was away. He didn\u2019t much care for winter, and spring was\nhis favorite, but autumn, with its falling leaves, grey skies and clear\nmoonlit nights, held a special allure for him as well.</p>\n<p>He smiled to himself as he realized he\u2019d been absent-mindedly contemplating\nthe physics governing the leaves movements, and reflecting on the equations\nbehind them. He hadn\u2019t changed <em>that</em> much on his trip, had he?</p>\n<p>_[Insert more Asia back story here.] _</p>\n<p>At Allerton, the traffic on the highway had come to a complete stop. Joel\nsoon discovered the reason. A car was abandoned in the center lane, driver\ndoor swung open. The drivers rolled down their windows and cursed, at who they\ndidn\u2019t know, and abruptly cut off their rant when they noticed the car was\nempty. The combined symphony of multi-pitched car horns was deafening. Joel\nwanted to go out in the middle of it and yell at everyone to calm down.\nSeriously, it wasn\u2019t the end of the world. <em>Geez</em>.</p>\n<p>As they approached the next stop, Whoorsley, Joel noticed a man running brea\nthlessly towards the train from the highway entrance. _He\u2019ll never make it _,\nJoel thought as the train slowed down for the stop. As the passengers boarded\nand departed, Joel poked his head out looking for the man. There was no way he\ncould make it without a little help. He discreetly dropped his backpack to the\nfloor, making sure it obstructed the door closing mechanism just enough to\nprevent the train from departing.</p>\n<p>The passengers grew increasingly agitated as the annoying prerecorded voice\nsaid, \u201cDoors closing,\u201d over and over again, but no one noticed Joel\u2019s\nsurreptitiously placed backpack.</p>\n<p>The man boarded a few seconds later, and there was a sigh of relief from all\nthe passengers when the final \u201cDoors closing\u201d warning was repeated. Joel\nleaned back against the train door, awash in the glow that came with doing\ngood deeds. His place in heaven was assured, no doubt about <em>that</em>. He\nsmiled.</p><img src=\"http://feed.tylerbutler.com/link/18607/17246009.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-11-04T14:21:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246009.gif"
        },
        {
            "id": "https://tylerbutler.com/november-2nd/",
            "url": "http://feed.tylerbutler.com/link/18607/17246010/november-2nd",
            "title": "November 2nd",
            "content_html": "<p>This was his least favorite part of the meal, but he had to drink the\nremaining milk or Rhonda would not be pleased. \u201cWaste not, want not,\u201d was her\nmotto, and she made sure Ernie ate everything he was given.</p>\n<p>He grasped the bowl by the sides and brought the edge to his gaping mouth,\npouring as quickly and carefully as he could. He swallowed, barely, and set\nthe bowl on the table with a clatter as he shook his head back and forth\nviolently.</p>\n<p>Rhonda chuckled at the sight. She knew he hated the taste of milk, but she\ncouldn\u2019t afford to have him wasting any, not with as many financial problems\nas St. Ives was having. She was already stretching it just to buy him his\nfavorite cereal every week. But really, how could she deny him?</p>\n<p>She couldn\u2019t put her finger on the quality about Ernie that made him so\nendearing. Perhaps it was his quiet, unassuming eyes, always hidden behind\nthose thick glasses. Or it could be the fact that he danced \u2014 if you could\ncall his carefree movements that \u2014 his way everywhere, and didn\u2019t care at all\nwhat others thought of him. Most likely, it was just his mind. He was a child\ntrapped inside a man\u2019s body, destined never to understand the complexities of\nthe world. He perceived things so innocently \u2014 and struggled with even the\nsimplest task that involved remembering something \u2014 but he had such tenacity\nthat it was hard not to admire him. It was sad, in a way, that he\u2019d never\nmature past his current mental capacity, but Rhonda was careful never to pity\nany of the many down-on-their-luck people she knew at St. Ives. She didn\u2019t\nbelieve in pity \u2014 she believed in helping people.</p>\n<p>Rhonda thought back to 20 years ago, when she first came to St. Ives looking\nto help those less fortunate than herself. She\u2019d always had a heart for the\nhomeless, and St. Ives needed someone skilled in the culinary arts to help out\nin the kitchen. It seemed to be a perfect fit, and for a long time it was.\nThat was a long time ago, when she was an attractive, idealistic\nwhippersnapper of a child who wanted to save the world. Much had changed since\nthen \u2014 now she was just struggling to keep food on the table for all the\nresidents, and every day seemed to drag on longer than the next. Her chance to\nmake a true difference was gone, and her options were dwindling even more\nquickly.</p>\n<p>Thankfully, though, there were people like Ernie that appreciated the work\nshe did. Even if he didn\u2019t say it, she knew he\u2019d be lost without her and the\nrest of the staff at St. Ives. And truth be told, they\u2019d be lost without him\nand the other residents as well. Their lives were inexplicably intertwined,\nand Rhonda knew she could never leave St. Ives voluntarily, no matter how hard\nit got or how pointless it all seemed sometimes.</p>\n<p>The scraping of Ernie\u2019s chair brought her back to the present.</p>\n<p>\u201cErnie,\u201d she said. \u201cWe need to talk \u2018bout last night.\u201d He\u2019d hoped he could\nescape without receiving the lecture, but he knew better.</p>\n<p>Rhonda pulled out the chair across from Ernie and sat down heavily. Her dark\nround face, framed by her bunned graying hair, was taut as she looked hard at\nErnie, but her eyes shone a compassionate gleam. He looked down at the floor,\navoiding her eyes.</p>\n<p>\u201cErnie, why didn\u2019t you come back las\u2019 night?\u201d The questions was simple\nenough. Ernie thought hard, trying to remember exactly why he hadn\u2019t made it\nback, but his mind drew a blank. \u201cI don\u2019t know,\u201d he finally muttered.</p>\n<p>\u201cWal, you know da rules\u2026 You know I want ya ta be back before 8. You\nshouldn\u2019t be runnin\u2019 \u2018round late at night by yerself. Besides, you have a nice\nwarm bed here. Why you wanna sleep anywhere else?\u201d</p>\n<p>\u201cI slept with Ike\u2026 he was warm,\u201d Ernie replied, moving his head back and\nforth methodically, still staring at the floor.</p>\n<p>\u201cWal, jus\u2019 be sure you make it back in tonight. You know I was worried \u2018bout\nyou. I\u2019m just glad you\u2019re all right.\u201d She stood up and patted him on the back.</p>\n<p>\u201cGo on. I guess you\u2019ll be going back up to the corner today?\u201d</p>\n<p>Ernie nodded.</p>\n<p>\u201cWell, come back later on. I\u2019m baking cookies, and you might not get any if\nyou\u2019re not careful.\u201d Ernie nodded again and stood up quickly as Rhonda began\nbusying herself around the kitchen again.</p>\n<p>\u201cBye Rhonda,\u201d Ernie mumbled as he walked out of the kitchen. Rhonda smiled\nagain. One could never stay angry at Ernie for very long. She knew he didn\u2019t\nmean to stay out, and that he was sorry. He was safe, that was all that really\nmattered.</p>\n<p>As soon as he left the kitchen, Ernie grasped the headphones and put them\nover his ears. With a familiar flick of his index finger, he started the music\nagain, and jived his way on back towards 34 th and Broadway.</p>\n<hr />\n<p><strong>Chapter 2: Ned</strong></p>\n<p>Beep. <em>Eggs, they\u2019d have to wait for a minute.</em> Beep. <em>Ahh, milk, that\ncould go with the orange juice \u2013- better double-bag it just in case.</em> Beep.\n<em>Chips. Nothing special there.</em> Beep. Beep. Beep. <em>Load the bags in the cart\nand\u2026</em></p>\n<p>\u201cWould you like some help getting that out to your car, Mrs. Jensen?\u201d</p>\n<p>\u201cOh no, dear, I\u2019ll be fine. Thank you for your help. You have a nice day.\u201d</p>\n<p>\u201cYou too, Mrs Jensen.\u201d Looking towards the back of the store, he was Ned was\npleased to see an empty register line. He ran his hand through his graying\nhair and began to twirl his mustache. Finally a short break. His line had been\nnon-stop for the entire morning, and despite his affinity for hard work, Ned\nneeded a break. He nodded at Maria, turned off his cashier light, and walked\ntowards the men\u2019s\u2019 room.</p>\n<p>After relieving himself, he lowered himself slowly on the small bench in the\nlavatory. His knee was acting up again today. He\u2019d need to take a few more\nAspirin if he was going to make it through the rest of the day.</p>\n<p>The door to the restroom blew open with a whoosh and in stepped Bob McCrane.</p>\n<p>\u201cHey, Ned. Taking a break?\u201d His smile was far too plastic to be genuine. Bob\nwas about 25 years old, and most of the cashiers resented him, Ned included.\nNed was nearly twice his age, and probably twice as intelligent, but Bob was\nthe boss. He knew how to kiss corporate ass like no one Ned had ever met, and\nhe was rewarded for it. He was always smiling, always trying to joke with\neveryone, always oblivious to the fact that no one liked him.</p>\n<p>Ned smiled wryly back. \u201cYes, it\u2019s been a busy day.\u201d</p>\n<p>\u201cIndeed it has. Everybody needs a break eventually, that\u2019s the truth, mmm-\nhmm. Back when I was working for\u2026\u201d</p>\n<p>Ned took the cue and tuned out the rest of the inane story. All of Bob\u2019s\nstories were the same. They all eventually ended with Bob saving the day\nsomehow with his ingenuity, his charisma, and his I-just-won-an-Oscar smile.\nNed didn\u2019t need to hear another one of Bob\u2019s supposedly inspirational stories\nin order to do his job better. And no story could improve his knee\u2019s condition\n\u2013 certainly not one of Bob\u2019s.</p>\n<p>He already took his job very seriously. In fact, he took everything in his\nlife seriously, but the job was especially important. Before immigrating to\nthe US , Ned had been a well-trained, well-respected mechanical engineer. He\nwas a wizard with mechanical structures, talented at design, and had a decent\njob designing small engines for lawn mowers, cement mixers, and the like.</p>\n<p>It was a decent life, but there were dangers too. He and Lavina just didn\u2019t\nhave the kind of freedom that they truly wanted, and they wanted their\nchildren to have the best possible opportunities available to them. Life in\nthe US seemed the best way to provide all of that, so they emigrated.</p>\n<p>Things didn\u2019t work out as they had planned, though. Lavina had become\npregnant early on in their new life in America , and their finances were\nalready strained from the journey itself. The pregnancy was long and\ndifficult, and hospital bills continued to pile on. Ned had been holding out\nfor a job related to his field of expertise, but at every interview they\nturned him away, citing \u201clack of reliable experience.\u201d It seemed his years in\nEurope were not verifiable by the American companies, and despite his\nexcellent overseas references, most companies were not willing to give him a\nchance.</p>\n<p>He tried everything he knew to become more desirable to the American\nemployers. He immersed himself in American culture, became familiar with\nAmerican mechanic style and design, and created a portfolio of impressive\nideas to present at interviews. He even changed his name to Ned, since\nemployers seems to have such a hard time pronouncing his real one.</p>\n<p>Again and again, however, he was turned away. With mounting bills and a new\nbaby at home, Ned did the only he could \u2014 he took a manual labor job helping\nout at a construction site. Most of his co-workers were either in high school\nor immigrants like him. It wasn\u2019t glamorous, but it helped pay the bills.</p>\n<p>Ned worked incredibly hard, but he hadn\u2019t lasted long. The knee injury from\nhis childhood made it nearly impossible to carry heavy loads for long\ndistances, a major job requirement, and he spent each evening with an ice pack\non his swelling joint. Lavina finally convinced him to try and find another\njob, one that would require less physical strain. And with yet another baby on\nthe way, Ned knew he\u2019d have to find something.</p>\n<p>When Ned spoke to Jon, his supervisor, about leaving, Jon had asked his\nwife, who worked as a manager at the local Dominick\u2019s to hire him. It was a\ndock in pay, and certainly not the step upwards that Ned was hoping to make,\nbut he was grateful for the much needed opportunity.</p>\n<p>That was several years ago. Jon\u2019s wife no longer worked at this particular\nstore, and most of the other people he\u2019d worked with in the past had long\nsince moved on, but Ned had kept his job and continued to support his growing\nfamily.</p>\n<p>It was far from the dream he and Lavina had had when they came to America ,\nbut Ned worked hard and earned himself quite a reputation amongst those\ncustomers who frequented Dominick\u2019s Store # 4534. His grocery bagging skills\nhad grown so legendary that new trainees were required to work with him a\nminimum of 10 hours before they could start bagging items themselves, just so\nthey could learn the ropes.</p>\n<p>Ned was ruthlessly committed to efficiency. He could scan, bag, and load a\ncustomer\u2019s groceries into their cart faster than most customers could get\ntheir credit card out of their purse, all while holding a pleasant\nconversation. He never forgot a customer, he remembered everyone\u2019s children or\nfamily and asked after them, and was always ready with a joke or short\nanecdote to lighten someone\u2019s mood. Not to mention his uncanny ability to fit\nmore items in a plastic bag than one would think possible. He knew exactly\nwhen items required a double or even triple bag, always took extra care not to\nbreak eggs or crush bread, and ensured all scented items were kept separate\nfrom food items, to protect his customers from soapy tasting bread, meat and\ncheese.</p>\n<p>Ned did not go entirely unnoticed for his dedication and knack for the job.\nHe\u2019d been employee of the month countless times, and many customers flocked\nspecifically to his line at the front of the store, just so they could tell\nhim how their new baby girl was doing, or hear his latest joke, or ask for\nprayer for an ailing relative. Many women in the local area brought cakes,\ncookies, and other food stuffs for Ned and his family; yes, Ned was not\nunnoticed for his hard work.</p>\n<p>But Ned was growing old. He could feel it in his bones every morning, and he\ncould especially feel it as he sat down idly listening to Bob ramble on about\nnothing in the men\u2019s room.</p>\n<p>\u201cSo how about that, huh?\u201d Bob beamed as his story drew to a close.</p>\n<p>\u201cThat\u2019s pretty incredible, Bob,\u201d Ned answered idly. He had no idea what Bob\nhad been talking about, but all the stories were the same, and the appropriate\nresponses sounded nearly as rehearsed as the stories themselves by now. Of\ncourse it was all lost on Bob. He was completely infatuated with no one but\nhimself, and Ned\u2019s lack of interest didn\u2019t faze him in the least.</p>\n<p>\u201cYeah, it\u2019s a great story\u2026 Well, I\u2019d better get going. Lots to get done,\nmmm-hmmm. Don\u2019t dally too long, Ned. The candy around your line seems to be a\nlittle out of whack.\u201d Bob flashed another prize-winning smile as he dried his\nhands and stepped back out of the men\u2019s room with a whoosh.</p>\n<p>Ned stood up slowly and gingerly put some weight on his knee. He hoped the\nAspirin would kick in soon. It was going to be a long day.</p><img src=\"http://feed.tylerbutler.com/link/18607/17246010.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-11-03T12:10:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246010.gif"
        },
        {
            "id": "https://tylerbutler.com/november-1st/",
            "url": "http://feed.tylerbutler.com/link/18607/17246011/november-1st",
            "title": "November 1st",
            "content_html": "<p><strong>Chapter 1: Ernie</strong></p>\n<p>\u201cAre we there yet?\u201d</p>\n<p>Melissa sighed again. \u201cNo, baby, not yet.\u201d The five-year-old squirmed\nrestlessly in the backseat.</p>\n<p>\u201cMommy\u2026\u201d</p>\n<p>\u201cAngela, I\u2019ve told you already. We\u2019ll get there when we get there. Sit down,\nbe still, and hush up!\u201d Melissa felt the tension in her own voice. Could it\nreally only be 10 AM? It was guaranteed to be a long day. Offhand she realized\nthat it had been far too long since Angela had commented.</p>\n<p>At Lawrence \u2018s insistence, she had taken Angela to an ear, throat and mouth\nspecialist, but of course he had found nothing wrong with Angela\u2019s hearing. It\nwas with a certain sense of satisfaction that she had informed Lawrence of the\nresults. She had long since argued with him that Angela <em>could</em> listen; she\nsimply never <em>wanted</em> to. Lawrence, ever the idealist, desperately wanted to\nbelieve that there was something physically hindering her obedience, rather\nthan accept the fact that their daughter was obstinate and overly excitable.</p>\n<p>By now, Angela should have been bouncing off the walls, but all was quiet in\nthe back seat. A quick glance in the rear-view mirror revealed an enthralled\nfive-year-old, nose glued to the window of the beat up Chevy Astro, staring\noutside.</p>\n<p>\u201cWhat are you looking at?\u201d asked Melissa as she followed Angela\u2019s eyes to\nthe sidewalk outside. Melissa smiled as she realized what had caught her\ndaughter\u2019s attention. On the left side of the street was a man in a faded\nwind-breaker walking in their direction.</p>\n<p>Well, he wasn\u2019t really <em>walking</em>, he was <em>gyrating</em>. His arms flew out at\nodd angles from his body, his head bobbed, Melissa assumed in time to the\nmusic that was coming out of a pair of ancient, oversized headphones he wore\non his ears, and every so often he spun in a full circle and started the whole\nprocess over again.</p>\n<p>\u201cWhy is he walking like that, Mommy?\u201d Angela giggled.</p>\n<p>\u201cI think he\u2019s dancing,\u201d Melissa replied, slowing down slightly. The quiet\nbrought on by Angela\u2019s trance was something to be cherished, and Melissa\nwanted it to last as long as possible.</p>\n<p>\u201cWell, he\u2019s not very good at it,\u201d Angela piped up, with a slight hint of\ndisdain in her voice. The ballet lessons to which Melissa and Lawrence had\nfinally given in were paying off in many ways; not all of them were positive.</p>\n<p>\u201cEveryone could use practice, Angela. Not everyone is blessed with as much\ntalent as you are.\u201d Melissa caught herself as soon as she said it \u2014 there was\nfar too much sarcasm in her voice. Thankfully, the condescension was lost on\nher daughter, who was now squirming restlessly once again, her interest in the\nstrange man now gone.</p>\n<p>Melissa sighed again as she pushed down gently on the accelerator. It was\ngoing to be a long day.</p>\n<hr />\n<p>Ernie was oblivious to the curious faces peering at him as he jived his way\ndown Sullivan Street . He wouldn\u2019t have cared, even if he had noticed them,\nbut with his headphones on he was in another world \u2014 <em>his</em> world. A world\nwhere one couldn\u2019t afford to be still. A world of vigorous, deliberate\nmovements, of spinning and twirling, of quick-stepping, of fishtailing,\nbouncing, and doing it all over again. A world of glorious <em>movement</em>; when\nsurrounded by such miraculous music as Ernie\u2019s, what other choice did one\nhave?</p>\n<p>Ernie had been out since last night. He had tried to make it back to St.\nIves, but the kids at 34 th and Broadway had been jiving late, and by the time\nthe last of them went inside, it was too late for Ernie to make his return\ntrip safely. Ken snuck him into his garage later that night, after his parents\nhad gone to bed, and Ernie stayed warm playing quietly with Ike, Ken\u2019s German\nShepherd.</p>\n<p>Ken was a good friend, probably Ernie\u2019s best. He had invited Ernie over for\ndinner once, but Mr. and Mrs. van Zandt were less than thrilled having a\n\u201cdirty, disturbed man\u201d at their home. Ernie had heard them arguing about it\nfrom outside the house, and though he didn\u2019t understand all the words, he knew\nthat he wasn\u2019t going to be eating dinner at the van Zandt\u2019s then or ever. Ken\nhad come to the door with a sad look on his face telling him that his parents\n\u201calready had dinner plans.\u201d Ernie didn\u2019t argue; he knew Ken didn\u2019t have a lot\nof choice in the matter. Ken\u2019s parents had told him not to hang out with Ernie\nany more, but fortunately Ken took much pleasure in doing the exact opposite\nof what his parents told him.</p>\n<p>Ernie had woken up early to make sure he made it out of the garage before\nMr. van Zandt saw him. He had wanted to stick around to jive with kids some\nmore, but it was too early; they were all still sleeping. He milled about the\nneighborhood for awhile, but hunger eventually got the better of him, and he\nstarted making the long trek back towards St. Ives. Rhonda was probably\nworried about him anyway.</p>\n<p>The perspiration was beginning to gather on his brow. It was going to be a\nwarm day. Ernie preferred it that way. It made him feel as though he was\nworking hard, even though he wasn\u2019t. After all, work couldn\u2019t feel <em>this</em>\ngood. Rhonda made him do work around the shelter every once in awhile,\nlandscaping and such, and she never let him listen to his music while he did\nit. He hated being without his music; life was so empty, so boring without it.</p>\n<p>The first side of his cassette finished, and his trusty Walkman soon made\nthe familiar _click-pah, click-pah _ as it automatically switched to the\nsecond side. Ernie turned the Walkman over in his hand and admired it yet\nagain. His rough, calloused fingers traced over the worn buttons. The text\nidentifying their respective functions had long since faded, but it didn\u2019t\nmatter. He knew the buttons by heart anyway. The casing was scratched and\ncracked, the battery cover was attached by a piece of duct tape, and the small\nmotor made a dull moaning sound as it spun, but the Walkman was <em>his</em>. It\nbelonged to him, and only him; it was his passport to an astounding world of\nsound and rhythm.</p>\n<p>The dull gray stone of St. Ives snuck up on him without warning. The smell\nof sweetbread and chicken soup wafted gently across the street towards him,\nand he salivated involuntarily. He jived his way across the way, pausing\nmomentarily while a taxi flew by, horn blaring. Glancing up at the flickering\nneon cross above the door, Ernie pushed the large oak door open with one hand\nand reluctantly pulled the large headphones from his ears. Rhonda would\nalready be a little annoyed that he hadn\u2019t come in last night \u2014 there was no\nneed to annoy her more by keeping the headphones on.</p>\n<p>He took the small staircase from the vestibule to the dining room two at a\ntime, and glanced around the small tables looking for familiar faces. Lester\nwas there, apparently taking a break from his occupation begging down on the\nBoardwalk, and Michael too, accompanied by his ever-present collection of\nassorted aluminum scrap.</p>\n<p>Ernie briefly considered attempting to bypass the kitchen and head upstairs\nto his room, then retrace his steps back downstairs to trick Rhonda into\nthinking he\u2019d been upstairs all along. Of course, it wouldn\u2019t work. Rhonda was\nalready well aware that he\u2019d been out all night, and he\u2019d only incur more\nwrath by trying to avoid her now.</p>\n<p>So into the kitchen he went, head down in his customary ignore-the-world\nfashion. He was aware of Rhonda\u2019s stare as he moved straight towards the\ncupboard and grabbed a bowl and spoon.</p>\n<p>\u201cJust siddown, Ernie. I\u2019ll git it for ya,\u201d Rhonda said, moving towards him.\nErnie didn\u2019t argue. He sat down with his bowl and waited patiently for Rhonda\nto fill it.</p>\n<p>Rhonda walked over to the cupboard, took a nondescript Tupperware container\nout, and filled Ernie\u2019s bowl. Ernie was more than happy to do this himself,\nbut Rhonda knew it would take him an hour just to find the right container. No\nmatter how hard he tried, he could never remember which container held the\nmagical cereal known as Trix. On the rare occasions he did attempt to locate\nthe Trix himself, he was reduced to tasting each container of cereal to find\nthe correct one.</p>\n<p>Rhonda poured the cereal and milk, and Ernie dug in with great fervor. Ah,\nTrix\u2026 or an off-brand that tasted remarkably similar\u2026 what a brilliant\ncereal! An explosion of sugary, fruity flavor in every bite! He wished that\nRhonda would give him real Trix \u2014 he could tell the difference \u2014 but Rhonda\nsaid that Trix were for kids and Ernie, unfortunately, was no longer a kid.\nHow could such a wonderful dietary concoction be limited to only those under\nage 13? He didn\u2019t argue with Rhonda, though, because he had a feeling there\nwere other issues, most likely financial \u2014 which he would not even attempt to\ndecipher \u2014 at play.</p>\n<p>\u201cWal, it look dat man done done it ageen,\u201d Rhonda shook her head back and\nforth at the small television in the corner. Ernie peered up at the screen,\nwhere the President was prattling on, looking strangely determined and\nstriking his hands against the podium definitively. Ernie wondered briefly\nwhat music he was listening to that could make him move like that \u2014 if he ever\nmet the President, he\u2019d have to ask to borrow the tape.</p>\n<p>Rhonda was still shaking her head and muttering under her breath as Ernie\nreturned to his breakfast. Politics made the same amount of sense to Ernie as\nfinances, so he just avoided getting into any discussions about it. Rhonda, on\nthe other hand, was quite vocal about the upcoming election.</p>\n<p>\u201cHow we gonna manage with dem cuttin\u2019 this, cuttin\u2019 dat, not thinkin\u2019 about\ndose \u2018round us ain\u2019t got nothin\u2019? How we gonna do dat, Ernie?\u201d She didn\u2019t\nexpect an answer \u2014 but the question had to be vocalized in order for it to\nmatter.</p>\n<p>Ernie took the last bite of his Trix and stared down at the remaining milk,\nnow the color of rainbow sherbet.</p><img src=\"http://feed.tylerbutler.com/link/18607/17246011.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-11-02T15:59:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246011.gif"
        },
        {
            "id": "https://tylerbutler.com/tyler-a-novelist/",
            "url": "http://feed.tylerbutler.com/link/18607/17246012/tyler-a-novelist",
            "title": "Tyler, a Novelist?",
            "content_html": "<p>OK, I\u2019m going to keep this short, because I will be writing a lot in the next\nmonth. I am participating in <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.nanowrimo.com\">National Novel Writing Month</a>, and will be\nwriting a 50,000-word fictional novel in the 30 days of November. The journey\nwill be difficult, but with your prayers I will be victorious. I am\nregistered at the <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.nanowrimo.com\">NaNoWriMo website</a> as dragonfly2004. Feel free to look\nme up. I will be posting my manuscript in its entirety <a href=\"https://tylerbutler.com/tags/nanowrimo\">on this site</a> as I\nwrite it. Hopefully I will also have time to post some stats on how I am\ndoing, but no guarantees. I\u2019d love for people to read what I write and offer\nencouragement during the month, but I\u2019d prefer if there were no comments\nregarding the characters, plot, themes, or anything of the sort, because I\nwant to be able to focus on my vision for the month and not second-guess my\ndecisions while I am trying to write. Wish me luck.</p>\n<p><strong>It\u2019s going to be a long month.</strong></p><img src=\"http://feed.tylerbutler.com/link/18607/17246012.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-11-01T13:46:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246012.gif"
        },
        {
            "id": "https://tylerbutler.com/homeland-security/",
            "url": "http://feed.tylerbutler.com/link/18607/17246013/homeland-security",
            "title": "Homeland Security?",
            "content_html": "<p>OK, this is ridiculous. The Department of Homeland Security can\u2019t find\nanything better to do, apparently, than harass small business owners. Check\nout this <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fstory.news.yahoo.com%2Fnews%3Ftmpl%3Dstory%26cid%3D816%26e%3D1%26u%3D%2Fap%2F20041028%2Fap_on_fe_st%2Ftoy_store_homeland_security\">Yahoo News story</a>:</p>\n<blockquote>\n<p>ST. HELENS, Ore. - So far as she knows, Pufferbelly Toys owner Stephanie Cox\nhasn\u2019t been passing any state secrets to sinister foreign governments, or\nviolating obscure clauses in the Patriot Act.</p>\n</blockquote>\n<blockquote>\n<p>So she was taken aback by a mysterious phone call from the U.S. Department of\nHomeland Security to her small store in this quiet Columbia River town just\nnorth of Portland.</p>\n</blockquote>\n<blockquote>\n<p>\u201cI was shaking in my shoes,\u201d Cox said of the September phone call. \u201cMy first\nthought was the government can shut your business down on a whim, in my\nopinion. If I\u2019m closed even for a day that would cause undue stress.\u201d</p>\n</blockquote>\n<blockquote>\n<p>When the two agents arrived at the store, the lead agent asked Cox whether she\ncarried a toy called the Magic Cube, which he said was an illegal copy of the\nRubik\u2019s Cube, one of the most popular toys of all time.</p>\n</blockquote>\n<blockquote>\n<p>He told her to remove the Magic Cube from her shelves, and he watched to make\nsure she complied.</p>\n</blockquote>\n<blockquote>\n<p>After the agents left, Cox called the manufacturer of the Magic Cube, the\nToysmith Group, which is based in Auburn, Wash. A representative told her that\nRubik\u2019s Cube patent had expired, and the Magic Cube did not infringe on the\nrival toy\u2019s trademark.</p>\n</blockquote>\n<blockquote>\n<p>Virginia Kice, a spokeswoman for <strong>Immigration and Customs Enforcement</strong>, said\nagents went to Pufferbelly based on a trademark infringement complaint filed\nin the agency\u2019s intellectual property rights center in Washington, D.C.</p>\n</blockquote>\n<blockquote>\n<p><strong>\u201cOne of the things that our agency\u2019s responsible for doing is protecting the integrity of the economy and our nation\u2019s financial systems and obviously trademark infringement does have significant economic implications,\u201d</strong> she said.\nSix weeks after her brush with Homeland Security, Cox told The Oregonian she\nis still bewildered by the experience.</p>\n</blockquote>\n<blockquote>\n<p>\u201cAren\u2019t there any terrorists out there?\u201d she said.</p>\n</blockquote>\n<p>I have several problems with this whole event. First of all, why is the\n\u201cprotection\u201d of our nation\u2019s economy the responsibility of the government at\nall, least of all the DHS? We\u2019re supposed to be [relatively] free market,\nright? Second, why is someone from the <strong>Immigration and Customs Enforcement</strong>\noffice doing the commenting? This makes even less sense! Third, it\u2019s a Rubik\u2019s\nCube for crying out loud! And the patent\u2019s expired! Finally, wasn\u2019t the DHS\ncreated to safeguard our country from terrorists? Even if terrorists <strong>were</strong>\ninfringing on trademarks (which I seriously doubt they are), I\u2019d still rather\nthe DHS leave them alone if they can\u2019t actually tell a terrorist from a small\nbusiness owner.</p>\n<p>On the other hand, had this happened to me I probably would have asked for\nsome paperwork or something proving they had authority to do this, but then,\nwe live in a culture of fear here in the US, so I can\u2019t say I blame Ms. Cox\nfor simply complying. She hadn\u2019t done anything wrong, after all. What did she\nhave to fear? (The answer is <em>everything</em>. Government sucks. And yes, I am\n<a href=\"https://tylerbutler.com/2004/09/tolls-and-cameras/\">paranoid</a>.)</p><img src=\"http://feed.tylerbutler.com/link/18607/17246013.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-10-30T01:08:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246013.gif"
        },
        {
            "id": "https://tylerbutler.com/playing-with-ubuntu/",
            "url": "http://feed.tylerbutler.com/link/18607/17246014/playing-with-ubuntu",
            "title": "Playing With Ubuntu",
            "content_html": "<p>I finally got fed up with XP on my laptop. I don\u2019t use it much for games\nanymore, so I decided that it was time to try Linux again. I had previously\nloaded Suse 9.1 on it over the summer, but I could never get my Linksys WPC54G\nPCMCIA wireless card working, no matter what I tried, so I gave up. I didn\u2019t\nwant to shell out cash for a new card, and a laptop without wireless is a\npitiful thing. Also, I used to like KDE, but it looked really bad on my\nlaptop, and I simply didn\u2019t feel like going through all the hassle of trying\nto get Gnome up on a KDE-centric distro. Finally at that point I was still\nusing Outlook (gasp!), and I didn\u2019t relish trying to convert everything into\nEvolution <em>again</em>. So I went back to XP for awhile.</p>\n<p>Then I made the switch to GMail, and based on some high praise that\n<a href=\"http://www.ubuntu-linux.org\">Ubuntu</a> was getting from Patrick and others, I thought I might as well\ngive it a try. I needed to reformat my laptop anyway, and I figured if I\ndidn\u2019t like it or it didn\u2019t work, I could always just put XP back on there.</p>\n<p>Well, I am proud to say that Ubuntu up and running on my laptop. I was able to\n<em>very</em> easily set up my wireless card using <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fndiswrapper.sf.net\">NDiswrapper</a>, and there was\neven a helpful guide linked to on the Ubuntu website. It doesn\u2019t allow me to\nmonitor link quality and everything, but at least it works.</p>\n<p>I have never used a Debian-based distro before, but I really like it so far.\nThe package management has been great, and using alien I\u2019ve been able to load\nup some RPM\u2019s as Deb packages as well. I\u2019ve got <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fbeatniksoftware.com%2Ftomboy%2F\">Tomboy</a> running, which is\ncool (I\u2019m using it for notes about my upcoming novel), and I am installing\n<a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.gnome.org%2Fprojects%2Fbeagle%2F\">Beagle</a> as we speak. I like the overall polish of Gnome, but the \u201cspatial\nbrowsing\u201d is driving me nuts. I want an address bar! I suppose I\u2019ll get used\nto it - it\u2019s my only major complaint right now. Well, that and the fact that\nthere\u2019s no IE for Linux (haha). I need it for work - Firefox doesn\u2019t render\nthe application we use for ticket management correctly. I have to use RDP and\nlog into my server to enter tickets. And I\u2019m still having problems getting\nSamba and Web Folders shared between my Windows boxes and Ubuntu. But\nhopefully <a href=\"http://forge.novell.com/modules/xfmod/project/?ifolder\">iFolder</a> will help with that.</p>\n<p>Anyway, overall I am very pleased with my new setup so far, and have not yet\nfound any truly compelling reasons to switch back to XP. Here\u2019s hoping I\ndon\u2019t. I\u2019m certainly learning a lot more with Linux.</p><img src=\"http://feed.tylerbutler.com/link/18607/17246014.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-10-29T03:04:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246014.gif"
        },
        {
            "id": "https://tylerbutler.com/interview-with-microsoft/",
            "url": "http://feed.tylerbutler.com/link/18607/17246015/interview-with-microsoft",
            "title": "Interview with Microsoft",
            "content_html": "<p>Microsoft is coming to campus on Thursday and Friday of this week, and I\nmanaged to get an interview. One of the guys who\u2019s coming is an alumnus from\nIIT, and he used to be in <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.hawktour.net%2F\">my IPRO</a> (back before it became <strong><em>my</em></strong> IPRO),\nand he sent me an email asking if I knew of anyone from the IPRO that I would\nrecommend he interview. I gave him the only name I could in good conscience,\nand suggested he interview me as well. So he asked for my resume, and I got an\nemail this afternoon requesting my preference for an interview time. I\u2019m not\nsure if any of it\u2019s going to pan out, but it\u2019s a good opportunity nonetheless.\nI\u2019m also not too sure how I feel about working for MS, but I\u2019ll cross that\nbridge if/when I come to it. Wish me luck!</p>\n<hr />\n<p><em>November 5, 2004</em></p>\n<p>Well, I made it past the first two hurdles. The on-campus interview went well,\nand I must have impressed Ondrej enough that he pushed my resume on through to\nan official recruiter. The recruiter emailed me today about setting up a phone\ninterview Wednesday next week. The way I understand it is that if the phone\ninterview goes well, then I\u2019ll be heading out to Redmond for an on-site\ninterview. Then, if they\u2019re <em>really</em> interested, I\u2019ll get an offer.</p>\n<p>Anyway, I am excited, but would appreciate your thoughts and prayers. This is\na big deal for me. I\u2019m keeping my fingers crossed.</p>\n<hr />\n<p><em>December 17, 2004</em></p>\n<p>Well, I finally heard back from them today, and they are moving me through to\nthe next stage of the interview. I still don\u2019t know the logistics yet, and it\nkind of throws a wrench in the works with my current plans for next semester,\nbut I\u2019m sure I can work something out if I get an offer. :-)</p>\n<hr />\n<p><em>January 21, 2005</em></p>\n<p>Looks like I am flying out to Seattle on February 7th, interviewing on the\n8th, then flying back on the 9th. I am excited, but a little nervous as well.\nHopefully I\u2019ll impress them.</p><img src=\"http://feed.tylerbutler.com/link/18607/17246015.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-10-28T05:01:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246015.gif"
        },
        {
            "id": "https://tylerbutler.com/no-more-anonymous-comments/",
            "url": "http://feed.tylerbutler.com/link/18607/17246016/no-more-anonymous-comments",
            "title": "No More Anonymous Comments",
            "content_html": "<p>I have, after much thought, decided to disable anonymous commenting on this\nsite. For one thing, there are actually blog spammers who hit me with a few\nlong non-sensical spam comments every once in awhile. But I could deal with\nthat \u2014 and if I had the time, I could even upgrade <a href=\"https://www.geeklog.net/\">Geeklog</a> so it would\nblock most of the spam. But that wasn\u2019t the real problem \u2014 the real problem is\nthat people post comments and I have absolutely no idea who they are. Most of\nmy friends are nice \u2014 Patrick and Kim usually sign their comment posts, which\nis nice. There are, however, a few people who never do, and I am forced to go\nlooking through my access logs to figure out what IP accessed the site at the\napproximate time the comment was posted, then lookup the IP and see if I can\nthink of anyone I might know that uses ISP. While I certainly do enjoy being\n<a href=\"https://tylerbutler.com/2002/04/april-16-2002/\">Sherlock Holmes</a> on occasion, this is just too much. So Pat, Kim, Ricardo,\nand anyone else who indulges me by reading this, please just set yourself up an\naccount and post your comments \u2014 I really do like it when you post comments.\nIt makes me feel all warm and bubbly inside.</p><img src=\"http://feed.tylerbutler.com/link/18607/17246016.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-10-23T07:36:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246016.gif"
        },
        {
            "id": "https://tylerbutler.com/ode-to-the-nice-guys/",
            "url": "http://feed.tylerbutler.com/link/18607/17246017/ode-to-the-nice-guys",
            "title": "Ode to the Nice Guys",
            "content_html": "<p>A friend gave this to me. It\u2019s written by a girl somewhere, and is available\nonline at <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.stwing.upenn.edu%2F~jenf%2Fwriting%2Frant04.html\">http://www.stwing.upenn.edu/~jenf/writing/rant04.html</a>. I like\nit. It\u2019s well-written and very on point. As a \u201cnice guy,\u201d or <a href=\"https://www.intellectualwhores.com/\">Intellectual\nWhore</a>, as some have called it, I identified very well with the topic. May\nmy vindication come quickly.</p>\n<blockquote>\n<p><strong>Ode to the Nice Guys</strong></p>\n</blockquote>\n<blockquote>\n<p><em>This rant was written for the Wharton Undergraduate Journal</em></p>\n</blockquote>\n<blockquote>\n</blockquote>\n<blockquote>\n<p>This is a tribute to the nice guys. The nice guys that finish last, that\nnever become more than friends, that endure hours of whining and bitching\nabout what assholes guys are, while disproving the very point. This is\ndedicated to those guys who always provide a shoulder to lean on but restrain\nthemselves to tentative hugs, those guys who hold open doors and give\nreassuring pats on the back and sit patiently outside the changing room at\ndepartment stores. This is in honor of the guys that obligingly reiterate how\ncute/beautiful/smart/funny/sexy their female friends are at the appropriate\nmoment, because they know most girls need that litany of support. This is in\nhonor of the guys with open minds, with laid-back attitudes, with honest\nconcern. This is in honor of the guys who respect a girl\u2019s every facet, from\nher privacy to her theology to her clothing style.</p>\n</blockquote>\n<blockquote>\n</blockquote>\n<blockquote>\n<p>This is for the guys who escort their drunk, bewildered female friends back\nfrom parties and never take advantage once they\u2019re at her door, for the guys\nwho accompany girls to bars as buffers against the rest of the creepy male\npopulation, for the guys who know a girl is fishing for compliments but give\nthem out anyway, for the guys who always play by the rules in a game where the\nrules favor cheaters, for the guys who are accredited as boyfriend material\nbut somehow don\u2019t end up being boyfriends, for all the nice guys who are\noverlooked, underestimated, and unappreciated, for all the nice guys who are\nmanipulated, misled, and unjustly abandoned, this is for you.</p>\n</blockquote>\n<blockquote>\n</blockquote>\n<blockquote>\n<p>This is for that time she left 40 urgent messages on your cell phone, and\nwhen you called her back, she spent three hours painstakingly dissecting two\nsentences her boyfriend said to her over dinner. And even though you thought\nher boyfriend was a chump and a jerk, you assured her that it was all ok and\nshe shouldn\u2019t worry about it. This is for that time she interrupted the best\nkilling spree you\u2019d ever orchestrated in GTA3 to rant about a rumor that\nromantically linked her and the guy she thinks is the most repulsive person in\nthe world. And even though you thought it was immature and you had nothing\nagainst the guy, you paused the game for two hours and helped her concoct a\ncounter-rumor to spread around the floor. This is also for that time she\ndidn\u2019t have a date, so after numerous vows that there was nothing \u201cserious\u201d\nbetween the two of you, she dragged you to a party where you knew nobody, the\nbeer was awful, and she flirted shamelessly with you, justifying each fit of\nreckless teasing by announcing to everyone: \u201coh, but we\u2019re just friends!\u201d And\neven though you were invited purely as a symbolic warm body for her ego, you\nwent anyways. Because you\u2019re nice like that.</p>\n</blockquote>\n<blockquote>\n</blockquote>\n<blockquote>\n<p>The nice guys don\u2019t often get credit where credit is due. And perhaps more\ndisturbing, the nice guys don\u2019t seem to get laid as often as they should. And\nI wish I could logically explain this trend, but I can\u2019t. From what I have\nobserved on campus and what I have learned from talking to friends at other\nschools and in the workplace, the only conclusion I can form is that many\ngirls are just illogical, manipulative bitches. Many of them claim they just\nwant to date a nice guy, but when presented with such a specimen, they say\nirrational, confusing things such as \u201coh, he\u2019s too nice to date\u201d or \u201che would\nbe a good boyfriend but he\u2019s not for me\u201d or \u201che already puts up with so much\nfrom me, I couldn\u2019t possibly ask him out!\u201d or the most frustrating of all:\n\u201cno, it would ruin our friendship.\u201d Yet, they continue to lament the lack of\ndatable men in the world, and they expect their too-nice-to-date male friends\nto sympathize and apologize for the men that are jerks. Sorry, guys, girls\nlike that are beyond my ability to fathom. I can\u2019t figure out why the\nconnection breaks down between what they say (<em>I want a nice guy!</em>) and what\nthey do (<em>I\u2019m going to sleep with this complete ass now!</em>). But one thing I\ncan do, is say that the nice-guy-finishes-last phenomenon doesn\u2019t last\nforever. There are definitely many girls who grow out of that train of thought\nand realize they should be dating the nice guys, not taking them for granted.\nThe tricky part is finding those girls, and even trickier, finding the ones\nthat are single.</p>\n</blockquote>\n<blockquote>\n</blockquote>\n<blockquote>\n<p>So, until those girls are found, I propose a toast to all the nice guys. You\nknow who you are, and I know you\u2019re sick of hearing yourself described as\nubiquitously nice. But the truth of the matter is, the world needs your\npatience in the department store, your holding open of doors, your party\nescorting services, your propensity to be a sucker for a pretty smile. For all\nthe crazy, inane, absurd things you tolerate, for all the situations where you\nare the faceless, nameless hero, my accolades, my acknowledgement, and my\ngratitude go out to you. You do have credibility in this society, and your\nwell deserved vindication is coming.</p>\n</blockquote>\n<blockquote>\n</blockquote>\n<blockquote>\n<p>Fu-zu Jen, SEAS/WH, 2003</p>\n</blockquote><img src=\"http://feed.tylerbutler.com/link/18607/17246017.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-10-20T08:55:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246017.gif"
        },
        {
            "id": "https://tylerbutler.com/fun-with-text-to-speech/",
            "url": "http://feed.tylerbutler.com/link/18607/17246018/fun-with-text-to-speech",
            "title": "Fun With Text-to-Speech",
            "content_html": "<p>At work, we have a mindless task that has to be done manually every hour.\nBasically, we have to log into this website and click around a bit to make\nsure that the site is still up and running. It\u2019s pretty ridiculous, I know,\nbut it has to be done nonetheless. No one in the office ever remembers to do\nit, so I decided it might be nice to have an alarm of sorts. So I remembered\nsome of my old Micrososft Agent tinkering back in High School, and looked\naround for some examples of using the <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.microsoft.com%2Fspeech%2Fdownload%2Fsdk51%2F\">Windows speech API</a> in C#. It didn\u2019t\ntake me long to figure it out, and the code for my simple text-to-speech\nprogram is deceptively simple. Instead of providing the code as a download,\nI\u2019m just posting it here since it is so short.</p>\n<div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>using</span><span> </span><span>System</span><span>;</span></div></div><div><div><div>2</div></div><div><span>using</span><span> </span><span>SpeechLib</span><span>;</span></div></div><div><div><div>3</div></div><div><span>using</span><span> </span><span>System</span><span>.</span><span>Threading</span><span>;</span></div></div><div><div><div>4</div></div><div>\n</div></div><div><div><div>5</div></div><div><span>namespace</span><span> </span><span>Speak</span></div></div><div><div><div>6</div></div><div><span>{</span></div></div><div><div><div>7</div></div><div><span>    </span><span>class</span><span> </span><span>Speak</span></div></div><div><div><div>8</div></div><div><span><span>    </span></span><span>{</span></div></div><div><div><div>9</div></div><div><span><span>        </span></span><span>///</span></div></div><div><div><div>10</div></div><div><span><span>        </span></span><span>/// The main entry point for the application.</span></div></div><div><div><div>11</div></div><div><span><span>        </span></span><span>///  [STAThread]</span></div></div><div><div><div>12</div></div><div><span>        </span><span>static</span><span> </span><span>void</span><span> </span><span>Main</span><span>(</span><span>string</span><span>[] </span><span>args</span><span>)</span></div></div><div><div><div>13</div></div><div><span><span>        </span></span><span>{</span></div></div><div><div><div>14</div></div><div><span>            </span><span>SpeechVoiceSpeakFlags</span><span> </span><span>flags</span><span> </span><span>=</span><span> SpeechVoiceSpeakFlags</span><span>.</span><span>SVSFlagsAsync</span><span>;</span></div></div><div><div><div>15</div></div><div><span>            </span><span>SpVoice</span><span> </span><span>v</span><span> </span><span>=</span><span> </span><span>new</span><span> </span><span>SpVoice</span><span>()</span><span>;</span></div></div><div><div><div>16</div></div><div><span>            </span><span>if</span><span>( args</span><span>.</span><span>Length </span><span>&gt;</span><span> </span><span>0</span><span> )</span></div></div><div><div><div>17</div></div><div><span><span>            </span></span><span>{</span></div></div><div><div><div>18</div></div><div><span><span>                </span></span><span>v</span><span>.</span><span>Speak</span><span>(args[</span><span>0</span><span>]</span><span>,</span><span> flags)</span><span>;</span></div></div><div><div><div>19</div></div><div><span><span>            </span></span><span>}</span></div></div><div><div><div>20</div></div><div><span>            </span><span>else</span></div></div><div><div><div>21</div></div><div><span><span>            </span></span><span>{</span></div></div><div><div><div>22</div></div><div><span><span>                </span></span><span>v</span><span>.</span><span>Speak</span><span>(</span><span>\"Please specify what you would like me to say.\"</span><span>,</span><span> flags )</span><span>;</span></div></div><div><div><div>23</div></div><div><span><span>            </span></span><span>}</span></div></div><div><div><div>24</div></div><div><span><span>            </span></span><span>v</span><span>.</span><span>WaitUntilDone</span><span>(Timeout</span><span>.</span><span>Infinite)</span><span>;</span></div></div><div><div><div>25</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>26</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>27</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div>\n<p>Basically all you need is the code above and the Interop.SpeechLib.dll file,\nwhich provides access to the speech utilities. For completeness (and since I\nhad some trouble finding the DLL), I put a copy of the file up on here.\nThis program basically just echoes back whatever string you pass in at the\ncommand line, so to get the scheduling working, I just used Windows Task\nScheduler. I scheduled a task to run every hour ever day between 8am and 10pm\n(check the advanced settings of the Task Scheduler), then pointed the task to\nthe compiled program, passing it the string I want it to say as the argument.\nSimple. And it works. I still smile every time one of the office computers\nsays, \u201cIt is time to check Blackboard.\u201d</p><img src=\"http://feed.tylerbutler.com/link/18607/17246018.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-10-16T05:25:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246018.gif"
        },
        {
            "id": "https://tylerbutler.com/getting-rich/",
            "url": "http://feed.tylerbutler.com/link/18607/17246019/getting-rich",
            "title": "Getting Rich",
            "content_html": "<p>I came across a link to this story on Slashdot. I always enjoy reading Paul\nGraham, because he writes quite simply, but obviously has the technical\nknowledge and experience to write on the topics he does. This particular\narticle was a brief analysis of trends in the market during the DotCom Bubble\nand talks a little bit about the future based on some of the market trends and\ntechniques from that time period. A good read, and it gives me hope that maybe\nI can still get rich. After all:</p>\n<blockquote>\n<p>I have no illusions about why nerd culture is becoming more accepted. It\u2019s\nnot because people are realizing that substance is more important than\nmarketing. It\u2019s because the nerds are getting <a href=\"https://www.paulgraham.com/nerdad.html\">rich</a>. But that is not going\nto change.</p>\n</blockquote>\n<p>Now, I don\u2019t think I\u2019m overly hung-up on \u201cgetting rich,\u201d but it sure would be\nnice not to have to worry about how much I\u2019m paying for food and whether or\nnot I can afford rent this month. Opposed to that, rich sounds pretty nice. If\nnot rich, at least \u201ccomfortable.\u201d I also liked the quote about dressing\ninformally:</p>\n<blockquote>\n<p>Dressing up is not so much bad in itself. The problem is the receptor it\nbinds to: dressing up is inevitably a substitute for good ideas. It is no\ncoincidence that technically inept business types are known as \u201csuits.\u201d Nerds\ndon\u2019t just happen to dress informally. They do it too consistently.\nConsciously or not, they dress informally as a prophylactic measure against\nstupidity.</p>\n</blockquote>\n<p>So true, so true! While I fully understand the importance of appearance,\npeople seem to miss the seemingly obvious fact that even underdressed people\ncan be very talented and have good ideas. I have found in my IPRO that while\npeople need direction and leadership, they also need freedom and informality.\nThat way they can get their work done on their own terms. Frankly, as a\nleader, it shouldn\u2019t matter how the work gets done (within reason, of course),\nas long as it gets done. Obviously there are limits to this (for example, I\nrequire that students follow a standard comment format when writing their\ncode), but the idea is that most <strong>smart</strong> people work better when they can\nwork on their own terms. I have had managers argue with me about this, and I\nhave decided that dumb people exist, and that if you require someone else to\ntell you how to get your work done, you must also be dumb. It is against my\npolicy to work with dumb people. FInally, I really like what Graham says\nabout young people:</p>\n<blockquote>\n<p>A 26 year old may not be very good at managing people or dealing with the\nSEC. Those require experience. But those are also commodities, which can be\nhanded off to some lieutenant. The most important quality in a CEO is his\nvision for the company\u2019s future. What will they build next? And in that\ndepartment, there are 26 year olds who can compete with anyone.</p>\n</blockquote>\n<p>You better believe it. While I do my best to defer to my elders, I don\u2019t think\nthe fact that they are 20 years older than I is a default reason for them to\nmake better decisions than I do. And frankly, I <strong>do</strong> know a lot more about\nsome topics than they do. Consustently, however, I get little or no respect\nfrom people just because I am young. On the other hand, I am lucky in that I\nhave several older people who I deeply respect that also seem to respect me\nand my abilities (Dr. Sun, my friend Patrick). For the rest of you who think\nI\u2019m too young to be any good at anything, how about reading a little bit of\nthe Bible:</p>\n<blockquote>\n<p>Don\u2019t let anyone look down on you because you are young, but set an example\nfor the believers in speech, in life, in love, in faith and in purity.</p>\n<p><a href=\"http://www.biblegateway.net/cgi-bin/bible?passage=1TIM+4:12&amp;language=english&amp;version=NIV&amp;showfn=on&amp;showxref=on\">1 Timothy 4:12</a></p>\n</blockquote>\n<p>Take <strong><em>that!</em></strong></p><img src=\"http://feed.tylerbutler.com/link/18607/17246019.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-09-30T03:24:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246019.gif"
        },
        {
            "id": "https://tylerbutler.com/firefox-extensions-updated/",
            "url": "http://feed.tylerbutler.com/link/18607/17246020/firefox-extensions-updated",
            "title": "Firefox Extensions (Updated)",
            "content_html": "<p>I have quite a few Firefox extensions that I find extremely useful, so I\nthought I\u2019d share them.</p>\n<ul>\n<li>Firesomething: <a href=\"http://www.cosmicat.com/extensions\">http://www.cosmicat.com/extensions</a></li>\n<li>Adblock: <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fadblock.mozdev.org%2F\">http://adblock.mozdev.org/</a></li>\n<li>Tabbrowser: <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwhite.sakura.ne.jp%2F~piro%2Fxul%2F_tabextensions.html.en\">http://white.sakura.ne.jp/~piro/xul/_tabextensions.html.en</a></li>\n<li>GMail Notifier: <a href=\"http://www.nexgenmedia.net/extensions/\">http://www.nexgenmedia.net/extensions/</a></li>\n<li>Allow Right-Click: <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fextensions.roachfiend.com%2Findex.php\">http://extensions.roachfiend.com/index.php</a></li>\n<li>User Agent Switcher: <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.chrispederick.com%2Fwork%2Ffirefox%2Fuseragentswitcher%2F\">http://www.chrispederick.com/work/firefox/useragentswitcher/</a></li>\n<li>WeatherFox: <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fweatherfox.mozdev.org%2F\">http://weatherfox.mozdev.org/</a></li>\n<li>Dictionary Search: <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fdictionarysearch.mozdev.org%2F\">http://dictionarysearch.mozdev.org/</a></li>\n<li>Target Alert: <a href=\"http://www.bolinfest.com/targetalert/\">http://www.bolinfest.com/targetalert/</a></li>\n<li>Mozilla Calendar: <a href=\"https://www.mozilla.org/projects/calendar/\">https://www.mozilla.org/projects/calendar/</a></li>\n<li>Foxy Tunes: <a href=\"https://www.iosart.com/foxytunes/firefox/\">https://www.iosart.com/foxytunes/firefox/</a></li>\n<li>Cute Menus: <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fcute.mozdev.org%2F\">http://cute.mozdev.org/</a></li>\n<li>Disable Targets for Downloads: <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.cusser.net%2F\">http://www.cusser.net/</a></li>\n<li>Download Manager Tweak: <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fdmextension.mozdev.org%2F\">http://dmextension.mozdev.org/</a></li>\n</ul>\n<hr />\n<p><strong>Update 09/22/2004</strong></p>\n<p>OK, so the new version of Firefox (1.0PR) just isn\u2019t cooperating with\nTabBrowser Extensions and pop-ups. I want my pop-ups to appear in new tabs,\nbut I don\u2019t want all of them blocked - especially in GMail. Despite adding the\nGMail domain to the Exceptions list in the Firefox pop-up blocker, things\nstill won\u2019t work. I think the problem is with TabBrowser Extensions, since\ndisabling it made everything work again. Anyway, in the meantime, I have tried\nto find a few other smaller extensions that will emulate the TabBrowser\nExtensions functionality to get around this. Here\u2019s what I\u2019m using right now.</p>\n<ul>\n<li>Tabbrowser Preferences: <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.pryan.org%2Fmozilla%2Fsite%2FTheOneKEA%2Ftabprefs%2F\">http://www.pryan.org/mozilla/site/TheOneKEA/tabprefs/</a></li>\n<li>TabX: <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fextensionroom.mozdev.org%2Fmore-info%2Ftabx\">http://extensionroom.mozdev.org/more-info/tabx</a></li>\n<li>Tab Duplicator: <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.twannos-extensions.tk%2F\">http://www.twannos-extensions.tk/</a></li>\n</ul>\n<p>One minor aesthetic problem is with TabX. It just puts simple X\u2019s for close\nbuttons, unlike the nice looking red buttons that TBE puts there. Oh well,\nbeggars can\u2019t be choosers, right? I just hope that TBE doesn\u2019t cause these\nproblems when a new version is released.</p><img src=\"http://feed.tylerbutler.com/link/18607/17246020.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-09-13T23:06:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246020.gif"
        },
        {
            "id": "https://tylerbutler.com/tolls-and-cameras/",
            "url": "http://feed.tylerbutler.com/link/18607/17246021/tolls-and-cameras",
            "title": "Tolls and Cameras",
            "content_html": "<p>Lots to talk about in this rant. I first heard of the Illinois Governor\u2019s plan\nto increase tolls in Illinois one day when I was driving to work. And this\nisn\u2019t a small increase, either \u2014 the <a href=\"https://www.google.com/search?q=cache:B6k2O8uaf5sJ:www.suntimes.com/output/news/cst-nws-toll26.html&amp;hl=en\">tolls are doubling</a>! Unless you get\nan IPASS, of course. The solution, obviously, is to get an IPASS.\nUnfortunately, that in and of itself presents a bit of a problem. You see,\nIPASS tracks you. That\u2019s my biggest beef with it. I understand the argument\nthat it \u201cmakes things faster\u201d and reduces congestion, but it also records\n<strong>where I go</strong>. Check the <a href=\"https://www.illinoistollway.com/portal/page?_pageid=53,34586,53_34725:53_34734&amp;_dad=portal&amp;_schema=PORTAL\">FAQ </a>at their website. One part reads:</p>\n<blockquote>\n<p>I-PASS users can log onto <a href=\"http://www.getipass.com\">www.getipass.com</a> or link to the online maintenance\nfunction through the general Illinois Tollway Web site at\n<a href=\"http://www.illinoistollway.com\">www.illinoistollway.com</a> to update credit card information, add a new vehicle\nto the account, or <strong>even check on recent I-PASS transactions.</strong></p>\n</blockquote>\n<p>This bugs me. I have no intention of ever getting arrested or anything, but if\nfor some reason I was, I\u2019m fairly certain my IPASS records could be pulled and\nused against me. This makes me angry. And despite the fact that the Tollway\nAuthority says they don\u2019t track users speeds to issue tickets, I don\u2019t trust\nthem. Didn\u2019t RealNetworks claim their player wasn\u2019t spyware at one point?\nAnyway, you won\u2019t see me buying an IPASS.</p>\n<p>The day after I learned about this I decided to finally go and get my Chicago\nCard, which can be used as a fare card on CTA busses and trains. Since I\u2019m a\npart-time student now, I don\u2019t get a U-PASS, and I ride the train enough to\nwarrant getting one. But that made me realize the similarities between the\nToll situation and the Chicago Card. You no longer get a 10% bonus in funds\nwhen you add 10 or more dollars to your regular CTA fare card \u2014 you only get\nthe bonus when you have a Chicago Card. But the Chicago Card is tied to your\nname, so tracking is possible. With the regular fare card, they can track the\nuse of the card, but they can\u2019t tie it to any one person. That\u2019s the way I\nlike it. I submitted a question to the CTA people asking about the privacy and\ninformation collection policies of the Chicago Card, and here\u2019s the response I\ngot:</p>\n<blockquote>\n<p>Dear Mr. Butler:</p>\n</blockquote>\n<blockquote>\n<p>Thank you for your inquiry. The CTA does not track the use of these cards by\nany individual unless requested by that individual. The Chicago Card Plus does\nprovide its users with an online record of their usage, but each customer has\na password of his or her own selection to access the information. The regular\nChicago Card does not offer this online service.</p>\n</blockquote>\n<blockquote>\n<p>If a law enforcement agency wishes to review our records, it can do so with\nthe official, lawful use of a warrant, court order, etc.</p>\n</blockquote>\n<blockquote>\n<p>Thank you for your interest.</p>\n</blockquote>\n<blockquote>\n<p>Sincerely,</p>\n</blockquote>\n<blockquote>\n<p>Terry Levin<br />\nCTA Customer Service</p>\n</blockquote>\n<p>Unfortunately, this doesn\u2019t really answer my question. So no tracking is done\n\u201cunless requested?\u201d But what if law enforcement has a warrant to pull their\nrecords? Is Mr. Levin saying the information doesn\u2019t exist (i.e. users aren\u2019t\ntracked), or that it exists and isn\u2019t used for any other purpose other than\nfor posterity\u2019s sake? I don\u2019t know. But it looks like no Chicago Card, Plus or\nnot, for me.</p>\n<p>Finally, I came across <a href=\"https://yro.slashdot.org/article.pl?sid=04/09/09/2217232&amp;tid=158&amp;tid=103&amp;tid=1&amp;tid=17\">this story</a> on Slashdot. Apparently the city is\nconsidering rolling out a whole bunch of cameras in the city and tying them\ninto the 911 call center. All good, in theory, right? It\u2019ll help deter crime,\nright? I don\u2019t think so. Why not just put up more street lights? A bright\nlight is the biggest deterrant to random crime. But that would be too simple,\nI guess. And lights can\u2019t track you.</p>\n<p>Do I sound paranoid? I am. I don\u2019t trust the government. They\u2019ve given me no\nreason to. And government is universally corrupt, be it a national government,\na local government, or even a school administration. So it looks like I\u2019ll be\npaying a lot more than the rest of you for the same services. Yes, it\u2019s my\nchoice, but the government shouldn\u2019t be allowed to charge me for my freedom.</p>\n<p>For what it\u2019s worth.</p><img src=\"http://feed.tylerbutler.com/link/18607/17246021.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-09-11T06:13:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246021.gif"
        },
        {
            "id": "https://tylerbutler.com/the-right-to-read/",
            "url": "http://feed.tylerbutler.com/link/18607/17246022/the-right-to-read",
            "title": "The Right to Read",
            "content_html": "<p>The article is in the form of a sort of sci-fi story, and is only one of\nseveral articles (I think) that were published by the <a href=\"http://www.acm.org\">ACM</a>. I\u2019m not the\nbiggest fan of Stallman (he\u2019s far too big a hippie for my tastes), but I think\nthe article\u2019s use of extremes illustrates some excellent points about the\ntendency of government to get all up in our electronic business. Anyway, I\nenjoyed it. At first glance, it seems very outlandish, but when you think\nabout it and read the author\u2019s notes, it becomes clear that the sad future\nisn\u2019t far away.</p><img src=\"http://feed.tylerbutler.com/link/18607/17246022.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-09-01T04:15:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246022.gif"
        },
        {
            "id": "https://tylerbutler.com/bear-beer-guzzler/",
            "url": "http://feed.tylerbutler.com/link/18607/17246023/bear-beer-guzzler",
            "title": "Bear Beer Guzzler",
            "content_html": "<p><a href=\"http://patrick.wagstrom.net/\">Patrick</a> sent me this story. What a cool bear! Does anyone have his\naddress? I\u2019d like to invite him to my apartment-warming party. Betcha he does\nan awesome keg-stand. He\u2019s probably been arrested though \u2014 he\u2019s well under the\nlegal drinking age. (Yuk yuk).</p>\n<p><a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.cnn.com%2F2004%2FUS%2FWest%2F08%2F18%2Fbear.beer.reut%2Findex.html\">http://www.cnn.com/2004/US/West/08/18/bear.beer.reut/index.html</a></p>\n<blockquote>\n<p>A black bear was found passed out at a campground in Washington state\nrecently after guzzling down three dozen cans of a local beer, a campground\nworker said on Wednesday.</p>\n</blockquote>\n<blockquote>\n<p>\u201cWe noticed a bear sleeping on the common lawn and wondered what was going on\nuntil we discovered that there were a lot of beer cans lying around,\u201d said\nLisa Broxson, a worker at the Baker Lake Resort, 80 miles (129 km) northeast\nof Seattle.</p>\n</blockquote>\n<blockquote>\n<p>The hard-drinking bear, estimated to be about two years old, broke into\ncampers\u2019 coolers and, using his claws and teeth to open the cans, swilled down\nthe suds.</p>\n</blockquote>\n<blockquote>\n<p>It turns out the bear was a bit of a beer sophisticate. He tried a mass-market\nBusch beer, but switched to Rainier Beer, a local ale, and stuck with it for\nhis drinking binge.</p>\n</blockquote>\n<blockquote>\n<p>Wildlife agents chased the bear away, but it returned the next day, said\nBroxson.</p>\n</blockquote>\n<blockquote>\n<p>They set a trap using as bait some doughnuts, honey and two cans of Rainier\nBeer. It worked, and the bear was captured for relocation.</p>\n</blockquote><img src=\"http://feed.tylerbutler.com/link/18607/17246023.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-08-19T13:20:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246023.gif"
        },
        {
            "id": "https://tylerbutler.com/the-big-move-part-1/",
            "url": "http://feed.tylerbutler.com/link/18607/17246024/the-big-move-part-1",
            "title": "The Big Move (Part 1)",
            "content_html": "<p>I have been looking for a new apartment for what seems like forever. I started\nout with 5 other roommates, but when they decided to go into a house that just\nwasn\u2019t up to my standards, I struck out on my own and started looking for one-\nbedroom places. Unfortunately, the search was tough. Many places I looked at\nwere either in fairly bad shape or just too expensive for the size. I was\ngetting pretty discouraged, especially since my financial situation isn\u2019t\nexactly great and time was running out.</p>\n<p>On Saturday of last week (August 7) I looked at a 2 1/2 room studio apartment\non Hamilton Avenue, close to the corner of 35th and Archer. I liked what I saw</p>\n<ul>\n<li>and I liked the price, too. It was a little further from campus than I had\nhoped (about a 15-minute drive, depending on the lights), but it had beautiful\nhardwood floors, a large walk-in closet, and was in pretty good shape. It also\nsmelled great, which, considering some of the other places I looked at, was a\ndefinite plus. The landlord was understanding of my financial situation, and I\nexplained to him that I wouldn\u2019t be able to pay until later the following week\nbecause <a href=\"https://tylerbutler.com/2004/08/i-hate-banks/\">my bank is stupid</a>. That was fine with him, so I crossed my\nfingers and waited until Friday so my bank would finally ackowledge that I had\nthe necessary funds in my account (have I mentioned yet that <a href=\"https://tylerbutler.com/2004/08/i-hate-banks/\">I despise\nbanks?</a>).</li>\n</ul>\n<p>Thankfully (and miraculously), my bank cleared the funds just before I needed\nto make the withdrawal for the security deposit and first month\u2019s rent. I\nheaded over to the landlord\u2019s office, got everything in order, and had the\nkeys in my hand in less than an hour. It felt really good to have the keys in\nmy hand. I grabbed Alex\u2019s camera and headed over to get some pictures before I\ndestroyed the place with my stuff. Some of the best ones are here. Others are\navailable in the download section. Click on the photos below to get an\neven bigger photo.</p><img src=\"http://feed.tylerbutler.com/link/18607/17246024.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-08-18T01:22:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246024.gif"
        },
        {
            "id": "https://tylerbutler.com/i-hate-banks/",
            "url": "http://feed.tylerbutler.com/link/18607/17246025/i-hate-banks",
            "title": "I Hate Banks",
            "content_html": "<p>I hate banks. I despise them. I wish a plague of death and disease upon them.\nThe concept of a bank seems simple, and indeed, useful, at least at first.\nPeople have money that they want to secure somehow so their money doesn\u2019t get\nstolen from under their mattress or out of their wallets. So they give their\nmoney to an <a href=\"http://www.fdic.gov/\">insured</a> \u201ccorporation\u201d of sorts that holds their money and\nkeeps a record of how much they have. For large transactions, the account\nholder can write a check for the amount of money they want to transfer to\nanother party and sign it. The \u201ccorporation,\u201d (aka the bank) honors the\nrequest to transfer and handles the details so that the account holder doesn\u2019t\nhave to. This is simple, right? This is \u201cprotecting ourselves,\u201d right?</p>\n<p>Maybe, maybe not. In my experience, banks are nothing but hassle, especially\nfor people like me that have very limited funds available and need to bleed\nour accounts dry about every week or so. <a href=\"http://www.iit.edu\">Illinois Tech</a> pays me every two\nweeks with a check that I deposit to my checking account at <a href=\"http://www.lakesidebank.com\">Lakeside\nBank</a>. These checks are <strong>not</strong> out of state (obviously); In fact, they\u2019re\ndrawn from Lakeside Bank! <em>So why does it take a <strong>week</strong> for my deposit to\nshow up in my account?</em></p>\n<p>This was the question I set out to answer a couple of weeks ago. The problem\narose when I made an electronic bill payment after making a deposit that my\nonline account information reported had been deposited and was available. The\nbank charged me an overdraft fee, claiming that the deposited funds were on\nhold, even though the account screen online clearly said that the funds were\navailable. I called the bank and was given the basic run-around:</p>\n<p>\u201cThis person is who you need to talk to.\u201d</p>\n<p><em>Phone transfer. Wait for a while.</em></p>\n<p>\u201cNo, it\u2019s so and so.\u201d</p>\n<p><em>Another transfer. Doesn\u2019t go through. Back to operator.</em></p>\n<p>\u201cI\u2019m sorry, she\u2019s out of town for\u2026 ummm\u2026 looks like forever.\u201d</p>\n<p><em>\u201cIs there anyone else I can speak with?\u201d</em></p>\n<p>\u201cUmmmm, no. You\u2019re screwed.\u201d</p>\n<p><em>Can you help me at all?</em></p>\n<p>\u201cNo. That\u2019s not my job. I just transfer phone calls. I am here to make your\nlife miserable.\u201d</p>\n<p><em>\u201cWell, tell your supervisor I said you\u2019re doing an excellent job.\u201d</em></p>\n<p>\u201cUmmm, OK.\u201d</p>\n<p>After that entirely useless exchange, I headed over to see if I could have\nbetter luck in person. I did, sort of. I got thrown around a bit from person\nto person, but finally one of the bankers helped me. She explained that these\nchecks were not being deposited in my account immediately because I was a \u201cnew\ncustomer.\u201d New customer?! I\u2019ve been banking there for <strong>four years!</strong> And\nseriously, Illinois Tech, who\u2019s writing me the checks, hasn\u2019t bounced a check\nin who-knows-how-long, so what are they worried about? I don\u2019t know. I hate to\nsay it, but I gave up. My thirty dollars is gone forever. It just wasn\u2019t worth\nit. I guess I\u2019ll try to set up direct deposit. But with my luck, they\u2019ll mess\nit up and I\u2019ll lose the money permanently, or have to wait even longer to have\naccess to it. I hate banks.</p><img src=\"http://feed.tylerbutler.com/link/18607/17246025.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-08-17T06:18:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246025.gif"
        },
        {
            "id": "https://tylerbutler.com/a-short-history-of-video-games/",
            "url": "http://feed.tylerbutler.com/link/18607/17246026/a-short-history-of-video-games",
            "title": "A Short History of Video Games",
            "content_html": "<p><a href=\"http://www.1up.com\">1Up.com</a> is running a story called <a href=\"http://www.1up.com/do/feature?cId=3116290\">The Essential 50</a>, which lists what\nthey consider to be the 50 most essential video games. It\u2019s an interesting\nhistory lesson, since every entry has a short history of the game, the\ninnovations it had, and the impact it had on the industry and video game\ndevelopment. Interestingly, several games\u2019 major impact was not technology or\ninnovation, as I would have imagined, but rather political and/or social.\nInteresting stuff.</p><img src=\"http://feed.tylerbutler.com/link/18607/17246026.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-08-16T12:15:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246026.gif"
        },
        {
            "id": "https://tylerbutler.com/american-airlines-apologizes-for-your-flight-delay/",
            "url": "http://feed.tylerbutler.com/link/18607/17246027/american-airlines-apologizes-for-your-flight-delay",
            "title": "American Airlines Apologizes For Your Flight Delay",
            "content_html": "<p>When I received an email with the subject \u201cAmerican Airlines Apologizes For\nYour Flight Delay,\u201d I got a little excited. \u201cYes! They\u2019ll probably offer me a\nfree flight or some frequent flyer miles or something! Then my hours of\nmeaningless waiting at the Seattle-Tacoma terminal won\u2019t be for nought!\u201d Alas,\nit was not to be. Here\u2019s the email:</p>\n<blockquote>\n<p>Dear Tyler Butler,</p>\n<p>On two separate occasions during the past week, we experienced technical\ndifficulties with our computer systems, causing some flights to be delayed. We\nunderstand that you traveled during both periods and likely were doubly\ninconvenienced.</p>\n<p>Please accept our sincere apologies for any inconvenience you may have\nexperienced, and rest assured that we are working diligently to take\ncorrective actions. We greatly value your business, appreciate your\nunderstanding and look forward to delivering the service you deserve in the\nnear future.</p>\n<p>Sincerely,</p>\n<p>Dan Garton<br />\nExecutive Vice President Marketing<br />\nAmerican Airlines</p>\n</blockquote>\n<p>I suppose I was dumb to assume that there would be some sort of incentive for\nme to continue my association with their airline included in the email, but\nthere wasn\u2019t. As I thought about it more, I realized that flight delays are\njust something you have to deal with when you fly, and the fact that I was\nexpecting to get something out of my suffering was a by-product of a\nsuffocating atmosphere of \u201ccustomer-is-always-right\u201d consumerism. So, though I\ninitially wanted to call them and give them a chance to offer me something, I\ndecided to keep my mouth shut.</p>\n<p>Maybe I did get something after all?</p><img src=\"http://feed.tylerbutler.com/link/18607/17246027.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-08-14T03:27:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246027.gif"
        },
        {
            "id": "https://tylerbutler.com/word-of-the-day-cruft/",
            "url": "http://feed.tylerbutler.com/link/18607/17246028/word-of-the-day-cruft",
            "title": "Word of the Day: Cruft",
            "content_html": "<p>I came across several different articles regarding a wide variety of topics,\nbut they all center around Apple\u2019s OS, user interface design, and the concept\nof cruft. I found them to be quite interesting, and I learned a lot. I think\nI\u2019m going to force the IPRO 305 students to read a few of them before they\nstart redesigning the <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.hawktour.net\">HawkTour</a> interface.</p>\n<h2><a href=\"https://tylerbutler.com#when-good-interfaces-go-crufty\"></a><a href=\"http://mpt.mirror.theinfo.org/stories/storyReader$374\">When Good Interfaces Go Crufty</a></h2>\n<p>A good introduction to the basic concept of cruft, which, as the article\nstates, should be familiar to any programmer worth his salt, especially those\ninvolved in UI design. Unfortunately, few programmers, let alone computer\nusers, realize what sort of cruft they\u2019ve become accustomed to through regular\ncomputer use.</p>\n<h2><a href=\"https://tylerbutler.com#the-art-of-the-parlay\"></a><a href=\"https://daringfireball.net/2004/08/parlay\">The Art of the Parlay</a></h2>\n<p>An interesting discussion of the common belief that Apple could be Microsoft\nif they\u2019d made some different decisions in the 80\u2019s. An interesting history\nlesson, and includes some comparisons of the Apple and Microsoft approach to\nproduct design.</p>\n<h2><a href=\"https://tylerbutler.com#in-the-beginning-was-the-command-line\"></a><a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fjoesacher.com%2Fdocuments%2Fcommandline.php%3FPage%3DETRE\">In the Beginning was the Command Line</a></h2>\n<p>A historical look at BeOS and how that OS was an attempt to attack cruft. Too\nbad it failed to become popular (for various reasons).</p><img src=\"http://feed.tylerbutler.com/link/18607/17246028.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-08-14T00:37:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246028.gif"
        },
        {
            "id": "https://tylerbutler.com/ebay-scams-are-funny/",
            "url": "http://feed.tylerbutler.com/link/18607/17246029/ebay-scams-are-funny",
            "title": "eBay Scams Are Funny!",
            "content_html": "<p>eBay used to be safe, and for the most part, I suppose it still is. The honest\npeople in the world still outnumber the dishonest ones, and I hope it stays\nthat way forever. But anyone who has used eBay a fair amount has gotten\nscammed at least once or twice, or at the very least, received emails from\npeople fishing for a gullible seller/buyer to scam. I myself paid for a\nrelatively expensive item that was never sent to me. Luckily, in that case, I\nwas protected because I went through eBay and they refunded my money. Of\ncourse, I was out a few hundred bucks for about three months while I went\nthrough their fraud process. That pretty much sucks for someone on a\nshoestring budget like me (though one has to wonder just how shoestring my\nbudget is if I can spend hundreds of dollars on eBay\u2026 yup, I\u2019m enigmatic\nlike that\u2026).</p>\n<p>Anyway, I saw a story on Slashdot about an eBay scammer, and eventually found\nthis site, <a href=\"http://www.p-p-p-powerbook.com/\">P-P-P-Powerbook.com</a>, that chronicles a relatively recent\n(April/May 2004) scam story. It\u2019s really really funny, and there are some\nawesome pictures to go with it. I have the PDF document shared on here, but\nI\u2019d really recommend checking the site as well.</p>\n<p>It\u2019s tough to explain quickly what exactly happened. I guess the really\nimportant thing is that the seller, who was trying to sell an Apple Powerbook,\nwas contacted by a scammer who wanted to buy the Powerbook through an Escrow\nsite. Eventually the seller decided to scam this scammer, and eventually sent\nhim a P-P-P-Powerbook, picturres of which are below. Anyway, the story is\nquite long and involved, but very humorous, so I\u2019d recommend checking it out.\nSome of my favorite picutres are below (there are more in the PDF and at the\nsite). Oh, and there\u2019s also a hilarious site that offers <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fbu.dotsomething.net%2Fpowerbook%2Fppppstore.html\">P-P-P-Powerbooks for\nsale</a>. It looks pretty legitimate\u2026</p>\n<p>Get the PDF story here.</p>\n<img src=\"http://feed.tylerbutler.com/link/18607/17246029.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-07-23T05:16:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246029.gif"
        },
        {
            "id": "https://tylerbutler.com/dropboxxer/",
            "url": "http://feed.tylerbutler.com/link/18607/17246030/dropboxxer",
            "title": "DropBoxxer",
            "content_html": "<p>I am a mobile guy. I use my laptop on the road a lot, and at home I have three\ndifferent computers (desktop, server, media box). On top of all that I use\n<a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fomega.cs.iit.edu%2F\">Omega</a> to host some files and such for easy mobile access. I have\neverything networked together using windows file sharing, and for most part,\neverything wors flawlessly. The problem is, I often need to copy or move files\nfrom one remote location to another. Simple, right? Just drag and drop!\nUnfortunately, often times the windows I need to drag to aren\u2019t readily\nvisible, and it is relatively time consuming to drag down to the taskbar, wait\nfor the window to become active, then drag back up to the window to drop the\nfile.</p>\n<p>If Windows would let me drop items on the taskbar, it\u2019d be all good, but since\nit won\u2019t, I decided to make my own application that would allow me faster\naccess to common \u201cdrop\u201d locations.</p>\n<p>I did this in C# using a copy of Visual Studio .NET that I got through\nIllinois Tech\u2019s Academic Alliance program through Microsoft. I\u2019d never used C#\nor .NET before, so I learned as I went.</p>\n<p>DropBoxxer sits in your system tray, and doesn\u2019t take up any screen real\nestate at all until needed. When you select a file and drag it over the left\ncorner (right above the system time) DropBoxxer fade up and in from off\nscreen. There are different \u201cdrop boxes\u201d for various locations, with three\ntypes of icons \u2014 one for local locations, one for remote locations, and one\nfor the Recycle Bin (note that the recycle bin icon doesn\u2019t currently work in\nversion 0.1). Simply drop the file over one of these drop boxes, and the\nprogram copies or moves the file to the drop location. By default, everything\nis copied rather than moved, but simply hold down the Shift key as your drag\nthe file(s) onto the drop box, and the files will be moved rather than copied.\nAs you drag something over a drop box, the location bar will display where the\ncurrent drop box points, in case you forget or need to double check.</p>\n<p>After the job is complete, DropBoxxer fades back down off screen so you\ndon\u2019t have to worry about it any more. Next time you need it, simply drag a\nfile back over and it\u2019ll automatically reappear. To exit the program, simply\nright-click on its task bar icon and select \u201cExit DropBoxxer.\u201d</p>\n<p><strong><em>Notes About Version 0.1</em></strong></p>\n<p>Everything is currently hardcoded, so it\u2019s not a whole lot of use to anyone\nother than me unless you want to get into the source code (included in the\ndownload) to make modifications. I plan to add functionality that will allow\nyou to drag folders onto the drop area to add drop locations, or at the very\nleast provide a menu option to that effect when you right click in the system\ntray. I\u2019d also like to provide some better progress indicators when copying\nlarge files. As it stands right now, you don\u2019t have any indication of what\u2019s\ngoing on or how long the process is going to take.</p>\n<p>Finally, I want to trim the file size down a bit. It\u2019s almost an entire meg\nexecutable, which seems ridiculously large for something as simple as it is.\nProbably has something to do with the image files I store in there\u2026</p>\n<p>You can snag a copy of DropBoxxer Version 0.1 here. The zip contains an\nexecutable and the source code files/resources. The source code is crappy\nright now, but I will clean it up when I add the other functionality. If you\nmake modifications to the code, please write me and let me know. DropBoxxer\nrequires Windows XP (because of the fading and transparency effects), and\nrequires the .NET framework (I know, I know, but seriously, there is no other\nway to do an application that operates in a snazzy way and integrates so\nclosely with Windows. Java? I think not\u2026)</p><img src=\"http://feed.tylerbutler.com/link/18607/17246030.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-07-21T05:02:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246030.gif"
        },
        {
            "id": "https://tylerbutler.com/mailinator-to-the-rescue/",
            "url": "http://feed.tylerbutler.com/link/18607/17246031/mailinator-to-the-rescue",
            "title": "Mailinator to the Rescue!",
            "content_html": "<p>Ricardo sent me this website, <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.mailinator.net\">Mailinator.net</a>. It\u2019s a really cool concept\nfor people who need to sign up for websites once or need to enter an email\naddress on a form for some reason. You don\u2019t need an account - you make up the\nname on the spot, then the account is created automatically when a message is\nreceived. Then you log in, get the message, and leave. The account is\nautomatically deleted later! What a cool concept! Check out their website for\nmore info.</p><img src=\"http://feed.tylerbutler.com/link/18607/17246031.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-07-20T05:58:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246031.gif"
        },
        {
            "id": "https://tylerbutler.com/gmail-a-review-updated/",
            "url": "http://feed.tylerbutler.com/link/18607/17246032/gmail-a-review-updated",
            "title": "GMail: A Review (Updated)",
            "content_html": "<p>When <a href=\"https://www.google.com/\">Google</a> first announced their new GMail service, I was\nrelatively unimpressed. The big deal was the gigabyte of storage. Of course, a\ngig is a lot of storage space, especially when compared to most quotas for\nother web-based email services such as Yahoo and Hotmail (Yahoo has since\nupped its quota to 100 MB) , but I have been using Outlook (I know - many\ndon\u2019t like this program, but I have never had any problems) as a\nmail/contacts/calendar manager for a long time, and I tend to POP my mail.\nThat means I have lots and lots of gigs for mail, because everything just goes\nto my hard drive.</p>\n<p>After doing a little more reading, though, I discovered that GMail actually\nhad a really spiffy interface, was fast, and introduced some really cool ways\nto categorize, sort, and store your email. It makes sense, really. If I am\nGoogle, and I want to introduce a new service, I first stop and think, \u201cWhat\ndo we do really well as a company?\u201d Obviously, in Google\u2019s case, the answer is\nsearching. From there, I start thinking, \u201cEmail is the largest volume of\ninformation most every person in the world has to try and keep organized.\u201d If\nI am Google, and I want to introduce an email service, I\u2019d better be able to\nleverage my strength in the search department to make it exciting. To really\nleverage search capabilities, I need a large volume of email - hence the 1GB\nquota. You see, I think that Google only offers 1GB of space because that is\nwhat is necessary to really make GMail\u2019s other features stand out. Other email\nproviders won\u2019t be able to compete with GMail solely by increasing their\nquotas, because that large volume of information introduces an organizational\nproblem that Google is better suited to solve. I think Google started looking\nat ways they could leverage their search engine on email, and realized that\nthey needed a large email base to be able to provide that, not the other way\naround. All in all, I decided I definitely needed to check it out, so I asked\na guy at work to hook me up with an account.</p>\n<h2><a href=\"https://tylerbutler.com#the-interface\">The Interface</a></h2>\n<p>Well, they weren\u2019t kidding. GMail is fast (though I have\u2019t tried it on a non-\nbroadband connection yet). GMail is spiffy-looking (very minimalistic, but\ndone well). GMail is useable. GMail is just <strong>cool</strong>. As you can see from the\nscreenshot, there really isn\u2019t a whole lot to the interface. Links on the left\nto get to various classifications of email, emails displayed in the middle\nwith the standard checkbox to select them and a star to set them apart from\nother emails (comparable to flags in Outlook), and some \u201caction links\u201d along\nthe top and bottom of the message display. Nothing terribly groundbreaking,\nbut this is email, not rocket science.</p>\n<p>Before I could really take a look at things, though, I needed some emails.\nThat become my first problem. I first set up my @iit.edu account to forward to\nboth my @tylerbutler.com and @gmail.com accounts. I thought this was working -\nbut it wasn\u2019t. In fact, for an entire weekend, I got no emails forwarded from\nmy @iit.edu account, because the stupid webmail IIT uses didn\u2019t properly parse\nthe delimiter between the two addresses (I\u2019ll save that rant for another time,\nI guess). I was confused at not getting any email (save the spam that came in\ndirectly to my @tylerbutler.com account), but I just figured nobody loved me.\nStranger things have happened, after all.</p>\n<p>Anyway, I finally managed to get some email into GMail, and was happy to see\nthat things looked like I expected - sort of. The most exciting thing to me\nabout GMail was the concept of conversations. Each email is displayed in the\ncontext of other emails sent from you back to someone, or from them back to\nyou. For example, if Brad writes me an email, then I respond to him, our\nemails will be grouped and displayed together as a conversation. This makes\nsense, since many times emails follow a threaded conversational format. For\npersonal emails, conversations are great.</p>\n<p>One of the quirks with conversations that I\u2019ve noticed is that they\u2019re\ndisplayed as \u201cBrad, me(2).\u201d This means, of course, that this conversation is\nbetween Brad and me, and that there are two emails in the conversation. But\nwho is Brad? I would much prefer if the last names were listed. I know lots of\npeople, and to me, first names alone don\u2019t help a whole lot for descriptive\npurposes. I have a conversation between myself and two other people, both\nnamed Kyle. GMail displays the conversation as \u201cKyle, Kyle, me.\u201d It\u2019s\nconfusing which Kyle each is referring to. I imagine this could get even more\nconfusing as I get more and more email into my inbox. Also, some of my\nprofessors use Dr. X as their outgoing name. Conversations with these people\nare displayed as \u201cDr., me(3).\u201d This particular quirk consistently makes me\nlaugh, so it\u2019s all good.</p>\n<p>Another problem I have with the GMail interfce is that it doesn\u2019t display full\nemail addresses in the \u201cfrom\u201d field when a name isn\u2019t specified. In the case\nof personal emails, this isn\u2019t usually a problem, but I get a lot of automated\nemails from addresses like <a href=\"https://tylerbutler.commailto:support@domain.com\">support@domain.com</a>. These emails simply display as\nfrom \u201csupport,\u201d while in Outlook they always displayed as\n\u201c<a href=\"https://tylerbutler.commailto:support@domain.com\">support@domain.com</a>.\u201d In this case, I think GMail should opt to display it the\nway Outlook does, and display the email address when a name field isn\u2019t\nspecified.</p>\n<h2><a href=\"https://tylerbutler.com#contact-management\">Contact Management</a></h2>\n<p>GMail does a decent job with its contacts/address book functionality. It\ncontains fields for name, email, and notes, and it provides an import utility\nthat can read Comma-Separated files. I exported my Outlook contacts to a CSV\nfile and easily imported them all into GMail. Interestingly, all the\nextraneous fields were placed into the Notes field, so the data is still\nvisible. I definitely don\u2019t want to lose that information (addresses, instant\nmessage names, even some birthdays), so I am glad that GMail tries to keep it\navailable in some format. Fortunately for me, <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.plaxo.com%2F\">Plaxo</a> handles my address\nbook now, so it\u2019s all backed up and available online anyway.</p>\n<h2><a href=\"https://tylerbutler.com#a-monumental-decision-a-bit-of-a-segue\">A Monumental Decision (a bit of a segue)</a></h2>\n<p>Initially, I thought GMail would be a great supplement to my mobile\nlifestyle \u2014 I could keep mobile copies of all my email, plus test out this new\nconversational mode and see what it was like. So I downloaded <a href=\"http://jaybe.org/info.htm\">Pop Goes the\nGMail</a>, a utility that allows you to fetch your GMail from any POP email\nclient, including Outlook. Unfortunately, the version I downloaded just didn\u2019t\nwork for me (known bug), and I couldn\u2019t find an old version (links that said\nthey were for the older version actually linked to the new one), so I gave up.\nBut that got me thinking - is there really any reason I want to stick with\nOutlook, other than to have access to all my old emails? I thought about the\nother functionality Outlook provides that I use: Contact Management and\nCalendaring. Well, Plaxo takes care of my contact management, and GMail has\ncopies of all the email addresses already, since I uploaded the CSV file. I\u2019ve\nbeen thinking for a long time about switching my calendaring to an online\nformat anyway, since I don\u2019t use Exchange, but I would like to allow my\nparents and other interested people see my schedule. I really wish I could get\niCal for Windows, but since I can\u2019t, I plan to use the calendar on this\nwebsite.</p>\n<p>Between GMail, Plaxo, and Geeklog, I have a total online replacement for\nOutlook! So having made the decision to switch over to GMail completely, I set\nabout making the transition.</p>\n<h2><a href=\"https://tylerbutler.com#the-transition-begins\">The Transition Begins</a></h2>\n<p>Initially, I thought I\u2019d just use Outlook to access my old email. But then I\nstarted thinking that the conversation viewing would be much more useful if I\nha all my old email available. A quick visit to Google produced a link to\n<a href=\"http://www.marklyon.org/gmail/default.htm\">Mark Lyon\u2019s GMail Loader</a>, an application that will forward email from an\nMBOX file to a GMail account. Perfect! Only one problem - it doesn\u2019t support\nPST files, which is what Outlook uses. Mark provides some great links to\nutilities on his site, but the PST -&gt; MBOX converter doesn\u2019t support Outlook\n2003\u2019s PST format - in fact none of the ones I found did. So I was forced to\nimport things folder by folder into Outlook Express, then convert the OE DBX\nfiles into MBX files using the utility Mark linked to on his site,\n<a href=\"http://people.freenet.de/ukrebs/dbxconv.html\">DBXConv</a>. Then, just for good measure, I ran <a href=\"http://www.marklyon.org/gmail/cleanmbox.zip\">MBox Cleaner</a> on the MBX\nfiles. This process is time consuming - especially for my thousands and\nthousands of emails. In fact, I am still working on this part.</p>\n<p>I decided to go ahead and split things up a bit so that I could test the\nupload through GML and make sure things were working. GML uploaded everything\nI gave it fine, but it is kind of slow, and GMail is even slower at displaying\nthe messages after they\u2019re sent. I am sure this has something to do with the\nsorting and scanning (for advertisement targeting, more info below), but it is\nkind of annoying. I am really paranoid, so I keep track of the number of\nemails I uploaded, and I don\u2019t start uploading a new batch until I\u2019ve\nconfirmed that all the mail from the pervious batch arrived. Thus far,\neverything seems to be working fine, albeit a bit slowly.</p>\n<p>As far as Mark\u2019s GML is concerned - it is a nifty little program. Two things,\nthough. Most importantly, the emails that you upload to GMail will be\ntimestamped when they actually arrived at GMail, not when they were initally\nreceived. This is kind of annoying, since I would prefer everything to be in\norder, but I don\u2019t think it\u2019s Mark\u2019s fault - I think it\u2019s a limitation in the\nway he has to interface with GMail right now. Maybe once GMail goes live,\nthere will be a better way to import old email. I am keeping my imported mail\nunder a special label just in case I want to delete it and reimport it later.</p>\n<p>Second, GML is written in Python, which is <strong>really cool</strong>. Despite this,\nthough, it uses TK instead of wxPython - what is Mark thinking?!</p>\n<p>Well, let\u2019s get back to the GMail specific stuff, before I lose those of you\ncame here for a GMail review completely.</p>\n<h2><a href=\"https://tylerbutler.com#organizing-your-mail\">Organizing Your Mail</a></h2>\n<p>GMail offers great search capabilities, yes, but you\u2019ll probably want to be\nable to sort your mail in some way. Traditionally, this has been done with\nFolders, which mirror the file system setup by allowing you to place emails in\na heirarchical structure. GMail\u2019s sorting method is done through Labels. Every\nmessage can be labelled multiple times, and then recalled easily by sorting\nbased on the labels. It\u2019s very cool, since there are many times when emails\nfit into one or more categories. As an example of what labels are like, think\nabout this: A Ford Taurus is a car, but it is also a vehicle. If I search for\n\u201ccars,\u201d I want the Taurus to be found. But if I search for \u201cvehicles,\u201d I want\nto see the Cadillac Escalade and the Taurus. Just because the Taurus is a car\ndoesn\u2019t mean it stopped being a vehicle. Labels allow this multiple\nclassification, while traditional folders do not.</p>\n<p>It is possible to delete mail from GMail, but it is discouraged. \u201cArchiving\u201d\nis the preferred way of getting emails out of your inbox. Archived mail\ndoesn\u2019t display in the inbox, but can be labelled, and it always can be found\nby selecting the \u201cAll Mail\u201d category. If you\u2019d prefer to delete messages, you\ncan move them to the Trash (More Actions -&gt; Move to Trash), which is emptied\nautomatically every 30 days, or you can manually empty it if you\u2019d prefer.</p>\n<hr />\n<p>As is to be expected, GMail\u2019s search functionality is very good. It\u2019s also\nfast, especially when compared to Outlook\u2019s horribly slow search function.\nSearching email is pretty easy, though I wish the \u201cSearch the Web\u201d wasn\u2019t so\nclose to the Search Mail button. If you prefer to further customize and refine\nyour search, simply expand the search options box and customize away.</p>\n<h2><a href=\"https://tylerbutler.com#filters-and-spam\">Filters and Spam</a></h2>\n<p>If you want to filter incoming mail automatically, GMail can do it. It\u2019s a\npretty standard filtering system that allows you to label email based on\ncontent, sender, or other information. Filters are especially useful for\nmailing list subscribers. You can choose to have email automatically archived\nafter it is filtered, or you can choose to have it kept in your inbox. Each\nLabel on the left shows how many unread emails are contained in it, so you can\nquickly tell if a new filtered email arrived even if you choose to have it\nautomatically archived. (A note on the \u201carchive\u201d term. I understand what\nGoogle is trying to imply, but I think the archive term is misleading. When I\nthink archive, I think, \u201cSaved somewhere, but a pain to get to.\u201d In GMail this\nsimply isn\u2019t the case. Archived email is as fast to access and find as other\nmail, it simply doesn\u2019t sit in your inbox any more.) One really nice thing\nabout the filter is that it lets you \u201crun\u201d it on the email already in your\naccount so that you can make sure the parameters you\u2019ve set in the filter are\ngoing to work properly.</p>\n<p>GMail also includes an always-on automatic spam filter. It seems to do a\npretty good job, though it is certainly wrong every once in awhile. It has\nmade a lot more mistakes with the mail I have been importing from Outlook than\nwith my new mail. I am not sure why that is. It is easy to classify mail as\nspam and vice-versa by selecting messages and clicking the appropriate button\n(see the screenshot). I am not sure if these classification changes you make\nare stored somewhere or affect the spam filter in any way. I\u2019d like to think\nthat it does, and if GMail\u2019s using a Bayesian filter, it\u2019s likely. I\u2019m sure\nthey probably have a database of known spam senders and use that in\nconjunction with Bayesian filters. That\u2019s all just speculation of course. The\nbottom line is, it works pretty well.</p>\n<h2><a href=\"https://tylerbutler.com#suggestions\">Suggestions</a></h2>\n<p>GMail is currently in beta, and considering that, it\u2019s in pretty good shape.\nThere are several things I\u2019d like to see in the \u201cfinal release,\u201d so to speak.\nSome of them I\u2019ve already mentioned, but I\u2019ll include them here just so this\nlist is more comprehensive.</p>\n<h3><a href=\"https://tylerbutler.com#spam-count-display-now-supported-in-gmail\">Spam Count Display (Now supported in GMail!)</a></h3>\n<p>Currently GMail doesn\u2019t display the number of spam messages in the spam box\nlike it does for the Inbox and Labels, even if the Spam box contains new\nmessages. I like to filter through my spam manually just to be sure there\u2019s\nnothing there that got misclassified, and I\u2019d like to be able to tell if there\nare any new messages there without opening the spam section.</p>\n<h3><a href=\"https://tylerbutler.com#accurate-message-count\">Accurate Message Count</a></h3>\n<p>Currently GMail displays the total number of conversations in a box, not the\ntotal number of discreet messages. I\u2019d like both, or at least a place where I\ncan toggle it on or off. Since I\u2019ve been importing a lot of email, I\u2019d like to\nknow how many messages I\u2019ve got, not conversations. I think this would be\ntrivial to include, and would be very useful.</p>\n<h3><a href=\"https://tylerbutler.com#conversations-toggle\">Conversations Toggle</a></h3>\n<p>I\u2019m not sure if this would be too difficult to do, but I would like\nconversation mode to be toggle-able. There are some types of email that it is\nsimply better to have messages as discreet items. It\u2019d be nice if this could\nbe toggled based on labels, so some labels would have conversations and others\nwouldn\u2019t, but I\u2019d settle for a global toggle if I had to.</p>\n<h3><a href=\"https://tylerbutler.com#name-display\">Name Display</a></h3>\n<p>I mentioned this earlier, but I\u2019d like conversations displayed with full\nnames, and I\u2019d like emails without the name field filled in displayed as\n\u201c<a href=\"https://tylerbutler.commailto:address@domain.com\">address@domain.com</a>\u201d, not just \u201caddress.\u201d I\u2019ve put an edited screenshot to the\nleft.</p>\n<h3><a href=\"https://tylerbutler.com#official-message-import-method\">Official Message Import Method</a></h3>\n<p>Mark\u2019s GML is a great solution, but because it forwards mail using SMTP, the\ntimestamps are all messed up. I\u2019d like to see an official import mechanism for\nGMail that solves this problem and might work a little faster. I think\nallowing people to get their old mail in GMail will convert a lot more people\nto using it full time as I plan to. It doesn\u2019t have to support PST files (in\nfact, I\u2019d rather it didn\u2019t), but MBOX support would probably be the best place\nto start. I think that the server load might be pretty high when such a\nservice starts, as hundreds of people will be trying to upload hundreds of\ngigs of email. So it might be best to have a sign-up system of some sort,\nwhere you provide users with a window of time that they can upload email.\nBasically, users would need to set up an appointment, sort of like setting up\ntime on a server farm. I\u2019d gladly do that, especially if it meant I would get\nfaster upload service.</p>\n<h3><a href=\"https://tylerbutler.com#simpler-label-removal-added-june-12-2004-now-supported-in-gmail\">Simpler Label Removal (Added June 12, 2004) (Now supported in GMail!)</a></h3>\n<p>As it is right now, you can only remove labels from conversations by opening\nup the label group and selecting messages within that context. I\u2019d like there\nto be a box that is basically the same as the \u201cAdd Label\u2026\u201d box, but removes\nlabels instead. Whenever messages are selected, no matter what the context,\nthat box gets populated with the labels that currently apply to the selected\nmessages, and by selecting a label from that box, the label is removed. It\nmight make more sense to do a different GUI design for this functionality,\nrather than having two separate boxes, but there just has to be a simpler way\nto remove labels - especially since I often mislabel emails and need to fix my\nown mistakes.</p>\n<h3><a href=\"https://tylerbutler.com#mailing-list-delivery-options-added-september-22-2004\">Mailing List Delivery Options (Added September 22, 2004)</a></h3>\n<p>While I am very glad to see some of my earlier suggestions added (see above),\nthere is one absolutely horrendous \u201cfeature\u201d of GMail that I just noticed\nrecently that is driving me bonkers. Luckily, I did find out that this is\nexpected GMail behavior, and I am not just being dumb. The problem is this:\nWhen I send a message to a mailing list, my mailing list processor (MailMan,\nfor the record), modifies the subject and then sends a copy of the email on.\nThis subject modification is very useful for automatic sorting of mailing list\nmail. Also, MailMan (and other mailing list managers, I\u2019m sure) have an option\nfor every list subscriber that allows them to decide whether they want to\nreceive a copy of the emails they post to the list or not. I <strong>always</strong> leave\nthis option on, for several reasons. One, I want all mail from a list in one\nfolder (or in GMail\u2019s case, under one label). Manually moving my emails that I\nsent into that folder/label is a pain. Second, I want to quickly search all\nemail with <strong>[ipro305]</strong> in the subject quickly - that\u2019s a fast way to only\nsearch for IPRO mailing list mail. Yes, GMail offers superb searching\ncapabilities that would probably let me get around this, but frankly, I just\nwant to do it my way. The version of the emails that GMail saves (in my Sent\nMail label) do not have that subject modification. **Arggggghhhhh! **</p>\n<p>Finally, this breaks one of my major rules of email - never <em>ever</em> <strong>ever</strong>\ndeny a message without telling the user. MailMan is sending out the copies of\nmy email back to my account (I verified this) - GMail simply doesn\u2019t put them\nin my box - anywhere. Apparently they\u2019re gone, because it is assumed that the\ncopy saved in my Sent Mail label is enough. I don\u2019t like server-side spam\nfilters for the same reason (if GMail automatically deleted mail it classified\nas spam I\u2019d be incredibly annoyed - sorting it and then letting me make\nadjustments is OK though). If my account receives an email, it should be put\nin my account <strong>somewhere</strong>, no exceptions. Here\u2019s hoping this gets changed or\ncan be disabled on a per-user basis at the very least.</p>\n<h2><a href=\"https://tylerbutler.com#one-caveat\">One Caveat</a></h2>\n<p>In case you haven\u2019t heard, GMail is ad-supported. This isn\u2019t all that\nsurprising, considering most free webmail services are ad-supported. GMail is\nmuch more discreet than other webmail providers, though. See the screenshot to\nthe right for an example of GMail ads. These ads are displayed just to the\nright of the email contents, and are in relatively small font, as you can see.\nGMail\u2019s ads are also targeted based on the content of the email. This means,\nof course, that the contents of the email is scanned automatically and ads are\nchosen based on the content of them email. The example ads to the right were\ndisplayed next to an email regarding Biblical scripture to be read at a\nwedding.</p>\n<p>Some people have expressed concern about the privacy of their email,\nespecially since GMail scans it. I guess I sort of understand where they\u2019re\ncoming from, but people need to realize that email is a very insecure medium\nanyway, and that sensitive or private matters shouldn\u2019t be handled through\nemail. I believe Google when they say they\u2019re not seeing this info and that\nit\u2019s all automatically done by their system. I also trust them to keep their\nsystem secure so nothing is compromised. Google has some very talented,\nintelligent people working for them, and they\u2019ve given me no reason to doubt\nthem thus far. If you\u2019re interested in what the link \u201cAbout these links\u201d in\nthe screen shot says, go to\n<a href=\"http://gmail.google.com/support/bin/answer.py?answer=6603\">http://gmail.google.com/support/bin/answer.py?answer=6603</a> and see for\nyourself what Google says about the ads and their commitment to privacy and\ntaste.</p>\n<h2><a href=\"https://tylerbutler.com#final-thoughts\">Final Thoughts</a></h2>\n<p>GMail is an awesome webmail system, even though it is still in beta. Even\nwithout the features I requested above, it is still a very useable, very\ncomprehensive system. I am looking forward to continuing to use it for as long\nas I can, and I hope to be able to completely switch over to it in the near\nfuture.</p><img src=\"http://feed.tylerbutler.com/link/18607/17246032.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-07-08T00:44:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246032.gif"
        },
        {
            "id": "https://tylerbutler.com/etymology-dictionary/",
            "url": "http://feed.tylerbutler.com/link/18607/17246033/etymology-dictionary",
            "title": "Etymology Dictionary",
            "content_html": "<p>Haha, just kidding. Seriously, though \u2014 Ricardo sent me this link to an online\netymology dictionary. I haven\u2019t had a chance to look at it as in depth as I\u2019d\nlike, but I hope to over the next week or so. Looks like it could be a really\nuseful resource. Gosh, I turn out more like my dad every day\u2026</p><img src=\"http://feed.tylerbutler.com/link/18607/17246033.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-07-05T15:26:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246033.gif"
        },
        {
            "id": "https://tylerbutler.com/comfortable/",
            "url": "http://feed.tylerbutler.com/link/18607/17246034/comfortable",
            "title": "Comfortable",
            "content_html": "<blockquote>\n<p>Money can\u2019t buy happiness, but it can make you awfully comfortable while you\u2019re being miserable.</p>\n</blockquote>\n<blockquote>\n<p><strong>Clare Boothe Luce</strong>, <em>Socialite</em></p>\n</blockquote><img src=\"http://feed.tylerbutler.com/link/18607/17246034.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-06-15T07:00:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246034.gif"
        },
        {
            "id": "https://tylerbutler.com/impressing-your-friends/",
            "url": "http://feed.tylerbutler.com/link/18607/17246035/impressing-your-friends",
            "title": "Impressing Your Friends",
            "content_html": "<p>From <em>An Introduction to the Theory of Traveling Waves</em>, by Erwin Weber:</p>\n<blockquote>\n<p>Notice that there is a star in front of the numbers for the above equations. Equations thus identified in the remainder of the text are to be forgotten. The equations are unimportant and any student who commits them to memory deserves to spend his entire electrical engineering career grabbing the hot end of a soldering iron. These equations may be useful in impressing your friends \u2014 those that don\u2019t know any better \u2014 but other than this, they serve no useful purpose.</p>\n</blockquote><img src=\"http://feed.tylerbutler.com/link/18607/17246035.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-06-15T07:00:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246035.gif"
        },
        {
            "id": "https://tylerbutler.com/site-transfer-almost-complete/",
            "url": "http://feed.tylerbutler.com/link/18607/17246036/site-transfer-almost-complete",
            "title": "Site Transfer Almost Complete",
            "content_html": "<p>I am almost done transferring all of the content from the old tylerbutler.com\nsite to the new format. There are still some sections that I am working on,\nbut it should be done pretty soon. As you can see, the new stuff is now at the\nroot of the site. The old site is still visible at <a href=\"https://tylerbutler.com/link-not-available?url=http%3A%2F%2Fwww.tylerbutler.com%2Foldsite\">http://www.tylerbutler.com/oldsite</a>.</p><img src=\"http://feed.tylerbutler.com/link/18607/17246036.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-06-15T04:54:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246036.gif"
        },
        {
            "id": "https://tylerbutler.com/firemen/",
            "url": "http://feed.tylerbutler.com/link/18607/17246037/firemen",
            "title": "Firemen",
            "content_html": "<p>As I was walking home for my lunch break today, I noticed a car that had\nbroken down in at a stop light, slowing traffic down and bringing out the\nworst in many Chicago drivers that happened to be stuck behind the car. As I\nwalked by, a fire truck passed through the intersection, pulled over, and\nthree firemen and a paramedic got out and helped the man push his car out of\nthe intersection.</p>\n<p>No one called the fire department \u2014 they were just on their way back to a\nstation, saw someone in need, and helped him. They didn\u2019t have to. No one\nwould have thought anything of it if they had just driven on by, but they\ndidn\u2019t. It\u2019s nice to see that people still help each other out. Is it possible\nI\u2019m just surrounded by the only self-centered, egotistical people in the\nentire world here at Illinois Tech? Nah, I\u2019m sure they\u2019re everywhere, but\nthankfully, so are fire fighters.</p><img src=\"http://feed.tylerbutler.com/link/18607/17246037.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-06-04T06:07:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246037.gif"
        },
        {
            "id": "https://tylerbutler.com/wait-matches-burn/",
            "url": "http://feed.tylerbutler.com/link/18607/17246038/wait-matches-burn",
            "title": "Wait, Matches Burn?",
            "content_html": "<p>Apparently, K-Mart has recalled some Martha Stewart brand matches because they\n<strong>\u201cmay ignite upon impact.\u201d</strong> Nope, I am not kidding. It is really\nunbelievable that a retail store has to be <strong>this</strong> frightened of lawsuits to\ndo this. Can we all just agree to stop being stupid so stuff like this can\nstop happening? Please? With sugar on top?</p><img src=\"http://feed.tylerbutler.com/link/18607/17246038.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-05-30T12:08:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246038.gif"
        },
        {
            "id": "https://tylerbutler.com/all-i-said-was-comiskey-park/",
            "url": "http://feed.tylerbutler.com/link/18607/17246039/all-i-said-was-comiskey-park",
            "title": "All I Said Was Comiskey Park!",
            "content_html": "<p>I\u2019ve been meaning to write for awhile about my outrage over Comiskey Park\n(where the White Sox play; it\u2019s only a couple blocks from my house) becoming\nUS Cellular Field. When the change initially took effect, there were many\nradio personalities, especially sportscasters, who said they were going to\nkeep calling it Comiskey. That lasted until someone (no doubt US Cellular\u2019s\nlawyers) got angry and started suing people. At one point, I think (this has\nnot been verified, so take it with a grain of salt), the FCC started levying\nfines when someone said \u201cComiskey Park\u201d in reference to \u201cUS Cellular Field,\u201d\njust like how they fine stations when they slip up and broadcast \u201cillegal\u201d\nwords over the air.</p>\n<p>Anyway, the outrage I feel at renaming a historic sports landmark to something\nas ridiculous as US Cellular field may seem unwarranted. But for all you\nbaseball fans out there, how would you feel if Wrigley Field became Wrigley\nJuicy Fruit Gum Arena, or even worse, Spider-Man 2 Movie Coliseum? The problem\nis the perversion of our social culture by advertising. There\u2019s an article\nover at k5 that nearly made me cry (out of agreement with what the guy was\nsaying, not sadness or happiness). Finally, someone else who feels the way I\ndo. I mean, one of the main reasons I built my own web server was so that I\ndidn\u2019t have to host my site somewhere where they advertise all the time. I use\nMozilla Firefox as my browser so the pop-ups don\u2019t bug me. If slashdot and k5\nwouldn\u2019t advertise, I think I\u2019d like them even more. I absolutely hate static\nadvertising. Why does everything <strong>have</strong> to revolve around money?</p>\n<p>Interestingly, when I bring this up in conversation, most people I talk to\nseem opposed to the idea (though admittedly not as vehemently as I am). So why\naren\u2019t we fighting this sort of thing? Does our apathy and laziness truly run\nthat deep? In the end, I am forced to ask the age-old question: Is nothing\nsacred?</p>\n<p><a href=\"http://www.kuro5hin.org/story/2004/5/5/165728/6687\">http://www.kuro5hin.org/story/2004/5/5/165728/6687</a></p>\n<p>Oh, and I am trying to buy the domain savecomiskey.org, and hope to develop a\nsite where people can speak out against the evils of advertising. Maybe we\ncould even buy out US Cellular\u2019s share of Comiskey! Then we could call it\nwhatever we want, right? I mean, money talks\u2026 If you\u2019re interested in\nhelping me out, drop me an email.</p><img src=\"http://feed.tylerbutler.com/link/18607/17246039.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-05-22T02:50:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246039.gif"
        },
        {
            "id": "https://tylerbutler.com/the-drugs-the-drugs/",
            "url": "http://feed.tylerbutler.com/link/18607/17246040/the-drugs-the-drugs",
            "title": "The drugs, the drugs...",
            "content_html": "<p>\u201cWow,\u201d was all I could say after reading this article. For those of you who\nare unaware, a MUD is an online multi-user game. (There is a MUD FAQ at\n<a href=\"http://www.mudconnect.com/mudfaq/\">http://www.mudconnect.com/mudfaq/</a>) Anyway, the game in question is\nAchaea, a text-based MUD. It seems that the creators of the game introduced a\nhighly addictive substance, called \u201cgleam,\u201d into the game environment, and\nplayers\u2019 characters quickly became addicts. The benefit of using gleam is an\nincrease in the character\u2019s dexterity, but players who are suffering from\nwithdrawals after becoming addicts and trying to quit are paying a high price:\nit can take up to 25 hours of in-game time to recover from gleam addiction.\nMaybe people will learn from this virtual experience? Nope, didn\u2019t think so\u2026</p><img src=\"http://feed.tylerbutler.com/link/18607/17246040.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-05-21T12:03:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246040.gif"
        },
        {
            "id": "https://tylerbutler.com/unproduced-screenplays/",
            "url": "http://feed.tylerbutler.com/link/18607/17246041/unproduced-screenplays",
            "title": "Unproduced Screenplays",
            "content_html": "<p>Interesting stuff from some pretty big names. I haven\u2019t read it all yet, but\nI\u2019m hoping maybe some of it will provide some fuel to get my own creative\njuices flowing so I can write something of my own for <strong>Keygrips</strong>. Anyway,\nthe link is <a href=\"http://www.kuro5hin.org/story/2004/5/8/73755/86297\">http://www.kuro5hin.org/story/2004/5/8/73755/86297</a>. Enjoy!</p><img src=\"http://feed.tylerbutler.com/link/18607/17246041.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-05-21T08:10:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246041.gif"
        },
        {
            "id": "https://tylerbutler.com/from-diary-to-blog/",
            "url": "http://feed.tylerbutler.com/link/18607/17246042/from-diary-to-blog",
            "title": "From Diary to Blog",
            "content_html": "<p>Well, as you can see because you\u2019re here, my diary has been moved here to a\nblog. The word \u201cblog,\u201d for all of you not well-versed in Internet terminology,\nis short for Web Log. A Blog is basically an online journal or diary where\npeople (in this case, mainly me) can post their thoughts, links to cool\nthings, etc. I started a diary last summer, but I didn\u2019t keep it very updated,\nand once school started up, I actually forgot all about it. Now summer is here\nagain, and I am bored out of my mind. I tend to read a lot more now, because I\nam so bored, and because of this, I have a lot more things that I want to\nrespond to. Also, because it is summer, many of my friends are gone, so I have\nless people to talk to. So this blog gives me something to do. Also, a blog is\nreally cool because it allows people to post comments. So if you\u2019re a friend\nof mine, or even a complete stranger, and you have something you want to say,\npost a comment in response to one of my posts! Anyway, that\u2019s about it.</p><img src=\"http://feed.tylerbutler.com/link/18607/17246042.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2004-05-21T06:32:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246042.gif"
        },
        {
            "id": "https://tylerbutler.com/never-a-dull-day/",
            "url": "http://feed.tylerbutler.com/link/18607/17246043/never-a-dull-day",
            "title": "Never A Dull Day",
            "content_html": "<p>How often are you contentedly watching a movie in your comfortably air\nconditioned room, when a friend (Matt Cerney, for the record) throws your door\nopen and yells, \u201cDude, the projects are on fire!\u201d Welcome to my life. Never\ndull, that\u2019s for sure. By the time Ricardo and I got out there, it was mostly\njust billowing smoke. I still haven\u2019t heard exactly what happened, or if there\nwere fatalities or injuries. Nevertheless, running outside was the most\nexercise I\u2019d gotten in awhile, and Matt\u2019s expression as he opened the door to\nmy room almost made the whole experience worth it in and of itself.</p><img src=\"http://feed.tylerbutler.com/link/18607/17246043.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2003-07-02T00:37:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246043.gif"
        },
        {
            "id": "https://tylerbutler.com/april-16-2002/",
            "url": "http://feed.tylerbutler.com/link/18607/17246044/april-16-2002",
            "title": "April 16, 2002",
            "content_html": "<p><em>What follows is the account of Tyler Butler\u2019s amazing transformation from\nordinary university student to super-sleuth\u2026</em></p>\n<h2><a href=\"https://tylerbutler.com#saturday-april-13-830pm\">Saturday, April 13, 8:30pm</a></h2>\n<p>While on the way to get food, Tyler\u2019s beloved 1986 Nissan Maxima gives out at\nthe stoplight at 35th Street and Wallace Ave. in Chicago, IL. The engine emits\nloud squealing noises, sparks, and black, burning-rubber-smelling smoke.\nFearing the worst, Tyler calls his friend Tom Hennigan, a Chicago native, to\ncome pick him up and figure out what to do with the car. Tom arrives, and the\ntwo decide to push the car into a parking space and leave it \u2014 it is already\ntoo late to call a trustworthy mechanic and tower, and they won\u2019t be available\nuntil Monday anyway. The safest and best course of action seems to be to push\nthe car into a parking space and wait until the weekend ends.</p>\n<h2><a href=\"https://tylerbutler.com#sunday-april-14\">Sunday, April 14</a></h2>\n<p>Tyler goes to church in the suburbs, as per usual. He can\u2019t really do anything\nabout his car until Monday, anyway.</p>\n<h2><a href=\"https://tylerbutler.com#monday-april-15\">Monday, April 15</a></h2>\n<p>Tyler discovers that Tom Hennigan has broken his foot, and needs to go to the\nhospital, and that his parents are in Arizona until next weekend. He can\u2019t\nremember the name or address of Tom\u2019s family friend, the mechanic that worked\non the car last time. He finally reaches Tom about 5:30pm, and gets the name\nof the mechanic\u2019s shop. Consultation of the Chicago-land Yellow pages reveals\nthe phone number of Southwest Auto; a quick phone call to them and\narrangements are made. A number to a towing company that is trustworthy and\nworks with Southwest is given to Tyler, and he promptly calls them to make\narrangements. Because it is 6:15 by now, the tow driver is on his way back\nhome from his final tow for the day. He is willing to come out, but would\nrather not. Tyler figures his car has already been there for two days, and\nit\u2019s not going to matter if it\u2019s there for another night.</p>\n<h2><a href=\"https://tylerbutler.com#tuesday-april-16\">Tuesday, April 16</a></h2>\n<h3><a href=\"https://tylerbutler.com#1045pm\">10:45pm</a></h3>\n<p>Tyler calls the tower, and arranges for the pickup that day at noon. He finds\na friend to drive him to the location to meet the tower with the key and\ninformation. They arrive where the car is supposed to be parked, and it\u2019s\nGONE. Uh-oh. Dan drops Tyler at the corner to do some investigating, and goes\non to run some errands. Since the car was parked a block from the local police\nstation, and in a safe residential area (safe \u2014 relatively speaking\u2026), Tyler\ndoubts very highly that it has been stolen, and has instead been towed by the\ncity. A visit to the police station confirms this. It seems that the seemingly\nlegal parking spot was not-so-legal, and that the car has indeed been towed by\nthe city. Tyler calls the Southwest tower and explains to him that he is no\nlonger needed at 35th and Wallace. The tower says to call him back when Tyler\nfinds the car, and that he\u2019ll pick it up at the pound. Tyler thanks the man\nand calls the number for the pound that was given to him by the police.</p>\n<p>The pound tells Tyler that without a License plate number, which Tyler doesn\u2019t\nhave memorized (but does now!) or the 17 digit Vehicle Identification Number\n(VIN), they can\u2019t verify whether they have the car or not. Tyler thanks them\nand goes home.</p>\n<p>Internet research suggests that the Tennessee Department of Motor Vehicles\nwill probably have the License plate number on file, so Tyler calls them.\nUnfortunately, the woman who would be best suited to help him is out on lunch\nbreak. Tyler thinks for a moment, and then remembers that the University\nparking services should also have a record of his license plate number. A call\nto them confirms this, and Tyler gets the plate number.</p>\n<p>He calls the pound back, and they say they don\u2019t have record of a car with\nthose plates being impounded. Great. More internet research indicates that\nwhile it is possible to get a VIN from a plate number, it is time consuming\n(10 days) and there is a fee involved ($10). Tyler\u2019s roommate, Jacques,\noverhearing the situation from Tyler\u2019s phone conversation, picks up the phone\nand calls his mother in Iowa. She works at a local Sheriff\u2019s Office, and at\nJacques\u2019 request, runs Tyler\u2019s license plates and secures the VIN and Title\nnumber. <em>(Amazing \u2014 it took less than 30 seconds, but don\u2019t ask me if it was\nlegal or not\u2026)</em></p>\n<p>Armed with the VIN, Tyler calls the pound back. To his disgust, neither the\nVIN nor the plate number yields any results. Tyler takes a break and goes to\nlunch.</p>\n<h3><a href=\"https://tylerbutler.com#130pm\">1:30pm</a></h3>\n<p>Tyler tries to get a ride back to the 35th street police station, but everyone\nhas class. He finally text messages Tom Hennigan\u2019s cell phone, since Tom is in\nclass, asking what police district IIT is in. Tom messages back, and Tyler\ndoes more internet research to find the correct phone number for the station.\nA call to that station verifies what Tyler suspects \u2014 he was given the wrong\npound and phone number.</p>\n<p>Tyler calls the new pound and gets the address and pound inventory number of\nhis car. He is told that he can pay the $180 tow and storage fee by either\ncredit card or cash. He calls the Southwest tower and asks him to meet him at\nthe pound at 3:00. The tower agrees, and Tyler asks his friend Aaron to drive\nhim to the pound.</p>\n<h3><a href=\"https://tylerbutler.com#245pm\">2:45pm</a></h3>\n<p>Tyler finally finds the pound \u2014 after walking five blocks in circles. He walks\nin and stands in line. The tower calls at 3:15 and says he has arrived. Tyler\nstill hasn\u2019t gotten to the front of the line. He tells the tower he should be\ndone shortly. The tower says he\u2019ll wait.</p>\n<h3><a href=\"https://tylerbutler.com#345pm\">3:45pm</a></h3>\n<p>Tyler finally gets served at the pound. However, because the car is titled\nunder his mother\u2019s name, he is unable to pay using credit. He has only $70 on\nhim. The pound people direct him to an ATM, but Tyler is unsure whether he has\nenough in his account to pay for the car. He walks outside, meets the tower,\nand explains the situation again. The tower agrees, in infinite patience, to\nwait while Tyler gets the money.</p>\n<p>The instructions to the ATM yield no results, and Tyler is forced to walk two\nblocks to the Sheraton Hotel, where the Concierge directs him to an ATM.\nLuckily, the monthly rent check has not yet been deposited, and Tyler does\nindeed have enough money in his account to pay for the car. He makes the\nwithdrawal, and runs back to the pound. The tower is still waiting, and Tyler\ngoes, once again, to the end of the line.</p>\n<h3><a href=\"https://tylerbutler.com#415pm\">4:15pm</a></h3>\n<p>Tyler finally gets served at the pound again. The man signs his form, and\nexplains that he will have to go to the cashier now to pay. Gee. How nice.\nWhat a smooth operation. He is second in line to the cashier, but she is\n\u201cbusy\u201d doing something else at the moment, and he is forced to wait for 15\nmore minutes.</p>\n<h3><a href=\"https://tylerbutler.com#430pm\">4:30pm</a></h3>\n<p>Tyler finally gets the necessary paperwork done, and meets the tower outside\nto go get the car. The security guard explains that he cannot admit a tower to\nget the car without an additional signature from someone inside. Tyler, not\nsurprised at all at this point, heads back inside, prepared for another 30\nminute wait. How the tower manages to maintain his patience is beyond Tyler.\nLuckily, one of the men who can sign the tow form is outside, and signs the\nform almost immediately, negating the need for Tyler to go back inside.</p>\n<h3><a href=\"https://tylerbutler.com#445pm\">4:45pm</a></h3>\n<p>The car is finally found in the lot, and the tower puts it on the truck. Tyler\ntests it before it is put on the truck, and surprisingly, it starts and\ndoesn\u2019t seems to have any problems. However, he\u2019s come this far, so he might\nas well get it checked out. He tells the tower to go ahead and put it on the\ntruck, and the tower goes on his way \u2014 finally.</p>\n<p>Aaron has returned home already, so Tyler decides to decline his offer to come\nback in and pick him up, and instead walk to an El station. Tyler doesn\u2019t\nrealize he\u2019s far away from an El station, and it takes him another 10 blocks\nto find one. Finally, though, he makes it home.</p>\n<p>And so, as you can see, with the proper amount of internet knowledge and\nSheriff\u2019s Office Worker connections, anyone can be Sherlock Holmes. If only\nArthur Conan Doyle could see me now\u2026</p>\n<p><strong><em>Tyler \u201cSherlock\u201d Butler</em></strong></p><img src=\"http://feed.tylerbutler.com/link/18607/17246044.gif\" height=\"1\" width=\"1\"/>",
            "date_published": "2002-04-17T08:00:00+00:00",
            "attachments": [],
            "image": "http://feed.tylerbutler.com/link/18607/17246044.gif"
        }
    ]
}