Rosio Pavoris a blog

Year seriously over now

I got my grades yesterday, so now the year is finally officially over as well. Due to MASSIVE INCOMPETENCE I hadn’t received my grades for last semester yet, so I just found out those as well.
All of it is roughly as expected, with a few exceptions.

Due to shuffling with classes at first and regular indifference later on, I never ended up going to Taalbeheersing (“language control”; basically Dutch grammar and spelling), and 6 out of the 20 points were supposed to be from tests during the semester. I didn’t expect to pass, but I went to the exam anyway because I had nothing better to do.
My final grade was 13/20.

I knew my Technieken voor Datamodelering (Techniques for Data Modelling; SQL plus some theory about ERMs) grade would be high, since I’m reasonably good at SQL (or, compared to most other people in my class, absurdly good) and I actually put some effort into the assignment thing, but my final grade was 19/20, which is probably the highest grade I’ve gotten on anything since 6th grade.
This was also a first-year class (though it was called Systeemanalyse (Systems Analysis) last year, and had a lot more irrelevant wank and no SQL), so it’s particularly funny.

Then there was Netwerken, which was last semester. I went to all the classes and the labs (and even handed in most of my lab reports), and the exam went great, and much of this stuff is things I really enjoy doing (this was also the class with the cryptography things), so I expected to get maybe 16/20, if not more. Turns out I got 11/20.
It’s more than enough to pass and it’s not like I’m shooting for a magna cum laude or anything, but it’s still absurdly and incomprehensibly low.

I didn’t pass my COBOL class. That’s not unexpected (or unintentional), I just thought it bore mentioning.

Interestingly, though, I also didn’t pass my Java class last semester. I got 6/20.
This semester, despite not putting in more effort or actually being any better at Java, I got 15/20, which is the top of my class.
They’re different teachers, obviously, and the one I had this semester was much better, both as a teacher and as a dude to have a conversation with, but it’s still pretty entertaining.

I don’t mind taking another exam to make up for it; it’s trivial to do, and before the exam last semester started he told us the make-up one in early September would include actually writing code on a computer before-hand as opposed to just writing it on paper using his brain-damaged wrapper classes he wrote around part of AWT and Swing because he doesn’t understand how they actually work1.
So I had a look at those questions, since they’ve been online since December, and honestly, they just remind me of why I hated that class. For example (translated from Dutch):

A person has a name, an address (street, number, city) and a phone number. Write a class Agenda that allows you to quickly find the address of a person given their name or phone number. There are thousands of people. In your solution you obviously won’t use arrays, Vectors, or ArrayLists.

Now, we obviously aren’t expected to write our own data structure (that would be too educational much like a real college advanced), and we also can’t use a database, so basically this exercise comes down to guessing which class from the Java standard library he has in mind and then writing ten lines of code using it.
Since this is Java and this guy embodies the clueless enterprise stereotype (IIRC the only languages he sort of knows are Java and C#, and he sucks at Java), there isn’t even a real way to guess what he considers to be a reasonable use of resources (specifically, memory) or time (is five seconds long? I’d say obviously yes, but you never know).

I’m guessing he’s expecting two TreeMaps with different Comparators, but there’s no way to be sure, and it sure as fuck isn’t something I (or anyone else) would consider to be a reasonable solution to this problem.

(To compare, the guy we had this semester gave us some general principles to use every week and let us make up our own problem entirely, on the condition that our solution was a good one for it. This one just makes up crap toy problems and ham-fistedly tries to force library classes and “design patterns” where they don’t belong. And naturally, he requires UML diagrams (syntactically correct, though AFAICT he uses his own private little dialect which isn’t documented anywhere) for everything.)

Tim Minchin interlude.



And now for something completely different.

Wooh vacation.
My parents are going to my grandfather’s sea-side apartment one last time before my uncle buys it to simplify the inheritance (estimated value 525,000 € for just that one apartment, which I’d guess is about twice as much as he originally intended to pay; he already got a ridiculously good deal on the house in Tienen, though), and I think they’re taking my sister with them, so I should have a week or two of peace and quiet (and pantslessness) at least.

My mom also wants to buy a dog before one of us goes out to buy a cat, which should be interesting. I voted for a cocker spaniel (English or American, either one; it’s interesting how much their differences resemble the differences between European and American badgers, if you squint and are drunk), my dad wants a labrador (Spike was half-labrador), and my mom wants a Cavalier King Charles spaniel. Even if it doesn’t end up being a cocker spaniel, I’ll still make an effort to have it named Haskell, though.
It’ll probably be another month before we get it either way. I’d promise pictures, but I keep promising pictures of things and then not delivering. I apologise.


1 There are a lot of legitimate criticisms of AWT and Swing, and I’ve yelled most of them at this semester’s teacher at one point or another, but “it’s too hard for students in their third semester of Java to understand” isn’t one of them.

Permalink 2 Comments

Aut Deus aut malus homo

C. S. Lewis1 is much maligned, and for good reasons, but his “lunatic, liar, or Lord” trilemma is one that still sees quite a lot print, also for good reasons.
On the topic of Jesus going around and forgiving random sins, he had this to say (I’ve added some newlines to improve legibility; the internet is not print after all):

Now, unless the speaker is God, this is really so preposterous as to be comic.
We can all understand how a man forgives offenses against himself. You tread on my toes and I forgive you, you steal my money and I forgive you.
But what should we make of a man, himself unrobbed and untrodden-on, who announced that he forgave you for treading on other men’s toes and stealing other men’s money?
Asinine fatuity is the kindest description we should give of his conduct.
Yet this is what Jesus did. He told people that their sins were forgiven, and never waited to consult all the other people whom their sins had undoubtedly injured. He unhesitatingly behaved as if he was the party chiefly concerned, the person chiefly offended in all offenses.
This makes sense only if he really was the God whose laws are broken and whose love is wounded in every sin. In the mouth of any speaker who is not God, these words would imply what I can only regard as a silliness and conceit unrivalled by any other character in history.

I disagree that it would make much sense even if he was that god, and the quiet assumption that Jesus is a “character in history” is perhaps a bit hasty, but the point is clear enough, and leads into the famous argument nicely:

I am trying here to prevent anyone saying the really foolish thing that people often say about Him: I’m ready to accept Jesus as a great moral teacher, but I don’t accept his claim to be God.
That is the one thing we must not say.
A man who was merely a man and said the sort of things Jesus said would not be a great moral teacher. He would either be a lunatic—on the level with the man who says he is a poached egg—or else he would be the Devil of Hell.
You must make your choice. Either this man was, and is, the Son of God, or else a madman or something worse.
You can shut him up for a fool, you can spit at him and kill him as a demon or you can fall at his feet and call him Lord and God, but let us not come with any patronising nonsense about his being a great human teacher.
He has not left that open to us. He did not intend to.

It would probably be too generous to believe that Lewis intended “Devil” and “demon” metaphorically, but he is essentially right, and this is a very important thing to keep in mind.
Jesus emphatically wasn’t a great moral teacher (see “Christ, what a role model” at the bottom of the “So what does the Bible tell us” box, though there are plenty more examples) most of the time, and this “moderate” Christianity is incoherent (which seems to be the one thing fundamentalists and the New Atheists agree on).
The point is by no means less potent if Jesus never existed, because it is about the character Jesus as it exists in people’s minds and in Christian doctrine.

Of course, Lewis’ conclusion is total crap:

Now it seems obvious to me that He was neither a lunatic nor a fiend: and consequently, however strange or terrifying or unlikely it may seem, I have to accept the view that He was and is God.

(No actual evidence, of course, just a completely unfounded “it feels right”.)

But you can hardly blame a man for being a credulous wanker. Apparently.


1 Fun fact: did you know “C. S.” stands for “Clive Staples”? When I found out about this I made a promise to myself I would refer to him as “Clive ‘Staples’ Lewis” from then on, but for the sake of clarity I didn’t here. Consider yourself warned for the future, though.

Permalink 2 Comments

CAPS LOCK IS CRUISE CONTROL FOR COBOL

It’s probably a bad idea to answer a COBOL exam entirely in C, but if a page of C can accomplish the same thing as four pages of COBOL, I’m not going to spend a June afternoon wearing out my pen and/or fingers.
I #defined a lot of things, though, so maybe he’ll be fooled by the abundance of upper case.

That was the last of my exams, so summer vacation has officially begun.

Permalink Comments

Alright, alright

Two slightly more useful programs, then. For given values of useful.

The first is a basic kopipe manager in C, the source code to which can be found here.
Should work under any real OS. If you’re going to compile it, make sure you change KOPIPE_FOLDER to something more appropriate.
Sample session follows:

cairnarvon@feynman:~$ kopipe
USAGE:
kopipe [name]
	Display kopipe
echo "[kopipe]" | kopipe -n [name]
	Create new kopipe
kopipe -d [name]
	Delete existing kopipe

Current kopipe:
kartoffelbrei  lisp-fig25      progsnake	  tanasinn
lisp-box       lisp-spacetoad  progsnake-classic
cairnarvon@feynman:~$ kopipe lisp-spacetoad
                       //`'''```,
             o        //LISP   `.,
       ,....OOo.   .c;.',,,.'``.,,.`
    .'      ____.,'.//
   / _____  \___/.'
  | / ||  \\---\|
  ||  ||   \\  ||
  co  co    co co
cairnarvon@feynman:~$

It only accepts input from stdin for new kopipe, with all the issues associated with that, so it isn’t ideal (and could probably be done more easily with bash aliases), but whatever.
It’s still nice to have, and it gave me an opportunity to use C.

The second basically mimics this thing. The guy who posted that never posted his source code, so I wrote it in Perl.
This one should work on Windows too.
Sample session:

cairnarvon@feynman:~$ progfind

USAGE: progfind [topic]

cairnarvon@feynman:~$ progfind Xarn

Title:		Xarn [Part 1]
URL:		http://dis.4chan.org/read/prog/1213290157
Posted:		Thu Jun 12 19:02:37 2008
Last Post:	Sun Jun 15 03:19:08 2008

Title:		Xarn
URL:		http://dis.4chan.org/read/prog/1205354504
Posted:		Wed Mar 12 21:41:44 2008
Last Post:	Fri Mar 14 13:46:50 2008

cairnarvon@feynman:~$

Simple but handy. It can be adapted to other Shiichan boards by replacing the URL it tries to get information from.
It can be slow because dis.4chan.org is slow as fuck at times, but it’s still faster than looking through the threads manually.

So. What have you written to make life less aggravating?

Permalink 3 Comments

For the benefit of mankind

/*
 * Copyright (c) 2008 Xarn
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to
 * deal in the Software without restriction, including without limitation the
 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
 * sell copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
 * IN THE SOFTWARE.
 */

#include <stdio.h>

int main (int argc, char** argv) {
    printf("'-._                  ___.....___\n"
           "    `.__           ,-'        ,-.`-,\n"
           "        `''-------'          ( p )  `._\n"
           "                              `-'      %c\n"
           "                                        \\\n"
           "                              .         \\\n"
           "                               \\---..,--'\n"
           "   ................._           --...--,\n"
           "                     `-.._         _.-'\n"
           "                          `'-----''\n",
           argc > 1 && strcmp(argv[1], "--classic") == 0 ? '\\' : '(');

    return 0;
}

Permalink Comments

Butthurt

Cunting chair

Literally. This chair is the most uncomfortable chair in the history of shitty Scandinavian furniture. It’s uncomfortable enough that I feel it merits a blog post.

I say Scandinavian rather than Swedish because it’s not actually from Ikea, but from some Norwegian company.
And I guess it’s not actually this chair but a chair very like it, only I couldn’t find a picture of this one, presumably because it’s fifteen or so years old. It’s made of wood rather than steel, and the seat is actually not curved to hold a butt, but rigid and full of hate.

It’s completely impossible to adjust the tilt of the seat or the leg rests, or the distance to the leg rests, and apparently their reference human was a three-legged midget.
The end result is that five minutes in this chair will make your back explode with discomfort and physically force your buttocks into your spine, and because the seat is tilted you can’t even just consign it to a corner of the room and stack junk on it, because it will slide off.

The company that made the chair still exists, but apparently doesn’t make them anymore. Even so, most of the products they do still make have at one point or another in their lifetime been recalled for health reasons, so they don’t appear to have mended their ways.
It’s actually more comfortable to just sit on the leg rests.

I should probably get rid of it, but it’s one of the things I inherited from my grandfather.

Anyway.
In completely unrelated news, I deleted Quhan’s blog because it was full of exploit. This makes it the third of our blogs to be compromised.
WordPress is absolute crap when it comes to security, but unless you’re Maia, it’s your own responsibility to keep your installs up to date, people. You have FTP accounts for a reason.

In further unrelated news, I’m never going to finish this Monopoly game. It’s due this Friday.

Permalink 3 Comments