Archive for the 'geekthoughts' Category

Thursday, March 16th, 2017

Overcoming Anxiety

I’ve got a new book coming out. Check out some of the details in this short article.

Overcoming Anxiety

Join my mailing list for a free mini-course and be the first to hear about publication!

Monday, October 12th, 2015

The Vector Sum theory of leadership

I’ve talked about this before, but I don’t think I’ve ever written it down. As more of my day-to-day involves leadership, I think about this stuff. To run an effective team, you need to think in vector sums.

As the great poet A. Yankovic once said, “Do vector calculus just for fun.” But this isn’t even calculus, just trig. :) Let’s see if we can avoid flashbacks to high school math. You can think of a vector as a value that has both a magnitude and a direction, like the wind blowing 10 mph to the NW.

Every team member is a vector. The magnitude is how much stuff that person can get done, and the direction is what they see as the end-point of their work. The goal. Unlike a wind report, the direction might consist of many different dimensions, but the basic principles still hold.

What happens when your team grows to two people?

Vectors can add. Geometrically, you can think a vector as an arrow with a particular length and orientation. Adding is stacking two (or more) arrows tail-to-head. So two vectors opposed by 180 degrees will tend to cancel each other out. Two vectors pointing exactly the same direction reinforce.

But here’s the great thing: two vectors that mostly point in the same direction give almost as much benefit as if they were exactly aligned.

Example: Team member A is pulling NW at 10 mph. Team member B is pulling NE at 10 mph. If you treat this as a right triangle, you get approximately:

Team member A contributions: 7 mph N, 7 mph W

Team member B contributions: 7 mph N, 7 mph E

The E and W components fight against each other, and you end up with 14 mph due north. Even though the team members are pointing in very different directions, they are still around 70% effective in combination. Of course, the job of a manager is to establish and communicate goals effectively to better align team members and prevent rework. Herein lies efficiency.

For example, if my math is right, in the case where team member A is pulling NNW and B is pulling NNE, the efficiency jumps from 70% to 92%.

Many managers fall into the trap of micro-managing, which is missing the point. Hire smart people, make sure they’re pointed in the right direction and let them run ahead as fast as they can. Stay just enough ahead of them to remove obstacles before they encounter them. That’s a great leader.

Bonus epiphany

I recently realized that this principle also applies to the thoughts in your head. No, I’m not talking about an after-school-special  multiple-personality situation. But thousand of thoughts rattle through your mind every day, and each one has a magnitude and a direction. You need to get them all pointing in the same direction, more-or-less, to be effective as a human being.

This is a restatement of a common concept that goes under many names such as “Personal brand.” Is everything you think about (and subsequently do) helping make you into who you want to be?

Tuesday, February 18th, 2014


I can’t blog about secret projects I’m working on, so how about something completely different?

I’ve improved my fitness level substantially over the last five years. (On index cards, I have my daily weight and body fat percentage, according to the bathroom scale, back to November 2009). Here’s some things I’ve learned:

  • Moving counts. A lot. The difference between being completely sedentary and moving a bit (easy walks, standing desk, etc.) is the biggest leap. Everything after that is incremental.
  • Spending $99 in a Fitbit is the best health investment I’ve made, dollar-for-dollar, ever.
  • Expensive shoes don’t help much. My current main shoes were $40 online, and they’re just as good, if not better, than the $120 shoes from Roadrunner.
  • Pilates looks easy if you’ve never tried it.
  • Once you reach a certain level, you will plateau there unless you challenge yourself further.
  • Strength training is helpful for just about everything, even improving your running times.
  • Foam rollers are super useful for managing sore muscles and tendons. Highly-recommended.
  • Boosting your VO2Max is painful–interval training is the gasping-for-air kind of torture many people think of when they hear the word ‘exercise’–but it’s also important if you want to improve your run times.
  • But you shouldn’t try to improve your run times or anything else unless you have specific bigger-picture goals in mind.
  • Seriously–sitting is terrible for you. Get a standing desk.

Invest in yourself. -m

Tuesday, November 20th, 2012

Hedgehogs and Foxes

In Nate Sliver’s new book, he mentions a classification system for experts, originally from Berkeley professor Philip Tetlock, along a spectrum of Fox <—> Hedgehog. (The nomenclature comes from an essay about Tolstoy.)

Hedgehogs are type A personalities who believe in Big Ideas. The are ideologues and go “all-in” on whatever they’re espousing. A great many pundits fall into this category.

Foxes are scrappy creatures who believe in a plethora of little ideas and in taking different approaches toward a problem, and are more tolerant of nuance, uncertainty, complexity, and dissent.

There are a lot of social situations (broadly construed) where hedgehogs seem to have the upper hand. Talking heads on TV are a huge example, but so are many fixtures in the tech world, Malcolm Gladwell, say. Most of the places I’ve worked at have at least a subtle hedgehog-bias toward hiring, promotions, and career development.

To some degree, I think this stems from a lack of self-awareness. Brash pundits come across better on the big screen; they grab your attention and take a bold stand for sometihing–who wouldn’t like that? But if you take pause and think about what they’re saying or (horror) go back an measure their predictions after-the-fact, they don’t look nearly so good. Foxes are better at getting things right.

It seems like we’ve just been through a phase of more-obnoxious-than-usual punditry, and I found this spectrum a useful way to look at things. How about you? Are you paying more attention to hedgehogs when you probably should be listening to the foxes?


Tuesday, July 5th, 2011

Geek Thoughts: how I take my tea

Having been recently accused of “vile” habits in regard to tea-drinking, I feel that I need to clear the air. :)

I’ve never been officially tested, but I am almost certainly a supertaster. (This explains, among other things, my aversion to most vegetables and my status as a nationally ranked beer judge). I’ve never been medically tested, but I did go through the BBC test and some rough taste-bud-counting with blue dye and a mirror.

So I do not generally follow accepted wisdom with tea. To prepare tea, I get a nice glass of cold water and plunk in a tea bag. Same goes for other tea-like substances, such as yerba mate. The result is a much slower steeping process, where subtle flavors shift throughout the day and with different refills. Does it get bitter? While tannins are part of the tea flavor, you don’t get that intense, mouth-puckering astringency like you would hot-steeping tea for too long. It’s more gradual and interesting.

Different kinds of tea have different spectrums of flavor, as revealed over the course of a day. Earl Grey and green tea are particularly nice. Some interesting combinations are possible too, by combining two teas which reach their flavor peaks at different times.

I say keep an open mind, and don’t knock it if you haven’t tried it. :) -m


Monday, January 24th, 2011

Geek Thoughts: the miserable programmer paradox

I found this article interesting. The author posits:

“A good programmer will spend most of his time doing work that he hates, using tools and technologies that he also hates.”

While I disagree with many of his supporting arguments, I think the overall theme is pretty accurate. Working with software, the good parts seem to disappear away, so what you spend most time on are the grotty bits. In fact, I’d go as far as calling disappearability one of the defining aspects of good code-level software tools & techniques.

More collected Geek Thoughts at

Tuesday, September 28th, 2010

Geek Thoughts: accomplishment

Whenever I undertake something big and challenging enough to be worthwhile, whether editing a W3C specification, running a more demanding distance, a new software project, or something else, I notice a similar trajectory of progress:

Ready to start: Full of adrenaline and excitement. Audacious goals seem readily reachable.

5-10% through: Whoa, this is difficult! And I’m only 1/10 or 1/20 of the way through? What was I thinking? It is important to ignore these thoughts.

One third point: Things seem to even out by this point. The hard slog presses on.

Halfway point: Wow, that’s halfway? Feels more like 90%!

Two-thirds point: Things are getting difficult. Should have treated this more like a marathon, less like a sprint.

90% point: There are two distinct kinds of endeavors from here. In what I call ‘type 1’ projects, the goalposts are strictly fixed, in which case a fresh burst of energy propels me through the glorious finish. But in a more sinister ‘type 2’ project, the finish line keeps receding away, as fast as or faster than I can approach. Depending on my level of stubbornness and anger, I will often finish anyway, just to spite the universe and the project masters, but at significant personal cost.

For anyone out there that has influence over large, ambitious projects, one of the most pivotal things you can do is make sure it is a type 1, not a type 2 project, as seen from the 90% line.


More collected Geek Thoughts at

Wednesday, August 11th, 2010

Geek Thoughts: hard to find

Found this article interesting. Not too many hundreds of years ago, cutting-edge scientific research involved watching balls roll down ramps. Making fundamental discoveries seems to be slowing down, or at least getting harder. As a consequence, we should expect more big discoveries from the sciences where the relevant technology follows a Moore’s-Law-like exponential growth trajectory. There may be some hope yet for fundamental, game-changing discoveries in computer science.

Best of all, perhaps, is the word “scientometrics”.

Friday, May 14th, 2010

Geek Thoughts: verbing facebook

Facebook (v): to deliberately create an impenetrable computer user interface for purposes of manipulating users.

More collected Geek Thoughts at

Wednesday, May 5th, 2010

Geek Thoughts: no-fly lists and CAP Theorem

According to this article, a recent terror suspect almost got on a plane despite being recently added to the no-fly list. Why is it so difficult to administer a no-fly list? The CAP Theorem has answers. (Disclaimer: as always, this blog is apolitical–this isn’t about whether no-fly lists are a good idea or not, only a matter of technical interest)

Without stretching the imagination too much, one can think of a no-fly list as a distributed database. The list apparently changes frequently, and it needs to be accessible from thousands of airport gates and reservation desks. Thus CAP Theorem applies. In a nutshell, that theorem states that of Consistency, Availability, and Partition-tolerance, you can only pick, at most, two. Hit the link above for a much better, more complete description.

If there was one centralized list, the system would be Consistent and Available, but every time a name needed to be checked it would require an immediate network round-trip–should the connection to that central list go down, no further checks would be possible–no Partition tolerance.

Of course, the airline could set a policy that if said network connection goes down, no passengers at all would be able to get on planes. This would be a case of lack of Availability.

Or, the complete list could be periodically copied to each location that needs it. This provides good Availability and Partition tolerance, but fails Consistency, since it’s possible to miss out on late-breaking updates. Apparently, something like this is what happened.

More collected Geek Thoughts at

Saturday, February 13th, 2010

Geek Thoughts: Dora the Spamadora

Dora: Oh no! Lawrence Fawusu, 52, Operational Manager of the International Commercial Bank Ghana Limited is in trouble! He needs to move the sum of US$22, 000.000 (TWENTY TWO MILLION UNITED STATES DOLLAR) outside the country, but doesn’t know where to turn.

Dora: Who do we call when we don’t know the way to go? That’s right, the map! (He’s the map, he’s the map, he’s the map!)

Map: Dora and Mr. Fawusu need to 1) get your bank account info, 2) transfer funds, and 3) proft!

Dora: Say it with me: Bank account, transfer funds, profit!

Dora: We need YOUR help to complete the transaction.

(clicking sound)

We did it, yay, lo hicimos, etc.

More collected Geek Thoughts at

Sunday, January 17th, 2010

Geek Thoughts: engineer’s curse

May all in your life be an optimization problem to solve.

More collected Geek Thoughts at

Sunday, January 3rd, 2010

Geek Thoughts: the ultimate real-time strategy game

Games like Farmville and the iPhone knock-off iFarm throw in a unique twist in the realm of strategy gaming: crops that get planted mature in “real time”. If a crop takes 24 hours to grow, then you need to literally wait the full 24 hours. Great for making an app “sticky” and getting users to repeatedly log in. Side fact: Farmville sells more virtual tractors in a day than real tractors sold in the US in a Year.

Game producers keep upping the ante in terms of real-time strategy games interacting with the real world. Take the latest for instance, a free iPhone app called Lose It!. Everything in this game runs in real-time–a game day is always a full 24 hours. Instead of conventional points, it uses “calories”, which are gained by the actual foods you physically eat, and subtracted via actual exercise. The app includes a massive database of food items and exercises to help you keep an accurate record, apparently on the honor system. The goal: to set a calorie target for each day and come in under it. A secondary scoring system is based on your own weight, though you will need an accurate scale (not included with the app) to measure it.

So far I’ve done pretty well at the game. I’ve averaged better than 1000 calories under my goal for the last several weeks, and have done well on the weight number too. And it’s pretty interesting to have a log of everything I’ve eaten. What will they think of next?

More collected Geek Thoughts at

Saturday, November 14th, 2009

Geek Thoughts: if this keeps going

If Moore’s law applies to flash (and flash-like) memory storage, and it certainly seems like it does, in another decade we will all be carrying around a terabyte on our phones.

What happens then?

More collected Geek Thoughts at

Wednesday, November 4th, 2009

Geek Thoughts: unlikely tail

Tractors are to dogs as rocking chairs are to cats.

More collected Geek Thoughts at

Sunday, October 11th, 2009

Geek Thoughts: Netflix as a productivity tool

If you live close enough to a Netflix mailing hub, it’s possible to get on the maximal schedule:

  • Enjoy a DVD over the weekend
  • Mail it back on Monday
  • Tusday, Netflix gets it, ships a new one
  • Which you get (and watch) on Wednesday
  • Return in Thursday mail
  • Friday, Netflix gets it, ships a new one
  • repeat

This can scale up to multiple discs at a time, but at a time management level, it starts to suck. In particular, you get very little done Wednesday evenings. If you miss either mailing deadline, you fall back to 1 DVD for that week.

A better system is to reward yourself with some movie time after meeting a milestone. That way, as long as your task remains uncompleted, you’re racking up a $15 (or whatever) a month penalty for your own sloth. It seems like most people I know who have Netflix subscriptions tend to slip into a slow pattern anyway–in the mailing room I see the same mailer sitting there for weeks at a time–so why not harness human nature for motivation purposes?

More collected Geek Thoughts at

Sunday, October 4th, 2009

Geek Thoughts: editing

First draft: get it on the paper (or screen). No editing. No criticism. Crap is fine, just get it down. Leave markers in trouble spots, but don’t stop.

First revision: Quick pass over everything. Get the obvious flaws fixed. Wordsmithing, checking for horrible words, passive voice, adverbly writing, etc.  Skip over the hard stuff. About half of the markers get fixed here.

Second revision: Careful read over everything. Cross checking notes. About half of the remaining markers get fixed here.

Third revision. No excuses. It ends here, today. To opportunistic skipping around. Once you start fixing the chapter, you finish it.

Final polish: Wordsmithing, checking for horrible words, passive voice, adverbly writing, etc.

More collected Geek Thoughts at

Wednesday, September 30th, 2009

Geek Thoughts: perfect storm?

Raining bacon.

More collected Geek Thoughts at

Saturday, September 26th, 2009

Geek Thoughts: stability theory

My personal stability theory, as it applies to software engineering: in a multilayered software architecture, the likelihood layer N works well can be expressed as a probability (less than 1 in practice) relative to the lower level layer N-1. For example, if you attempt to write a mission critical Tcl app on a flaky Tcl interpreter, you’re in for some long nights. Via multiplication, a corollary is that the more layers a system has, the less likely it is to work well. (As an aside, I’m not arguing that all software architectures should have fewer layers–other forces outside the scope of this article work against systems with too few layers.)

Joel said something similar lately in the article The Duct Tape Programmer. There is a strong tendency for many coders to over-engineer a system, building towering heights of abstraction. In contrast, a Duct Tape Programmer gets the job done by making something ugly (and with fewer layers) but at least it works. So far this is a fit with what stability theory predicts.

But then he speaks out against unit testing, referring to it in similar terms to the extravagant tower. Quoting JWZ: “If there’s no unit test the customer isn’t going to complain about that.” Here stability theory makes a different prediction. Particularly in the lower levels of the system, flakiness is disastrous. You have to be sure that your foundation is stable before building upon it, or you’re in for keyboard-on-forehead-induced head trauma. This is true no matter how tight the deadlines are or how much pressure is on. In fact, when you don’t have time for a write-over, its even more important to get it right the first time.

The top accomplishment for a coder is shipping software. Duct Tape Programmers make this happen by avoiding needless complexity, which is a great principle to live by. I’m reminded of what Brian Kernighan is attributed as saying:

Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.

Debugging, or more generally making software that works well all the way to the user-facing layer, is hard. Anything that provides fundamental assertions about the stability of your foundation is a useful tool, so don’t slack off on the unit testing.

What about you? Have you found stability theory to be supported by the facts? Comment below.


Monday, September 7th, 2009

Geek Thoughts: estimation

I think estimation is an important skill, and if not, I’ll eat my 10,000 hats.

More collected Geek Thoughts at

Thursday, September 3rd, 2009

Geek Thoughts: this is the title of a post on self reference

This sentence describes a unique story by David Moser. This sentence reinforces the notion that the story previously alluded to is not only entertaining but also thought-provoking. This sentence is false. Some sentences can even refer to themselves without using the word “this”. This sentence concludes the post with a pithy and memorable flourish.

This line contains a link to more collected Geek Thoughts at

Tuesday, August 18th, 2009

Geek Thoughts: reading XProc code

All the input/output/port stuff in XProc seemed incomprehensible to me until I recognized something simple. Every time you see a <pipe> element, read it as “comes from”. For example

  <p:output port="result">
    <p:pipe step="validated" port="result"/>

reads as ‘output to the “result” port comes from the port “result” on step “validated”‘ and

  <p:input port="source">
    <p:pipe step="included" port="result"/>

reads as ‘input for the “source” port comes from the port “result” on step “included”‘. If you keep this in mind it all makes much more sense.

More collected Geek Thoughts at

Sunday, August 16th, 2009

Geek Thoughts: nomic chess

The rules of Nomic Chess start out like regular chess, except that when it is your turn, instead of making a move, you can change the rules such that any particular class of pieces (say pawns) can move like any other class of pieces (say queens).

An optional second rule is that when you are in check, you must make a move, not a rule change, in order to get out of check. (Otherwise it can be extremely difficult to arrive at a checkmate if any attacking piece can be turned into one that moves like a pawn or whatever).

More collected Geek Thoughts at

Friday, August 14th, 2009

Geek thoughts: the universal rule of data processing

From CMSMcQ at Balisage:

Context switches are expensive.

More collected Geek Thoughts at

Monday, August 3rd, 2009

Geek Thoughts: I hate cars

I hate moving at high speed with multiple large chunks of metal in close formation.

I hate the sound of traffic. The smell.

I hate it when  people jump in a car to drive somewhere a block away.

I hate driving. I hate parking. I hate SUVs.

Also, getting a root canal leaves me in a foul mood.

More collected Geek Thoughts at

Saturday, July 18th, 2009

Geek Throughts: Yahoo! learns a Lesson

According to this article, the big Y has been fined by a Belgian court for not turning over user information. Bypassing normal channels, Belgian officials went directly to the company demanding information, a similar situation that has come up before. (But unlike the Chinese incidents, this one directly involves the US headquarters.)

Yahoo! deserves applause for not only standing up for users, but also for learning from the past.

More collected Geek Thoughts at

Wednesday, June 10th, 2009

Geek Thoughts: Pez, the movie (updated)

Since all these childhood media properties (just recently Transformers, G.I. Joe, Land of the Lost) are getting the movie treatment, why not a few more?

Pez, the movie (directed by Michael Bay)

A band of interdimensional travelers with rectangular bodies and grotesquely large heads arrive on earth to plant monitoring probes, with sprout out of their necks. Unfortunately for them, the probes turn out to be made of nearly pure sucrose. Will the children of Earth be able to stop the invasion in time, while dodging whole-screen explosions every 15 seconds?

Lego my Eggo (directed by George Lucas)

A rare double tie-in flick. The special edition will be out a few years later. Jar Jar guest-stars.

Pop Rocks (starring The Rock)

A thoughtful commentary on the futility of life, the meaninglessness of existence, and exploding candy.

The Night of the EZ Bake Oven (directed by George Romero)

Scores of digits horribly burned. Rated PG-13.

When Lawn Darts Attack (based on a true story)

Errol Morris and Ralph Nader join forces at last.

More collected Geek Thoughts at

Saturday, May 30th, 2009

Geek Thoughts: funny headline

Google Android Will Be on 18-20 Phones by End of 2009

source. Let’s see, Larry, Sergey and Eric Schmidt, there’s three phones…

More collected Geek Thoughts at

Monday, May 18th, 2009

Geek Thoughts: writing tip

Take something that’s done, no matter how crappy, and submit it. Right now, I’ll wait…

Next time you have something ready, by comparison it will be ever so much better, and you’ll have no excuse to avoid submitting that as well.

More collected Geek Thoughts at

Monday, April 20th, 2009

Geek Thoughts: entrance fail

The following is from an actual Midwestern newspaper clipping (you know, the things printed on flattened trees) from circa 1992.

Monday, July 19, 7 p.m. — Overeaters Anonymous at the Gloria Dei Lutheran Church, use south door (kitchen).

On a serious note, researchers at Cornell University found that people who pass through an entryway near the kitchen tend to eat 15 percent more than those who use the front door.

More collected Geek Thoughts at