Archive for the 'geekthoughts' Category

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 http://GEEKTHOUGHTS.info.

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.

Finish.

More collected Geek Thoughts at http://geekthoughts.info.

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 http://geekthoughts.info.

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 http://geekthoughts.info.

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 http://geekthoughts.info.

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 http://geekthoughts.info.

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 http://geekthoughts.info.

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 http://geekthoughts.info.

Wednesday, November 4th, 2009

Geek Thoughts: unlikely tail

Tractors are to dogs as rocking chairs are to cats.

More collected Geek Thoughts at http://geekthoughts.info.

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 http://geekthoughts.info.

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 http://geekthoughts.info.

Wednesday, September 30th, 2009

Geek Thoughts: perfect storm?

Raining bacon.

More collected Geek Thoughts at http://geekthoughts.info.

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.

-m

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 http://geekthoughts.info.

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 http://geekthoughts.info.

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"/>
  </p:output>

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"/>
  </p:input>

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 http://geekthoughts.info.

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 http://geekthoughts.info.

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 http://geekthoughts.info.

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 http://geekthoughts.info.

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 http://geekthoughts.info.

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 http://geekthoughts.info.

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 http://geekthoughts.info.

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 http://geekthoughts.info.

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 http://geekthoughts.info.

Monday, March 30th, 2009

The Geek Thoughts Manifesto

Never trust a document with “Manifesto” in the title, nor that document’s writer.

More collected Geek Thoughts at http://geekthoughts.info.

Wednesday, March 11th, 2009

Geek Thoughts: omito

Omito:

(Spanish) First-person singular (yo) present indicative form of omitir (to omit).

(Proto-English) Shortened word form of an error of omission, e.g. in written.

More collected Geek Thoughts at http://geekthoughts.info.

Saturday, March 7th, 2009

Geek Thoughts: sad Google

Your search – :-) – did not match any documents.

Suggestions:

  • Try different keywords.

More collected Geek Thoughts at http://geekthoughts.info.

Thursday, March 5th, 2009

Geek Thoughts: sudo says

Sudo says make me a sandwitch.

Sudo says clap your hands.

Sudo says touch your nose.

Sudo says turn in a circle.

Now give me a thumbs up. Ha! I didn’t say sudo says!

More collected Geek Thoughts at http://geekthoughts.info.