The Hyperpessimist

The grandest failure.

Acknowledging the Details

I usually buy the Humble Bundles for the soundtracks. Most of them are very bland and boring but there are the occasional gems. Such as the Savant: Ascent soundtrack. As I liked the soundtrack,I thought I might as well give the game a go.

My first impression: whoa,this game is terrible. It is so limited, are they shitting me?

It seemed like one of the extremely cheapo games with hardly any depth. But somehow, I didn’t immediately uninstall it.

And here’s where the beauty begins: the game is designed in a surprisingly addictive and nice way. First, the rules: you are ‘Savant’ the titular character and you shoot at enemies which spawn around you. You have to stand on one of two spots and can switch between those either by rolling or jumping. You have three lives and die when you get hit by an enemy.

So far so easy. My initial impression was that it is extremely limited, but au contraire, these limits enable quite an interesing gameplay, where you have to react quickly but don’t have to care about accuracy too much. This enables the player, once he gets how the game works improve considerably. At first I used to die immediately, few days later I was finishing the whole game in a breeze.

But dying is discouraging, right? Well, usually yes. But even if you don’t finish the level without dying, the game features a little bit of RPG elements: you can power up your character using items found in the level and these powerups are persistent. The player has an incentive that even if he doesn’t manage to finish the level, he can power up and maybe then finish the level.

The game is extremely short, just three levels (well actually only two and a boss fight) but the presentation is quite polished. It uses music from Savent (the artist) pretty extensively and the enemies even dance in the beat of the music. I, as the player, started to dance to the beat of the music too, you got into a nice flow. The graphics are pretty nice, could be lifted from Castlevania: Symphony of the Night, which I do like. And you feel like a crazy badass, standing around and shooting hundreds of enemies in something quite similar to a bullet hell shooter.

There is not all gold. Some things are buggy, for example if you switch the game into full screen, the game does not scale but stays the same size, in the top left corner. When you die in the boss fight, you might die with zero points yet the sound for counting up numbers still rings, which is kinda insulting as you’re presented with a big fat 0.

Anyway, for a $2 game, this is absolutely stellar. Some people complain about the length (it is short), but seriously, how much can you expect?

Years in Review

Normally, I am a complainian extraordinaire, but I think at the end of the year, I should take a look back and see what was good lately and how I improved. And because events in 2012 and 2013 are intermingled, I’ll be checking both years.

So, what happened?

I am more in shape right now than I have ever been in my life. In January 2012 I’ve gotten a bike and by now I did roughly 6700km on it, give or take a few. I spent a lot of time on maintaining and improving it but that looks like a hobby that will stick. About the first sport that I haven’t been bored with pretty soon. So far, so good! In 2013 I managed to do two times 1000km per month, for 2014 I hope to do this a couple times more. The problem now is, that most interesting routes that can be done in an afternoon and/or day are gotten quite boring. With the increased usage of the bike also came maintenance. Sometimes I think I spent more hours fixing up the bike than riding it and by now I nearly completely dis- and reassembled the bike. Fun times.

Programming-wise I tried a lot of new languages. With my friends, I tackled the 7 languages in 7 weeks book. Also did some free software contributions. Could be more, sure, but oftentimes I contribute to stuff that I don’t particularly care about, since when it boils down I need like a shell, a terminal emulator and a browser and that’s all.

Any changes in personality? I am not sure. I think I am still exactly the same person that I was two years ago. Or five. Time did seem to stop.

(Gosh, that took long to write. I started on the 23rd of december and now look at it, 21st of February and I finished.)

Anatomy of a Palahniuk Book

Despite all trying, I only managed to write a post right now, roughtly every month. True to myself and this blog, the content is, again, all over the place and this time I want to talk about Chuck Palahniuk.

If you know me, you know I am a huge fan of his books. You might know a story about him, well, Fight Club, rings a bell? Yeah? If you haven’t read one of his books then you should because he has a pretty unique story telling style. The books are often quite disturbing and show the darkness of human psyche.

But his style can get quite repetitive, so if you want to create a book that mimics his style, here’s what you need:

  • A catch-phrase. Most of his books have a catch-phrase that gets repeated and varied throughout the book. You might remember “I am Jack’s …” in Fight Club, “See also:” in Choke, “Operative me” in Pygmy. This is funny at first, but after you get it in every book, it does seem kinda forced.

  • A fucked up male protagonist. If he’s not male, he’s a transgender. But all main cast has to be deranged in some way. Of course, only this makes the character interesting and you can kind of identify with him because he’s unique. Well, for some strange way of identification at least.

  • A plot trist. Maybe a story with a frame story where the actual story is a 300 page flashback. Maybe you learn the protagonist is now what you think he is. Maybe some other mindfuck.

  • Some shocking topic, something that might make you sick or throw up. Many of his stories are built up on some terrible trait of humanity that the main character explores, often beuing some kind of outcast. I might say, this is the most enjoyable part, how low can you steep. I think his stories often border on psychological horror, not by showing you violence but much more subtle way that consumes your mind.

This is a critique of some sorts, but in a kind of ambivalent way, since these are the reasons I like his books, and they are usually executed in a spectacular way. I’m having trouble deciding whether to read more of his books.

Dealing With Negativity

Oh, you can see deadlines rolling in by how I am starting to write more stuff in the blog. The less time you have, the more distracted you get, I guess.

Now anyway, here’s something I was thinking a lot lately. Negativity really gets me down. The usual advice is, if someone creates a lot of negativity, don’t be friends with him. Unfortunately, can’t unfriend myself. Now, sometimes I really get disappointed with myself which turns into a mix of anger and envy towards others, who are more successful, usually my friends.

Which sucks, since I may or may not have lost some of them because I had a long stretch of feeling down which translated in quite aggressive behaviour on my part. Fortunately, someone said to me “damn, you should really shift down a bit”. It took me some time to realize that my usually good-natured banter has taken up an complainian and disapproving tone. I haven’t noticed this, since I gradually slipped into it.

These days, I do try to be more approving of the actions of my friends and complain less about my own so-and-so horrible life. But it’s a slippery slope anyway and I am not sure what to do to prevent this from happening again (and again, and again). Hopefully, there will be someone to kick my ass again, if that happens again.

If you happen to be that person, please do kick my ass. Thanks in advance!

Embracing the Dork Look

So, I’ve been thinking lately since I got a new camera which I carry aroud strapped over my shoulders or in front of me: I totally look like a dork these days. Basically, like the silly tourists running around in Munich making photos, just full-time. But then, checking out my other hobby, cycling, then looking like an idiot is not exactly a new thing. Try wearing lycra and not looking completely ridiculous. Or a helmet and lobster gloves (the wind in October can be icy cold, you want proper gloves). And now combine this and you can kinda imagine how I look like.

Back in highschool everybody tried to be as “cool” as possible, so looking like that was out of the question. Not that it helped too much, since kids are pretty good at identifying and excluding nerds.

There days, caring about such things seems more and more ridiculous. I don’t have to spend time with people joking about my looks, being alone is often preferable. Getting odd looks from people? Whatever, plug in ear phones and turn up the music, let them laugh at you and feel better about themselves.

Overall, the amount of fucks I give about looking like a dork is rapidly approaching zero. I guess that’s a pretty good thing.

Picking a Camera

So, a friend of mine got a DSLR (a Canon 600D) so I was hard-pressed not to be out-geeked by her and was looking for cameras. Lo and behold, it took me the better part of three weeks to figure out what to do so I might just as well explain my priorities and choices.

At the start, I thought that I might as well buy a second-hand Canon 450D. Fortunately a friend of mine planned to sell one for cheap so I first borrowed it to figure out whether I like it. Three weeks after I can say: yes and no.

The 450D has a number of things that I like:

  • Light. Especially compared to newer models the 450D feels super light. Maybe a little bit flimsy even, but I dislike lugging heavy clumps of electronics with me if I can avoid it.

  • The price. This camera is from 2008 and available for really decent money.

  • The features: I mean, its got most essential DLSR functions. And it is not a total entry-level camera so it supports bracketing. The 12 Megapixel are still pretty decent for non-professional photos. And I’m no professional.

  • The handling: it just works, the UI is reasonable for the most part (some things are retarded though, mind you). Build quality doesn’t disappoint, Canon seems to have nailed it pretty much.

I am really happy that I was able to use the 450D for 3 weeks. Learned a lot both about photography, my requirements and the 450D itself. It seems to be a really great idea to just get a camera and test it for couple days. Trying it out in a brick and mortar shop does not even come close. But there are some things that I didn’t really like.

  • The screen is awful. The 600D screen blows it right out of the water and not only because it is articulated. The resoulution is so much higher which is to me a big advantage.

  • Getting sharp pictures is near impossible. I managed to figure out a stance where I stand like I expect an earthquake and press the camera into my face to stabilize it. It might be the kit lens which sports “Image Stabilization” but as far as I experienced it, IS is completely useless. Maybe a better lens does better.

  • Low maximum ISO. I do a fair bit of inside shooting and the automatic ISO mode maxes out at ISO 800, the manual at 1600. It is not even bad, just too low to make photos that aren’t crazy blurry in low-light.

  • The continuous shooting buffer is kinda small. I use continous shooting basically always. 4 full size RAW pictures was best it could do. Not that much of a problem, but since we’re complaining, I might as well.

So, while a good deal, I didn’t think it was for me. But what is? Compact point and shoots are kinda pointless, since the argument “always with you” doesn’t work out. For these cases I have my smartphone. So something larger. Choices there are DSLRs, Mirrorless and bridge cameras.

After some thinking, bridge cameras do seem to be the best choice for people who want to upgrade from a compact to something bigger. They won’t change the lens anyway and the superzoom lenses are a good deal better than the kit lenses (if you want to know my preference, Panasonic Lumix DMC-FZ200 with its f/2.8 Leica lens is my favorite by far. I was also positively surprised by the quality of the DMC-FX33 previously, Panasonic seems to be doing something right). But I was really thinking of changing lenses.

Mirrorless then? Forget about Canon and Nikon then, as they don’t seem to have any compelling cameras. Each has a new mount which requires new lenses. Oh well, that sucks. Might just as well go for Sony. Somehow, the mirrorless cameras look mostly like compacts which makes them balance weirdly and the lack of an optical viewfinder is kinda odd. Every time I tried live view, I despised it. But it might well be that mirrorless cameras are indeed the future. Let Canon do a couple more iterations of the EOS M, Sony figure out whether they want to continue with NEX or Alpha cameras. Not excluding I’ll switch in the future but I tend to be late to most trends, so might as well give it a few years.

That leaves me with DSLRs. I wanted to pick something common, so there will be decent toolking and support on the Internets. So, Pentax is, despite good reviews out. Also, the cameras look quite ugly, sorry to say. I wasn’t terribly happy with the Sony SLT cameras when I tried them in real life, so they go too. The easiest choice would be Canon by far. Can’t go wrong with Canon, right?

Well, not really, but still:

  • The 600D while pretty nice and in my 400€ price range is missing some nice features from the 650D like AF in movie mode. I thought about making movies, so that might be useful.
  • The 650D has a couple of useful improvements but is more like in the 600€ range
  • The 700D is more of the same and in exactly the same range. No idea why they created the 700D, since the differences are really minor.
  • The 1100D looks and feels very much like the absolute entry model where they leave out whatever they can to reduce the price and segment the market.

Also, the DxOMark scores of the three-digit Canon models (~60) have been a good deal worse than the equivalent Nikons (~80), so maybe Nikon?

  • D3100 and D3200 are entry-level cameras. Tried them, they don’t support bracketing, but them right back.
  • D5200 is a really nice camera, but still on the expensive side. Maybe with the announcement of the D5300 prices will drop, in which case this will be an excellent choice.
  • D7100 is overkill. Nice camera, but a league too high.

So, the D5100? I tried it in real life for a couple of minutes and it seemed nice. Especially the Nikkor lenses on Nikon cameras make quite a good impression, even the kit lens features an ultrasonic motor for autofocus which feels really, really nice. To cut things short, after reading the excellent DP Review I happened upon a great deal and got one. To avoid the “you won’t use anything but the kit lens anyway” I also got myself the AF-S 35mm f/1.8G prime as well.

Overall, the camera is okay. Frankly, I really am torn between the D5100 and the 600D. Let’s check:

  • The Vibration Reduction (VR, like Canon’s IS) seems to be working really, really good on the kit lens. You can see the image shifting a bit in the finder when VR kicks in, but the functionality itself is top notch. I think that’s one of the best features, I got a sharp photo indoors, shaking my hands. The prime doesn’t have VR, though.

  • The screen rocks. Just as good as the 600D

  • The strap is nice, I kinda prefer it to the Canon strap. Nitpicking, I know.

  • The SWM motors rock and the camera looks expensive.

  • The M/A autofocus mode of the prime is really nice. You can change the focus without having to turn off autofocus.

  • Image quality seems to be good. From what I saw it makes pretty acceptable low light photos by picking high ISOs. Which works decently. Haven’t taken that many pictures yet.

  • Nikon rotates everything the other way round, annoying if you switch between brands. Some things don’t even make sense. I suppose it is like this because Nikon always did it this way, before this pesky Canon came along 50 years ago, but it still sucks.

  • The scene modes are completely useless. Sports mode uses a shutter speed that is way too low. Party mode has some 1 second shutter delay. It seems to be doing the opposite of what makes sense.

  • The continous shooting buffer is nice and long and it does a decent amount of FPS. Unless you switch to a scene mode, which deavtivates continous shooting. You can re-enable it, but by the time you realize it’s off again it’s too late and you missed a good shot. I hate the Nikon scene modes with a passion.

  • Ergonomics are worse. The 600D had buttons for most used things, whereas you have to navigate the menu in the Nikon camera. Also, the shape of both lenses and camera makes more sense in Canonland.

  • Build quality is so-so. I had to stick tape on the SD card slot cap to stop it from making noises. Ghetty repair job on brand new camera does not make me very happy, but at least it worked out.

  • No dedicated ISO button and the Auto-ISO can’t be easily overridden even if you map the ISO button to Fn (as every D5100 owner ever does!). This bugs me a lot.

  • The caps for the lenses and camera rotate only slightly so they come off easily. Quite sloppy.

So this is it for today! I hope my random odd observations helped you in some way, and expect to see more complaining about photography topics :-).

Clojure and Hygienic Macros

A short intro into macros

The last couple of days I was playing with macros in Clojure and figured out that nobody seems to have written a proper introduction on how they work. Well, I’m not gonna do it properly either, but maybe it’ll help you anyway.

If you’ve never been using macros, that’s completely fine, since after years of using macros, I haven’t seen this many situation where I’d want to use one. Rule of thumb: if you can do it in a different way (supply a function as argument), do it this way.

Macros can be used where functions fail. Think of them as functions which don’t evaluate their arguments but they just get the argument as data. In the case of Clojure, a list of course.

Let’s start with a complete nonsense, yet illustrative macro:

1
2
3
(defmacro m [x] `(list ~x))`)
(m 42)
;;=> (42)

So we defined a macro m which takes an argument, named x and then what? Well, a macro is like a function, it returns it’s body. It’s body is a list which consists of a call to list and it’s argument x. So, this macro expands to (list x) and could of course be expressed as a function (I mentioned that this example is nonsensical, did I?). The location (m 42) is therefore essentially replaced by (list 42). What happens then? The macro is done. After that, (list 42) evaluates to (42). Here’s your result.

Now, let’s try to write a macro that makes more sense. How about, writing our own simple or operator?

1
2
3
4
5
6
7
(defn trivial-or [a b]
  (if a a b))

(trivial-or false true)
;;=> true
(trivial-or false false)
;;=> false

This looks correct enough, but what when we have side-effects? The way or is usually implemented, if the first argument is truthy, the check for the second is skipped. How about checking it?

1
2
3
4
5
6
7
(defn my-test []
  (println "Hello")
  false)

(trivial-or true (my-test))
;;=> Hello
;;=> true

Well, this didn’t work, it called my-test without the need to. We don’t want to evaluate our arguments, so what we need is a macro. Let’s think what kind of code we plan to generate first:

1
2
(let [evaluated-first-arg first-arg]
  (if evaluated-first-arg evaluated-first-arg second-arg))

Why the let? Cause we only want to evaluate first-arg once and if we used first-arg more than once (my-test) would be called multiple times. So we just cache the result after the first time. Then we just generate an if and insert these values.

Step by step, if we do

1
2
3
4
(trivial-or true (my-test))
; should turn into
(let [evaluated-first-arg true]
  (if evaluated-first-arg evaluated-first-arg (my-test))

Let’s write the macro for this:

1
2
3
4
5
6
7
8
9
(defmacro my-or [first-arg second-arg]
  `(let [evaluated-first-arg# first-arg]
    (if evaluated-first-arg# evaluated-first-arg# second-arg)))

(my-or true (my-test))
;;=> true
(macroexpand-1 '(my-or true (my-test)))
;;=> (clojure.core/let [evaluated-first-arg__413__auto__ user/first-arg]
  (if evaluated-first-arg__413__auto__ evaluated-first-arg__413__auto__ user/second-arg))

So, it seems to be working. If we call macroexpand-1 (expand the outermost macro, which is our my-or macro) we see that this code was generated and evaluated.

Now you might be wondering about a few things, most notably the backticks, the tilde and the hash sign, spread through the code, all random-like. Also, the super weird underscores in the variable names.

As you saw, macros basically replace the macro call with something that was generated by the macro. The data generated by the macro is a list. Now, a macro that returns always the same data is boring, so we’d like to enter the data from the arguments. We could modify the data by ourselves, but we can also use a template mechanism that is built into Clojure. The backtick is called “syntax-quote” (other Lisps like Scheme call this “quasi-quote”), which is like a normal quote but allows to enter variables:

1
2
3
4
(let [a 42] `(+ 1 ~a))
;;=> (clojure.core/+ 1 42)
(eval (let [a 42] `(+ 1 a)))
;;=> 43

What we saw is that the + operator was fully qualified and the a was replaced by it’s value, because of the ~, which is called “unquote”.

For the rest of the question, this is where it get’ interesting.

Clojure and macro hygiene

Go back to our stupid macro from the beginning:

1
2
3
(defmacro m [x] `(list ~x))`)
(m 42)
;;=> (42)

We defined a macro that uses list. But as macros are expansions, what will happen when we use a macro within a code region that is redefining list, for whatever reason?

1
2
3
4
5
6
7
(let [list '(1 2 3)]
  (m 42))

; would it expand to this?
(let [list '(1 2 3)]
  (list 42))
;;=> ClassCastException clojure.lang.PersistentList cannot be cast to clojure.lang.IFn

Now that would suck, right? This is the problem that Lisp macros usually have, they capture the scope of the point where they were called (think dynamic scoping), not where they were defined (think lexical scoping). Various Lisps have solved this problem in different ways, you can find a lot about this on the internet. Clojure has a somewhat unique solution: syntax-quote does not only quote things, it also adds the namespace to things:

1
2
`(list 1 2 3)
;;=> (clojure.core/list 1 2 3)

So, the call above expands to this:

1
2
3
4
5
6
(let [list '(1 2 3)]
  (m 42))

(let [list '(1 2 3)]
  (clojure.core/list 42))
;;=> 42

And this works. So, every time you have a symbol in your syntax-quote, it get’s its namespace added. This also happens for identifiers, so

1
2
3
4
5
(defn m2-result 42)
(defmacro m2 [] `(list m2-result))

(macroexpand-1 '(m2))
;;=> (clojure.core/list user/m2-result)

Notice, how the user/m2-result variable was captured.

Ok, now on to that # sign, what’s the deal with this? Again, consider that a macro expands in the place where it is called, thus it inherits all bindings of its parent forms.

1
2
3
4
5
6
7
8
9
10
(let [evaluated-first-arg 42]
  (my-or false evaluated-first-arg))
;; would expect my-or to return 42, since first-arg is false

;; now if it expanded without the '#'
(let [evaluated-first-arg 42]
  (let [evaluated-first-arg false]
    (if evaluated-first-arg evaluated-first-arg evaluated-first-arg)))
;;=> false
;; oh, not at all what we wanted.

The result would be wrong, since the inner use of evaluated-first-arg overwrites the outer evaluated-first-arg so from 42 we go to false. This is called accidental variable capture. Again, other Lisps have encountered this exact problem a long time ago, and there are different solution. One easy way, might be to use a binding name in let that is difficult to guess. Something like pnsndltn or just 40 fs. But these are first some awful variable names and second still not guaranteed to be unique. For this, Lisps have facilities to generate unique variable names, sometimes called gensym, which is exactly what the # does. Thus if you recall the earlier macro expansion:

1
2
3
(macroexpand-1 '(my-or true (my-test)))
;;=> (clojure.core/let [evaluated-first-arg__413__auto__ user/first-arg]
  (if evaluated-first-arg__413__auto__ evaluated-first-arg__413__auto__ user/second-arg))

We see that it generated a unique name that is guaranteed not to clash. Win.

Conclusion

And this concludes our short excurs into Clojure macros. In short:

  • Macros in Clojure just expand to some list structure that is evaluated
  • Clojure macros are hygienic (IMHO)
  • They do so by prefacing captured bindings with namespaces
  • New bindings can be generated via a gensym-like mechanism

Audio-debugging a Bicycle

Lately I had a number of interesting observations. When your bike is properly maintained, it creates a specific sound pattern when you ride it. Most of the time you can hear your tires rolling off the tarmac (depending on the tire profile, a different type of sound) and you can also hear the chain going through your derailers [sic!]. In my case I can also hear my spokes in the wind because they are flat and cut the air. That’s usually all you should be hearing and for the most part it stays the same. Often, you can’t even hear the chain, just when you pass a wall or cars then the sound reflects back to you.

now due to this unchanging nature, your brain starts to get that pattern and you are able to figure out irregularities.

One of the irregularities for me was that the chain seemed to change the sound pattern. It was still constant, but it had a different pitch. This is interesting, because it means that it probably affects the whole chain. What might be the cause of it? Applying Occam’s Razor you come to the conclusion that the simplest possibility might be the chain needed lubrication. So I put on some oil and lo and behold, the sound pattern returned to the well known “correct” humming.

A different example of this was when my bike started to make an irregular rasping noises. Like thread against metal. The sound seemed to come from the back, further back than the rear dereiler. The prime candidate was the wheel, which extends a good deal behind the dereiler. The only thread I could think ok was the threading on the valve. So after screwing on a counter nut on the valve (which I did not de before since it was not a problem), the noise went away.

So you see, listening to your bike is a great method of debugging.

You Can (Not) Escape

Here’s a post in the spirit of the Evangelion movies like 1.0: You Are (Not) Alone, 2.0: You Can (Not) Advance and 3.0: You Can (Not) Redo. Let’s talk about escape.

In all Japan-is-so-happy and oh-so-shiny, one of the reasons people go to Japan is because they hope it will allow them escape their reality. The shitty life they are unsatisified with back in their home country, the people they are annoyed of and also themselves, as a means of clean start. I’ve met a number of people (really great people at that), who were in Japan trying to escape their own lifes.

Lo and behold, it doesn’t work.

You won’t magically turn into a better person, just because you are some 6000 miles from your original home. When (and if) you return, you will be the same miserable old person you were. And of course to assume otherwise is foolish, how could being on another continent change you? If you want to change, you have to do this yourself. But for this, you don’t need to go to Japan, you can just as well move to the next town to start anew.

I don’t think I could convince you to spare the effort to go to Japan, and if you want to go then by all means, do so. But at least I can say “told you so” now. You’re welcome.

Sorry, no happy ending this time.

Thoughts on Tutoring

So, as this years sommer term in Germany comes to a close, I thought I might as well put down my thoughts on it. I was doing tutoring for the first time and it will most likely be the last, so here’s my thoughts. If you are a tutor, maybe you can profit. If you are in charge of creating the exercises, I’d love if you’d check my points and maybe improve.

So, here goes:

Tutoring at a german university

To let you know how it looks like: every week for about 13 weeks I get an exercise sheet with exercises to do in a group. I have two groups 90 minutes a week each. The exercise sheets includes homework which I have to check and if the homework is obligatory, grade. At the end, it is the tutors task to grade exams.

Preparation

First part of each sheet was to prepare. Many tutors do this in different ways. I used to meet with a friend and go through all exercises, solve them (with the example solution mostly) and figure out the best way to explain it to our pupils. This usually resulted in lots of whiteboards filled with equations and simplifications. Sometimes (oh well, in the case of the proofs most of the time) the solution was so brief and skipped over so many points that it was hard to figure out what is being done at all. While going through the solutions, we encountered a fair share of errors which are sometimes embarrassing since the exercises are often copied from previous years.

Mind you, this is after I passed the lecture, so I have no idea how most students are expected to understand that themselves. That’s why it was very important to me to explain each step in much detail, because no matter how trivial the topic, some percentage of your students won’t understand and will be to afraid to ask.

This usually took up late morning to early afternoon on Monday.

The lecture

This was usually my favorite part. As I got shit times (last slot on Tuesday and last slot on Friday), attendance was usually somewhere between 1 person (yes, seriously) and, hmm, maybe 15, depending on a number of factors (more on that below, quite an interesting topic), but that also meant that you get familiar with most faces and it has a somewhat relaxed atmosphere. Seeing the same people every week is kinda enjoyable since people who can’t stand you weed out pretty soon (yes, these exist and I have frankly no problem about people who choose to go to another group) so you’re left with a group that you can usually work well with. I filled in for another group and boy was this a mess: many more people, talking all the time.

I try to be nice, but if you disrupt my lecture, I will take you to the whiteboard to do stuff and keep talkers busy. I try not to humiliate people, just to make them do productive things.

Talking about the whiteboard, with a smaller group that’s something I did like to do: let people figure things out in the front with helpful hints from both me and the other students (I really tried to avoid to make people feel embarassed about not knowing things, I think it worked pretty well with my own groups). Seeing people struggle with the problem on the whiteboard also gave you insights about that they didn’t understand. I don’t mind explaining things multiple times, because usually with every “dumb” question, there is a lot of people who have the same problem and are afraid of asking.

Actually, the best lectures were those driven by questions, because it felt relevant and I could be sure people were following me and awake instead of dozing off to Facebook. As such I had the luck to have a couple of really smart students who had smart questions and could basically answer every question I threw at the audience. This makes for a more engaging lecture, without me having to tell them every solution. Also: my Friday lectures were constantly of better quality than the Tuesday lectures. On Tuesday I saw the real problems people were having, the questions (which I couldn’t always answer) and the time constraints for each exercise, so the Friday group was profiting from that experience. If I were do to it afain, I’d probably do twice as many groups, since the preparation overhead diminishes and you get to deliver a better lecture more often.

At first I had also severe issues of stage-fright, but once you socialize with the students you figure out you are all on the same side: they want to learn something, and you want to teach them (well, in my case, if you’re only in for the money then duh). I liked to throw in the occasional joke or funny remark and while my humor is not everybody’s thing, I think it contributed to the casual atmosphere.

As you can imagine, lecturing was by far my favorite part of it. If it wasn’t the remaining bullshit, I’d do more of it.

Oh, about the numbers. As my slots were late, fewer people visited. I also expected the Friday group to be deserted, for people to have something better to do on Firday afternoon but it turned out to be otherwise. On your first week, it’s usually all the people attending, to see how the exercises are, to see how you are and decide whether to come back or go to some other tutor or don’t attend the tutoring sessions at all. That’s totally okay, if you don’t like a tutor for whatever reason, by all means change. After that, a group of people stays with you more or less every week. Some people join, some people drop by ocassionally.

The biggest spikes I had when half of the week was off, so students had to pick other days. One time my Friday session was pretty crowded and I have to say I was proud that some of them stayed in my group. Also, in the last week before the exams, the guilt leads people to come to more sessions and ask questions about things they did not understand.

The homework

I did not get many homework submissions, because the homework was not mandatory. So I only got homework by people who were good anyway. Useful for me, since figuring out that their solution was as good as the example solution or sometimes even better didn’t cause much work on my part. I think homework should be optional, but a grading bonus if the homework is good would be a nice idea to encourage more students to do more.

Though, I am quite happy, because I’ve put in quite some hours in preparation that noone pays for, so having a bit relief from homework is just fair.

The exam

We had to supervise the exam which was 2.5 hours, in multiple lecture halls at the same time, coordinated via IRC. For the most part everything went well and I saw how exams are done behind the scenes. At the same time, it stroke me completely mad to decide someone’s skills by making them fill some piece of paper out. It is crazy. I don’t think I want to go back to having to write exams ever again. Unfortunately, I’ll have to.

Supervision-wise, nothing interesting happened, we were basically bored out of our minds that saturday.

Grading the exams is still out, we (the tutors) will start grading it tomorrow. Yay, couple of days of terrible, awful work.

Feedback

I suck up praise like a sponge. I was proud to see people come regularly to my sessions, I was happy to attract more people. Also, I really loved when someone said he liked my sessions. I wasn’t the best tutor by far this year (my friend did so much of a better job, she even got thank-you mails afterwards) though I hope I wasn’t the worst. At least I was doing the lecture in a way that I had hoped to attend as a student. As such I am quite satisfied how it turned out in general.