Posted in Technology by Thomas Themel on December 29, 2004.
href="http://members.aon.at/gobiltschnig/archives/000046.html">[Smalltalk] [EN]
links to an essay that compares writing software to writing prose. The most
important excerpt for me is
It is tempting but fallacious to think that software is stuff
that is written primarily to be understood by a computer. To this way of
thinking, software is text produced to give a computer something to work with.
The text itself is a mere intermediate form. A private language between the mind
of the programmer and the non-mind of the computer.
This explains something I’ve long been puzzled about – how a great hacker can
be almost entirely unproductive in a software development team, and, even more
puzzling to me, how well the heaps of mediocre-to-terrible code written by such
teams actually work.
While I do understand the workings of commercial software development, and
consider myself an adequate software developer, I am highly susceptible to the
first view – programming is communication between myself and the machine.
When I write C++ code, I know quite well how it’s going to be translated and
executed. I could probably translate it to all the intermediate stages down to
binary code myself if I had time, and execute it manually. From a hacker point
of view, this is fun, and makes "good code", in the meaning that term
had in the MIT AI lab in 1968. From a productivity point of view, it hurts. I’m
constantly aware of implementation nits that are important for high-performance
code, but don’t necessarily matter in a business context, like excess copies and
useless memory access in C++. Take the simple act of exchanging two existing
values in an STL map. You can do it like this:
void exchange(map<string, int>& ref, int id1, int id2)
{
if(ref.find(id1) != ref.end() &&
ref.find(id2) != ref.end())
{
string tmp = map[id1] ;
map[id1] = map[id2] ;
map[id2] = tmp ;
}
}
I’d probably make it
template <typename _id_t, typename _mem_t>
void exchange(map<_id_t, _mem_t>& ref, const _id_t& id1, const _id_t& id2)
{
typename map<_id_t, _mem_t>::iterator it1 = ref.find(id1);
typename map<_id_t, _mem_t>::iterator end = ref.end() ;
if(it1 != end)
{
typename map<_id_t, _mem_t>::iterator it2 = ref.find(id1);
if(it2 != end)
{
_mem_t tmp = it2->second ;
it2->second = it1->second ;
it1->second = tmp ;
}
}
}
While the second variant might be smart in the hacker way of thinking, it’s
not smart in most parts of a commercial software project. Yes, it saves you a
microsecond of run time every time it’s executed, and yes, it solves a more
general problem, but it costs a lot more time to get this written, tested and
documented. Then, it will probably break on some weird stone-age compiler on the
umpteenth platform someone tries to port it to, and their patchy replacement
will then cause a subtle bug on the next port that costs hundreds of hours to
track down. I think we’re on the verge of the long-expected point where software
development ceases to be a craft and becomes an industrial activity, and as a
skilled craftsman of the old age, I can’t help but resent that a little.
The linked
interview [EN] on "Intentional Programming" is also very
interesting, because Charles Simonyi recognizes the superficiality of
programming languages and focuses on the underlying abstractions. Since
abstractions are basic to any form of understanding (see
href="http://home.themel.com/books/0937298018.html">here [EN] for an
exhaustive treatment), I share Simonyi’s excitement at the idea of making code
"stored knowledge" instead of "machine instructions". I’m
definitely thrilled to see something come out of
href="http://intentsoft.com/">Intentional Software [EN] that one might play
with.
Posted in Personal by Thomas Themel on December 25, 2004.
So, another year’s christmas celebration is over. This one is special
since it was my first without official membership in any Christian church.
It didn’t feel any different, though, so I assume that the transformation
from religious
anniversary [EN] to
href="http://www.marginalrevolution.com/marginalrevolution/2004/12/are_seasonal_bu.html">business
cycle event [EN] has largely been completed. Reflecting on technology,
what seemed marvellous to us a few years ago has become the norm – when my
mother couldn’t find any "Silent Night" CDs (probably
intentionally misplaced by my little brother, who dislikes singing), I
just went and got some versions off
href="http://www.emusic.com/">EMusic [EN] and made my own Christmas
CD. All the tools were available in a pretty much computer illiterate
household.
Given this experience and the growing irrelevance of the actual
religious traditions,I’d like to propose a better holiday for
non-religious people. Keep the gift-giving, but instead of celebrating the
alleged birthday of a controversial religous leader, celebrate human
ingenuity. All the cultural pessimism aside, an amazing lot of things
is better now than they were a decade ago, and the same seems to hold for
the decade before that. Suppressing the pessimism even harder, I don’t see
that many reasons to believe the next decade will be worse. All this is
due to people everywhere thinking about the things they do and finding
ways to improve them. Some of these improvements are huge, requiring years
of development work and giant investment, others are just small flashes of
brilliance or tedious reworkings of other people’s flawed implementations
of already good ideas.
Since it’s already there and I’m not really the lyrical type, I’d
suggest RFC968 [EN] as
the holiday’s official poem, to be said at celebrations of this holiday every
year:
Twas the night before start-up and all through the net,
not a packet was moving; no bit nor octet.
The engineers rattled their cards in despair,
hoping a bad chip would blow with a flare.
[...]
It won’t be easy to come up with a complete set of traditions
surrounding that new holiday, or even a good-enough name, but my life’s
probably going to be long enough that spending only the boring Christmas
celebrations’ time contemplating the necessary advances should lead to
some progress along that front (and chances are good that there’s already
someone else doing the same thing, but I don’t want to spoil my fun in
imagining things by looking at someone else’s version on the web now).
So, merry ThinkMas, readers, and, to borrow a line from
href="http://www.infineon.com/">that semiconductor company [EN],
"Never stop thinking!".
Posted in Link Spam by Thomas Themel on December 11, 2004.
Yay, I’m feeling like a geek rockstar… My former work mate
href="http://members.aon.at/gobiltschnig/blog/">Günter Obiltschnig [EN]
pointed his readers to the beta version of
href="http://www.google.com/webhp?complete=1&hl=en">Google Suggest [EN], and
I’m in the list (number three for ‘thomas them’, no less! :)). Now it doesn’t
hurt so much that everyone has a Gmail
[EN] account and I haven’t (not that I want one really, it’s the old
href="http://www.groucho-marx.com/">Groucho Marx [EN] (quotation #6, or go
watch Annie Hall [EN])
thing).
(If I had a polling thingy in place, I’d now throw up an ‘How often do you
Google your own name for ego reasons?’ poll just to calm my conscience.)
Posted in Link Spam by Thomas Themel on December 9, 2004.
Since it seems that
href="http://synflood.at/blog/archives/2004:12:09/rate-me-too">everybody’s
[EN] doing [EN]
href="http://cps.shellmaster.de/blog/index.php?p=66">it [EN], here is my
result:
cellpadding="0" cellspacing="0" bgcolor="#dddddd">
align="center"> INTP – “Architect”. Greatest
precision in thought and language. Can readily discern contradictions and
inconsistencies. The world exists primarily to be understood. 3.3% of total
population.
|
href="http://similarminds.com/">Free Jung Personality Test (similar to
Myers-Briggs)
(By the way, the link to the actual test I took is
href="http://similarminds.com/jung.html">this [EN] – it’s not that obvious
from the result/site/other blog posts.)
Since I hadn’t heard of MBTI before, I took it to
href="http://www.wikipedia.org/">Wikipedia [EN] and found
href="http://en.wikipedia.org/wiki/MBTI">this [EN], which has not only a
breakdown of the frequency of the different types, but also an overview of
various related psychometric methods – lots of great branching points for
further research, if time ever permits. The article also has a skeptical
refutation of the whole concept that sounds quite reasonable to me – so I’ll
take it as yet another reason to postpone writing a real blog post and fill the
time with fun stuff.
Posted in Personal by Thomas Themel on December 8, 2004.
I have no idea whether we’re progressing or regressing. This week, we made
Best Team Name ("There’s A Rat In Me Guinness, What Am I Gonna Do?"), which
was economically more advantageous than winning Most Points… Six pints of
Guinness at 4.50 a piece and six Jameson
[EN] baseball caps as part of a special promotion is better than 30¤ if you
value a Jameson cap above 0,50¤ apiece (which at least some team members clearly
seem to do). That victory is the result of some combined genius – Berni asking
Barry for his favourite UB40 song, and me remembering a fairly recent Shaggy
video and adding the Irish connection. It should also be mentioned that the only
other team name that got an honorable mention was clearly stolen from a Jabber
conversation I had last week – you bastards!
Still, scoring 14/20 is somewhat embarassing, even if we were lacking our pop
culture Guru for most of the quiz… See you next week, jackpot!
Posted in Link Spam by Thomas Themel on December 4, 2004.
So, if you watch mainstream news media, it seems that
href="http://en.wikipedia.org/wiki/Ukraine">Ukraine [EN] is currently on the
verge of defeating a Soviet apparatchik dictator who fakes elections to stay in
power. The OSCE [EN] issued a
href="http://www.osce.org/documents/odihr/2004/11/3811_en.pdf">report [EN]
that noted that the elections weren’t executed correctly:
As for the first round, the second round of the Ukrainian presidential election
did not meet a considerable number of OSCE commitments and Council of Europe and
other European standards for democratic elections.
This conclusion is cited in a number of media stories, and it seems quite
universally accepted that Yushchenko should have won. However, if you read the
report, it doesn’t really mention conclusive evidence to that end, and most of
the violation seem somewhat minor. Even the US, paragon of democracy, has had
a number of election irregularities – not only the much-reported ones in 2000.
See this thing about LBJ
in 1952 [EN] for a fun example.
Then, I stumbled across the Guardian
[EN] article
href="http://www.guardian.co.uk/ukraine/story/0,15569,1360236,00.html">"US
campaign behind the turmoil in Kiev" [EN], describing an
internationally coordinated campaign behind the opposition. Now, there’s
something similar on Wikinews [EN]:
href="http://en.wikinews.org/wiki/Ukraine_and_Western_bias">"Ukraine and
Western Bias" [EN].
While I’m not claiming that I know a lot about the situation, I don’t see
much evidence that the mainstream view is correct and not the result of
carefully stimulated prejudice about the former USSR. The Wikinews article is
already disputed because it lacks neutrality, but even if it’s an opinion piece,
I get a feeling that most of the stuff I read about the Ukraine in recent weeks
qualifies as such.
It’ll be interesting to see this pan out – and would it be a good thing if
the (purportedly pro-Western) opposition wins, despite a valid democratic vote
against them?
Posted in Personal by Thomas Themel on December 1, 2004.
We (me,
href="http://www.themel.com/digicam/sorted/800x600/001227001.jpg">Miraldo
[IMG],
href="http://www.themel.com/digicam/sorted/800x600/010608002.jpg">Bernhard
[IMG],
href="http://www.themel.com/digicam/sorted/800x600/030806001.jpg">Andreas [IMG,
with the Guru meditation shirt],
href="http://www.themel.com/digicam/sorted/800x600/00021925.jpg">Chrissy [IMG,
on the left], Maria (of whom I know nothing more than her first name and
that she’s from Tyrolia) and Shorty (not even a real first name there, plus he
left early) just finished Johnny’s [EN]
Quiz Night as best team, scoring 19 out of 20 possible points and missing the
jackpot of EUR 510 by just one damn point. If you know what the lowest weight
class in boxing is, according to the
href="http://www.wbcboxing.com/WBCboxing/Portal/default.cfm?Idioma=eng">WBC
[EN], you could have made yourself useful and joined us…
We aren’t quite sure why we got 19 and everyone else got 18 because by our
count we only have about 17.5, but "The judge’s decision is final" and
so we’re content to accept EUR 30 in Johnny’s vouchers, which looked
suspiciously like three of these
here [IMG], but they bought us beer well enough.
For best team name next week, I suggest "If you let Barry add, we’ll
score 21". Go Johnny’s!
Update:It seems Barry can add after all. We just misunderstood him
reading out the answers, and so one of the two we thought to be wrong were
indeed correct (He probably said, "…was Johan Cruyff, though it should’ve
been Marco van Basten" where we heard "…wasn’t Johan Cruyff, though
he should’ve been, but Marco van Basten"). To account for the other half
point, it seems that "George Dukakis" was good enough as the Democrat
who lost to George Bush in 1988.