Saturday, June 30, 2007

(Potentially relevant link)

#10 says you get free juice and cookies. True. I also got ice cream today. Birthday cake ice cream tastes like store-bought frosting.

#9 says you'll weigh less. True, but refer to #10. If I give a pint of blood and then get free juice and cookies, am I now one pint lighter? (Pints are volume, by the way. Blood is thicker than water, though not much thicker.) (Cecil adds this comment: 'Americans are so pathetic.')

#3 says blood is something money can't buy, but don't some places pay you 50USD for a plasma donation? It's also just a stupid reason. Who gives a damn about the rich and famous? You get juice and cookies, man! Juice and cookies! Get to it!

Friday, June 29, 2007

Today I was pompous and my sister was crazy. Today, we were kidnapped by hillfolk never to be seen again. It was the best day ever.

Wednesday, June 27, 2007

Normally I hate people who ask this. I'm supposed to drop everything in order to tell someone what I just dropped just because they're bored and think it's my job to entertain them?

But sometimes it can be an enlightening question. Someone asked me a few days ago:

what are you doing
I'm....gosh that's an eye-opener.

I was reading a book on German grammar. But it said something amusing, so I went to my blog and wrote about it.
Then I realised I hadn't replied to Leif's earlier comment on one of my posts, so I did that.
Then I thought 'Leif's commenting on my blog, but not posting on his!' So I decided to find his blog to see if anything new had been posted there. But I didn't see it in my bookmarks, so I went to OwlManAtt's blog. His linked to Max's blog, where I replied to one of his posts. Then I gave up, saw I needed to read some email, and told that to load while I checked the forums for new posts. I posted once or twice and saw that three or four people--you being one of them--had eeMailed me. So I answered them--looking through the database to help one person who forgot her password--and then got your latest message asking what I was doing. So I sat here and wrote this response.

So, in short, I'm reading a book on German grammar. It's open right in front of the keyboard. I just haven't looked at it for half an hour.

Tuesday, June 26, 2007

You know what would make the Muppets super cool? A whole array of Scooters. Dr. Bunsen Honeydew could create them.

The Scooters would join together into a powerful union and demand raises and more vacation time.

But Kermit would say 'No!' and push them down the stairs. This fix, however, would be sadly temporary. By Autumn, they'd be back with more bargaining power than ever.

('What?' you ask. It's the tags. Blogger users know what I'm talking about.)

Friday, June 22, 2007

Essential German Grammar (good book) by Guy Stern and Everett F. Bleiler has this to say about using 'sein' as an auxiliary verb:

Only three categories of German verbs use sein as an auxiliary. These are:
  1. Verbs involving a change of position that cannot take a direct object.
    [Table showing 'kommen', 'gehen', 'fahren', 'fallen', 'steigen', and 'folgen'.]

  2. Verbs involving a change of condition that cannot take an object.
    [Table showing 'wachsen', 'sterben', and 'verschwinden'.]

  3. Miscellaneous verbs.

Yeah, and there are only three types of words: verbs, nouns, and all the other types.

If one of your categories is just a catch-all, your classification system is incomplete. There's only one category of X that Y: 'all X that Y'.

(I can't think of any sensible labels[==categories] for this post.)

Wednesday, June 20, 2007

At ECU, the beginning German students get three(?) books:
* A textbook to teach them German.
* A workbook to practice German.
* English Grammar for Students of German to teach them English grammar.

No, really. 'Chapter 7: What is a Verb?' 'Chapter 15: What is a Sentence?'

Sadly, this book really is needed. Okay, we all know what a verb is (I hope), but often people find themselves unable to define 'infinitive' or 'modal verb', though usually I suspect they can give examples.

But that courses for teaching American college students German must also teach the Americans English is sad.

Monday, June 18, 2007

I need to post something because it's Monday, but none of the good posts I started are ready and I don't feel like working on them. So you get this worthless post instead.

Enjoy.

Friday, June 15, 2007

DISCLAIMER: I don't feel like proof-reading this. It's probably muddled and repetitive and [random disparaging adjective], but I just don't care that much. Sorry.

Background, part I: Shortly before the sixth Harry Potter book was released, one booksellers in Canada accidentally sold copies to fourteen people. The courts issued an injunction prohibiting them from reading said copies until the intended release date.

Background, part II: Richard Stallman called on us to boycott Harry Potter because of this.

His argument is, at its core, that you have a right to read any book you own. This seems reasonable, but he doesn't really address--to my knowledge--the reasoning behind the injunction. It's reasonable, though still wrong.

Suppose I promise you that I'll eat a hamburger. Then I remember that I don't eat meat. Too bad: I made a promise and I have to keep it. You have a right to have promises made to you kept, and the courts come in and force-feed me the hamburger to protect that right. (I used to have a right to not eat a hamburger, but then I uncoercedly promised I would.)

Suppose, however, that I promise you that I'll at a hamburger, and promise my brother that I won't. I've now created a situation where either you or my brother will have your rights violated. The courts can come in and enforce one of your rights, but not the other. The solution is to force me to offer one of you something sufficient that you'll say 'Okay, this is just as valuable to me as your eating/not eating a hamburger.' I only have to keep my promise to you so long as you want me to.

Suppose, however, that you want a million dollars and my brother wants a billion dollars. I don't have a million dollars, and I certainly don't have a billion dollars. I can't pay either of you off.

So the courts come in, say 'Ah! Someone's rights will be violated, whatever we do, so the only two differences are:
* Whether Luca wants to eat the hamburger. (I don't.)
* The value of my fulfilling my promise you each put on it.

It seems reasonable (though arguable) that I gave up my right to choose whether I eat the hamburger, so the only thing to consider is the harm of the two options: breaking a million-dollar to you or breaking a billion-dollar promise to my brother.

The courts should choose make me break the million-dollar promise. No hamburger eating for me. Sorry.

However, you could pop up and say 'No, it's worth a hundred quintillion dollars to me!' and who are we to refute you? (Call your bluff by offering you a million dollars? Nope. You're too smart for that. And maybe you're not bluffing.) Or you say it's priceless. And my brother says the same. At that point, the courts have to decide what a reasonable value is, and that sucks, but it's how things actually work.

The hamburger is a silly example. The original issue was a Harry Potter book. (The bookseller promised the publisher they wouldn't let anyone read it and by selling it they promised the buyers they could read it.) RMS offers the example of accidental publishing of health effects of a product. I offer what I think is a stronger counter-example: What if the doctor's office accidentally publishing my medical records?

Slashdotters often argue against copyright by saying 'Don't publish what you don't want public' (which is a bad argument for reasons I won't detail here), but if I share information with my doctor on the basis that he won't share it, and then he does, it's not my fault. I had a reasonable expectation of privacy. Now you have my medical records. This is terrible. You'll exploit them for your own nefarious purposes, I just know it.

This, like the Harry Potter case, is different from the hamburger promise case. In the hamburger case, we had to decide which promise would br broken. In this case, one promise (the doctor's promise of secrecy made to me) is already broken. The question is whether to break the doctor's promise to you ('here, you can have (==can read) these medical records!') by taking them back.

Instead of these to choices:
* Break a promise to you/publisher + bad consequences X
* Break a promise to brother/consumer + bad consequences Y

We now have to choices:
* Bad consequences X (promise to me already broken)
* Break a promise + bad consequences Y (promise to me already broken)

Before we chose which promise to break based on Utilitarianism ('minimise bad consequences) because the Deontologist (the 'keep promises' moral theorist) had no way of choosing one over the other. But now the Deontologist has a way of deciding. He doesn't give a damn about consequences.1

So the Harry Potter injunction is wrong because Deontology is the correct moral theory. If (Act) Utilitarianism is correct, the injunction is probably right.

That's why the injunction is reasonable. Utilitarianism is a reasonable position to take. It just happens to be the wrong on. And, no, I can't prove that.


1 People always assume Utilitarianism is the cold, calculating moral theory of logical people--it's the one Vulcan's hold--but the Deontologist is as ruthless and cold as any Utilitarian, and it's the only moral theory I know of that actually tries to derive its principles from logic. (It makes basic assumptions, of course, but these 'emotional' rules are derived logically from the basic premise, whereas Utilitarian doesn't need to bother with any logic.)

Thursday, June 14, 2007

Last night I had Chinese food for supper. Proof of conquest.

Wednesday, June 13, 2007

Today I'm taking over China.

I'm going to use giant robot dinosaurs to scare people into submission. When that doesn't work1 I'll turn on the giant robot dinosaur laser eyes and level three rice paddies. Just enough to scare everyone, but not enough to cause starvation in my newly conquered nation.

I've promised Shanghai to a friend. The rest will be put up for auction. I don't actually want China. I want north-eastern Europe. China's just a bargaining chip.

1 Some people make a Plan A and hope it works, but make a Plan B just in case. I make a Plan A knowing it will fail so Plan B feels useful. Good self-esteem is vital to plan success.

Monday, June 11, 2007

I was looking around for suggestions on first programming languages, and I noticed that many people tend to look at this as 'what language is most useful'. If you want to program applications, learn C, C++, or Java (no!) whereas if you want to do web development, learn Perl, Python, Ruby, or PHP (no!). And, yes, I do this too, but I do this for people who want to learn programming because they think it'd be cool to write a Neopets clone or something. Not people who want to be programmers.

Here's the thing: if you're a programmer, you know more than one language.

So why does it matter which language you learn first? Because learning some languages will encourage correct thinking and good programming habits right from the get-go, and that's what you need to be learning. One of my professors, Dr. James Wirth, told us 'It's not that it's a foreign language; it's a foreign way of thinking.' And he's exactly right. I've written small quantities of code in something like twenty different languages. I'm only proficient in a few, but picking up a new programming language is not the obstacle in becoming a good programmer. In one of my courses, we had assignments in something like six different languages, and code snippets littered the blackboard in many more. I haven't programmed in Ada or COBOL or Fortran or Pascal, but I had learn to read them on the fly, and I didn't find it a challenge. This might sound hard if you've never done any programming, but once you've learned C, Assembly, Prolog, and Scheme, you can understand the basics of nearly any language. Trust me: this is something you can do. After you learn to program.

Learning to program is the key. This starts with understanding how the computer runs programs. One guy I knew in school tried the non-command 'hurry' to tell the computer to run his program quickly. When you've never done a lick of programming before, this is not an unusual way of thinking about it. But any language will teach you that. What else is there?

When I first started, I was writing spaghetti code in QBasic. What was I missing? Functions and scope. Once I learned about using functions (and more importantly, once I began putting more and more stuff in functions), I started to think like a programmer. Suddenly programming wasn't rigid. Callbacks a long, long while later brought me even further along. We want a language that encourages the new programmer to build tools to do his work for him. What languages do this? I think LISP and dialects may be the champs her.

What else do beginning programmers desperately need? Style/Formatting. There were even upperclassmen in the CS department who didn't indent. (For the record, they began with C/C++, Java, or Dr. Wirth's Box English (broken link)) Everyone knows which language teaches indentation: Python. Worst might be Perl. Few will allow the programmer to ignore more style guidelines.

It's basic and of debatable importance, and probably should be covered separately if you're in a CS program, but How Things Work is also relevant. By this I mean, for example, understanding variable, something Dr. Wirth's Box English seems to focus on at a high level. Understanding overflows. Understanding data types. Should a beginning programmer be forced to learn the difference between and int and a string? Personally, I love not having to treat strings as char*s, but they'll need to learn sometime. Additionally, it will come up from time to time no matter what language you use. Try adding '3' and '8' in ECMASript. (Perl thinks it's 11. ECMAScript, Python, and Ruby all say it's '38' because '+' means concatenate. C thinks it's k or 107, depending on whether you ask for an int or a char output. A beginner will think Perl makes the most sense, but the most intuitive answer for a wizened programmer put before a language he doesn't know should be the C answer.) What language will teach you the nittiest of the nitty-gritty? Well, I guess machine language or Assembly. But shout-out is due to C for being a usable language that manages to force low-level understanding as well. Whether that's a good thing or a bad thing for beginners, of course, is something we could argue over all day and night.

And, let's face it: if you're trying to learn to program, learning a language at the same time just complicates things. Simplicity, please. I was using Perl for a while before I learned when it's $, %, @, $#, ${%var}, [email protected], \$, \%, \@, $var->{..., and even worse was (is) [] or {} or (). Let's see...a hash is () and a hash reference is {} and a list is () and an array is () but an array reference is [], and a list of references is \() or (\a, \b...). I love Perl, but this would frustrate beginners more than anything. When it comes to a simple, consistent syntax, Scheme obviously ranks way up there. I think Python and Ruby also score quite well. Since I mentioned QBasic earlier, I may as well do so again: QBasic has a very simple syntax. The case-insensitivity would probably go over well, though perhaps not something we should be teaching young programmers.

I started out talking about this, but I think it deserves a broader look: Learning to think. Leaving spaghetti code behind was a major boon, but that's just part of it.

The winner: There is no definite winner, of course. Python, I think, fairs pretty well. Scheme for teaching good thought is a classic answer (though usually just under the guise of LISP in general), and with the added benefit of a simple, clean syntax, is a very important consideration. If you want deep understanding of the computer rather than style and the more abstract 'think like a programmer', C or C++ is an excellent choice.

Personally, I think I'd go for Python to begin with, partly because it's popular. There's a lot to say for an active community when you're learning a new language.
The nitty-gritty can be gotten later (you should learn Assembly at some point anyway, and that's nothing but nitty-gritty), and Scheme also later on in order to broaden the way of thinking. A good programmer needs to touch on functional programming, anyway, and perhaps logical programming with Prolog as well. Meh. I had a bad experience with Prolog. The darn thing insisted I had some syntax error and I couldn't finish the simple assignment. :-(

Saturday, June 09, 2007

Slashdot keeps giving me mod points, but I almost never get to use them up because there's no -1 Stupid option. -1 False Dichotomy. -1 Denying the Antecedent. -1 Slippery Slope. -1 Straw Man. -1 Tu Quoque. (Though I'm often tempted to list all Ad Hominem as -1 Trolls.)

And, of course, -1 Wrong. If it's honest idiocy, -1 Troll is wrong, and of course replying to correct it is good, but even if it's already been replied to, it still should be ranked lower for being wrong. -1 Overrated? I guess.

I find I reply more often when I have mod points.

Friday, June 08, 2007

For years I've wondered why we don't have encrypting phones.

Five or ten years ago, phones may not have had great processors, and some would argue there wasn't much need. The first issue is quickly dying and the other is thoroughly obsolete.

Demand exists. Maybe it's not huge, but it exists.

Interoperability should be simple. Your phone initiates conversation with a quick 'Know such-and-such encryption?' and if the other phone says 'yes', you trade keys and encrypt (or, I suppose, send your pubkey and subsequently encrypted AES key1). Maybe this means older phones get a couple tones at the beginning of a call. Probably not, but I don't know how they operate.

Phone companies probably like lock-in, so a lone company creating an encryption protocol and releasing a phone probably isn't sufficient. Get some big players on board. Get them all together, create a free, open standard for encryption and agree to all to start supporting it at least on the fast enough models.

Until you do this, I see no need to buy a mobile phone. (If they did this, I'd have a need: to support the concept. Actually, why not release a landline phone for this as well?)

1 Can you get deniability with AES? I've always thought making it illegal to record people talking to me on the phone is really stupid, but if it's something we want, this could be a way to handle it. Maybe doesn't work so well with voice data.

Wednesday, June 06, 2007

I write posts ahead of time. I wrote this one days ago. later, I'll come back and touch it up and then post it.

Then I'll realise I forgot to update the timestamp, so it's listed as being posted days ago. So I'll go edit it to reflect the current date and time and repost.

Personally, I think the 'Post time and date' field (that's what the editor calls it: 'Post time and date') should automatically update to the time I posted the thing, not when I typed the first letter! At least change it to the last time I edited/saved it.

(Truth is, I won't forget to fix the timestamp on this post, because I'm going to append 'FIX THE TIMESTAMP' to the title so I'll remember. But I usually don't bother doing that, and I really shouldn't have to. Blogger needs to get on the ball.

Monday, June 04, 2007

(This is a modification of something I originally wrote in reply to a teenaged girl. Obvious?)

I know school has taught you that learning is totally uncool, but surely there's something you're interested in. Go memorise the details of every Yu-Gi-Oh! card or whatever.

No?

Fine, you're bored. There's nothing you can do about that. May as well learn French. You're bored whether you do or not, and if you learn French, you can go tell your parents 'Look, I taught myself French. I'm all grown up now so you should let me go to Paris. By myself.'

They'll say 'No, you're too young to go to France by yourself. Here's two tickets. Take your best friend Jill with you.'

So you take your two tickets and your best friend Jessica, and fly to Paris, where you meet enough hot French boys to keep you busy all Summer. Then, while you're there, you meet Johnny Depp, and he's really, really impressed that you're bilingual, so he marries you and you live happily ever after with the sexiest man alive. (Jill ran off with Orlando Bloom.)

What? You think it's awful that I'm telling you how to run your life? Maybe it is. But who cares? Are you going to give up a happily ever after with Johnny Depp just to spite some random jerk on the Internet? Or are you going to marry that sexy pirate captain-playing actor and become the envy of every creep on the Internet who is still stuck monolingually telling random people online how to live their lives?

Saturday, June 02, 2007

In mid-to-late May the local schools began revising their 'uniform' (dress code, really) policy. Naturally, this means people began complaining about how stupid it is again. That's fine. It is stupid.

But they're complaining 'I just bought my kids' new clothes for next year and now they're changing the dress code!' 'I need to go shopping for my kids new school clothes and don't know what kind of pants they'll need!'

These people somehow feel the need to buy their kids' Fall wardrobe in May?!?! How the hell does that work?

Friday, June 01, 2007

Read a book, watch LazyTown, write a story, program, go for a midnight run, chat, study something unrelated to school, dance, draw, reorganize the furniture, write on the walls, learn a new language, comment on random blogs, call up your Senator at midnight and tell him to outlaw telemarketing, build a cinderblock pyramid in your driveway, write a letter to your grandparents, proofread a text on Gutenberg, memorize more digits of pi, play patience, play the drums, browse eBay, back up your hard drive, finish your homework, improve Wikipedia, dissect your computer, read Nietzsche, disassemble the cinderblock pyramid that's now blocking your driveway, hop around in circles, practice spotting so you don't get dizzy next time you hop around in circles, send me money, play with your cat, read Slashdot, look at the constellations, bugtest Firefox, play chess on the computer, write a paper so you'll have one ready next time your teacher assigns one, learn to juggle, hunt down other cool things to do, meditate, clean your room, catalogue an obscure source of data and put it online, do push-ups, write posts for your blog so you'll have some ready the next time you get writer's block, do your taxes ahead of time, practice backflips. Congratulations: it's morning.