Category Archives: Tech Talk

Some potentially life-threateningly boring discussion.

Dashboarding

Right, it’s been a while… how does this work again? Right. Anyway.

I’ve been following Mark Bernstein’s posts on building a dashboard in Tinderbox and enjoying them… and puzzling out how to implement them, in a lot of cases.

One thing I wanted to do, once I figured out how the example he gave in the post above worked, was not have to type in all the random words I wanted as notes in a note in my Tinderbox file.

So what I did was use Tinderbox’s ability to run command line to grab a random word out of the built-in system dictionary. I couldn’t quite get the perl one-liner working inline, so what I did was I created a file called randomWord and put the following in it:

#!/bin/sh

word=`perl -e 'open IN, "</usr/share/dict/words";rand($.) < 1 && ($n=$_) while <IN>;print $n'`

echo $word
I made it executable and dumped it in /usr/bin.
Then, in my Word of the Day note in Tinderbox, I added the following in the Rule section of the note (modified slightly from Mark’s example – visible when you right-click on a note and choose to the Rename menu item):
if($Date!="today") {
 $Text=runCommand("randomWord", "");date="today";}
And I was done. A daily word of the day from the built-in dictionary… now to just find the time to write in that Tinderbox file everyday…

Coding Horror: You’re Doing It Wrong

[From Coding Horror: You're Doing It Wrong]

Jeff Atwood talks about templating engines (for generating html) being wrong… and I agree, with code like this:

<%foreach (var User in Users) { %>
<div class="action-time"><%= ActionSpan(User)%></div>
<% if (User.IsAnonymous) { %>
<div class="gravatar32"><%= RenderGravatar(User)%></div>
<div class="details"><%= RepSpan(User)%><br/><%= Flair(User)%></div>
<% } else { %>
<div class="anon">anonymous</div>
<% } %>
<% } %>

But, and I might be biased here, the WebObjects approach is much more pure, much more clean, from a markup vs. code point of view.

A quick crack at something similar in WebObjects would look like:

<webobject name="UserRepetition">
<div class="action-time"><webobject name="UserActionSpan"/></div>
<webobject name="IsAnonymousConditional">
<div class="gravatar32"><webobject name="UserGravatar" /></div>
<div class="details"><webobject name="UserRepSpan" /><br/><webobject name="UserFlair" /></div>
</webobject> <webobject name="IsNotAnonymousConditional"> <div class="anon">anonymous</div> </webobject> </webobject>

With a bindings file looking like this:

UserRepetition: WORepetition {
    list = users;
    item = currentUser;
}
UserActionSpan: SomeOtherCustomWOComponentToDisplayThisThingMaybe {
}
IsAnonymousConditional: WOConditional {
    condition = currentUser.isAnonymous;
}
IsNotAnonymousConditional: WOConditional {
    condition = currentUser.isAnonymous;
    negate = true;
}
...

Not too bad, eh? If you’re looking for separating your presentation from your code, well… I don’t think there’s anything better. But then, like I said, I’m biased.

It’s such a shame, with all the comments, that not a one has brought up the Old Lady…

Active Life Outdoor Challenge

Okay, so we got a Wii a few weeks ago (it might be two now).

And we’ve been playing Wii Sports after the kids go down to bed. And just today we got this:

Active Life Outdoor Challenge

Wow. Okay, so I may have ruined any (you know me) street gamer cred I may have had by just buying a Wii. But man oh man, was this one fun for our little lunchtime challenge session.

More than a quick half hour playing it will probably bring up a couple issues or problems, but since we have approximately a half an hour every six to seven months to play video games, well, it’ll take long enough before those are born out.

Mark Bernstein: NeoVictorian 1: Civilization and its Discontents

Interesting first shot by Mark Bernstein, with promises for more:
Mark Bernstein: NeoVictorian 1: Civilization and its Discontents

Why do I say we are unhappy?

• Our scientific conferences are filled with papers that focus on incremental improvements observed when asking unskilled laborers (whom we call “novices”) to perform office chores. We call this “usability”.
• Scholars interested in arts and humanities computing are strangely obsessed with box office and weirdly uninterested in making software, or making meaning.

I’m looking forward to more…

NaNoWriMo Technology Suggestions

Took a look at this thread over on the geared up NaNoWriMo.org site and figured I’d write down my favorite tech suggestions.

It’s basically culling my tools from this post, as well as a few of the general tools from this post:

Writer.app for drafting, Tinderbox and OmniOutliner for thought organization and outlining, Mellel for general word processor formatting when I’m at that stage of the process.

Not that I’ll be doing much during November other than being spit up on, not sleeping, and changing nappies.