Posts





2025 Reading List

Some quick thoughtsh on the books I’ve read in 2025



What You're Doing Now

What you’d have done during the holocaust is whatever you’re doing now. So, what are you doing?




The Joy Of No Batteries

A meandering post about the joys of Scheme and working harder to do simple things.

Feature Chats

A casual look a the power of discussing your side-project with like-minded friends.



Amazon Bricked My Kindle

Yesterday I discovered that Amazon had decreed that my Kindle e-ink device was too old. This post is my đź§ -dump of a intensive afternoon & evening of researching what to replace it with.



Making Great Productivity Tools

My thoughts on what it takes to make a great productivity tool that wont be abandoned, & works for everyone, not just the creator




What is 3D Printing Good For?

Who 3D & what 3D printing is good for, beyond printing simple tchotchkes, plus a list of the many useful things I’ve made.


ATMA TTRPG Review

A review of this unique card-based, beginner friendly, TTRPG

On Generic TTRPG Systems

Table of Contents Overview Context It’s all about the fighting I want more The problem is hard If they’re not really generic… Overview I love the idea of generic role-playing games, but as time goes by I find myself caring less and less. Yet, there’s still something great about them. This post explores those thoughts. Context The basic premise of a Generic Tabletop Role-playing game is that you can learn this one system, and then play any kind of game with it.

Recycling 3D Prints

Table of Contents Overview Shredding Gotchas Extruding Gotchas Color Materials Thickness Winding Pelletizing Summary Overview Despite being “plant based” there are almost no 3D printer filaments that are actually compostable or biodegradable in any meaningful way. PLA needs oxygen, a temperature of 140+°F (60°C), and a variety of organic compounds to break down. You’re not going to find these outside of an industrial composting facility and most of them won’t take PLA anyway because it’s frequently mixed with other things that make it non-compostable.

Debugging Our Ambulance

Table of Contents Debugging Our Ambulance tl; dr: two developers use standard debugging techniques to fix electrical problems in their ambulance. Setting The Stage The Problem A debugging we will go Gather the initial known truths Propose Theories Choose A Theory And Test It Summary Afterward Debugging Our Ambulance tl; dr: two developers use standard debugging techniques to fix electrical problems in their ambulance. Setting The Stage We had to drop our car off at the dealership last night.

Red-Black Initiative

Table of Contents Overview Red-Black Initiative (RBI) Quick Rules summary What You’ll need. The Setup Who goes next? Introducing New Characters to the Fight Characters With Multiple Attacks or “Lair Actions” Keeping track of where you are in the initiative Once per fight, or once per round? Using beads, dice, or colored game tokens from a tabletop game. Meta-commentary Advantages Disadvantages Example usage Worksheet Inspiration Why “Red-Black” Initiative License Overview This document discusses a new1 form of managing initiative order for Tabletop Role Playing Games without math.

Sexism in Tabletop Role Playing Games

Table of Contents Overview Definitions Context The game, and its problems. The Male Gaze Comparative Representation Context Matters Contributors Wrap-up It doesn’t have to be like this. Summary Overview This post uses a recent Tabletop Role Playing Game (TTRPG) as a concrete example of the problems that still remain within our community. When it comes to including women, it seems that there are many things that “shouldn’t need to be said” but apparently still do.

The Remarkable 2 Tablet

Table of Contents The Remarkable 2 e-ink notebook Summary Context The Search The Review Why It’s Better Than Paper Pens, brushes, etc. Getting Things On and Off it Styluses Reading PDFs Gotchas & Warnings Final Thoughts Bonus Discovery The Remarkable 2 e-ink notebook Summary If you are the type of person who already takes a lot of handwritten notes in notebooks you’ll probably love it. Everyone else should probably skip it.

On Federating With Meta

Table of Contents tl;dr: An explanation It’s already started Going Forward What if they do get a toehold? But what about [insert company here] tl;dr: Meta and Google are existential threats to the continued existence of Mastodon (and friends). An existential threat is a threat to a people’s existence or survival. - The Brittanica Dictionary (editorial) The best way to guarantee the death of the things we love about Mastodon (and friends) is to allow Meta or Google to gain a toehold in the Fediverse.

Github Rubocop Workflow

It took me a while to figure out the correct collection of magical incantations required to make RuboCop run in a GitHub workflow, but ONLY on the files that were changed within the PR. This is a useful configuration if you have a codebase that has not yet been modified to satisfy all your “Cops”. I’ve also included a version of the same file that you can use when you’re ready to have RuboCop run on all non-excluded files.

Converting Apple's Add To Wallet Images

Apple distributes their “Add to Wallet” images as SVGs which is great, but if you want to add it to an email or anything else that has issues with SVG files you’re going to need a PNG (to maintain transparency around the rounded corners). Unfortunately there are a LOT of these images needed to support the various languages. apple wallet images pr Converting these to PNGs is not as easy as you’d hope.

Rounding Things In Tinkercad

Table of Contents Overview Step-By-Step The Corners The “ears” Everything Else A Template For The Leather Conclusion Overview A Guide To Rounding Corners and Edges in Tinkercad. Alternately, how I spent way too much time modeling a dice tray. Rounding corners in Tinkercad is way more trouble than it ought to be. It’s not actually hard, it’s just really time consuming and requires a lot of steps. Once you wrap your head around the general approach you’ll be able to round anything.

Kinesis Advantage 360 Pro Review

Table of Contents High Level Summary The Hope The Good The Meh The Not Good The Bad Bluetooth Power Switches Charge Indicator When Things Go Wrong The Bridge Modifying The Keyboard Layout The Conclusion Update High Level Summary The Kinesis Advantage 360 Pro feels great. The ergonomics are better than the Advantage 2. The Bluetooth is buggy. The on/off switches are terrible. The mechanism for resetting it is worse than terrible.

Why Tabletop Role Playing Games Need Skills

Table of Contents Preface Skills in TTRPGs What’s a Skill Playing Without Skills Why That’s Not Enough How Skills Change Things What about Knowledge Checks? What about Perception & Investigation? Perception Investigation Clarification Conclusion Update Preface A recent episode of the Internet Office Hours: Role-Playing Games podcast was discussing the question of Skill Checks in Tabletop Role Playing Games (TTRPGs) and if they were actually needed. In designing my game I’ve spent a lot of time thinking about this, and I thought I’d share my perspective.

Duct Tape & Baling Wire Methodology

Table of Contents Duct Tape & Baling Wire Premise, and Perspective Premise Flexible Makeshift Materials The “Wrong” Tool For The Job Quick & Dirty != Crap The Importance of Context The Methodology Duct Tape & Baling Wire A coding methodology for personal projects and proof of concepts. Premise, and Perspective Premise There is a time and place for following “best practices” as a developer. It is not “always”. Best practices should be followed when…

GraphQL Thoughts

Table of Contents Intro Thoughts Promises Only Retrieve The Data You need Fewer requests Get Data in the appropriate shape Your query’s shape will match the shape of the response Moves much of the data filtering and parsing back to the server An API reference document for people using it Combine data from multiple systems in 1 response Subscriptions (Implied Promise) Look Ma, it’s almost JSON Counterargument Intro Thoughts I’ve been mostly avoiding GraphQL and watching from the sidelines.

Notable Things about Pathfinder

Table of Contents Ancestries not Race Backgrounds are more meaningful Skills Feats aren’t just abilities Character Creation is easy The Archetypes So Many Classes You Don’t Need To Buy Books You Don’t Need Details Details Details Bookcraft The World All The Colors of the Rainbow The Adventure Paths What about Starfinder? What Next? Obligatory Disclaimer A friend asked what was notable about Pathfinder 2nd Edition in comparison to D&D 5th Edition.

Don't Overthink Your PKM

Overview It’s important for all knowledge workers to have a Personal Knowledge Management System (PKM). That doesn’t mean you need a fancy tool, or a complex process. Sometimes, the “stupid simple” solution is the best one. To that end, I wanted to talk through my wife’s system. It’s an important example because her choice to specifically not use any of the fancy purpose built tools has resulted in a better solution for her needs.

Other People's Personal Knowledge Management Isn't For You

Table of Contents Knowledge Management As A Survival Trait It’s not you, it’s me. Surviving The Torrent Of Information Falling Behind Ignore the things you don’t need Less is more Observe, Try, Steal, Refine, Repeat What Now? “Personal Knowledge Management” (PKM) feels like a lot of “bullshit” to many people. In this, I will speak to the idea that PKM isn’t bullshit. It’s just that other people’s ways of managing knowledge, just aren’t designed for your brain.

Mastodon Ownership

Overview A group calling itself “Mask Group” has purchased three of the largest mastodon instances. Mastodon users, especially people on those servers, should be very concerned. Why? There are some things you need to consider about mastodon to understand why this is very concerning. Large Mastodon instances are expensive to run. Mastodon is not a good platform for large advertisers for a number of reasons. This means that by buying a large mastodon instance you are signing up for a very large ongoing cost in a system whose current state is adverse to profit generation for the owners.

Rewriting Hey

Table of Contents Overview In the Beginning Final Totals Writing in Chicken Scheme Delusions of Sharability Crystal Lang Final Totals Writing in Crystal Fast-Forward… And then Raku Final Totals Writing in Raku Reflecting on the rewrites If you liked that… P.S. What about the email app with the same name? Overview “Hey!” started as an Interruption Tracker, and now supports Time Tracking too. It has been through 3 iterations: Chicken Scheme, Crystal, and now Raku.

How To Receive Twilio Messages In MongoDB Atlas Functions

Overview There's plenty of documentation about how to send an SMS via Twilio, but very little about how to receive one. Receiving one in a MongoDB Atlas Function involves an extra complication. By the end of this post you'll know how to receive a text in Twilio, and have it successfully interact with your MongoDB Atlas Function. I'll also cover a couple nice-to-have's in Twilio that you'll probably want to set up anyway.

I used AI to generate products & write copy for my store

Table of Contents Quick Summary It started as a joke… The work Begins… Generating images Prepping images RedBubble The site Know Thyself That Sweet Marketing Copy Final Thoughts Will I share my code? What’s my favorite? So Many Images Quick Summary I used Midjourney to generate art that I threw on t-shirts, coasters, and almost everything else RedBubble offers. Then I used OpenAI to generate copy for it, and combined that with a handful of custom scripts to generate a product site called Bed Bath & The Beyond.

Twitter Employees Should Take the Severance

Musk has given the remaining employees an ultimatum: come back to the office, sign up for 'hardcore' work, or take 3 months severance and get out. Acknowledging that there are some people who can't really say "no" because of visa issues, or other complicated home situations…. Aside from them, who would say "Yes! Sign me up for 'hardcore' working hours… for a boss who regularly fires people who politely correct his lies about your work, in a place where morale is going to be "in the shitter" for a very long time in a place where incredibly important sections of the staff have been fired in a place where you can't trust the boss's claims from day to day where 40hrs probably won't be enough.

A Rebuttal to Scaling Mastodon is Impossible

Armin Ronacher wrote that Scaling Mastodon is Impossible I'd like to offer a rebuttal. As someone who's been doing professional web development since 1995, with most of that time being spent in Rails jobs, or doing Rails work on the sidelines, I think i have a pretty good perspective on the situation. For those who don't know, Mastodon is written in Ruby on Rails. Decentralization promotes an utopian view of the world that I belief fails to address actual real problems in practice.

A Journey With Midjourney

Exploring an Idea With Midjourney I haven’t seen anyone talk about what it’s like to try and work with Midjourney, or any of the other Image AIs. No-one has shown just how much work it takes to get from an idea, to the beautiful output we keep seeing. This post will take you through the journey, from a spark of colorful and strong Native American imagery, depressed cyborgs, to visions of Muslim women, in a dry and trying future.

Private Comments & Your Security

Summary While leaving "private comments" on a repo can be incredibly useful, it can get you into trouble if the wrong person sees them and disagrees with what they see. This post goes into the problems, consequences, and things that tools that provide this functionality need to do to protect their users from accidental harm. Some Context A while ago I wrote a tool called "Private Comments", which allows you to leave "private comments" on a codebase that aren't actually in the codebase.

Recording & Sharing Terminal Sessions

This post describes how to make high quality recordings of terminal sessions that can be replayed in the terminal, or shared on the web. I'm defining high quality as recordings with zero typos, and relatively controlled timing between commands. Jump to the end to see an example of the type of output I'm talking about. Why? Videos and gifs take up a lot of disk space, don't age well as display technology improves, and are problematic for folks low vision requirements.

Raku Signature Errors with Arrays & Hashes

A quick post to help future Raku geeks understand a couple of confusing error messages: expected Positional[Array] but got Array and expected Associative[Hash] but got Hash These are conceptually the same problem. If you've received one of these errors it means you've double-specified your parameter by using the @ or % and Array or Hash. A parameter of Hash %foo says "I would like to be passed something that implements Associative and has a Hash in it.

Mirroring With Gitea

Table of Contents Overview The Goal The Process The Learnings Overview Following on the heels of my last post on why you should (not) self host your git repos, I went ahead and used Gitea to set up a local mirror of all my repositories, and all the repositories I don’t want to loose access to. The results were surprising, and after reading this, you might want to do the same.

Do (not) Self-Host your repos

Table of Contents Why You Should Self-Host âž What about GitLab and other Competitors? Why You Shouldn’t Self-Host So what’s a geek to do? What am I going to do? Once upon a time, GitHub was a successful geek enterprise. Then Microsoft bought it, and folks started arguing that you should abandon ship. You should self-host your repos they say. I 100% agree, and 100% disagree. Let me explain. GitHub’s been a benevolent host.

Syncing Homebrew Installs

Those of us who love the command line, have a tendency to install a lot of useful utilities, and want them available on all our computers. On macOS we tend to use Homebrew. This document serves to describe three ways to generate a useful file to solve that problem. As I see it there are 3 basic approaches to syncing your homebrew utilities across machines. I don’t care about the details, just make it work.

On the "problem" with AI generated art

There has been a lot of uproar about the “ethics” of AI generated art from tools like MidJourney, Stable Diffusion, and Dall-E. People talking about “theft” and “copyright infringement” and how artists should be paid for “stealing” their styles. This blog post intends to break down the ridiculousness of those claims with simple logic, and historical counterarguments. I’ll show how the uproar is ultimately just an emotional knee-jerk reaction by people ignorant of the reality of art, illustration, and these AI systems.

gh-url script to get GitHub url for a file

The Problem For the past decade or so, I’ve noticed a trend amongst my coworkers. When they need to look at the contents of a file that they’re not currently editing, they will go to GitHub, and click their way down through the folder structure until they eventually find the file they want to see the contents of. On a related note, I believe that most of my coworkers don’t know how to take a relative path in a repo, and tell their text editors to open it.

On GitHub Achievements

GitHub recently announced GitHub achievements. It’s a great idea, but I’m really left scratching my head by what the achievements are. The “Pull Shark” is open pull requests that have been merged. I’ve got a “4x” version. 4x makes NO sense to me given the number of repos I’ve contributed to, but… ok. Maybe it just maxes out at 4x. That’s it, though, except for “Arctic Code Vault Contributor” which … is more chance than anything else.

How To Register an Internationalized Domain Name

( A guide for English speakers as of May, 2022) I’m going to assume that this isn’t terrible if you speak a language which doesn’t look anything like English. I’m going to assume that your domain name registrar’s don’t have their heads up their butts. Over here in the English speaking world they’re too anglocentric to notice anything that goes on in languages that have non-ascii characters. Since you’re reading this, you probably use a lot of software that was written by American companies.

What you need to know about Mastodon

The goal of this post is to give you the information you’ll need to start using Mastodon before Twitter becomes even more of a dumpster fire than it currently is. It assumes that you’re familiar with Twitter and that you’d like to see if you can continue your twitter-like postings over on Mastodon. I’m going to cover the following topics: what the deal is with all the different servers / instances instances as communities moderation choosing an instance how you use Mastodon what’s different Before that, I’d like to recommend you watch this 6 minute intro to Mastodon.

Splitting an org-roam collection

org-roam supports multiple directories and it should work fine if you start that way, but if you’ve already got an org-roam project that you need to split up, it’s a pain in the butt. Here’s how I managed to divide my org-roam project into multiple directories after much trial and error and googling. A note before continuing: If you’re googling around for this you’re going to find a bunch of old commands from when people were upgrading from v1 to v2.

You've been lied to about the newline character

You’ve been lied to about the Newline Character The humble newline character: \n. You’ve seen it in countless code examples. Usually something like foo\n bar\n \n You look at that and probably think, it represents the end of a line. Or maybe you think it represents the start of a line. If you believe either of those things, I’m sorry to inform you that you’re wrong. Fortunately, by the end of this post you’ll have a much better mental model of \n.

Trollphabet

Once upon a time a group of friends gathered at a restaurant. We passed the time trying to devise the worst phonetic alphabet. One that, when heard, would do the best possible job of not successfully conveying the letters you were trying to communicate. This is what we came up with. A aye B bdellium (the b is silent) C cent D djin E eye F fore G gnu H heir

Some of us need bigger text

That sounds pretty obvious. It is pretty obvious. Anyone with any familiarity with older humans knows that they generally have trouble reading small text, or making out fine details. Every drug store has a rack of magnifying glasses. Everyone’s seen an older person doing the thing where they lift up their bifocals and start moving a thing closer and farther with their arm trying to find a spot where it both large enough to be readable but far away enough to be in focus.

Ubiquity Upgrade Fiasco

[⚠️ This is a blow-by-blow ranty post about what happened when Ubiquity screwed up a software upgrade ⚠️] This morning has been… a journey. Our Wifi coverage has been kinda đź’© at the new house because there’s way more space between us and the Access Point. So, let’s just run some ethernet across the floor for now! Should be quick! 🤦🏻‍♀️ We run it into my wife’s iMac. No problem. All good.

The Coin Game

The Coin Game is one of the tools I’ve come up with to help myself recognize when I do accomplish something of value. It also helps motivate me to do more. Boring tasks are hard, especially for ADHD brains. On top of this, when we do actually manage to accomplish something, we don’t give ourselves credit for it. Sometimes it feels like it shouldn’t count because of how long it takes.

First Principles & Scheme

(Or, The Value of Working at Lower Levels of Abstraction.) I’m loving working in Scheme because it forces me to work from First Principles. There’s a huge value in the convenience functions that most languages wrap around those first principles, but it’s like buying and using a car vs. building the car you’re using. The latter is more work but you’re going to really understand how that car works and you’re going to have the perfect car for your needs.

Scheme Is My Vim

Emacs is arguably the most powerful tool available to the modern programmer. Vim’s pretty close. Both require more effort to learn than say Atom or Sublime Text. But, the additional start-up effort pays off quickly. Like Scheme, they both suck out-of-the-box. Unaltered they’re both horrible bare-bones skeletons of an editor. Their potential is incredible though. If you’re just going to do something quickly, and never spend the time to customize them, they are a terrible choice.

Delve RPG Review (not Ironsworn Delve)

There’s a little known RPG called “Delve” that is not to be confused with Ironsworn Delve. Welcome to Delve You awaken on a beach surrounded by the debris from a wrecked ship, you are not alone as others seem to be also awakening from their ordeal. You had no time to pack and all you have is what is in your pockets or what you can find amongst the wreckage. This begins your adventures on the island of Cragbarren.

Covid Decision Flowchart

There are a number of people who want to stay safe during the COVID-19 pandemic, but have found themselves making questionable decisions, because they’ve become acclimatized to it, and because they want to believe that their friends are healthy, because they look healthy, and reason that “of course, those friends are responsible, and I’m responsible, so it should be safe to get together and do something.” Friends and family are the big problem.

Hating Email, and Loving Hey

I… really hate email. By the time I left my last company I had successfully trained everyone around me to stop sending me email, or at least not expect me to have seen anything they sent me. My friends are similarly trained. The thing is, I don’t actually hate email. I hate traditional email clients and the bullshit usage patterns the force on us, and I hate the bullshit way most employers use email.

D&D vs. The Fantasy Trip

In 1987 I was a sophomore in High School. A teacher had an after-school class where he taught us to play Melee and Wizards. Our characters battled each other with spells and weapons on a wide open hex grid. Little cardboard punch-outs with terrible drawings marked our places on the map. I loved it. Decades later, as an adult, I payed someone $40 US for them, because I kept thinking about them.

Software That Lasts

The Cloud Problem When your data only exists in software that you don’t host yourself it is no longer yours. It can disappear at any moment. Its future is dependent upon a company’s continued profits and interests. Imagine you’ve been building up a knowledge base for two years, but you fall on “hard times”. Maybe you can’t afford it. Maybe something happened and you’re literally unable to (accidents, medical issues, legal restrictions).

A personal journey through programming languages

A little while ago there was a post about Programmer Migration Patterns through programming languages. I didn’t agree with it, but it got me thinking, about my 30+ years of programming, the languages I’ve been through, and when I can take away from that. When I was a wee thing my mother brought home a used Texas Instruments TI99/4A that had been velcroed into a suitcase. I had a lot of fun with that computer.

How SSH Keys let you into servers - a metaphor

SSH Keys can be a little confusing to new developers. Here’s a quick little metaphor to help you think about how they work. tldr; Your public key is your business card. You can give it to people so that they can add it to the list of people authorized to access a machine or service. Your private key is a tool that proves that you’re the person associated with that business card.

Go will never belong to the community until they decide its future

There was a recent post* about how Go is Google’s language, not ours. It was an opinionated post, but it provided some evidence to back up its claims. Russ Cox (a Tech Lead for the Go language) posted a reasoned response to this which, I think basically tried to say that it wasn’t true, and they had regular meetings to discuss community proposals. But for me, the telling bit of it was this:

oho's Backstory

I’m going tell you the tale of oho, a program which is arguably the world’s greatest ANSI text to HTML converter, and how it solved a real business problem. I’m sharing this because, as a geek, it’s important to remember that you can frequently solve work needs, while having fun creating open source tools that interest you. Side note: ANSI escape sequences are the things that cause text to be colored, bolded, etc when displayed in a terimnal.

Quality Is Rarely Job 1

In 1981 Robert Cox came up with a slogan for Ford; “Quality is Job 1”. It has always stuck with me. In the software industry there are few slogans could be further from the truth. C-level’s and other customer facing types frequently proclaim the “quality” of their products, but they aren’t the ones making the product. They’re frequently not even the ones using the product. In software there are two viable ways to release quality software.

Your Own God(s)

I’ve had an idea buzzbuling around my head for a while, that I’d like to share with you. If you’re a devout follower of any religion, I ask that you set aside what your preconceptions for a few minutes, and listen openly to this somewhat heretical thought. Premise All, or at least most, gods are created by people. Maybe I’m wrong, and there is one true deity, but logically if one is true, then all the conflicting gods must be the creation of human minds.

Basic Readiness

Basic readiness is a problem for most people. We assume that we’ll always have power, water, and food. We ignore the fact that this stuff goes away regularly, because it usually happens to someone else. There was a snow storm here in Vermont (USA) last week. This was not a blizzard. As far as weather goes, this wasn’t particularly dramatic. There was just a lot of heavy snow and some high winds.

Libraries, Fameworks, and DSLs

One of my coworkers was trying to understand the differences between libraries, frameworks, and DSLs and asked me …how do I know what i’m using when all these things are interacting and being used within each other, etc To some degree, you don’t, and it doesn’t matter, but that’s not a very helpful answer. So let me step back and talk about what each of these are. Libraries Libraries are the simplest.

Converting HTML to PDF on the command line

I recently needed to convert some HTML to PDF on the command line and went hunting down the options. There numerous posts saying “X is great” “Y works great for me” but no-one gives examples that show you anything. I’ve tried WeasyPrint, wkhtmltopdf, Pandoc and Google Chrome (yes via the command line). The test was simple. Take a simple color chart, made from pre-formatted text and render it as a pdf.

Zed Shaw's Utu: Saving the internet with hate

A high level summary (and paraphrasing) of Zed Shaw’s talk at DEFCON 15 (in 2007) because I couldn’t find a good text version. Utu is the Maori word for a system of revenge used by Maori society to provide social controls and retribution. Utu is also a protocol that uses cryptographic models of social interaction to allow peers to vote on their dislike of other peer’s behavior. The goal of Utu is to experiment with the effects of bringing identity, reputation, and retribution to human communications on the Internet.

The Guy Who Loved His Work

(or Why A Healthy Work-Life Balance Is Important) During the dot com boom I worked at a company with a developer who loved his work. The problems were challenging, and we really valued the things he produced. Everyone who worked late late got dinner, and sometimes he’d work so late that he ended up sleeping by his desk. Bob (not his real name) wasn’t pushed to do this. He just really liked his job.

Getting Started With Scuttlebutt

Ok, you’ve been hearing about Scuttlebutt and decided that “Yes, I do want to join an amazing social network with lots of good people that no company can control and also happens to also work offline. Here’s a quick overview with the basics you need to know. First off Scuttlebutt is a protocol on which many different kinds of apps can be built. As for the social network, there are many clients, just like there are many Twitter clients.

Do Social Networks Need Companies?

I’ve been thinking a lot about Scuttlebutt lately (see my Why Scuttlebutt post), and Srol just wrote a great post about how Mastodon makes the internet feel like home again. There’s a lot of good reasons for people to use tools like them for socializing online, and I don’t want these services to just wither as their users wander off. I want there to be options that aren’t controlled by large companies, but at the same time services that require servers (like Mastodon) need someone to pay for those servers.

Why Scuttlebutt

I fell in love with the scuttleverse because of the people who are inhabiting it. Regardless of UX/UI, I continually come back because here I found people discussing practical ways of building their own airships, and what life is like doing guerilla gardening in Berlin or living in a self-reliant shack on top of a lava flow. There’s a distinct social anarchist bent to the discussion, and folks are not only discussing alternate societies at length, but also have the skills to realize them.

How to use the same Scuttlebutt identity on multiple computers.

v2.1 (Note: Manyverse / mobile users please see the warning at the end.) Offically Scuttlebutt doesn’t support posting from the same identity on multiple computers (as of Dec 2017). Unofficially, it’s easy but requires a little bit of care. In practice this means never run the Scuttlebutt client on two computers at the same time. The gotcha is that if you post from both computers before the changes of one have had a chance to replicate to the second via scuttlebutt one or both of your feeds will get screwed up and other people won’t see some of your own posts ever again.

100(ish) things

Many would not guess it, but I am a minimalist at heart. I don’t like looking around and seeing all the crap I’ve accumulated. So this year, I’m going to do something about it. This year, I’m working towards only owning 100(ish) things, and I’d like to encourage you to too. The 100 is easy. The “ish” requires some explaining, but I feel it is the key to making this workable.

Dear Esperanto Beginner

Dear Esperanto Beginner: I love Twitter, butI have not found a good place for a beginner to practice their Esperanto there. So, I made @praktiku. Say hello to @praktiku and practice with me. You don’t need to be skillful, just willing to practice. Kara Esperanto Komencanto: Mi amas Twitter, sed mi ne trovis sekura placo por komencantoj praktiki sian Esperanton tie. Do, mi faris @praktiku. Diru saluton al @praktiku, kaj praktiku kun mi.

Keeping a great Changelog

Changelogs are an invaluable, and often neglected part of any software project. So, how do you do that? A good changelog helps you users to understand: Why they should care about your latest version If any of your changes affect the problems or frustrations they’ve been having. If there are any changes that might affect how they use your app / library. Why your efforts are worth their continued support. A great changelog does all that, and shows the personality of your team.

Why you can't auto-generate your Changelog

Let’s start by taking it as a given that a Changelog file is something very valuable that every product should come with. Even if your “product” is a library for other developers. With that in mind, the question rises of “How can I make it really easy to generate one”. Many developers have had exactly that thought. There are many free and some paid solutions that will “Autogenerate your changelog from your git commits/tickets”.

On Being A Manager

At its core, being a manager is about power. I feel that many managers fail to understand what that power is for. A manager is a lot like being the King or Queen of a tiny, tiny kingdom. The sovereign of a country can impose their will upon their people, but that’s not their job. A sovereign’s job is to keep their people safe, happy, and prosperous. The more prosperous the people become, the more power they gain.

Weeding Wednesday

“Follow Friday” has been a longstanding tradition on Twitter. It’s a great idea. People you follow, make curated recommendations of good content. Well, the world needs balance, and I’m instituting Weeding Wednesday. Weeding Wednesday is a day for reducing internet noise. This Weeding Wednesday watch your Twitter feed from a different perspective. Don’t look for the great posts. Look for the “meh” posts, then unfollow anyone with a low cool to meh ratio.

Creating a Terminal Emulator from Scratch (where to start)

Where to start creating a Terminal Emulator from scratch Before I get started I need to link you to this great answer on the Unix & Linux Stack Exchange which explains the differences between a Terminal (tty), a Console, and a Shell. That knowledge will be key to writing a terminal emulator. VT100 (and beyond) Setting the stage with a little background. Most terminal emulators claim to be VT100 emulators. VT100 came out of DEC somewhere around 1977.

Adding Press and Hold Characters to macOS (OS X)

EDIT: As of Monterrey Apple has completely locked down the files you need to edit. There are 2 ways I know of to do this, and neither of them is as good. use TextExpander. You can tell it that when you type cx to “expand” it to ĉ. You’ll probably have to copy the character you want from here or any other page with it. Then do the same for all the other characters that need ˆ.

On offering up Grad School Recommendations

I was recently asked to provide a letter of recommendation to a past coworker who is trying to get in to grad school. The experience was excessively time-consuming, and left me with little belief that any of these schools are worth attending because their systems were (with one exception) all painful to use, and (with no exceptions) all looked like shit. If you can’t teach your students how to build a decent system for letting people upload recommendations, then how the @#$% can I expect you to teach anyone graduate level concepts?

Software worth recommending

There are lots of great tools out there. Far too many to try. Here are the ones that I’ve tried, and found worth recommending. Mostly they’re OS X Developer Things Quiver is a “Programmer’s Notebook”. I’ve recently switched to it from CodeBox which seems to have been abandoned by its developer. I’ve got some minor quibbles with Quiver, but overall it’s pretty nice and I’ll be bringing all my code snippets and reference material over to it.

Static vs. Dynamic Blogging

You’ve got a lot of software options when setting up a blog. Over the years. I’ve used or tried most of the options including, but not limited to: WordPress, Jekyll, Octopress, and at least 3 custom built systems. What follows is my thinking on the pros and cons of each option, and why I’m switching back to a static blog system (Hugo this time). Dynamic Blogs (WordPress, etc.) Dynamic blogs, like WP, have a lot going for them:

Why I won't be backing Mou's crowdfunding Campaign

Mou as your Markdown loving Mac geeks know, is a split pane Markdown editor. It’s been around for years and it’s really quite good. I even donated to its creator in the past to support it. Now he’s put together an IndieGoGo campaign to pay for people to work on it full time, but I won’t be contributing. Some background first Mou was never open source. I’m ok with that. I use a bunch of great proprietary apps.

The Five Virtues of a Great Programmer

In Programming Perl Larry Wall (in)famously suggested that programmers had three great virtues: Laziness, Impatience and Hubris. Over the years I’ve kept coming back to those because there’s a real truth to the idea as he originally presented it, but it’s limited, and his definition of “Hubris” has no relation to the actual word. I believe that those may be aspects of real programmers, a great programmer goes beyond that. Building on Larry’s idea, I present you The Five Virtues of a Great Programmer:

Vampire Bug [Definition]

Vampire Bug: n. something that worked when you went to bed at 2AM, but when exposed to the light of the next day dies horribly. Typically the exposure proves that it couldn’t possibly have been working at 2AM either.

How to enable GitHub 2 factor Authentication on new device / app

( as of Sept 30th 2014 ) These are the instructions for how to do it if you’ve already got it configured and need to add a new app / device. If you don’t have it set up already, GitHub’s docs are… probably passable. Go to Settings Click on Security In the “Two-factor authentication” section click “Edit” Yes, even though you don’t want to edit it. Under “Delivery options” click “Reconfigure two-factor authentication Yes, even though you don’t want to reconfigure it.

What would you want to do?

This afternoon my intern asked me this simple question. She’s a new developer, and a friend of hers is working in a fresh codebase, with best practices. Everything is nice, and he can keep the entirety of it in his head. She’s working with my team, Support Engineering. We’re the front-line bug squashers at our company. We’ve got a legacy codebase with no tests and brain melting insanity around every bend.

Writing good User Stories

First, it should be noted that not all stories are “User Stories”. For example a developer might be tasked with manually running some script. The Story might simply be “run the fooberry script”. For everything that effects the UI, use a template: As a < type of user > I want < to perform some task > So that < I can achieve some goal > Note that it’s all about what the user wants.

Finding the Github Pull Request for a topic branch

Finding the Github pull request associated with a branch. Work on a large enough project, with other people and sooner or later you’re going to find some commit, or branch, and want to know what was in the pull request that merged it in. Maybe you want to see what other commits got merged over at the same time. Maybe you want to see what the diff was at that point in time.

Bonsai Coding

Writing code is a lot like maintaining a Bonsai Tree. If you stop pruning it it’ll stop being a Bonsai and turn into a bush. Little tweaks, frequently aesthetic ones, will help to keep it beautiful and under control. It will still grow in unexpected directions, as other developers make changes, but careful pruning will keep it balanced, and healthy. What is “careful pruning” then? Each file is a branch on our tree.

The Daily Team Tracker Worksheet

The Daily Standup Meeting is a core aspect of Agile development. The simplified idea is that you want to start the day with a very quick status check of what everyone’s working on, and helps “…to coordinate efforts to resolve difficult and/or time-consuming issues”. But, how do you keep track of the things your minions are working on today and deal with your own tasks, and 400 daily interruptions? For me the answer was to put together the Daily Team Tracker Worksheet.

[Review] CruxSKUNK iPad keyboard / case

The backstory Once upon a time there was a Kickstarter to make the world’s most awesome keyboard / case … thing to “Turn your iPad® into a laptop”. As with most hardware projects on Kickstarter the expected delivery date came and went, and came and went again, but I feel the folks at Crux did a great job of keeping the backers informed, and the reasons it got set back almost always boiled down to them not being willing to accept half-assed Chinese manufacturing even if it would have gotten it into our hands sooner.

The Thing About Today

The thing about today is that we have the power. We, can destroy this fear. Not by being stoic. Not by being “strong”. By smiling. By being human. By being the neighbors we wish we were surrounded by. Go outside. Smile at a stranger. Ask someone how they’re doing and mean it. Listen. Yesterday’s act was horrific, but I will light up this mother fucking town with smiles, because we are alive, and this world is filled with brilliant people with warm hearts, and their own 200 watt smiles, just waiting to shine.

Git push is not what you think

tldr; git’s default configuration with regards to push is potentially very dangerous. make sure you’ve run git config --global push.default current There are other options for push.default but make sure you read the docs before setting them. setting current as your default behavior means no more complaints about setting upstream when pushing. Perception vs. Reality vis-Ă -vis git push When it comes to git push most people think “It pushes my current branch’s updates up to the remote server” but that’s only a small part of what’s happening, and ignorance about the rest can leave you with very upset coworkers.

Setting the Atomic Clock

This morning’s shower brought me an interesting series of thoughts that I thought you might appreciate, and it all started with the simple question of “How do you set The Atomic Clock?” My first thought was that at some point you have to find some other clock and precisely sync up with it. Then again, they may have said “fuck it” and just had Bob press a button when some other clock flipped over, but then I wondered “How do we know what time it is in the first place?

Some useful Vim plugins

There are two things that make using vim awesome… no there are about 200,000 but most of them involve adding a few lines to your .vimrc to enable them, or installing a plugin. My .vimrc is just over 300 lines after all these years of use and customization. But, rather than go into all that, I figured some of the vim geeks out there might appreciate a pointer to some of the plugins I use.

Mage Knight Co-Op Rules

We love the game Mage Knight, but the co-op rules are widely regarded as crap. The following rules have been collected primarily from Board Game Geek, an tweaked ever so slightly here, and there, in an effort to make the game cooperative and yet, still balanced. This document covers: Assistive Spellcasting Sharing of fame and loot Trading of cards, crystals, and units Modifications for Interactive cards Modifications for Interactive skill tokens Assistive Spellcasting Any number of players are able to cast spells on an ally’s turn so long as they are within 4 hexes of the ally they wish to help.

Rebasing A Pull Request on GitHub

It’s generally good practice to rebase commits on a topic branch into a single commit before merging. It results in a much cleaner commit history, and makes rollbacks easier. The Question However, the question was raised: what happens if you… fix a bug (commit 1) create a Pull Request get feedback via the Pull Request fix the bug fix (commit 2) rebase those two commits together (new tree-ish) push that back to GitHub (requires push -f ) The answer is based on understanding that a GitHub pull request has two forms of commenting: * comments on the pull request itself * comments on the commits that the pull request encapsulates.

[Review] The Sketchnote Handbook (Video Edition)

Who should read this? Anyone who’s seen The Sketchnote Army and wished they could do that. Anyone who’s sick of useless meeting notes they never remember, and never go back to read. Anyone who wants a way to provide information to people in a way that people will actually enjoy consuming, and not just skim through. The best laid plans… My initial intent was to create this review in Sketchnote form, but Sketchnoting is, in no small part, the art of filtering essential ideas from a stream of words, and presenting them in a semi-visual fashion in order to help convey and emphasize the important points.

Git: pushing and pulling from multiple repos

Lets assume you’ve already cloned a remote repo and have been working with it. Now, someone has set up a second repo out there for the same codebase, and you’d like to interact with both. *Please note: The following is based on the assumption that you have write privileges to the second repo, but don’t worry, you do essentially the same thing if you don’t and I’ll cover the differences at the end.

Why you should wear a bow tie

In many situations, the standard tie has become de rigueur, and so commonplace that it is generally only noticeable in its absence. This is not something that can be said of the bow tie. Imagine you’re going to a job interview. If you wear a tie no-one will take note of it (unless you’re a lady). It’s simply what you do. A bow tie on the other hand, says a number of things about you, and makes you more memorable.

Life: An Instructional Flow Chart

An instructional flow chart to help live a better life. (click to embiggen) I’m thinking I need to artify this and make it into a t-shirt. Drop me an e-mail if you’d be interested in one.

Office Memo

Dear Sir or Madam: You may not be aware but liquids are capable of flowing through holes. If you place a container of liquid in such a manner that its opening is below the level of the liquid, the liquid will flow through that opening. Please take a moment to consider the implications of this, and discuss them with your coworkers, as some of them are apparently unaware of this fun fact.

Never register a domain name with your hosting provider

A smart developer I respect recently asked my why I didn’t just register my domain names through my hosting provider. I hoped he was joking, that he knew why this was a horrible idea. He did not, and I know some other smart people who register domains with their hosting providers. Education is needed. The problem is simple: conflict of interest. Should you ever decide to switch to a different hosting provider it’s in their best interest to prevent you from moving your domain.

An unexpected benefit to being an adventurer

The edges Sandy were upon us last night and Dachary commented about how I wasn’t taking the storm too seriously. It’s true. I’ve been pretty chill about it. But here’s why: we’re adventurers, and are pretty much good to go on a worldwide adventure at a moments notice, and it turns out that our “life on the road” kit makes a pretty damn good disaster kit too. If the power goes out we’ve got a JetBoil propane stove with a backup canister.

Creating an Interview Worksheet

Once again, I’d like to pick your brain. I’m working on an “Interview Worksheet”. It’s a simple form that you’ll fill out while interviewing someone, and prepping for an interview with them. There is, of course, a section for questions you want to ask them, one for taking notes during your discussion, and one for the common “How would you rate yourself on skill X” questions. But, I’ve also got a section where you can quickly rate the person on various attributes that you tend to look for.

There's always more to learn

My mother was an incredibly talented artist. For most of my life, she made here living teaching private students, and getting them ready for entry into art colleges. Once upon a time a student of hers got her a present. It was a Horse-hair calligraphy brush, a solid ink stick (add water and rub), and an instructional book on Chinese calligraphy. She was very worried about giving the gift though. She didn’t want to instruct a teacher she greatly respected by giving her an introductory how-to book.

Don't talk about what your product is

It’s really important, not to talk about what your product is. Nobody Cares. Talk about what the customer feels, wants, dreams of, etcetera. That’s what they care about. – Amy Hoy Speaking on the Ruby Rogues Podcast #72

The Entrepreneur's Notebook (part 1)

Part 1 of 3 See also: Part 2 - Tips for more productive note-taking Part 3 - Searchability, Notebook choices, and backups “Write down the thoughts of the moment. Those that come unsought for are commonly the most valuable.” - Francis Bacon, Sr. I contend that the best thing you can do to improve your entrepreneurial skills is to practice thinking like one. What follows is my favorite technique for doing just that, and if you choose to emulate it, I guarantee you’ll end up with more business ideas to work on than you every imagined you had in you.

The Entrepreneur's Notebook (part 2)

Tips for more productive note-taking Part 2 of 3 See also: Part 1 - Introducing the Entrepreneur’s Notebook Part 3 - Searchability, Notebook choices, and backups So, you’ve decided you want to try keeping an Entrepreneur’s Notebook, or maybe you already do, but want some tips on making it more useful. Excellent. What follows are the techniques I’ve found to be most useful in my entrepreneurial notebooks. If you’ve got some tips of your own, please drop me a note or leave a comment.

The Entrepreneur's Notebook (part 3)

Notebook choices, and backups Part 3 of 3 See also: Part 1 - Introducing the Entrepreneur’s Notebook Part 2 - Tips for more productive note-taking What about backups and searchability? This is one place where the digital age is unquestionably superior. Dropbox, iCloud, email… there are myriad ways to back up your digital writing, and text is easy to search. On the mac, Spotlight gives you great search across every document you’ve ever written and searching within a document is easy in any text editor.

Appcelerator: extortion is just part of the job...

Appcelerator was recently caught extorting one of its free users, and then that users client for ÂŁ5000, and then others spoke up to say it’d happened to them too. Initially it looked like it could have either been a bullshit company policy, or just a salesperson lacking in morals. In the end, it turns out to be both, but the response by the CEO is why I would strongly encourage you to never use an Appcelerator product (free or otherwise) for your project.

Cheshire [Definition]

Cheshire: the collective noun for sidecar motorcycles (alternately known as “hacks”) owing to the extraordinarily high probability of generating smiles in the people they pass relative to all other vehicles. Usage: “Upon encountering a cheshire of sidecars one should strongly consider playing the lottery.” or “Wow! There goes a cheshire of hacks.”

Blog post dates: Precision, or freshness. What's important?

Not too long ago I sent out a question. I asked people when, and why, dates were important to them on blog posts. The responses were revealing, both for what they did, and did not contain. There are some situations where having a date on your blog posts is obviously needed. If you write about anything techy you absolutely need them. I come across tons of sites with perfectly good code examples, that have been obsolete for years.

An offer for Web Geeks

I’d like to make a simple offer to the web geeks out there: One hour of one person’s skills, to make the web a little bit more awesome, and raise $75 for your favorite environmental or medical charity. Information Architects (the people behind iAWriter) have come up with a really spectacular JavaScript / CSS widget. When you load one of their long articles (like this one) you’ll see a widget in the top right corner that says “Older | Newer” and links you to the previous or next article.

I love the internet

Something kind-of amazing just happened. Background: Unglue.it is a really cool site, that I’d never heard of until Amazon decided to stop processing payments for them. Think Kickstarter for freeing out-of print books. They get people to create a wishlist of books they’d like to see released as Creative Commons licensed DRM-free ebooks. They then talk to the authors and publishers of the books people want to find out how much money it would take to “unglue” them.

Turning Down Apple

I just turned down an interview with Apple. There are a few companies who, when they call with a job offer you’ll respond with “fuck yes”. Apple is on that list for me. And yet… A recruiter called me the other day. Apple needs someone and my particular skillset and background. It seemed to be a pretty good match, and she’d been looking for a while. An internal tool building kind of job, in a language I enjoy, for a company I admire?

Major MObtvse Update

I’ve just merged the experimental branch of MObtvse into master. This represents a huge update and in addition to the feature list below there’s a nice update to the default theme, great new editor, improved Kudos integration on the admin screen, and a number of more subtle improvements. I’m really happy with the progress I’ve been able to make on MObtvse in my free time, and if you’ve been considering it, now is definitely the time to grab it from Github and give it a spin.

Task Order Up!

I’ve been a big fan of David Seah’s Productivity Tools for a while now, but when it comes to task management his needs, and mine frequently diverge. As a freelancer he needs to track hours in a way that is totally irrelevant to me. He’s got no-one to answer to but his clients, whereas I’ve got a boss and coworkers who are asking for details on current and past tasks in ways that clients rarely do.

About

I am an adventurer, a geek, an entrepreneur, an esperantist, and a writer. I’m passionate about about exploring the world and helping people to get out of their cubes and actually live their lives. You can find out more, including all the latest contact info, at masukomi.org.

Want Some Kudos?

I think Dustin Kurtis’ idea of “Kudos” is spectacular. A simple tool for people viewing your post to say “I really appreciated this.” You can see it in action in the upper-right corner of every blog post in the Svbtle blogging network. I really want to bring it to MObtvse, but first I had to figure out how it worked. So, I’ve put together an example implementation of Svbtle-style Kudos that can be incorporated into your blogging software with a few easy changes.

Introducing MObtvse

Today, I would like to introduce you to MObtvse. It’s a fork of Nate Wienert’s Obtvse, a Markdown based blogging system written with Ruby on Rails. Obtvse is itself, a reverse engineering of the Svbtle blogging platform / network. The notable differences between MObtvse and Obtvse are that: MObvtse uses MongoDB via MongoID MObtvse allows posts to be tagged. Readers can click the tags to see all other posts with the same tag, and Administrators can use the tag cloud to help find specific, or related, posts.

Announcing ListfulThinking

Friends, Romans, Countrymen! Lend me your ears. Actually, that should read, “Friends, Romans, and Countrymen who own iPads or Macs!” Eight years ago I stumbled across a brilliant way of creating a self-organizing ToDo list. My initial proof-of-concept app was really ugly, but worked wonderfully. A few years later, I translated the method into a paper version, which looked great, and worked pretty well. Sadly, lines on paper aren’t very good about rearranging themselves on command.

Using Git Bisect to Crush Your Enemies

Using Git Bisect …to crush your enemies and/or bugs Or, how to save countless hours and find out where things broke Git bisect is the most awesome, and most poorly publicized feature of git. It allows git to walk through your branch and quickly find out which commit broke things. The usage is simple. You point git to a bad commit ( usually the most recent one ) and you point it to a good commit (the most recent one you know of when things were working).

Tourists and Adventurers

This post was written as response to The Travel Chica’s post about the flooding of the Atacama The Travel Chica just discovered that “the driest place on the planet is flooding”. The two most beautiful places on my itinerary for Chile have experienced environmental disasters just before my arrival. First, there was the fire in Torres del Paine. And now the driest place on the planet is flooding. … I just spent US$100 on a bus ticket to get here, dealt with the discomfort of an overnight bus ride, and left a city I loved and wanted to explore more.

I Saw a Man Walking Down the Street...

… and it reminded me of everything I hope for. The man in question had serious physical disabilities. His left foot pointed almost directly inward. His legs didn’t seem to be oriented in the way that yours or mine are. I suspect his spine didn’t curve in a typical direction either. He walked forcefully, arms flailing out to the sides. His feet stamped their way into the concrete. With every step you feared he might topple forwards, but he didn’t.

Great Apps for Your New iPad

A quick listing of some of my favorite iPad apps, which I hope new iPad owners may find useful. Reading Early Edition 2 A newspaper style feed reader. This is the best app of this genre on any platform. It does crash from time to time, but not enough to be particularly annoying. My recommendation is to not put your full list of feeds into it. Instead, put a selected subset of them that would work well if you were reading them in a physical newspaper.

Know Backbone.js? Want a Little Extra Work?

If you know Backbone.js and are interested in 5, or more, hours of freelance work every week, I want to talk to you. We’ve got a number of apps in the pipeline and need someone to help code them. The current one needs Backbone.js and PhoneGap (iOS) experience. There will be plenty of front-end work in the upcoming apps as well as Ruby on Rails, or Node.js tasks if you’ve got the skills for those too.

How to Merge Specific Files From Another Branch in Git

There are many ways to get specific files from another git branch into your current git branch (overwriting the ones in your current branch), but this is the only method I’ve been able to find to merge those files into your branch en-masse. With this method you’ll be able to pull in any file, or files based on the name of the file or containing folder. If you need to merge files in multiple folders on different subdirectories you can simply rerun step two with a pattern that matches each of the different portions of your tree that you wish to merge.

It's Not What You Think It Is

There’s a petition on Change.org right now urging people to “Tell Ticketmaster: Stop hijacking fans’ rights!” The short version is that person behind the petition (Nathan Hubbard) is upset that Ticketmaster has begun to tie the purchased ticket to the purchaser of the ticket. Nathan feels that since you bought the ticket you should be able to resell it, and that this is just a “ploy” by Ticketmaster to make more money by handling the resale of the tickets themselves.

OS X Apps Worth Checking Out

There are a ton of good OS X apps out there. These are the ones that I really appreciate, and think you ought to check out too. Please note that this was written on Feb. 2nd 2012, and that software changes at a very rapid pace. Writing Apps Scrivener If you’re serious about writing, or writing anything significant (book, screenplay, thesis, research paper, etc.), there is only one app to consider, and Scrivener is it.

Why bootstrappers should track their time

The Problem Most people only track their time when they are billing by the hour, and most people aren’t billing by the hour. As a result, most people don’t track their time. Now, you can try to bootstrap a new business or product without time tracking, but you’re doing yourself a great disservice if you do. The problem is that we always think we can get more done than we really have time for, and we inevitably think we’ll have more time to work on things than we really do.

The thing about Mock Objects

You can tell weather or not someone really “gets” unit testing by asking them one simple question, “Do you use mock objects?” Almost invariably, they will say “no”. Even people who have totally gotten the testing religion. It’s like watching someone pray to a statue of Jesus; totally oblivious to the fact that Jesus himself is standing four feet away reading a book. This is partially due to the fact that most geeks don’t actually know what a unit test is.

My New Favorite Interview Question

I interview a fair number of geeks every year and usually spend my alotted time going over one programming challenge. Lately I’ve been looking for a new one that was simple, but still big enough to give me a glimpse into their thinking. I think I’ve found it. Why I Like This I really like this question because: A good solution involves recursion but you could approach it in multiple ways.

Serving Octopress From a Self-hosted Git Repository

There are two good reasons to serve Octopress from a self-hosted git repo. It provides you with an off-site backup in case your local copies go up in flames. It gives you an environment where you can integrate secondary scripts and libraries that allow you to do things like e-mail posts to Octopress. git provides a very efficient, and atomic, means of uploading your files. Complicating factors: Not all ISPs have ssh access or the latest version of ruby, and may not have git or Bundlr installed.

Open Source Wednesday

This is a simple idea for every web development company (small or large) that owes its existence to open source software. I’m going to use Ruby on Rails as an example, but this is just as applicable to all of the other frameworks and tools we use daily. On the first Wednesday of every month all of your developers work on bugs or needed features in one of the frameworks or tools that your company can’t live without.

Why There?

Where you spend your time developing is an important decision for an open source developer. Partly we do it for personal satisfaction, partly we do it to give us a tool we want, but there’s always a part of us that wants others to use and enjoy our work. I want to talk about that, and I want to talk about the frustrations that people who use those open source projects have, but first I need to set the stage.

It's Worse When the Sun Goes Down

At our house, you go to the bathroom armed, or you don’t go at all. At least, once the sun goes down. There’s a pistol wedged between couch cushions with handle raised for easy access as we watch TV. You think I’m joking, that maybe the gun is metaphorical, or that this is the start of some fictional story. It’s not. Every word is true. It all started a month or two ago.

gVim / MacVim drag command for base64 encoding images

The idea is that it can be very useful to base64 encode an image directly into your css file instead of referencing a separate file, but doing so usually involves dropping to the command line, calling openssl, copy-pasting the output, specifying the mime-type, etc… Bret’s Terpstra distilled all of that into one drag-and-drop command for Textmate.The following is simply a generalization and instructions for using the drag and drop in MacVim / GVim

JekyllMail: Posting to Jekyll from Email

There are a few problems with Jekyll / Octopress though that would, realistically, make me less inclined to use it. First, you need to have your entire blog checked out on whatever box you’re posting from, and that is simply not something I’m willing to do on a work computer, and not something I necessarily can do when on a borrowed computer. Secondly, the user interface sucks. Well, there really isn’t one.

[Review] Byword for OS X

[Some perspective][] [What’s good][] [What could be better][] [Bugs][] [Would I recommend it?][] Some perspective I purchased Byword because I think Markdown is a spectacular way to write and was looking for an app that would allow me to create new documents, easily preview them and grab either the formatted preview text or the generated HTML. Until now, I’d been using Marked for previews while I typed in Vim. Now, Vim’s great.

It's not a "blog"...

Listen, you are an intelligent person, but someone has led you astray, and it is driving me nuts. When you blog some information for the world to see, what you have created is a “post” more specifically, it is a “blog post”. Sometimes they’re “entries” but that’s more commonly associated with diary style blogs. In some cases a post could be considered an “article”, but those posts are never, ever, a “blog”.

Thinking about Lo-Fi camera apps

Anyone who’s been following my Twitter feed lately knows that I’ve been having a lot of fun with the Lo-Fi camera apps on the iPhone, and I had a post all written up about them, but then my friend Kirk tweeted: Gotta admit I hope the whole instagram thing is kind of a fad. Makes all [the pictures look] like those b+w “dress up like Bonnie and Clyde” I think he’s not alone in this opinion, and he’s definitely got a point.

Cleaning Wordpress of some Malware

The other day the Googlebot swung by to check my site for updates and found Malware. Almost immediately, it seemed, people’s browsers were warning them off from my sites. Malware! Bad Things (TM)! There be Dragons here! and so on. Fortunately a friend dropped me a Tweet shortly after it started and thus the hunt began with one clue: Malicious software is hosted on 1 domain(s), including globalpoweringgathering.com/. Sadly, that was ALL I had to go on, and when I told the browser I was ok with the risk (Windows malware can’t hurt us Mac folks) I was unable to find any calls to JavaScript to files on my blog.

Adventure means taking chances

Tomorrow morning Dachary and I will be climbing on our motorcycles and setting off for an epic adventure lasting nearly four months and over 17,000 miles. The goal is to drive south from Boston MA, USA until we reach the most southerly city on the planet: Ushuaia Tierra Del Fuego, Argentina. I can’t wait. Usually when we tell people their first reaction is “Be careful in Mexico.” Colombia, Nicaragua, El Salvador, Honduras, rebels living in the jungle… not a concern.

Food and Cuisine (a brief history)

A brief history of food: Early man: “So hungry…. *chomp*” Not-so-early man: “I wonder what that tastes like…” A brief history of cuisine: “What would make that taste better?”

Counting the days until Borders dies

Honestly, I kind-of like Borders (and Barnes and Noble), and they’re the only ones with a zero BS customer loyalty signup process. “Do you have a card?” “No.” “Would you like one? I just need your e-mail address.” “Ok it’s _____ " “Here you go.” The end. No paperwork. No forms. Thirty seconds. But, that’s the only thing they’ve gotten right in a long time. Today they sent me an email announcing that “You could win the new American Girl doll”.

And then there was the bear...

We rode the Trans-Massachusetts-Trail yesterday. A series of dirt roads starting at the border of Connecticut and Massachusetts and working its way north to route 2 where it meets up with the start of the Puppy Dog Trail, which winds its way north all the way to the Canadian border (we’ll be doing that one shortly). Near the end of the trip we stopped for a break in the woods to address the “call of nature” and grab a snack.

800+ lbs of flying idiocy.

Yesterday I watched an 800 pounds of chrome, fiberglass, metal, and plastic spinning through the air. Sunlight reflected in movie-like highlights off of the long chromed pipes. The Harley did things other Harleys have only ever dreamed of… in their nightmares. I saw the whole thing, from start to finish. Dachary only saw the grand finale of flying metal, but her brain came to the obvious conclusion: “That’s a cruiser [spinning through the air].

A note about camping while touring

On this past weekend’s test run we encountered an unexpected problem. It took us nearly two hours to break camp each morning which left us no time to relax, or have a nibble, between waking and hitting the road. On my last big trip it wasn’t like this at all. Yes, it took me nearly two hours between when I woke and when I hit the road, but that included a shower, a nibble, and lounging around reading a book.

It's only been three days...

We took a test run this weekend; seeing how the gear works for the big trip in December. It was only three days, but now I’m back, out of the shower, and about to start my morning routine. And, the truth is I feel a bit overwhelmed at the prospect. So much…. internet. So much data. So much news. And so little of it actually matters. I’ve already falling back into the mindset of being on the road.

Why you should never indent code with spaces

Tabs vs. spaces It’s a big back-and-forth between developers, with lots of us swearing by the use of spaces, but I’m here to explain to you why everyone who uses spaces instead of tabs for indentation is not only wrong but seriously inconsiderate of their fellow developer. First though, we must consider what a tab is and what a space character is. A tab is a typographical element specifically designed for the indentation of text to various levels.

git status-report

Every week I, and millions of developers like me, have to put together a status report for our bosses, letting them know what we’ve been up to for the previous week. Like most of the developers I’ve encountered I’m always a little unsure of what *exactly* I was working on, and typically I just open up git to see what commits I made, and try to remember any non-code stuff I’ve Thinking it was silly to keep wading through everyone’s commits for the past week to see what I worked on I’ve put it all together in a script (in Ruby) called git status-report, which you can grab from github here.

DODOcase iPad case mod

I love my DODOcase. Money very well spent1. Throw an iPad in it and it just looks like a big Moleskine (love that look) instead of some techy $500+ block of “steal me”. Plus, it’s about the only case out there that I feel is actually worth the $50 they all seem to cost. But, there’s one problem: nowhere to store any papers. I had to go to City Hall the other day and needed to bring some papers with me.

Mind Map of Ray Mailman's I Didn't Know

I was listening to Ray Mailman’s I Didn’t Know the other day and realized it’d make a great Mind Map. So, this morning I grabbed MindNode for the iPad, put on some headphones, and whipped this out. Future Edit: The song is from his Sideways album. It’s kind-of hard to find as he seems to have disappeared from the Internet in 2014, but here’s a link to it on YouTube Music.

Feed by Mira Grant [Book Review]

Feed is not about zombies. Yes, they play a significant role in the book, but the book is simply not about them. It is a gripping book about journalism and journalistic integrity. It starts out with a dramatic zombie escape sequence, as all books involving zombies must, which honestly left me feeling… “um. ok. And?” The scene was good but it didn’t seem to have a real point beyond acting as a hook.

Dear AT&T: Fuck You

As we all know, AT&T has been having serious issues with their quality of service thanks to the iPhone. What most people don’t know is that it isn’t a problem that can be solved by simply putting up more towers1. But that’s not what I’m upset about. I’m upset about their handling of the “3G MicroCell”. I live in Cambridge MA, just across the river from Boston. There are millions of people here (literally), and, like many AT&T users my calls get dropped even when outside, on bright sunny days, with five bars of service.

Git Rebase: why, and when, you'd use it.

Rebase is one of the most powerful tools in Git’s arsenal, but it can trip up people coming from centralized version control systems. This is just a quick example of why, and when, you’d want to use it. Let’s say we’ve got a team of three developers. Monday morning they all come in, Bob makes a quick commit, and shares it with everyone. They all do a git pull and suck it into their repos.


The $11.09 iPad typing stand

The Problem When you check out the iPad at an Apple store they’re all lined up on little lucite stands with a grippy top and a slight angle so that they’re simultaneously easy to view and easy to type on. I love those stands. I’d totally buy one, but I can’t. [Update: now you can buy something even better. Check out the Loop from Griffin and their A-Frame the goal here was to create a stand that would hold your iPad securely, would let you easily read the screen, and type comfortably on.

Hi-Per Hanger [Review]

The Hi-Per Hanger from Black And Grey \ Let’s get this out of the way right off-the-bat. This, is a seventy dollar hanger. Technically it’s $30.95-$72.95 + shipping, and that is a pretty hard price-tag to swallow for a hanger. But, the real question is “is it worth it?” I’m asking from a purely practical perspective. The answer, as far as I’m concerned, is a whole hearted YES! If mine were stolen today I would go to the web site tomorrow and buy another one without hesitation.

Macro Micro Checklist

A variation on my Simple Checklist Sheet. The Macro Micro Checklist allows you to maintain a list of key deliverables, fine grained tasks, and a quick calendar of highlights for the upcoming month. In the top left you’ve got a list of Key Deliverables. These are the high-level tasks / projects you’ve got on your plate. They may be personal things like “File Taxes” or work based things like “Deliver Example.

Three Useful Task Sheets

Almost five years ago I wrote a self organizing todo-list application. It was ugly, but worked really well. Unfortunately for me, I really prefer writing my todo lists out on paper. I like the simplicity of it, ideas just flow out through my pen. I can make notes and draw little arrows connecting things. And, I can make really satisfying check-marks in boxes when I’ve finished something. Paper’s just the right medium for me, and I know I’m not the only one.

On creating my own language

Some of you may remember that I was working on creating my own language. I wrote a creation myth in it a little over a year ago, and with the exception of a few months, I’ve been trying to make daily diary entries in it as a way of not only recording my life but practicing my language. I didn’t create this for any grandiose reason. I simply wanted a language that would express the way I think.

Respro Foggy [first impressions]

In WebBikeWorld’s review of the HJC IS-16 helmet they pondered why there was Velcro on the inside of the chin-bar. A commenter suggested that maybe it was for a Respro Foggy. Curious as to what one was I Googled their site and was amazed at the simple brilliance of it. There is nothing fancy here. It’s just one of those head-slappingly obvious ideas that makes you wonder why no-one else has been making these.

On learning Na'vi (or any "fictional" language)

There are a number of people out there who have expressed an interest in learning Na’vi (the language spoken by the Omatikaya in Avatar ) and are getting verbally shat upon by the communities they dare to mention this in. And, I can understand the knee-jerk reaction that it’s silly to learn a language from a semi-random piece of popular fiction. But, I can also think beyond that. Learning a language, any language, is a remarkable thing, especially in American society, and if you think about it, there is nothing more or less valid about a language that was created for a movie.

Stop applying your agenda to Avatar (and everything else)

Over on Sociological Images Lisa evaluates Avatar(spoiler alert) Unfortunately, she’s got an agenda, and is seeing what she wants to see instead of what’s actually there. First off, she says that the Na’vi “… are, in short, the stereotypical “noble savage.” Which as I stated in my review of Avatar, is simply false. The Na’vi are never portrayed in the classic sense of “noble savage”. They are noble yes, but your classic “noble savage” (at least as I’ve seen it) is also, “savage”, “primitive”, and simply “doesn’t know better.

Why tinyurl.com and its cousins are a blight upon the internet

Every web page on the internet has an URL that is a unique address (that’s why it goes in the “address” bar), and in the beginning everyone used that. But early e-mail clients kinda sucked, and some of the current ones still do, and those addresses were so long they’d wrap, or had some funky characters in them that the e-mail client wasn’t expecting, and so it’d break the URL in such a way that you’d have to copy and paste both parts of it into the address bar instead of just clicking on it.

Avatar [review]

I didn’t plan to write this. I just can’t get it out of my head. Despite the hype, despite my fear of having expectations set too high, Avatar has blown me away. You’ve probably heard people talking about how incredible the CGI is, and it is. But that’s not important. What’s important, is that James Cameron has created a lush and beautiful world that is utterly believable. You will hear that the plot is fairly simple, even predictable.

I saw a beautiful thing today.

There was a young girl, at that age when puberty hasn’t quite reached her, and everything hasn’t changed. I watched her through the window of the subway train as she buried her face into her fathers chest and hid from the cold. He was talking with another man his age and gesturing with his arms. After a moment she turned around, reached up, and put her hands around his forearms. Not to interfere.

Robert A Heinlein Changed My Life

Somewhere around the time I was in High School my mother introduced me to Heinlein, and one of the first things I read was A Stranger In A Strange Land. And, I think it impacted me even more than I realized at the time. I’m almost finishing rereading it now, and reflecting on some interesting paralels between the characters and myself. While I could never prove it, it seems that as I changed from a “nestling” into an adult I took on the morals of Valentine Michael Smith and combined them with Jubal Harshaw’s way of thinking.

A Behaviorally Targeted Secret Santa

We’re doing an interesting variation on Secret Santa in our group this year, that you might enjoy too. Background: we do behavioral targeting in my group. We get anonymous data about web surfers and try and try and make sure that those people are shown banner ads that are actually applicable to them, but we never know WHO, and thus… A behaviorally targeted Secret Santa. Each participant submits a list of 3-5 items they’ve recently purchased (online or off) and are comfortable sharing to the coordinator.

A present for my Twitter followers.

A little bit ago I got a 1" button maker and have been having lots of fun with it. So, I thought I’d make you a present. :) In order to get one all you have to do is send me a Direct Message on Twitter. If, by some chance you’re following me (@masukomi), but I’m not following you (and thus you can’t DM me) send me an e-mail at masukomi@masukomi.

An evolutionary leap

It was, so strange… No, unbelievable. I was sitting at my desk, typing away, when the phone rang. Hmm, I don’t recognize that number… “Kay speaking” “Hi, I’m Random Headhunter X with Random Company Y, and I was hoping I could talk to you about a position. I know you’re not looking, but I was hoping you might know someone…” My brain froze for a minute. I know more words followed but… did he just say what I think he just said?

A realization ~ Why hadn't I noticed this ~ Never a long day

I was thinking about my trip and had one of those awesome, yet so simple, realizations. I never had a “long day” on the bike. Like many of you, I sit in my cube day in and day out, and by three o’clock on most of those days it’s already feeling long, and my brain just starts thinking about going home. But that never happened on the bike. Even when I was ridding ten hours a day I can’t remember a single day that felt “long”.

Looking for something

Ever since the trip was done, I’ve wanted more. It’s not that the trip was so wonderful that I want to recapture it. It’s that in nearly six thousand miles of riding I never found what I was looking for. I keep thinking that it was too easy. That through all of that, there was no real challenge. The roads are all pretty much perfect. There’s no real risk of running out of gas in the United States.

Microlight Solo ~ Two weeks and change on the ground ~ Final Impressions

Quick summary I set this tent up and took it down every day for over two weeks and thought it was excellent. The details I figured that camping was “the way to do it”. I’d save money, and remain a bit more in contact with the world than if i’d of stayed in motels on my trip, so I need a tent. I hoped on my bike and drove about a hundred and fifty miles up to the L.

I almost Forgot ~ Buffs make everything better ~ Great comfort item

So, In my list of items in my kit ( http://masukomi.posterous.com/write-up-on-my-kit-the-things-that-worked-and ) I totally forgot to mention my Buffs. This is most likely due to the fact that I wear them every day anyway so I don’t really think about them much. One around the neck. Kept it from getting to chilly and I hate the feeling of those tiny bugs that seem to manage to ping off your throat from time to time.

Write-up on my kit ~ The things that worked and didn't. ~ What I'll change next time.

Some of you, mostly the motorcycle geeks reading this, will be curious about the kit I used on the trip, what worked, and what didn’t. I laid out the initial batch of it with detailed notes on flickr (click the image to go to flickr and see the notes) There were a number of items added afterwards. What worked: The iPhone was wicked useful but I had no service, or no data service for so much of the time that the built in map app was useless and I ended up buying the TomTom app since it keeps all its maps locally.

The unexpected: ~ Sometimes it is a grand thing ~ Sometimes it's simple

I thought it would be a Grand Adventure. Something I would return from with tales of interesting events and intriguing sights. But it wasn’t like that at all. In fact, there wasn’t a whole lot to report on, on a day to day basis. I’d kind-of bemoaned that about Lois Price’s books. I enjoyed them, but it felt a bit like she’d left out so much. She’d cross entire countries only mentioning their existence in passing.

First there was the pic ~ with mention of a story ~ Now you have the words.

It started with a thwapping on my left foot. Thwap Like a thick cloth being whipped heavily across my boot. Thwap “But, There’s no cloth in front of my foot…” I think. Thwap I’m imagining some impossible piece of canvas beating in the wind, occasionally swinging around to slap across my laces. I look down. There’s a grasshopper IN my shoelaces, its whole body wedged under them against the tongue of my boot.

I think it's dead now. ~ There's no way it's still healthy ~ It's not my fault though

I forget what state I was in. Ohio maybe? I’m not sure. I was driving along, through the edges of some town when I see, for an instant, a Monarch Butterfly. And then it hit me. In the chest. *whap* Then, as they weigh so very little, the force of the wind colliding with my chest and rushing upwards pulled it along. Right up into my HELMET *flappityFlappityFlappity* “AAAAAAAHHH!!!!” There’s a flapping papery thing stuck between my jaw and my helmet.

Pictures from across the states

Somewhere unknown Camping in Carlyle IL Pics from the Sky Meadow Campground Wind Turbine Blades Grain Storage Murals by E. Rhodes Wyoming Plains Indian Springs Phantom Canyon Road’s southern end Bug Spatter Iowa Standard My bike in The Badlands The final morning

Today was the last ~ It started off in a cloud ~ Ended with regrets

Today, my last day, started off about a third of the way across New York in Arkport and found me riding through another cloud. This one was just enough to shorten visibility and mist up your visor. Not like the one in Wyoming which left everything dripping. After a while I made my way past the hills that bounded it and found bright blue skies with sunlight streaming down. I was excited.

An evil bathroom ~ Did The Joker design it? ~ I'm greatly displeased

I walk in and the light snaps on. The stalls resemble small concrete torture rooms where you can easily wash down the blood. I’m about to sit when the light snaps off. “WTF?! Was there a switch I missed?” I start to move and they snap back on. No switch by the door. “This does not bode well.” The lights are on a timer. It is set to approximately 15 seconds after movement stops.

A compromise reached ~ Colorado will be it ~ Barring surprises

I’ve reached a compromise with myself. Turning around at the first sign of trouble really isn’t me. And, while really annoying and unsettling, the starter issue isn’t a killer. If it happens again I’ll stop at the next Kawasaki dealer I pass. I’m still not happy about driving with an iffy bike though. And, I’m still not sure that this trip is really giving me what I want for the reasons I gave yesterday.

Everything I have ~ All spread out around the room ~ Trying to dry out

Pants - wet Spare pants - wet Boots - wet Sneakers - wet Socks - wet Spare socks - wet Shirt - wet Spare Shirts - wet Atlas - wet Moleskines - wet Waterproof pocket - wet Towel - wet Waterproof motorcycle suit -wet Tent - wet, but was expecting that Sleeping bag - DRY Electronics - oddly DRY Partially this is my fault: I didn’t close the air vents on my suit, so water got in, although that doesn’t explain why my legs were 100% soaked.

Some complications ~ Starter is on the fritz now ~ Need a mechanic

I hate Missouri. Unfortunately, it hates me back. It was getting late but I just wanted to get the fuck out of Missouri. I could have stopped for gas but I was all “No, I’ve got another 20 miles before i need to look. Let’s get out of this state!” Unfortunately I’d forgotten that Missouri has notably higher speed limits than all the previous states, which means I’d been going notably faster and, it turns out it shortened my range by about 40 miles.

A map of the ride ~ Twisties, beauty, and some slab. ~ It had all of it.

A map, for those of you who are curious where I went. The bottom left corner of the triangle, in Massachusetts. That’s the place you want to go. Effing gorgeous, at least this time of the year and lots of great winding roads as you approach Florida MA. View Larger Map

For those of you who don't "get" Twitter

It’s the little things that bind friendships closer. That quirky look on his face as he tells you about the bug that landed on his finger. The fact that in the middle of your phone call he suddenly stopped and calmly said, “the cat just horked on my foot.” I don’t love you because of the valuable information you tell me. I love you because of all the other things you tell me.

Relative Positioning Imagery for Linguists #2

The second in a series of graphics for linguists and conlang makers to use as visual aids in describing relative positioning and prepositions. The first is here. This work by http://www.masukomi.org is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License. PDF version: with text, and without text. SVG Version PNG Version

Relative positioning imagery for linguists

Conveying the words for relative positioning in a new language is difficult without visual aids. And finding visual aids you have permission to use can be particularly difficult for conlangers. This is the first of four such pages. I’m releasing them into the public domain, so feel free to do whatever you want with them. In PDF format with text and without text. In SVG format without text. In PNG format without text.

Things I wish they'd told me before I got my motorcycle.

The thing to keep in mind: Motorcycling is a lot like boating. You can get yourself a dingy that’ll get you around the bay for pretty cheap, but it doesn’t have much in the way of features, and if a big wave comes along you’re going to drown because you don’t have a life preserver. As with boats, the price range (for bikes and gear) goes from cheap and affordable to mind-bogglingly expensive.

Honda Metropolitan Scooter [Review]

Summary: The Metropolitan is a stylish, well made, scoot for getting around town, that is a blast to drive, but could do with some better brakes. NOTE: This post was written in 2009, and I haven’t ridden more recent models. A quick look at the most recent models (2024) suggests that not much has changed and that this post is still pretty relevant. Introduction: The Honda Metropolitan ( CHF50 ) was introduced in 2002 with a visual style that emulates that of the classic Vespas of yesteryear.

Mass-transit within Boston isn't worth it.

A huge number of people use the subway to get from one part of the city to the other twice a day, five days a week. If they’re smart, they buy a monthly pass which costs $59 and gives you unlimited rides within the central city zone. For the same $59 you could buy 29.5 gallons of gas at today’s prices ($2 per gallon). Burn that gas in a 50cc scooter at a conservative 80 miles per gallon (you can get more) and you can go 2,360 miles.

Localization for Struts Freemarker users

Because it took me freaking forever to find instructions on how to do this… You do NOT need a message-resource tag in your struts configuration files. Those are outdated instructions for old versions of Struts.You do not need to edit ANY xml at all. Your Action needs to implement Freemarker’s TemplateMethodModel interface You need a package.properties file (the default locale) and a then another one for each other locale / language you want to support (ex.

Why your tiered password scheme is flawed, and what to do about it.

First, let me explain what I mean by “tiered password scheme”. Many perfectly smart people I know have one strong password they use for one or two online banking type sites. They’ll then have a “medium security” password they use on sites that kind of important to them (maybe those sites have their credit card info stored), but not critical to day to day stuff. Then they’ll have one or two passwords they use on all the other sites like Twitter, Yahoo!

Is that even running?

It’s not uncommon for me to wonder if some app is running on my linux or OS X box, and while I could pipe together ps and a couple greps it felt silly to keep doing it after a while. So, I applied my admittedly limited bash skills and came up with the following script which I throw that in an executable called “got”. Now I can just type “got tomcat?

Get any URL onto your phone with a QR Code Bookmarklet

If you’re like me you find yourself sitting at your computer and need to go away, but there’s some page you’d like to read, or continue reading, on your phone. Well, if you’ve got an Android Phone or essentially any phone in Japan you can just use your phone to scan in a QR Barcode from your computer screen and then open the url on your phone. I know for a fact that there are other phones in the US that can read QR Code, but you’ll have to Google around to see if your phone is one of them.

Why I moved my domains to GoDaddy.com

Or, how to treat your customers right. I’ve had a number of domains with Register.com for years now. They’re not the cheapest, but they’ve got good tools for managing your domains and back when I used to be a freelance web designer/developer I had to call them a number of times to help address setup issues for clueless customers. They were always nice and helpful. But, I had about seven domain names with them.

Are you missing the point entirely?

This keeps happening to me. I follow a link from one interesting blogger to another, read some post that sparks a question in my mind. Maybe it’s related to the post, maybe it’s an unrelated question for the poster. Sometimes I’ve tracked down their site because I found a bug in some open source software they wrote… either way, I’m on their site and I’m trying to contact them. But guess what?

Shopping: musical geek style

**Background:**I’m a musician, or, I was. I used to want to be a studio bassist. When I’m in the house I’m frequently singing about whatever I’m doing. When I’m walking down the street I’m not just striding across pavement, I’m beating out quarter notes with my feet. Sometimes I add in syncopatedďż˝rhythms with my hands slapping my thighs. So, when it comes to remembering what to buy at the store there’s a song for that too.

I don't know how it got this late...

“I don’t know how it got this late.” I said to my dog. “Well,” I continued, “I do know. I worked late, and I’ve been reading…” But then I stopped. I stopped because I realized that neither of those, or any of the other excuses we give for “how time flies” have anything to do with “how it got this late”. They’re merely how we came to not notice the passage of time to this point.

How Borders lost my sale

(And why they’re going to loose a lot more if they don’t catch up with the times.) I love Amazon. I’ve signed up for Amazon Prime and definitely get my money’s worth out of it. But, Amazon’s simply can’t replicate the experience of browsing physical bookshelves and picking up random books by author’s you’d never heard of, simply because they caught your eye. So, I regularly go to physical bookstores, just to see what I find.

Hyundai is Brilliant

(and why you should support them) Right now, most people are a little concerned about their jobs. Right now, the economy is going to shit because people are buying less. Part of this is the banks not giving out many loans. Part of it is that people have less income, or fear a sudden loss of it. But, Hyundai has just done something absolutely brilliant. They’ve made an offer: buy one of their cars, and if you loose your job within a year, you can give it back.

Magic to the Bone [Book Review]

Magic to the Bone is the best Urban Fantasy I’ve read in ages. Buy it now. This as another one of my impulse buys. If it weren’t for the quote on the cover from Patricia Briggs I wouldn’t have bothered, but I really respect Patricia’s writing and, of this book, she said “Loved It. Fiendishly Original.” I couldn’t agree more. The book is set in an alternate world where magic has been discovered, harnessed, and commoditized just like electricity.

Developershare [definition]

Developershare: adj. The percentage or proportion of the total available pool of developers that is coding for a particular product or platform. Example: Regardless of how good the Palm Pre is, Palm will be hard-pressed to steal any of iPhone’s developershare.

Aspirin Is Moving

[EDIT] Aspirin was a great idea, but spam has ruined email sending. These days, there are very few situations where an email sent via a home computer will ever reach its destination. It will be considered spam, because of its source. Aspirin is an embeddable Java SMTP server, that’s been fairly well received. This is just an announcement of its new home and a notable change to the codebase.* There’s been a lingering threading bug with it which resulted in the only way to kill it being to use a System.

4 1/2 Killer Mac Apps

Yesterday I was discussing the fact that I need a new laptop and how much I wanted to get an HP Mini 1000 (cheap, ultra light, good manufacturer), but couldn’t because of those damn independent Mac developers. They keep making incredible apps I simply won’t give up. Unsurprisingly, he asked me what my killer apps were for the Mac, and I thought you might be interested too. But, before I start the list, I just have to give a major shout-out to the indie developers for OS X.

Petitioning the god

With purpose, and a focused mind, I prepare to petition the god. Up from my desk I rise, and walk forth. Down the hall, into the room where his idol waits. I pull my offering from my pocket: a small piece of paper covered with symbols, and the face of a past leader, all done in green. Carefully, I prepare it, making sure it is flat, and smooth. The god will accept nothing less.

Practical Magic [Review]

A while ago I stumbled across the movie Practical Magic, and loved it. It’s this wonderful, playful, tale about finding love and accepting the magic that lives within yourself. And then, a few weeks ago, I discovered that it was based on a book by the same name, which I immediately purchased. What I read though, wasn’t a better version of the movie, as is typically the case. It was something else entirely.

Why you think the Caps Lock key is useless

Years ago I thought like many of you do; that the caps lock key is a waste of space. I never really got any benefit from it. It was just as easy, if not easier, to just keep a pinky on shift while I typed. There was even an article in Wired: Death to Caps Lock. But then my eyes were opened, and I learned that the only reason I didn’t “get” the caps lock key was because I was a shitty typist.

A simple way to encourage API adoption

Let’s assume for a minute you have a web site with an API people may actually want to use. Let’s use Flickr as an example. You can do as they did ( document it thoroughly and hope people use it ), or, and this is especially useful if you’re someone competing with an 800 lb. gorilla like Flickr, you can do something like this: First, figure out who’s a developer. If someone’s into your site enough to code for it’s API it’s generally a safe bet that they’ve got an account on it.

On coding for fun

I love programming. I really do. It’s one of the few things that really gets my brain buzzing. In my twenties I’d go to work, program my ass off, then come home and repeat. Or, when I worked for myself, I’d just not stop. But, as I make my way through my thirties I’ve found that most days I come home and simply don’t want to look at code anymore.

I give up. You and your ads can piss off.

A month ago I lamented that the excessive use of ads on sites was getting to be too much for me. Well, after a week where it seemed that every other article I went to read had a full page ad (or “welcome page” as Forbes called it) that I had to wait or click through to get to the article, which was still totally overrun with ads, I have given up and installed an ad blocker.

A review of Android and the T-Mobile G1

I’ve had the G1 for about two weeks now, and have been coding for it pretty much since the day I got it, and I have to say I love it, and regret only one thing: buying the Bronze one. So, lets start with that, and the other shortcomings, before moving on to the coolness. You’ve got three choices for the G1 Black, Bronze, and White. I’m always partial to earth tones, and I think the white one looks like a cheap plastic toy, so Bronze it was.

The hyprocisy of Amazon

Don’t get me wrong, as a customer I love Amazon. But their recent policy towards mobile devices is BS. In 2003 Amazon said “…wireless users find themselves living in an increasingly mobile world. Mobile phones are a commodity. Users have grown accustomed to staying connected while on-the-go. As smart mobile device penetration grows, more and more users are expecting their devices to provide anytime, anywhere connections to data services and information.

Switching to the G1

There’s something inherently wrong with cell phone companies these days. Case in point: my switching from a Sidekick to a G1 today, or, more specifically, my attempt to. Since I had a Sidekick I already had an account with T-Mobile, so switching to a different phone should be a non-issue. Just pay the money, update the account, and voilla. Or… not. It seems that killing my Sidekick’s service was almost instantaneous.

Bio Zombie [Movie Review]

Wonderfully Terrible! This is not a movie that’s so bad it’s funny. No, every moment of camp and comedy is intentional and successful. Without a doubt this is the best campy zombie comedy I’ve ever seen, and, unlike many films, the trailer gives you a very good idea of what to expect. The dialogue is simultaneously well written, and intentionally terrible. The makeup is bad, and it doesn’t matter in the least, actually it may add to the humor.

World Trade Center [Movie Review]

World Trade Center: directed by Oliver Stone and Starring Nicolas Cage Summary: The movie was essentially: We’re cops. Oh @#$% we’re trapped! Hooray, a marine! And, the occasional “Where’s my husband?” Details: I was in the mood for some pathos, but from a source that wouldn’t leave me depressed for days. I figured World Trade Center would follow Nicolas Cage, who plays a Port Authority Police officer, as the WTC was hit, he would encounter some unexpected difficulty in his attempts to rescue people, and ultimately prevail over it.

Your ads are really starting to piss me off

Listen, I appreciate that you want to monetize your web site. I appreciate that advertising is the economic engine that drives the web, and that without it I’d have far fewer high quality sites to peruse, and all the good ones would probably have subscription fees. So, I’m actually quite comfortable with ads being on your site. But seriously? There is a limit to what I will accept, and if you continue to exceed it one of two things will happen: either I will stop coming to your site, or worse (for you) I will continue to consume your sites resources (bandwidth and CPU) but use an ad blocker to prevent my from ever seeing your $@$#% ads.

And yet...

And yet, as if to prove that we still have a long way to go, proposition 8, which creates a constitutional amendment that bans gay marriage, has passed in California, the state that had the guts to open up gay marriage. I think we became complacent. None of us believed that, in California of all states, such bigotry could prevail. As monumental as Obama’s accomplishment is today, bigotry, is far from dead in this country.

We have awoken to a new world...

There are children in America today who will have only ever known a world where a black man has been president, where there truly is nothing that any of us can’t accomplish. The world at large has breathed a collective sigh of relief, that we have chosen a president who will try and restore the good name that our country once had, a president who will no longer allow the U.

Yes We Can

If you have any doubt, consider this. Don’t you want a president with fire in his heart? A president who is deeply frustrated by the current state of things? A president who will fight for real change? Climatologists tell us we have ten years, or less, to address climate change or the tipping point will have passed us, and there will be nothing we can do. The United States is responsible for using 25% of the fossil fuel on the planet.

Buzzbuling [Definition]

Buzzbuling (v.) What a really good, but not fully-formed idea does in your head. A good idea buzzes. An idea that isn’t fully formed bubbles up. A really good ideas that isn’t fully formed buzzes around your brain with potential whilst bubbling up. Thus, buzzbuling. The added U is a result of needing to distinguish it from the truly scary concept of buzzing “bling”.

One Year At Akamai

A little over a year ago I came to work for Akamai filled with hope and optimism for my new job. Today I am even more hopeful and jazzed to be going to work every day. It is, without question, the best job, and working environment, I have ever had. A lot of this is due to the team I’m on. I am surrounded by smart people who work well together, and are damn good at what they do.

Handling and Avoiding Conflicts in Git

John Kelvie said: [To] me the fundamental challenge with existing version control systems is the difficulty of merging change sets from multiple developers across the same set of code. To me, this issue comes down to the diffing/merging functionality provided by the software, and I haven’t seen or heard of anything that really improves the state of the art. How does GIT address this? How does it make it easier to do?

Olympia Nova High-viz Vest [Review]

There are a few contenders when it comes to High-Viz motorcycle vests, Olympia, Icon, and FieldSheer are the main ones, and all meet military specs for on-base riding. Of those only the Olympia Nova and the Icon Mil Spec are available in bright yellow. If you haven’t seen the yellow in person I have to tell you that photos don’t do it justice. This stuff is so bright it makes you wonder if you’d still be able to see if you turned out the lights.

Using E-Z Pass / FastLane transponders on your motorcycle or scooter

You’d think it’d be a non-issue, but it is. In fact, it can be a real pain in the ass. Sometimes they simply don’t register. You’d think they’d just wave you through since it’s not your fault, but frequently they’ll make you pay, and digging your money out of a riding suit can be a major hassle, especially if you thought you weren’t going to need it. So, if you’re riding a motorcycle and have an E-Z Pass / FastLane transponder.

Why you should use a distributed version control system

If you’ve ever: made a commit and then realized you forgot “one little change”. made a commit and regretted it. wished you could combine some the past couple days worth of commits into one nice combined commit in the main branch. wished you could commit just part of a file. needed to drop work on one task and switch tracks to another one without having to make commits with unfinished changes, or commits with changes for one issue and a little of another.

Boston Night Rides I

I love this city and I thought it would be interesting to see what I could see when the roads weren’t clogged with cars… Overall rating: 2 1/2 stars (out of 5). It’s interesting but not very relaxing. Don’t get any ideas about attempting this during the day either. The traffic would be evil. The Route Note: I’d actually recommend going to the end of Storrow Drive and following the curve around as it becomes the start of Memorial Drive but I couldn’t convince Google Maps to do that.

typelation [Definition]

typelation: n. The act of converting speech, or thoughts, into text for a text-based conversation (e-mail, instant messages, etc.). Example: The joke lost something in the typelation.

Undelicious - a Delicious Library 2.0 review

So, Delicious Library 2.0 was finally released. I was seriously wondering if it was just going to be vaporware for years. The people behind it would pop up their heads every two to four months and say “real soon now”. Back in November / December of 07 they were encouraging people to buy 1.x so that they would get the free upgrade, hopefully in time for xmas but if not very soon thereafter.


Knox Gilet Air Review

Most motorcycle gear has little-to-no spine protection. Even suits with decent spine armor rarely have anything that comes close to what Knox offers, and essentially no-one else offers CE rated chest protection for street-riders. Being a safety conscious chick who values her spine and internal organs I ponied up the money for this. The results are mixed. Looks If you check out Knox’s home page you’ll see that they’ve updated the styling of this for 2008, but the one pictured here is essentially the same, and what I happen to own, so that’s what I’m showing.

Night Life by Caitlin Kittredge - Review

Laurell K Hamilton is the undeniable queen of this genre, but it took her about eight Anita Blake books to approach the quality of writing that Caitlin has given us in her first outing. Eventually Laurell improved her skills but morphed her books into soft-core porn with vampires. Ugh.If you’re like me and enjoy a bad ass heroine in a gritty urban fantasy setting then Night Life is something you should pick up.

Some observations about Buell motorcycles

I’ve been following Buell since they appeared on the scene. Initially people were having all sorts of maintenance issues, similar to old Harley Davidsons (their parent co.), but they seem to have come a long way in that dept, although I hear tale that the Japanese bikes are still better in that dept.. Something that wouldn’t surprise me in the least. Poking around the Buell site today I ended up watching the videos Eric Buell made a couple years ago about Buell’s “Radical Principles”, and that’s where I discovered what I think really sets Buell apart from many manufacturers.

If Patton was a coder...

General Patton said that “A good plan violently executed now is better than a perfect plan executed next week.” If he was a coder he might have said “An automated test violently executed now is better than a perfect test next week.”

The financial cost of motorcycle safety

New motorcyclists tend to spend most, or all, of their pennies on their new bike without considering, or perhaps realizing, just how much it’s going to cost to protect themselves on the bike. Of course, having just bought the bike, there’s no way they’re not going to ride it…. While I covered the items you’ll want to keep you safe in “So you want to ride a motorcycle… and not die” I didn’t cover what it would cost.

Fieldsheer Highland II Review

The Fieldsheer Highland II is a surprisingly affordable and thoroughly armored one-piece motorcycle suit. At $230 from Motorcycle Closeouts it’s quite possibly the most inexpensive way to get a full compliment of CE rated armor including hip and back. Its nearest competitor is the $450 Olympia Phantom (scroll for more). Sizing It is critical, with a one piece, that you really read the sizing chart. Don’t just go with whatever size you “normally” are.

How to create a Test Suite in Perl's Test::Unit v0.25

If your Test Case is a package whose goal is to test all aspects of a particular class then a Test Suite is something which kicks off a collection of related Test Cases. As with most things in Perl’s Test::Unit it’s really easy to do and also terribly documented. So, without further ado… You need something to kick off all your tests: use Test::Unit::HarnessUnit; use My::Test::Suite::Package; my $testrunner = Test::Unit::HarnessUnit->new(); $testrunner->start("My::Test::Suite::Package"); Next you need the test suite it’s going to kick off:

So you want to ride a motorcycle... and not die

Lets be totally clear here. The statistics say that your are roughly as likely to get in an accident while driving a motorcycle as you are while driving a car. The obvious difference being that a car has a safety cage, and a motorcycle has, well… nothing. So, if you have a brain, you’re going to want to take steps to compensate for that missing safety cage. There’s no guarantee any of this will keep you from dying but it’ll seriously increase your chances of survival.

Kay's incredibly simple Catfish recipe

I’m a big fan of dishes that are easy and fast. One night I was at the store, saw some catfish and decided to buy mysef a fillet. When I got it home I had to find some way to make it interesting with my limited spices. The result has a flavor that very much resembles the physical texture you want to shoot for: lightly seared on the outside that, once breached, reveals a nice soft middle.

LazyWeb Idea: Gravatar + Network of sites = Gravanetric

Pretty much everyone agrees that Gravatar rocks. A global avatar that shows up wherever you make a comment on a blog (sometimes even in your desktop apps). And I don’t think anyone other than naive VC guys wants another “social networking” site, so I’m not going there. But, imagine what would happen if every time you made a comment on a blog that used Gravatars a ping was sent off to the “Gravanetric” servers with two bits of information the hash of your e-mail and the root url of the site you posted too.

Getting just the tip of a Git repo

Sometimes you just want to distribute the source code without its history, and that’s where git-archive comes in. git-archive will create an archive of the files at any point in the history and wrap them all up for you in a tar or zip (defaults to tar). You can even make an archive from a remote repo by using the —remote=<repo> option in the administrator has enabled it. You’ll typically use git-archive like this:

Squeak By Example (first impressions)

I’m reading through Squeak By Example because I’ve got some ideas rumbling around in my head that might be nice to do in Smalltalk. Having an integrated visual environment where everything is an object opens a lot of data visualization possibilities. Anyway, it has been probably two years since I’ve touched Smalltalk, and even then it was pretty brief. So I needed a refresher course. I’ve been flipping through it looking for random bits of information I was interested in and found them all.

Synergy is the Bee's-Knees

Many of us “power users”, especially web developers, have multiple computers on our desks. I have the mac, the linux box, and the windows box. There are good reasons for each, not the least of which is testing browser compatibility. But, Synergy is what makes it not only not-annoying, but freaking cool. You see my single sweet Kinesis keyboard and funky ergo mouse (neither of which anyone else can successfully use) controls everything.

Sharing a public Darcs repo over HTTP [flow chart]

The same friend who wondered about how to share a Git repo over HTTP dared to suggest that “It’s so easy with Hg…”. While I happen to disagree that it’s easier in Hg than Git, I think this flow chart successfully demonstrates that, on this front, Hg and Git both suck ass when compared to Darcs. P.S. Yes, while 100% factual, the graph is also intentionally silly. [Update] After considering it more I think think it probably is easier to share a repo with Hg than Git, but I dislike the fact that it involves mucking about with things outside of the repo.

Sharing a public Git repo over HTTP [flow chart]

There is also an SVG version of this flow, which is more readable (but poor IE folks will have issues). Notes: This is a simplest possible configuration. Be sure to check out the docs for git-remote to see how to, optionally, designate specific local or remote branches. Many of the initial commands could be performed locally and then just uploaded to the server. This particular sequence guarantees that all the connection pieces are in place and working correctly.

Where's the "main" repo when using Git?

Sivaram said: “I have been using CVS on and off for a long time; so using git is a bit confusing. If all the repo clones are equivalent, how does one know one is the ‘clean’ repo? On CVS, there is a centralized repo lying somewhere. I can’t seem to wrap my head around the decentralized model.” This question trips up a lot of people when they’re introduced to the concept of distributed version control systems.

Importing an existing codebase into Git (a flowchart)

A simple flow chart showing the steps you should take to add an existing codebase to Git. This assumes you don’t have revision history that you wish to migrate from another version control system. Some notes about the flow: When adding file paths you can use wildcards like “git add /path/to/images/*.jpg” This is one of the few times when you’d want to use “git rm –cached " to un-add a changes in the index.

Review of Edward Tufte's Presenting Data and Information course

First, let me set the stage. I’ve been reading stumbling across interesting data information articles by Edward Tufte for years now, have been interested in getting his books for a while now, and was excited when my manager offered to send me to his one day course, and am quite grateful to have had the opportunity to go. So, I definitely went into this with good expectations. 30 Second Summary: The first two thirds were not bad.

Xbox 360 Wireless Racing Wheel

The Logitech DriveFX had to go. Piece of crap. I plunked down an extra $50 ($100 total) when I returned it to get the Microsoft Xbox 360 Wireless Racing Wheel. The difference is incredible. The Good: This product is very well designed, and very well put together. It feels sturdy and solid. The rumble is very strong. The force feedback is also very strong. The buttons aren’t cheap. The pedals have an empty area that your heel goes in.

Logitech DriveFX == teh suck

So, I really like Burnout Paradise. I love just driving around the city setting new speed records for others to try and beat. I enjoy it so much I decided to pony up the $100 to get the Microsoft Wireless Racing Wheel but when I got to GameStop there was another option: the Logitech DriveFX, and it was $50 cheaper. “What’s the difference?” I asked. “The Logitech one isn’t wireless.”

Zombies!!! Player Turn Flow chart

I decided to make a flow chart to help new players in an upcoming attack of Zombies!!!. I think I may have gone a little overboard with the details, but it’s done now. This represents standard rules plus the Zombies!!! 6 (Six Feet Under) expansion, but you can just skip the subway and sewer bits if you don’t have that. For those of you who aren’t familiar with Zombies!!! there’s a good review / overview of Zombies!

A rebuttal to "Use Mercurial You Git"

There’s a good deal of confusion about Git, Ian’s Use Mercurial You Git article is a good example of it which I’d like to address point by point. But first, I’d like to say that I’m giving Ian the benefit of the doubt. I don’t think he’s intentionally trying to mislead people I think he simply doesn’t understand Git very well, and that’s not his fault. Git has two problems that face new users.

The rules of Presidential Bitching

The rules of Presidential Bitching are quite simple: Everyone gets to bitch about all things presidential until the primaries. After the primaries only the people who voted (or honestly intended to but were thwarted) can bitch about the candidates and party nominations. Everyone can bitch about general presidential issues. After the election only the people who voted (or honestly intended to but were thwarted) can bitch about anything our president does or how much better off we’d be if someone else had of won.

Some thoughts about Git

Not too long ago I decided to start writing a book about distributed version control. I was originally going to focus on Mercurial (Hg) because it’s quite good and of the two leading systems it was the only one that ran on every OS (because it was written in Python). The fact that it could also run under Windows meant that I could help spread the word about distributed version control to more people, and it slightly increased the chance that I might actually make some money in the process.

Bullitt with Steve McQueen [Review]

I’m convinced that there must be two “Bullitt” movies with Steve McQueen. Because all the reviews seem to talk about one of the best action movies ever, the best car chase ever, a great story. They use words like “thriller”, “epic”, and “gritty”, but none of these things apply to the film I saw. The director made sure that whenever the audience came within view of a potentially tense moment to quickly salve their nerves with at least ten minutes of sleep inducing banter, bored toothpick chewing, newspaper and frozen diner purchasing, car washing, clicky machine watching, plane embarkment and disembarkment, and, of course, coffee house music.

What if I were to write my personal?

What if I were to write my personal? What if it were true? What if it spelled out in black and white the things I want in you? What if it held nothing back: my faults, my hopes, my geek… There are things I want you’ll never be. There are things you want I’ll never have. But maybe… just maybe… that’s the way it’s meant to be. Perfect little imperfections,

Pidgins Aren't DSLs

Piers Cawley just posted about Martin Fowler’s attempt to write a book about DSL’s actually, “internal DSLs”. Piers calls these “Pidgins” and I think it’s a pretty good term for them. These are the sorts of languages where you don’t write a lexer or parser but instead build a family of objects, methods, functions or whatever other bits and pieces your host language provides in order to create a part of your program that, while it is directly interpreted by the host language, feels like it’s written in some new dialect.

Convert textual RSS feeds into podcasts

[EDIT] Odiogo is now some sort of Japanese Car site. As such, this page has been obsoleted by yet another cool proprietary product disappearing. Odiogo will take your blog’s rss feed and run it through a text-to-speech converter so that people can subscribe to it as a podcast. It’ll, obviously, have the same quirks as any other text-to-speech converter and is, probably, limited to English but it’s a pretty nifty idea, even if their name is a total rip-off (Odiogo makes rss into podcasts Odeo manages rss feeds of podcasts).

A New Year's Eve Tradition

I learned this many years ago from my first love, and she, I suspect, from her mother. It’s a simple and fun thing that’s always better with friends and family. In the end everyone will have a collage to help them to not loose sight of their dreams through the coming year. **Step one:**Gather up all the magazines in your house. If you don’t have many / any get everyone who will be participating down to your local news-stand and have them all grab some magazine that reflect their interests in life.

Follow your bliss, then write your tests

_why suggested that …chaos is an essential component of writing code. The system is too big for you to fathom. So you are always finding yourself in unfamiliar territory. And once you fathom the system, it becomes too boring and tedious to pay attention to details… …Unit testing, in particular, is designed to reel in spontaneous hacking. It is like framing a picture before it has been painted. Hacking, at heart, will continue to be something of spontaneous order, something of anarchy, and the landscape of hacking is something which comes from human action but is not of human design.

Don't be afraid to look like an idiot

The other day I posted a rant about “Alphabetical != ASCIIbetical”, which, much to my surprise, got picked up in a couple places and brought thousands of readers. As with any post that gets thousands of readers, some of them are going to call you an idiot. …I don’t know what you call this sorting order, but it most definitely is not alphabetical. Maybe you should make sure you aren’t being a dumbass before you climb atop your own soapbox of delusional self-importance.

Alphabetical != ASCIIbetical

[BEGIN RANT] Partially this is a case of Java community being populated by idiots, but people seem to be wholly ignorant on this issue in other languages too. Google for java alphabetical sorting capitalization or any combination of words you can think of that might get you an algorithm that sorts a collection alphabetically. You will find hundreds of wrong responses and no correct ones. Most of them say to use the Arrays.

The Word Game

The Word Game I don’t remember the exact origins of The Word Game. I just remember that John was involved. The word game is great for passing time on long road trips, seeing how your friends brains work, and enhancing a child’s vocabulary. You can also play it by yourself. It’s an association game, but the rules are subtle. The rules I can tell you: Phrases and short sentences are allowed, but words and names are preferred.

SSCM 0.4 Released

Some of you may be interested to know that SSCM v 0.4 has been released. Notable changes: supports move operations, fixed a bug with perforce support, allows you to live dangerously and just accept all detected changes into the repo without asking. The two things I’d like to get in there now are branching and merging all the known repos with one command each. Should be relatively trivial for the distributed clients, but the centralized ones will be a little work.

Disovery coding through tests

Testing as a process of discovery The other day a coworker said, Some times you get situations where the specification for the unit or module you are writing just are not available. The code writing is a discovery process as much as anything else. Moreover, some of the packages and methods being called don’t have predictable or documented behavior. That’s ugly and horrible, and I don’t know how that’s allowed, but nonetheless, from the perspective of someone who wants to do unit testing in such an environment, can you give any tips?

Pretty graphs you can't show customers

This projects has been rolling around in my brain for a while but I haven’t tackled it yet because I have too damn many other projects in process. So I’m putting it here in the hopes that maybe someone will pick it up and run with it. I want to put together a collection of javascript based graphing tools that generate pretty SVG graphs of your data in a way that’s fun to look at for people who have to work with it every day but not necessarily something you’d ever want to try and explain to a customer.

At least she knows exactly what she's doing

I’m a big fan of Laurell K Hamilton. My only complaint is that, as of late, both of her two major series have devolved into soft-core porn. The Anita Blake series started out fairly standard vampire hunter with love interest and became soft-core. Her Meredith Gentry series started out as soft-core. I just watcher her doing some Q & A at a book store and am happy to say that at least she has no misconceptions about this.

Szechuan Shredded Vegetables with Pressed Tofu

Last night I got off my butt and cooked something interesting for movie night. The recipe was generally well received although I learned that most people don’t share my affection for ginger. Anyway, I’m posting this recipe here for three reasons: Jess was considering making it, comments need to be added to the instructions, and I need suggestions for improving it. First the (vegan) recipe: Szechuan Shredded Vegetables with Pressed Tofu from 1,000 Vegetarian Recipes Makes: 5 1/2 cups; serves: 4 to 6 [Kay: 4 to 6 very, very, tiny people]

Why the Serial comma should be considered non-optional

Why the Serial comma should be considered non-optional While my grasp of proper grammar may be somewhat limited, one thing I do understand well is logic. Unfortunately, the fact that people tend to have a surprisingly poor grasp of basic logic may undermine the following argument, but here goes anyway. Many of you have been taught that using a comma before the last item in a series (the “Serial” or “Oxford” comma) is optional, while this is technically true the single keystroke, or swipe of a pen, that it saves you is guaranteed to cause problems down the road.

Through a writer's eyes.

Through a writer’s eyes. I’ve spent most of my evenings, and weekends, this month working on my book for NaNoWriMo, which is why I haven’t been posting. I have to say that regardless of if I “win” or not it’s been an awesome experience. This afternoon just added to it. You see, I went to one of the regular meet-ups for the Boston participants. Unfortunately, due to technical difficulties, I wasn’t really sure what time it was supposed to be at, and ended up guessing incorrectly.

Spiritual reinvigoration

Tonight I was awed by a student of the spoken word. I watch a girl named Allison Miller dance the drums. I watched a man rock the vibraphone. And I watched a minor deity of spirit and belief move thousands of souls. In other words, I saw an Ani Difranco concert.

Is it testable?

Is it testable? Apparently some people are having trouble with determining if the code they’ve written is testable. So I’ve put together this flow chart to help you navigate through this complex decision making process. The image is distributed under the WTFPL license so please feel free to use wherever and however you want.

Should I test it now?

Yesterday’s flow chart was designed to help with the complex issue of determining if a particular piece of code is testable. Today’s flow chart helps with the equally complex problem of determining when to write, or run, your tests. Like the last one it is distributed under the WTFPL license so please feel free to use wherever and however you want.

Unit Testing 101 Presentation v2

I just put together a new unit testing presentation for the folks at work and you. Although it may need to be edited here and there for your coworkers… maybe mine too…. Anyway, Unit Testing 101 (v2) requires Firefox and I recommend you move your mouse up to the top edge and click on the icon to the left of the slider where you’ll get a menu of all the chapters and slides.

On Being Jewish

I recently met a couple of pretty cool people who, as it turns out, are Jewish. After hanging with them last night something struck me. When speaking with someone who is truly Jewish, not just Jewish if they have to think about it, you’ll hear them say “because I’m a Jew”, “and there I am, a Jew”, or similar phrases to describe some situation they found themselves in. I thought back to all the times I’ve heard these utterances from all the Jews I’ve know, including my father, and I realized that there’s a weight to it that goes far beyond what deity they happen to believe in.

Kay's Incredibly Easy Pasta w / Tofu Recipe

When most people encounter the idea of combining pasta with tofu they generally respond with “why?” or “eww!” I’m a huge fan of tofu and if I hadn’t actually tried this I would be raising one eyebrow at it. But it’s good. It’s so good that people who never buy tofu go back for extra tofu bits for their pasta with every helping. I’m not kidding. It’s not mind-blowing or anything but it’s a tasty change and great when you have vegetarian guests.

A night with Bug Labs

(written back in 2007) This morning I received a rather unexpected invite to a Meetup over at the Middlesex Lounge from the people at Bug Labs. They were getting people together to discuss their new product, a modular and open source hardware platform. I figure since they were nice enough to buy us drinks I could return the favor by giving them my thoughts. For me the idea keeps coming back to Gumstix.

What makes you so special?

Seriously. What makes you so special? It’s not that you’re brilliant, because, statistically speaking, you’re not. Sure there may be one or… maaaybe two brilliant people reading this. But, the odds are that you aren’t them. So what makes you so special? The way I see it there are three types of people: The people who are brilliant. The people you look up to. Everyone else. And, since it’s safe to say that you’re not brilliant, you’re either someone people look up to or… someone else.

Kinesis Contoured Keyboard: first impressions

I just received my Kinesis Contoured keyboard and thought that those of you who actually care about the ergonomics of your work environment might appreciate my first impressions of it. I also needed an excuse to type something so as to get used to it. ;) Now, before I get started I should mention, as many of you already know, that I take my ergonomics seriously. I endured two weeks of painfully slow typing while I retrained myself to use the Dvorak keyboard layout because doing so involves provably less contorting and reaching, and is thus less wear on your hands.

This morning at Akamai

Six years ago Akamai lostone of it’s founders in 9/11. It’s still quite evident what a blow it was to the people here as he was apparently a man who lived life to the fullest and really touched a lot of lives. How Akamai has chosen to deal with this loss has really impressed me. The made a little park next to the office building (at least i don’t think it was here before then) and planted a tree for him.

Branching for atomic patches and cherry-picking

The best thing about Distributed Source Control Managers ( IMNSHO ) is how quick and easy it is to branch and merge. The problem is that most of us cut our teeth on centralized systems that couldn’t even hope to take advantage of cherry picking, which is, in short the ability to take a single patch out of the middle of a sequence of patches, or every patch but one from a sequence.

Dear Perforce: fuck you.

Dear Perforce: Fuck you. Fuck you, you miserable, untrustworthy, misleading, overpriced bastard. I hope your office goes up in flames along with all your off-site backups. I pray that some open source product that actually works is embraced by all the major companies and drives you out of business. I hope that no other company is duped by your salespeople into thinking you have something even remotely close in quality to the ancient and craptastic product known as CVS.

Code Underwriters

Code Underwriters Lloyds of London is able to do what they do thanks to the concept of underwriters. The simplistic version is that a risk is spread amongst a group of underwriters. If nothing goes wrong they get a cut of the profits relative the the percentage of the risk they took on. If things go wrong they take pay for whatever portion of the risk they agreed to take on.

Defensive Programming 101

Defensive Programming 101 For any given programmer the following statement should always be treated as truth: My code sucks, but your code sucks more - Dave Astels [deleted post] Good version control habits and test coverage will get you out of most jams related to your own code but we rarely write apps that are comprised of just our code. There are almost always libraries from other people code that you’ll include to save yourself from having to re-invent the wheel.

99 Lines of code on the wall...

99 lines of code on the wall. 99 lines of code. You look around, refactor it down… 98 lines of code on the wall. 98 lines of code on the wall. 98 lines of code. You look around, refactor it down… 97 lines of code on the wall. Or, alternately function singVerse(numLines){ if (numLines \> 0){ document.write("" + numLines + " lines of code on the wall.\\n"); document.write("" + numLines + " lines of code.

The best argument for compiled languages

I keep thinking back to a short comment at BarCamp Manchester in the Unit Testing talk. When asked if anyone had written an app with 100% code coverage the guy beside me raised his hand. Now I’ve been advocating for a while now that it’s essentially wasted time to bother testing your getters and setters, and when I mentioned something to this effect he said, “How do you know you haven’t made a typo in a variable name?

You treat her like a sex toy.

You treat her like a sex toy. Just pulling her out when you need a quickie. She’s not like that you know. She wants a real relationship and she’s more than capable of supporting one. But that’s all you ever see her for… A quickie. A little bit-o-feel-good. You pop her off to get the job done but turn your nose up at her when you catch a glimpse of how kinky she’ll let you get.

Who Cares About Performance

Justin Jamesasks why nobody seems to care about performance anymore. He talks about how the performance hit you get from using a “slow” language directly translate into increased hardware and electricity costs just to maintain the same kind of performance you would have had if you’d used a “fast” language or spent more time optimizing your code. All his points are good, but they’re also all irrelevant. You see, for most applications the performance hits you get from slow languages or non-optimized code just don’t matter.

Java: The Mediocre Date

I’ve been programming in Java professionally for years now, and while I’ve become good at it, it’s never grown into a language I’ve been passionate about. It’s powerful, has tons of good libraries and tools but… It’s like going out on a nice date with someone but having no desire to ask them out for a second. You wouldn’t mind another dinner with them, and since you’ve got a common circle of friends you probably will, but you’re never going to get the butterflies in the tummy when you think about seeing them again.

Libraries, Boston, Alexandre Vattemare, and me.

One of my favorite places in Boston is one of it’s best kept secrets. It’s not obvious how to get there, or that it even exists, but secreted within the bowels of the Boston Public Library is a beautiful courtyard. It’s a wonderful, quiet, relaxing place to spend an afternoon reading. There’s even a little coffee shop just before one of it’s entrances. This afternoon I went on an excursion. In my quest to expand my mathematical knowledge I bit off a bit more than I was ready to chew with The Nature of Mathematical Modeling.

Why you shouldn't dismiss Perl so quickly

A reader commented that …the syntax of Perl is so hideous and mysterious it produces unmaintainable code (I know having maintained a multi-tier Perl webapp). And, sadly, he’s not the only one that shares that belief. Perl has been written off by many talented developers because essentially every piece of Perl code they’ve ever encountered is, well, crap. But, when you get right down to it you’re basing your opinion of a language based on what people write with it.

The trials and tribulations of employment verification

I’ve just clicked send on my letter of resignation. Doing it in person wasn’t an option as my bosses are in NJ and I’m in MA. It was scary as hell to click that button because today was the end of a long stretch of serious mis-communications related to verifying my past employment and a significant portion of my brain is in a state of denial that the job offer is finally finalized.

A thought exercise for programmers

In the not so recent “outsourcing” episode of 30 days the American whose job has been outsourced to India goes there and comes to a number of interesting realizations including this: “Knowing that probably like 16 people are surviving off of my one job … it’s almost like charitable at that point. They need the job way more than I do.” Your thought exercise for the day is to answer this question: What can you do as a developer to justify yourself as being more valuable than sixteen Indians?

O'Reilly: a publisher with a brain

O’Reilly has just agreed to assign …the full copyright in the book “Perl 6 and Parrot Essentials” to The Perl Foundation. The text is out-of-date, but can be updated much more rapidly than it can be rewritten from scratch. Three cheers for O’Reilly. I wish more publishers would stop being so damn stupid when it comes to the copyright on old books that they have no intention of reprinting. Especially geek books which are frequently outdated and no-one would want them if they were reprinted (not rewritten).

Geeks Don't Touch

Have you noticed? Geeks don’t touch. I noticed this in myself a while ago, and have since been watching other geeks to confirm my theory. I was at the Boston Ruby User’s Group a week ago and essentially no-one touched. When two geeks are introduced, unless it’s a somewhat formal introduction like an interview, we don’t shake. When we encounter each other, or go our separate ways, there’s no casual touching.

Programming books for newbs

If you’re reading this blog there’s a fair chance you’re a programmer and that means that from time to time you’ll encounter people who want advice on leaning how to program. Unfortunately, it’s hard to point them in the right direction because we generally don’t want to spend the time to teach them ourselves and even if we did most of the learning to program books just plain suck. So, I’d like to recommend two books.

What developers can learn from ancient stadium builders

I just read an article that compared the crowd management techniques used in the stadium in ancient Pompeii to modern techniques, and while it’s an interesting read all by itself, and I do recommend you read it, I got to wondering about how similar ideas would apply to software design. Build a bigger bathroom. He’s actually talking about the bathrooms and concession stands but there are a couple applicable bits here: The bathrooms are an incredibly important part of any stadium.

Excellent tip for interviewers of geeks

It’s so obvious you have to wonder why people haven’t been doing this for years now… Witten proposes an incredibly simple and good way to evaluate a potential employee’s code skills during the interview. Instead of asking arbitrary code questions ask them to send in a code example they’re proud of before they come in and actually go over that code with them during the interview. This is a much more realistic test for exhibiting coding prowess than some sort of artificial string manipulation problem.

Math is for people who aren't content with the status quo.

Update: I just came across a similar post by raganwald wherein he discusses the need for advanced programming skills…which you don’t get without math. ;) When I was in high school no-one ever convinced me of why math was important and that is my biggest educational regret. Children, and adults for that matter, will neither seek out, nor retain, knowledge they don’t value. It’s all well and good to tell them algebra is important but unless you show them WHY algebra is important they will have no reason to retain it.

I think I know why people don't value tests

I think I understand why people tend to not write tests. Because they believe that tests aren’t something that’s either needed or important. “Duh,” I hear you say, but bear with me. Why don’t people believe that tests are something that’s either needed or important? Well, I think one of the biggest contributing factors to WHY is that essentially zero of the learn to program in language FOO books ever mention unit testing.

The power of tests...

If you look at Mingle, the project management tool we’ve been working on… On that tool I happen to know that their test base is twice as much as their code base. So, two-thirds of the code in that product is tests, and that allows them to do quite violent things. I know that a couple of months ago they made a very fundamental change to the database scheme. I mean, we’re talking, utterly to the guts of the database scheme.

Why you should endeavor to hire from startups

I just had a thought. Companies looking for new developers should try to only ever hire from startups and similar small team companies. Why? Because people who work for small startups can’t hide. You can be reasonably certain that someone who has managed to survive for more than a few months in a small dev team puts out decent code at a good pace. Small companies just can’t afford to keep crap coders or non-producers on their payrolls.

Getting some agility in your workplace. A flow chart.

The software development industry is plagued with bad practices even though so many of us know better. A HUGE portion of this problem is that to really start, and continue, working the way we know we should requires buy-in from our managers and coworkers. And it’s not just a conceptual buy in that we need. People need to really get the religion. But, you and I both know that we can’t realistically expect the rest of the company to change everything at once.

Unit testing your JavaScript

Most web developers will agree that unit tests are great, and some even write them…but I know very few developers who write unit tests for their JavaScript, but it’s not really their fault. Most don’t know of good unit test systems for JavaScript and / or don’t write their JavaScript in such a way that you even could test well. This means breaking all the functionality into discreet functions and objects instead of writing old-school procedural crap.

Getting the most out of version control for hosted web apps.

Another graph for another friend who asked for a flow chart of the branching and merging described in Best Practices for Web Development html pdf. Update: Michael says: I’m a little unsure, from you diagram, how, if your trunk contains two completed and merged features that aren’t yet live (video upload and REST API, say) you put one feature live without putting the other live. It looks like code only gets to the live branch via the trunk, but it seems from your diagram that the trunk could contain all manner of complete and semi-complete features.

Using Darcs with SVN / CVS Flow Chart

A flow chart for a friend demonstrating, step by step, how you’d go about using Darcs (or any other distributed version control system) with SVN / CVS. He needs to do it for the most common reasons: it’s a pain to branch and merge with CVS.\ he’d have to coordinate with other departments like QA to get them working off of whatever the current release branch happened to be at the moment and convince them that it was a good idea.

FizzBuzz Overthink as a Teaching Aid

UPDATE: I’ve created a new subdomain for the FizzBuzz Overthink project ( http://fbo.masukomi.org ), updated the links below to reference it instead and modified the Readme in the project (and the default page of the site) to reflect the new goals of the project UPDATE 2: There’s a JavaScript example in there now too which, of course, includes unit testing. More details here. I was talking with someone the other day who mentioned, in passing, how they wished they had some good examples of how to do unit tests for his co-workers.

Heuristically Driven Development Flow Chart

This flow chart will only make superficial sense unless you’ve read the Triage section of my Best Practices for Web Developers essay, which I happen to have just updated with an expanded Triage section. Click on the thumbnail for the full-sized verison. If you’d like, the Dia file is also available if you feel like tweaking it.

How Greasemonkey can save your webapp time and money

For the most part web developers spend our time guessing what features people might want and how said features should be integrated. Frequently we guess wrong and that wastes time and sometimes frustrates users. But there are tons of users out there who also happen to be developers and they’re actively implementing new features for their favorite sites with Greasemonkey. UserScripts.org has over 6,000 scripts. That’s 6,000 features with working implementations for popular sites at no cost to those sites!

LazyWeb Hardware Idea

If you build this I will buy it.: Ergonomic Dvorak keyboards are effing expensive. Dvorak keyboards are hard to find in general and software remapping in the OS has a variety of…. issues. I want a USB dongle that remaps keystrokes from a QWERTY keyboard to Dvorak. Even better put a switch on it to turn off the remapping. I will pay up to $25 for such a device.

What if webapps worked like pinball machines?

Currently web frameworks are all about the page. This is starting to change a little thanks to Ajax but mostly just towards the idea of page snippets. But why? “Pages” are a metaphor taken from books, but books are linear and the page serves to restrict the layout. Things like Yahoo Widgets have shown us that there’s no need for layout to be bound to the “page” metaphor and we’ve known for a long time now that webapps are rarely linear, and when they are people don’t like it.

Don't cut your CharlieCard

The CharlieCard, as some of you know, is the MBTA’s reusable pass for subway / buss access. The only problem with it, aside from the fact that the system is constantly breaking, is that it’s as big as a credit card so, if you’re like me, it tends to not be in a readily accessible place as you approach the station. My keys are always accessible and I have little plastic frequent shopper type cards from six other companies there.

Using Darcs WITH Subversion / CVS

Using Darcs with Subversion / CVS Some of you have gotten the distributed version control religion (If you haven’t, you should read my Best Practices essay) but are stuck with Subversion (or CVS) either because that’s what they use at work or because some part of your deployment systems use it. You may also want to combine them simply because of the power of svn externals which lets you pull in some of your code from constantly updated , Subversion Based, 3rd party repositories.

Best Practices For Web Developers

I wrote this essay a while ago and have been tweaking it based on the feedback from those I’ve sent it to (thanks guys). There are a few things I’d like to change still but I’m going to go with the “Release early. Release often” mantra on this one. I think it’s more important that it get out there than it being perfect. Best Practices for Web Developers introduces the idea of Heuristically Driven Development ( HDD ) as it applies to web development, but honestly almost everything in there is applicable to all forms of development.

You really don't want to "become" a programmer

You really don’t want to become a programmer. How do I explain to you that programming is an endeavor of passion? You look at it and see text on a screen and a good paycheck. I see problems begging for solutions. You see tasks to be completed. I see mountains to be scaled, and wells to be dug. You think, “I could sit at a desk and poke at a computer all day.

FizzBuzz Overthink

Raganwald suggests, with good reasons, why you shouldn’t over-think FizzBuzz. Obviously I took a different view of it and yet I still agree with all of his points. So, I’d like to counter with some reasons why you should over-think FizzBuzz, and why I did, because I don’t think I did a great job of explaining that in my last post. But first, lets assume you’re not being asked to solve it on a whiteboard while the interviewer waits.

FizzBuzz Rethink

Or maybe overthink would be more appropriate…. [UPDATE] I’ve written a followup about why an over-thought solution like the one proposed here can be / is a good thing. And just to be blazingly, obviously, painfully clear on the matter. I do not think that every problem should be over-thought to the degree I took this. My solution represents a crazy amount of code for such a small problem. It’s intended as an example of how I’d mentally approach a real and complex problem presented by a client.

Why you should learn toki pona

If any of the following are true you should learn Toki Pona: You want to learn a language, but you don’t have time. You want to learn a language, but you don’t have anyone to speak it with. There are things you wish to say to your friends in public (or in the workplace) without other people knowing what you’re saying. “Toki Pona is a minimal language that focuses on the good things in life.

Why you should be using a distributed source control system

I was reading some articles yesterday that finally made the light bulb go off about distributed source control management (scm) and why we should be using them. First off, a distributed scm, unlike CVS or Subversion, has no central repository that all others pull from. It’s possible to set one up and say that it’s the master and tell people to pull from and push to it but that’s more a matter of convention.

The niftiest little Rails plugin you never heard of

Back in January of 2006 Ezra Zygmuntowicz came up with an exceptionally cool Rails plugin that, IMNSHO, should be in rails core. It’s called ez_where and it’s svn repo is here. What’s so cool about ez_where? Well, the to really understand it’s beauty you have to step back to one of core concepts that’s at the heart of frameworks like Rails: Database Abstraction and Object Relational Mappings. Before these concepts really came into their own we were all writing raw SQL commands in our apps.

On DRM

When it comes to DRM “protected” music people tend to be either completely ignorant as to how it affects them, or even that it affects them, or they’re religious zealots who have such extreme viewpoints you can’t have a sensible discussion about the issue. But there’s one simple exercise that will explain just how dangerous DRM is to you and your friends: What computers were people using ten years ago? Can you run the software from those computers on your current computer?

Select Gifts On Sale

Select Gifts On Sale Those were the words prominently displayed in the window of a Pier 1 Imports today, and they are so very wrong. Gift: [n] something acquired without compensation If it’s on sale, you have to purchase it to get it. If you have to purchase it to get it it’s not a gift. In this sentence “Select” reads as a verb, and you can rest assured that they don’t want you to actually select the sale items because the sale items are the ones they’ve cut the profit margin on to entice you into the store to hopefully buy items that are not on sale.

On Warranties and Guarantees

Your warranty / guarantee says a lot about you and your products and shouldn’t be considered some legal thing to what you will and won’t reimburse the customer for when things go wrong. Your company sells quality products or services right? Shouldn’t you stand behind them as if they were as good as you claim they are? Let me give you an example. I’m looking for a new messenger bag because my current one has two holes and is starting to break down in other areas.

On having a mission

The cranium of a good developer is filled with ideas for new applications. Most of them tend to bounce around with little energy and eventually succumb to entropy. Some ideas are made out of bouncier stuff and eventually reach escape velocity, at which point they are launched down the arms and funneled out the fingertips. You can tell just how cool an idea is by the speed of typing relative to the developers average words per minute.

XML-RPC vs SOAP

Update: This article was written years ago, however, the information still holds true. What I would note is that these days both XML-RPC and SOAP have excellent libraries which makes working with both fairly simple. This article is about the capabilities of the two technologies, however, in my experience the question is no longer one of capabilities. It’s a question of which one you need to talk to, or which one your framework has baked in.

Financial Entropy of a Webapp Subscriber

I was consumed with dreams about Stephen Hawking’s black hole entropy formula last night, which is frustrating because the math is, sadly, beyond me. But, I mention it to you today because, knowing so little about black holes my mind instead kept trying to change it into an formula to calculate the Financial Entropy of a webapp subscriber. So, I put it to you, dear reader, have you, or any of your math enabled friends, come up with a formula for calculating the finincial entropy of a webapp subscriber?

Improved extract_fixtures

I’m not sure where I originally came across the extract_fixtures rake task (maybe here)but there’s nothing better than using real data to run your Rails unit tests. Well, real in the sense that it was generated by actually using your app. But there’s a problem with extract_fixtures. Once you get some real data to base your tests on you don’t want it to change because it would break your tests. So, after the first run extract_fixtures becomes almost useless because it’ll wipe out the fixtures you’ve been working with.

It reminds me of home...

It was foggy the other day in Boston and I couldn’t help but take some pictures. Something about this picture just makes me feel like I’m home. I don’t really understand it though, because it’s the old parts of Boston that I truly love.

Why Rails Migrations are wrong headed

Ever since migrations were introduced to Rails I’ve heard nothing but praise for them, and truth be told, they are a far better way of setting up your database than the standard raw sql import. But, that’s where the goodness ends. The problem is in the concept of going up or down in database versions. The core concept is great, to be able to roll back to a previous version of the database, but the implementation is completely out of sync with the version control systems we use to manage the codebase that depends on that database.