When your automated test suite reports failure, it's generally one of: Someone changed the software and as an unintentional side effect something isn't working the way it's supposed to. Someone changed the software intentionally, and the test is failing because it's asserting something untrue. Nothing changed about the software, but sometimes the test just fails, and you have to run it again…
I am blessed and cursed by an awareness of all the little frictions that get in my way when I use software. Most ecommerce sites are covered in these. Every interaction on a product page or product listing page disables the entire page for a second while some state changes. The page will jump around, and you get the impression that every click is a potential mistake that will be difficult to walk…
The purpose of inventory software is to take something about the world and represent it in a database so the people who care (like the people who own the things, or the people responsible for selling them) can look it up easily. How much did we pay for it? What are we selling it for? Do we have any with this model number? And the ever-present "how much of it do we have left?" Tell a developer…
One of the most important things I've read is the post Conversational Cultures: Combat vs Nurture . A very short summary: what that post's author calls "combat culture" and what I will call "idea culture" is typified by people being willing to disagree with each other's ideas directly. A face-saving culture, or "nurture culture" is typified by people affirming each other, and interpreting direct…
Merle Dean Kilgore was born May 31, 1930. He fought in the Army during the Korean war. He was the trigger man on a BAR team. Two assistant gunners on his team were killed. The longest he went without changing his clothes or bathing in Korea was two weeks. Stateside, he married Doris. On a double date, she left her purse in his car so that he would have to bring it back and see her again. He worked…
In The Economy Of Cities , Jane Jacobs argues that cities have always been the locus of human economy. The default story of pre-history given by a lot of books is that humans did agricultural work on distributed farms, and then built up cities when they got wealthier. She refutes this idea, saying that cities have always been the starting place for human culture and production, and makes some…
I don't often feel the need to journal my experiences for posterity, but these last few days have been quite the outlier among my human experiences. Earlier this week I was helping my in-laws pack up their home in Texas to move closer to their grandchildren. Around noon on Tuesday the 27th, for my first food of the day, I ate a cookie bar that had been sitting on the counter (mostly covered) for…
I sent this letter 10 years ago today. We were engaged 5 months later. This is a weird letter to write, I've been trying to start it for several days now! I've mulled over lots of monologues I could send, but then I begin to worry that I'm getting too deep or too off-topic or too inappropriate and throw it out to begin another one. I think I'll try for shorter and simple for now - please excuse my…
Eschatology: System of doctrines concerning final matters, such as death. The study of the end times — the end of the world, notably in Christian and Islamic theology, the second coming of Christ, the Apocalypse or the Last Judgment. – Wiktionary I have worked with people who said "this code is bad. I know that perfect software is possible. But the employer will not authorize the months it would…
I like pair-coding and think it can be great. Done well, it multiplies the abilities/usefulness of two developers, rather than just adding them together. The easiest way to pair in a remote setting is one person driving the keyboard and sharing their screen, and one person observing and communicating verbally or by sending code snippets via direct message. The observer can provide a lot of value…
For about the last decade I've been writing business software backed by relational databases. Working with my teammates, I have acquired conventions for writing schema and production queries that make interacting with the database simpler and easier. These conventions primarily optimize for reading or writing queries in production code . I believe it is fair to say that for most business…
A wild side project appears! My wife was looking for a site to set up a gift registry. She tried several sites, but they weren't great - Amazon and Target have pretty good registries, but only if you lock your friends into buying from that one store. There are more open-ended registries, but most of them require that your friends create accounts, and one of the most reasonable ones forces you to…
Yeah, the title is slightly hyperbolic - state routers aren't appropriate for every webapp. Your webapp probably needs one though! Quick intro Let's lay out a few definitions before diving in to avoid possible misunderstandings: webapp: a native web application running in the browser that uses pushState to control navigation instead of sending the browser to a different html page. router: any…
Some time in 2012, I decided to write my own blogging platform in JavaScript. I hashed out my goals with a friend over an evening. "It'll be simple," I said. "You'll make changes to a directory full of Markdown files, and that's your blog! I should be able to write the prototype in one evening!" If you want to read some mediocre code from early in my JavaScript career, that prototype code is on…
Inside joke: the title of this post is a reference to a book I have never actually read I believe that God created the world, and that those who are chosen by him should obey him to the best of their abilities. Despite these aspirations, I'm a terrible sinner. Nonetheless, at least I've got goals to aspire to, right? Sure, there are quite a few that most people don't agree with, especially the…
I recently did a quick audit of the source code I help maintain/develop for the company I work for . By which I mean, I spent the last part of a Friday searching through our code for funny words. I decided to open up by looking for traditional profanities - a commonly-accepted method of gauging the state of a project (see: profanities in the Linux kernel, graphed over time and a quick look at the…
For those attending a university, the end of a semester is a time of much rejoicing. During my last semesters at such an institution, I took part in an end-of-year celebratory tradition involving a ridiculous sandwich. In some issue of Maxim (November 2005?) there was an article featuring absurd sandwich-based foods. So ridiculous were these edibles that some fraternity brothers of mine decided…
Ever wished you could run a dangerous query like DROP TABLE or TRUNCATE against every table in a database in a single query? No? Well, how about something like CHECK or REPAIR table, then? If you ever find yourself in the rare situation where you need to run the same query across every table in a database, this procedure might make your life easier: DELIMITER $ CREATE PROCEDURE…
During my career developing database-driven software (teehee, I'm a professional) I've noted that the most horrific query errors are the logical ones - queries that parse correctly, and return reasonable-looking data, but make wrong assumptions about how different parts of the query relate to each other. One particular error that I've seen time and time again (even from people who have been…
You know what I hate? Paragraphs of capital (or all lowercase) letters. The other day a coworker was looking to beautify a large quantity of data spread across some MySQL tables. I created this function to make his life easier: DELIMITER $ CREATE FUNCTION `f_sentence_case`(strInput TEXT, nMinimumLength INT) RETURNS TEXT DETERMINISTIC BEGIN DECLARE result TEXT; DECLARE LastSpace INT; DECLARE…
Less than a year ago, I jumped off the high-board of nerdiness into the deep end of the role-playing pool - and ran my very first campaign. I wanted a fun campaign (duh) with rules and story that would be hard for me to mess up. For most of the campaign, the only players were two good friends with solid role-playing experience, so I was able to rely on the players to contribute a good amount of…
" Quine :" a program that outputs it's complete source code when run. I was lounging around in the MySQL chat room on irc.freenode.net, and someone suggested that I try to write a MySQL quine - a database query that would return the text of the query itself. After about half an hour of screwing around, I got it! It may not be a fantastic achievement, but I feel pretty leet about writing my first…