You are viewing [info]timwi's journal

Apr. 4th, 2012 @ 11:50 am «Kiu volas iĝi Milionulo» dum 28a PSI en Bonn
La dua tago de la 28a PSI venis al sia fino.

Tiu tago gravis al mi, ĉar mi organizis mian «Kiu volas iĝi Milionulo»-kvizon. Mi laste faris ĝin tri jaroj antaŭe, sed ĝi ankoraŭ sufiĉe bone ŝatatas. Bedaŭrinde oni denove havis propran aron de teknikaj problemoj, sed feliĉe estis malpli ol lastfoje!

Martin mirinde moderatoris. Lia personeco bone formis la centron de la afero. Ankaŭe li kompetente superis la teknikajn obstaklojn tiel ke la rigardantoj ne tro tedis pri ili. Mi estas multe pli kontenta pri lia moderatorado ol la pasinta de Rolf.

La Milionulo-kvizo verŝajne estis la plej kosta evento de tiu renkontiĝo¹. Al Gavan, kiu alstarigis kaj programis la lumsistemon, ne eblis kunporti siajn proprajn aparatojn; pro tio ni bezonis lui lumojn de proksima vendisto kaj Gavan elspezis kelkajn horojn surloke programi la lummovajn efektojn. La rezulto plene valoris lian penon!

Malsame ol ĉe la pasintaj eventoj, ĉifoje ni havis apartan teknik-ĉambron malantaŭ la rigardantaro, el kiu ni povis superrigardi kaj regi la spektaklon. Sekve estis la kablosalato perfekta. Krom la lumoj, oni bezonis Ethernet-reton por komunikado inter la kvar komputiloj; mikrofonojn konektitajn al sonsistemo kune kun la ludaj muzikoj; projekciilon por afiŝi la grafikojn ĉe grandega ekrano; USB-hubojn konektintajn la klavarojn por la elektaj rondoj; kaj fine kaj grave la elektrokablojn por kurentigi ĉion. Nesurprize, ĵus en la unua minuto iu faletis per iu kablo kaj eltiris ĝin kaj mi bezonis kuri antaŭen por korekti la situacion. Feliĉe tio nur unufoje necesis.

Por mi kiel stiristo, la pleja plibonigo (kompare al lastfoje) estis ke mi povis porti kapaŭdilojn, kiuj enhavis nur la paroladon de la moderatoro kaj kandidato, sen la ludmuziko. Tiel al mi multe pli bone aŭdeblis, kio diriĝis kaj kiam tempo ĝustis por puŝi ĉiun devantan klavon. La pleja embaraso estis ke mi havis eraron en mia demanddatumbazon: unu el la demandoj (eĉ tre facila!) havis la malĝustan respondon markita kiel ĝusta. La komputilo do sonigis la «malvenkan» sonon kvankam la respondo ĝustis.

Nils havis ideon montri varbfilmon de «Slumdog Milionulo» kiel varbpaŭzo meze de la kvizo. Mi do eĉ alprogramis eblecon ludi alian sonon por la reveno el tia paŭzo. Tamen ni fine decidis kontraŭ tio, ĉar Nils opiniis ke la varbfilmo ne taŭgas. Kompreneble Nils ankoraŭ montris «Slumdog Milionulo» en la kinejo post la kvizevento.

Al mi surprizis ke trovado de kunludantoj (kandidatoj) multe pli malfacilis ol dum la lastaj renkontiĝoj. Ni nur multpene sukcesis trovi dek, kaj tri el la dek estis anoj de la sama familio. Martin teoriis, ke la PSI, estanta familia evento, altentas malpli da tiaj personoj, kiuj ŝatas sinmontri sur scenejo, ol junulara renkontiĝo.

Entute, mi ĝojas ke ĝi sufiĉe bone funkciis, sed mi ankaŭ ĝojas ke ĝi finfine pasis. Mi certe lernis ankoraŭajn lecionojn por eĉplibonigi la sekvontan kvizon; tamen mi ne certas, ĉu mi ankoraŭfoje volontulos. Ĝi vere estas multlabora afero.

Edit:

¹ Fakte, ni havis du eventojn pli multekostajn ol Milionulo. Unu el ili estis koncerto de iu pianisto, kiu simple kostis multe...
About this Entry
default
Jan. 25th, 2012 @ 01:18 am Attitudes in German politics are changing
Lately I’ve been seeing news articles and YouTube clips spring up, and I realise how German politics has for a long time been an old-people elite that has been marginalising the younger generation for its supposedly anti-social internet-only lifestyle. Now that younger generation jumps onto the stage out of the blue, speaks up for itself and has established politicians utterly stumped. Suddenly they have to defend themselves against arguments that involve modern social phenomena like Twitter which they don’t understand; it is no longer acceptable to simply deride it for geekdom and dismiss it as negligible. All those old people’s unfamiliarity with — and hence inability to appreciate the significance of — the emerging sociology of the internet is suddenly exposed. As one commenter aptly described it, “the more you talk, the more percentage-points you lose to the Pirates”.

In fact, the derision goes the other way now. A Green-Party politician said “I watch internet”, which I’m sure was just a slip of the tongue, but a representative of the Pirate Party seized upon it as revealing of their perception of the internet as a beefed-up TV program and their ignorance of its interactivity. Only 5 years ago such a reaction would have been seen as pedantic and unconstructive, but today a sizable chunk of the audience applauds this felicitous characterisation of their outdated worldview.

I think I’m going to watch a political discussion show about the Pirate Party that was broadcast 5 months ago. Not the most up to date, but we’ll see. With this overdue development finally happening, I think I could potentially get a lot more excited about politics in the coming years.
About this Entry
default
Sep. 30th, 2011 @ 09:55 pm Playing with CSS a bit
I played around with CSS a lot today and yesterday. I am not entirely sure why now, but I think it’s largely because I think I finally understood position:relative/absolute and overflow:hidden properly...

I wanna post two things here that came out of this. Neither is particularly impressive by itself, but only a few days ago I would not have thought this would be possible in HTML and CSS alone (no JavaScript, no SVG, no canvas).

#1: A rainbow. This uses a combination of box-shadow (with and without inset) and border-radius. (No need to comment on the fact that orange is missing, I already know.)

#2: A speech bubble. I would not have thought it possible to have an ellipse in CSS. There is indeed no direct command for ellipses, but an elliptical shape emerges if you use border-radius with differing border widths. overflow:hidden seems to allow me to clip anything to the shape of such an ellipse.
About this Entry
default
Aug. 6th, 2011 @ 08:13 pm The UX of confusing postboxes
UX, or User Experience, is the study of how users of a system, process, device or other object experience their use of it. The term is most commonly associated with software, in which it overlaps with UI design, but the following is not about software at all. It is about postboxes.

So Gordon and I went to the post office to buy stamps, envelop a letter, and then post it. On the way out of the post office, there were two large red postboxes on either side of the exit. But they looked very different. One of them was the stereotypical traditional English red postbox. The other one looked much less sophisticated; it was rectangular, cheap and devoid of design, almost like a rubbish bin. Our user experience was that we became unsure which one we should use; our intuition seemed to suggest to us that if they looked so different, they must have different purposes, and you wouldn’t want to throw your letter into the wrong one lest it take much longer to deliver. So we asked a shop assistant.

We were assured that “it doesn’t matter”. Apparently both boxes fulfill the same purpose. So we put our letter into the nearest one and left.

But this kept us wondering. How often do the shop assistants get this question from people? How often are people confused about the boxes, and how uncertain are they about posting their letters to the right box? In other words, what is their user experience? It is conceivable that we are in a small minority of people who worry about this; after all, Gordon and I are both somewhat on the autistic spectrum, so we notice such differences and expect them to be significant in some way. Maybe other people don’t even notice the difference or don’t expect it to matter; after all, both boxes are red and are clearly labeled “POSTBOX” in large-letter white paint. Maybe that is enough to reassure most people that they are doing the right thing by posting their letter in either box.

But let’s assume for a moment that a significant proportion of people do worry about it. How can you improve their user experience? Let’s also assume that the most obvious solution, namely to have only one postbox of sufficient capacity, is not available for whatever reason. Should you put extra lettering on the boxes to say something to the effect of “it doesn’t matter”? “We know there are two boxes, and they look different, but don’t worry, they are just the same”? That seems kind of weird.

Gordon came up with an interesting idea. British Royal Mail offers two delivery services, a more expensive next-day delivery — called “1st class” — and a cheaper but slower one, “2nd class”. So his idea was to label one of the boxes as “1st class” and the other one as “2nd class”, even though it doesn’t matter where you post your letters. This puts these doubts to rest. You now have one postbox to post your letter to; you now know exactly what you need to do and there is no longer any need to waste shop assistants’ time.

(For some reason, Gordon was impressed with my suggestion that it is the traditional English postbox that should be labeled “1st class” because it evokes connotations of trusted “luxury” service, while the other one should be labeled “2nd class” because it would be associated with cheap “economy-grade” service. I don’t know. It was just a thought.)

However, this plan now opens up the possibility for someone to post their letter to the “wrong” box before noticing the labels; in those cases they would certainly demand to ask the shop assistant about what to do. Although the shop assistant can still respond by saying that it doesn’t actually matter, the customer would (at least initially) be a lot more worried if they thought their letter with an expensive 1st-class stamp might now be treated as a 2nd-class item. Thus it is not entirely clear that UX is improved, or that less of the shop assistants’ time is wasted in total.
About this Entry
default
May. 14th, 2011 @ 06:46 pm Progress schmogress
Just the other day I went to the post office to post a letter. It’s been a while since I last did that — what with the age of e-mail and everything — but anyway, I was surprised to find that something seems to have changed about stamps in the UK.

It used to be the case that the stamp wouldn’t, by itself, stick to the letter. One had to wet it, and usually the only way to do that was to lick it. It’s not a huge thing, but it’s disgusting and annoying. But it’s not like we didn’t have the technology to do better; stickers have existed for decades. I had always wondered why stamps were so crap and nobody did anything about it. Even more mysterious was the fact that for international mail, an extra “airmail” mark was to be affixed to the envelope in addition to the stamp — and somehow, this one managed to be an actual sticker.

So now this seems to have changed. The stamp I was given was a proper sticker that I could just stick to the envelope like any other sticker. Finally! Decades-old technology has made it into everyday life. Why did it take this long?

The only explanation I could think of is that until now it has not been economical. The technology existed but was significantly more expensive than the less convenient one. The sheer volume of stamps printed and used in the UK exponentiates any such difference. Presumably the “airmail” sticker could get away with it because it affected only international mail, which is a small percentage of all mail.

The same is, of course, true for everything else where a better technology doesn’t instantly become commonplace. LCDs are commonplace now, but it took quite a while for people to stop buying new CRTs. I won’t make a long list of examples now, you get the picture. But I think there is one area in which the disparity between available technology and economic feasibility is clearly greatest.

And that area is poverty. There are many technologies available to counter the effects of poverty: for instance, there are cures for many diseases, but people still have the diseases because they “cannot afford” the medicine; there are efficient ways to make enough food for large populations, but people still hunger because there is no benefit for anyone to set up such a thing sustainably; and there is, of course, all the drinking water anyone ever needs, but nobody bothers to get it to the people who most urgently need it.

Maybe there is too much emphasis on “technological progress” — we have enough of that, but it doesn’t quite fully solve the problems that it is aiming to tackle. We need economical progress to enable those solutions, and we’re not making any. Or am I just getting that impression because I’m not an economist?
About this Entry
default
May. 6th, 2011 @ 12:34 am Funciton update
About this Entry
default
Apr. 16th, 2011 @ 11:10 pm Random stuff
About this Entry
default
Apr. 15th, 2011 @ 03:16 pm Funciton
               ╓──────╖                        
               ║ Fibo ║                        
               ╙──┬───╜                        
        ┌─────────┴─────────┐                  
        │           ┌───────┴──────┐           
      ┌─┴─╖   ┌───╖ │ ┌───╖  ╔═══╗ │           
    ┌─┤ · ╟───┤ + ╟─┴─┤ + ╟──╢ 1 ║ │           
    │ ╘═╤═╝   ╘═╤═╝   ╘═╤═╝  ╚═══╝ │           
    │   │  ┌────┴─╖ ┌───┴──╖       │           
    │   │  │ Fibo ║ │ Fibo ║ ┌─────┴───┐       
    │   │  ╘════╤═╝ ╘═╤════╝ │      ┌──┴──┐
    │   └┐      │   ┌─┴─╖  ┌─┴─╖  ┌─┴─╖   │
  ╔═╧═╗  └┐     │   │ − ╟──┤ ? ╟──┤ ≤ ║   │
  ║ 2 ║   └┐    │   ╘═╤═╝  ╘═╤═╝  ╘═╤═╝   │
  ╚═╤═╝    └┐   └─────┘      │    ╔═╧═╗   │
    │ ┌───╖ │ ┌───╖  ╔════╗  │    ║ 0 ║   │
    └─┤ − ╟─┴─┤ + ╟──╢ -1 ║  │    ╚═══╝   │
      ╘═╤═╝   ╘═╤═╝  ╚════╝  │            │
   ┌────┴─╖ ┌───┴──╖         │            │
   │ Fibo ║ │ Fibo ║         │            │
   ╘════╤═╝ ╘═╤════╝         │            │
        │   ┌─┴─╖          ┌─┴─╖        ┌─┴─╖
        │   │ + ╟──────────┤ ? ╟────────┤ > ║
        │   ╘═╤═╝          ╘═╤═╝        ╘═╤═╝
        └─────┘              │          ╔═╧═╗
                                        ║ 2 ║
                                        ╚═══╝

I invented my first esoteric programming language.

It is called Funciton (pronounced: /ˈfʌŋkɪtɒn/).

I posted it to esolangs.org.

The Fibonacci function is shown on the right. None of the functions you see in there (+, >, etc.) are built-in; all of them have an implementation in Funciton. See the article for these declarations.

I need to stop doing useless things like this and get back to real work.
About this Entry
default
Sep. 19th, 2010 @ 11:37 am I am angry
I am angry so I decided to vent a bit. (Please consider to refrain from commenting until you have read the last sentence, as otherwise you run the risk of making me angrier.)

The trouble is, I don’t really know why I’m angry. All I know is that it has something to do with StackOverflow and the fact that everyone there is stupid beyond description.

And I’m not talking about the people who post beginner’s questions. I don’t have a problem with that. Some people enjoy helping beginners. I also don’t have a problem with questions that are badly phrased — some people just don’t have the writing skills necessary to communicate a problem. I’m not even sure I have the writing skills necessary to phrase my answers clearly, given how often I am not understood.

I also don’t have that much of a problem with people posting answers that are plainly wrong, nonsensical, irrelevant, or otherwise bad. I can leave a comment describing why the answer is bad, and then anyone reading the answer and the comment can make their own decision based on that.

What I do have a problem with is that people are unwilling to accept when their answer is bad. 90% of the time I leave a comment describing a flaw in the answer, the author comes back with a comment trying to handwave away their mistake. In raw amount of work, it would be easier to edit the answer and fix it, but these people are programmers, and programmers have an ego, and being told that you’re wrong hurts that ego. Fixing the answer would be a concession to being wrong, so the path of least resistance is to act as if they were right after all and I was the one that made a mistake.

But the other 10% are not without fault either. While these 10% of people are willing to edit their answer to fix mistakes, they will nonetheless not learn from this mistake. In particular, they will continue to post half-baked, wrong and incomplete answers just to be first. The system rewards this: the earlier you get in with your answer, the more upvotes you get, no matter how wrong the answer is. The good citizen who does their research first and then posts a good, correct and complete answer, loses out because all the people who have seen the question when it came in have given their upvote to the wrong answer and moved on (and will never find out that the answer was wrong).

There are some very few good souls on StackOverflow who sometimes answer really difficult questions, and answer them well. I asked a question about type inference as described in the C# language specification, and I knew full well that the only people who could answer that question are people who worked on or with that specification, i.e. people who worked in the Microsoft C# language design team or in the Mono C# community. Of those people, the only one I know to be on StackOverflow is Eric Lippert. And he did find and answer the question.

After the success of that question, I didn’t think much of it to ask another question about the C# language specification, this time about implicit conversions. Unfortunately, Eric Lippert has not yet answered the question, most likely because he didn’t see it — and now it is buried deep in the list of questions, so he will probably never see it. What I got instead was three nonsensical answers from people who clearly haven’t read the specification and/or don’t understand the most basic principles of it — and two of those answers even got an upvote. This makes me angry.

It goes deeper, though. The community at large does not recognise any of these behaviours as a problem. It is pretty obvious to me why: nobody is in it to help anyone (despite overtly claiming so). The people who answer questions do so because it earns them these meaningless reputation points, so they obviously prefer a system that can earn them heaps of those points by giving heaps of amateur answers. The people who make the system (Jeff especially) are in it for making money from ad revenue, and it clearly works. He’s probably making a good fortune from this, and he probably genuinely believes that he’s “making the world a better place” as he so enthusiastically proclaims in his propaganda.

It is not hard to see that StackOverflow does not make the world a better place at all. 99.99% of the questions are completely useless to anyone but the asker (this includes my two questions that I linked to) and dilute any search engine results that would otherwise bring up something useful. The remaining questions are either questions that are too hard for rep-addicted junkies to answer properly, so you end up with a thread full of wrong answers (or, in the best case, no answer at all); or questions that are easy enough to answer, so the answer was already available on the net before StackOverflow. The only questions I’ve seen that could be genuinely useful to someone who found it by googling are questions that have been answered by the asker himself (this includes a question I asked a long time ago about MissingManifestResourceException, which is now the most often viewed, probably because it is a very googlable term indeed). If I had asked the same question somewhere in a forum, I would have posted the same answer there and it would have been just as googlable. (By the way, if you paid attention, you will notice that my answer to that question is a bad one. It covers only my problem, but other answers posted there since have indicated that the same exception can occur in other circumstances. There is no incentive for anyone to consolidate several answers into a single, complete answer, so the thread will remain as fragmented as any forum post would have been.)

The software is full of bugs, too. And Jeff doesn’t care about them. Why would he? It makes him money, that’s probably all that counts. He turns the act of declining bugreports for no reason into a new artform. He is a huge hypocrite, too: he blogs about how the distinction between bug and feature request is useless and is often used “as a wedge against users”, but then he designs meta to have the same distinction, and he goes on to do the same thing with it that he criticised in that entry, except he’s even worse. He redefines “bug” to mean “high-priority problem that affects regular users” (why specifically the minority of regular users? Probably only he understands), insists that everything else should be called a “feature request”, and then assails the users who post bugs as bugs. These people are “strident”, and posting a bug as a bug is “like marking all your outgoing mail as important, a.k.a. crying wolf”. He’s nuts.

I won’t go much more into this because nobody will find this entry interesting to read anyway, but it did help me let off some steam. If you want to help me feel better, try to resist the temptation of arguing any point I made, but instead consider stroking my ego and telling me that I’m right on all counts. :)
About this Entry
default
Apr. 19th, 2010 @ 01:04 pm About the fixation of syntax to concepts
Coders seem to be unable to distinguish the concepts of a programming language from its syntax. One coder might argue for Python on the grounds that it has certain innovative language features, but another might “refute” this by arguing about the shortcomings of whitespace-based syntax. The two are talking about entirely separate things.

This problem is not helped by the fact that the vast majority of programming languages are built with this coupling fundamentally integrated into the whole design. There is usually no self-contained “runtime” that can just execute the output of any random parser for some random syntax. Maybe in the specific case of Python there is — in fact, I know there is for Perl 6 — but the main point still stands that most programming languages are not designed with this in mind. In particular, a very popular “microlanguage”, namely regular expressions, is universally infected with this assumption. Even the modern .NET architecture still uses the same old crappy regular expression syntax that was originally popularised by Perl, strengthening the belief among the naïve that regular expression syntaxes must necessarily be this arcane and compressed. Thus 21st-century coders still form one camp that argues for regular expressions because they’re powerful, while the other camp argues against them because they’re unreadable and unmaintainable. Both of them are right, and both of them are talking about different things.

Even the most modern programming languages that compile into a hardware-independent virtual architecture (Java or .NET), are suffering from this problem. One could kind of argue that C#.NET and VB.NET are actually just two different syntaxes for .NET, but in reality they have separate compilers that do similar but not identical things.

How often do you hear programmers argue about the colour schemes used in syntax highlighting? This is rare because everyone can choose their colour scheme for themselves without impacting anyone else. You don’t commit your colour scheme into source control.

I would like to see the next step in the evolution of programming to be one where everyone can use any syntax of their choosing without impacting anyone else. In this world, source code would be parsed into an abstract syntax tree, and it would be this syntax tree that would be shared between developers and checked into source control, so everyone can see everyone else’s work in one’s own preferred syntax. This step is hard because there needs to be universal agreement on the format of such a syntax-tree file so that source-control software can properly display diffs and annotations in the user’s preferred syntax. Once done, debates about “syntax” in a programming language become a thing of the past. People will debate “syntax” about as much as they debate colour schemes today.

But we can go even further. The next step is to do away entirely with parsers. There would instead be source code editors that edit the syntax tree itself. These editors only need to render the tree in the user’s preferred syntax, but they never need to turn plain-text files back into a syntax tree because it is already one. Then we can finally stop thinking of source code as plain text and start visualising and manipulating it graphically.

You may say I’m a dreamer...
About this Entry
default