Sebastian Morr's blog https://morr.cc/favicon.ico https://morr.cc/ 2017-11-16T22:39:00+01:00 Ich, Ersatzteillager stammzell-spende 2017-11-16T22:39:00+01:00 Sebastian Morr sebastian@morr.cc Ein Vortrag über meine Erfahrungen bei meiner Stammzellspende vor drei Jahren.

Folien:

Ich, Ersatzteillager

]]>
$HOME, sweet $HOME home-sweet-home 2017-11-13T15:02:00+01:00 Sebastian Morr sebastian@morr.cc I’d like to describe how I organize my home directory, because I have tried a few different things in the past, and found an approach which works for me exceptionally well. It has a relatively flat hierarchy, doesn’t require much categorization, and makes it unambiguously clear where files go.

Motivation

For many years, I’ve kept my files in the following way: On the top level, I had directories which specified the file type of its contents, like videos, text, code, svg or templates. This is the default structure suggested by operating systems like Windows and macOS, which even create folders like Documents, Music or Pictures when creating new user accounts.

I was unhappy with this structure for a number of reasons. For starters, I couldn’t tell the status of my files. I had no overview of what I was working on, and which projects were finished. And I couldn’t tell which projects were decades old, and which were really recent. Also, there was no separation between random files I found on the Internet, and my own work.

Relatively fast, I settled on “project directories”, that is, I kept each project in its own directory. This was partly because I like to use Git to version control software and text, but also because it seemed to give better modularity and isolation - it made it unambigiously clear which files belonged together, and which project they belonged to. Project directories are always moved as a whole. Even small “projects”, like a letter or a single drawing, are put into their own project directories.

High-level structure

I have five base directories, which have different purposes, and I’ll go over each of them in detail in the following sections. To give you an overview, here is how files can be moved between them:

And here’s the structure of their contents:

  • work (projects I am working on right now)
    • project1
    • project2
  • permanent (projects that are always active)
    • wiki
    • homepage
    • mail
  • archive (completed and inactive projects get moved here)
    • 2017
      • code
        • project1
        • project2
      • art
      • texts
      • uni
      • photos
    • 2016 (same structure as above)
  • library
    • music
    • books
    • papers
  • tmp (temporary files)

tmp

This is where most files start their life. Downloads go here, and if it’s worth keeping them, they get moved to library later. Sometimes, I also start experimental projects here, before they get moved to work. The idea is that this folder can be wiped regularly, without losing anything of value.

If this seems to simplistic to you, Leah has a much more advanced setup for managing her “mess”.

work

Each currently active project is a subdirectory of work.

I used to call this directory projects, but changed the name later so that it doesn’t start with the same letter as permanent, to make tab completion faster. :D

When I’m bored, I simply look around in work, choose one of the projects inside, and start working on that. When I see a project that I haven’t worked on for a few days of weeks, or when a project is finished, I move it into archive.

permanent

This directory contains projects that are always active. Currently, these are the following:

archive

Completed or inactive projects get moved here. This is the most structured directory in the system; its hierarchy has two layers:

On the top level, everything is ordered by year of last modification. This makes it easy to tell what’s really old and what’s recent. This also allows me to move older years to external drives, but until now, this hasn’t been necessary.

And inside each of these year directories, I sort the projects by type, like code, art, texts or photos.

library

This directory has a strict rule: It must not contain anything I created. It’s a loose collection of files I like to have around for entertainment or information purposes. This directory is structured like default home directories: It has subfolders, classifying files by their type. Examples: books, music, papers, wallpapers, pics, sounds.

Summary

Here’s a one-table overview of my system:

name structure created by status
tmp (chaotic) everyone temporary
work project-name/ me active
permanent project-name/ me permanent
archive year/type/project-name/ me done or inactive
library type/(subtype/) others reference

To find old projects, I have a script called archive, which lists project directories with matching names:

find ~/archive -maxdepth 4 -type d -iname "*$1*"

Future

I’m pretty happy with this system, and I’ve been using it for about 5 years now. One thing I’ve considered changing is to remove the year-type classification inside the archive directory. Having a flat structure would make it even easier to retrieve old projects. The downside is that photo projects can no longer clearly be differentiated, and that there could be name collisions – what is now archive/2016/photos/japan would need to become archive/japan-photos-2016 or something. For all other projects, it would probably work better.

]]>
Watching Movies Backwards watching-movies-backwards 2017-10-30T15:47:00+01:00 Sebastian Morr sebastian@morr.cc Ever wondered what a movie would look like when played backwards?

  • Titanic: A boat comes out of the ocean to save a bunch of drowning people.
  • Lord of the Rings: Two hobbits steal a ring from Mordor and emigrate to The Shire, while some of their friends travel around reviving orcs.
  • Star Wars: A moon-sized spaceship suddenly appears in space, and Luke extracts a bomb from it, enabling it to constructs new planets.
  • Saw: An old man kindly gives people new organs and replaces their missing body parts.

I wanted to try this. Well, actually playing movies backwards would mangle the audio and look ridiculous, but there’s another way: Watching movies Memento-style!

The idea

The movie Memento revolves around a man who can’t make new long-term memories, so he only remembers what happened in the last five minutes. He’s constantly taking notes and pictures, and even gets himself tattooed, to remind himself of what’s important.

The filmmakers use a clever narrative technique to transfer his experience to the viewer: The individual scenes of the story aren’t shown chronologically, but in reverse order: The viewer gets to see the last five minutes of the story first, then the five before that, and so on. This means that, at any point in the movie, the viewer also has no idea what happened before, making it easy to put themselves in the protagonist’s position.

These backwards-running scenes are additionally interleaved with shorter, forward-running ones taking place at the story’s very beginning. They introduce some of the characters in a spread-out fashion, and can easily be differentiated, because they are shown in black-and-white.

Here’s a timeline of the whole movie, displaying the “screen time axis” horizontally and the “plot time axis” vertically:

Timeline of Memento

I’m quite fond of Memento, and one day, I wondered what would happen if you applied this narrative technique to other movies. I tried it. Here’s what happened.

Experiences

The first movie I watched “Memento-style” was Transcendence. I knew that it didn’t have very good ratings, and I thought it could be more interesting to watch it backwards. Also, I was on an eight-hour bus drive through Canada, and had nothing else to do. I just did it manually, skipping back by ten minutes whenever I encountered something I had already seen: Five minutes for block I had just seen, five minutes to go to the beginning of the block before that.

Watching Transcendence backwards turned out to be a pretty fun experience, because of its climactic story arc: It ends with an AI taking over the world, and the rest of the movie explains how it became more and more technologically advanced, and before that, how and why the original person uploaded his mind into a machine. For most of the movie, the relations to some of the characters weren’t really clear to me, and became apparent only when they were introduced at the beginning. But overall I had a great time, and learned that watching movies in this fashion makes an engaging, fun experience.

And recently, I could convince some friends to watch a movie backwards together. We chose Cypher – two of us already knew the plot, two of us didn’t. The movie ends with a pretty big twist, so for the rest of the film, we already knew what would happen, and could laugh at the ignorance of the characters. But still, we had quite a few “Ah, that’s where he got that item!” and “Oh, so that’s why he did all that!” moments. I’m not sure whether it was more fun for those who already knew the movie, or for us who had to figure it out. ;-)

How to watch movies Memento-style

My initial idea was using FFmpeg to actually cut a movie file into pieces and reassemble them, but that approach turned out to be slow, tiresome, and inflexible. So, at the moment, there are two things you can do:

First, as explained, you can just open the movie in your favorite video player, skip the the beginning of the closing credits, and then jump back five minutes. Each time you reach a part of the movie you’ve already seen, jump back ten minutes. Repeat until you’ve seen all of the movie. (In VLC, for example, you can make this easier by using the keyboard shortcut Ctrl + Alt + Left, which jumps 5 minutes backwards!)

And second, you can apply some automation. My favorite movie player is mpv, which is easily scriptable with Lua, so I wrote this script which does all the work for you. You just put it in ~/.mpv/scripts/ (on Unixoids) or in %APPDATA%\mpv\scripts\ (on Windows), open your movie, and press M to turn on “Memento mode”. Playback will skip to the beginning of the last 5-minute block automatically, and it will then play all of these blocks, in backward order. I found that it’s worthwhile to have an overlap of about 10 seconds between the blocks, so you can better recognize where the transitions are. You can change the length of the blocks and their overlap by changing the value of the step and overlap variables.

Closing thoughts

Watching movies backwards seems like a good way to make boring or bad movies more interesting, to challenge yourself, and to have a fun time.

It might be interesting to try playing a movie really backwards, after all. This way, people would also actually act backwards, which might add some humoristic value. To understand what characters are saying, one could either simply add subtitles, or actually cut out the respective parts of the audio track and play them forwards. One could use the timing of the subtitles to find these pieces containing speech. In any case, doing this would require re-encoding the movie file, because video formats are specifically designed to be played forwards.

One could experiment with different block lengths. Five minutes seemed to work pretty well – it’s long enough so that you don’t get too many jumps, and it’s short enough so that the story is still perceived as “backwards”. The average scene lengths in modern movies seems to be around 2-3 minutes, so one could also try that.

Finally, as I explained above, Memento’s structure is somewhat more complicated because of the additional forwards-running black-and-white scenes. It seems worthwhile to add these in, so that you get to see the introduction of the world, of the characters and their relations at an earlier point of the movie.

Here are some more movies which could be interesting when watched mementoized. If you’d like to try it, it would probably be best to pick one you know absolutely nothing about: Mrs. Doubtfire, Duplicity, The Fountain, Duel, Alien. Enjoy!

]]>
Fairy Dust fairy-dust 2017-01-02T01:10:00+02:00 Sebastian Morr sebastian@morr.cc Fairy Dust

Hackerspaces: the final frontier. These are the voyages of the rocket Fairy Dust. Its one-year mission: to explore strange new technology, to seek out new life forms and new convention centers, to boldly go where no congress has gone before.

The visual style of this animation is a reference to Nyan Cat, but the subject is one of the Chaos Computer Club’s logos, the rocket Fairy Dust.

In case you’d like to create your own Nyan Cat-style animation, you can use my Aseprite file as a basis.

I posted this animation on twitter, and when I suggested that someone could create a soundtrack for the animation, an amazing piece of Internet collaboration happened: My friend Winnie extracted samples from Peter Marquardt’s video Electromagnetic Sounds of a Chaos Communication Congress and put together a music loop. He called the result Fairy Dub:

He also made a improved version 2.0, Fairy Dubst:

Sticker

In late 2017, I made a sticker version, with slightly modified colors and a different aspect ratio. It is designed to be printed at size 3.5 x 10.5 cm, and already includes 1 mm bleed on all sides. If you want to modify it, here’s the Aseprite source file.

Sticker version

]]>
gitlab-patcher Logo gitlab-patcher-logo 2017-10-11T00:00:00+00:00 Sebastian Morr sebastian@morr.cc A logo for gitlab-patcher, a command line tool for managing complex sets of software patches. It’s a Tanuki! With band-aids! <3 It’s based heavily on the original GitLab logo created by Ty Wilkins.

A Tanuki with band-aids

It was selected by the GitLab Infrastructure team from my three suggestions:

Three Tanuki logo variants

]]>
Dare to Ludum Dare dare-to-ludum-dare 2017-10-08T12:00:00+02:00 Sebastian Morr sebastian@morr.cc At Hackover 2017, I gave a talk about my experiences with Game Jams, especially with Ludum Dare:

Dare to Ludum Dare

Here’s a (German) recording of the talk, given at my home hackerspace, Stratum 0:

Games:

]]>
CSS Art Workshop css-art-workshop 2017-10-07T13:00:00+02:00 Sebastian Morr sebastian@morr.cc A workshop I gave at Hackover 2017 about making minimalistic CSS Art. Participants learned how to make complex pictures from a single, empty <div>.

Here are the interactive slides – you probably want to open them in fullscreen. Note that the “solutions” to the various topics are subslides, which you can reach with the down key. Press Escape to see an overview.

And here are two codepens I provided as a starting framework:

]]>
McEscher mc-escher 2017-10-02T22:39:00+02:00 Sebastian Morr sebastian@morr.cc An impossible burger

Would you like some Möbius bacon on that?

]]>
Fix My Avatar fix-my-avatar 2017-09-28T00:00:00+00:00 Sebastian Morr sebastian@morr.cc In June 2017, Twitter decided to change the format of its users’ avatars from a square to a circle. This led to many avatars which contained text or rectangular logos being cut-off.

Because I’m annoyed by such things, I wrote a Twitter bot which can fix these problems: @fixmyavatar. It analyzes the avatar’s background color, and then scales down the motive until it fits into a circle, plus some small padding.

To use it, just write something nice to the account, like this:

@fixmyaccount Hi, please fix my avatar!

It will reply with a fixed avatar, which you can then save and re-upload to your profile.

To help fixing other accounts, send their names to the bot, like this:

@fixmyaccount Please fix the avatar of @account_name_here

As the Twitter API limits the number of tweets per hour to 100, you might need a little patience! :)

]]>
Shenzhen Portal Logo shenzhen-portal-logo 2017-09-07T00:00:00+00:00 Sebastian Morr sebastian@morr.cc A logo for Stratum 0’s storage system for electronic components, the Shenzhen Portal.

A chinese postman, delivering a giant LED, running through a dimensional Portal

]]>
Elymas Logo elymas-logo 2017-09-07T00:00:00+00:00 Sebastian Morr sebastian@morr.cc A logo for Drahflow’s stack-based programming language Elymas, which is unholy and full of magic.

A dark wizard hand hovering over a globe filled with brackets

]]>
MRMCD17 CTF: "Sanity Check" sanity-check 2017-09-03T20:03:00+02:00 Sebastian Morr sebastian@morr.cc At MRMCD17, Bine, Maxi and I participated in our first Capture The Flag event ever. I wanted to do a quick writeup of how we solved the Sanity Check challenge from the “Misc” category.

The description of this challenge read as follows:

Participants were supposed to enter a flag in the text box at the bottom to solve the challenge. Note that it has a 5-star difficulty rating, but we were determined to solve it!

Thus began our descent into madness.

Thanks to the hint text, we now knew the general format of a flag, but how were we supposed to get the specific one required for this challenge? We were really surprised that, unlike other challenges, this one didn’t link to any file or webpage. There was no obvious attack vector, or any other apparent source of helpful information.

First thing we did was to look at the source code of the page, but didn’t find anything hidden in there. We attemted to take the description text literally and entered mrmcd{text}, but to no avail. Maybe there was some kind of hidden message in the hint text itself? The first letters of all words? Tihafllsialltotitbtc. The characters in the first column? TmsMb. Every fifth letter? Tiallomaoiihsbecbe. Nothing seemed to make any sense, we tried these as keys nevertheless. Nope. Scytale cipher? Caesar box code? ROT13? Nopenopenope.

The strings inside the example flags caught our attention, and we spent a day or so to do anything useful with them. To us, they looked like abbreviated hashes, so we rented some computation time from Amazon’s AWS, and set up a hash cracker using rainbow tables. To our disappointment, after letting it run overnight it didn’t come up with anything useful. We interpreted the strings as x86 assembly instructions, as ASCII, as IPv6 addresses, and as bit strings forming a QR code when arranged correctly. Nothing.

Maybe the title Sanity Check was supposed to be a hint? Were we actually required to prove our mental health to the CTF organizers? Google Maps listed at least different six psychotherapists nearby – but which one should we go to? Was this actually supposed to be an on-site challenge? We tried calling them, but none of them understood what we were asking about. Two of the psychotherapists pointed out that the Central Tegmental Field (short: “CTF”) is a specific area of the human brainstem, but all our attempts to build a flag out of that information was in vain. When we called the last number, insisting that one of them had to an accomplice of the organizers, and were actually offered an appointment for the next afternoon, we knew we were on the wrong track.

We sneaked in the CTF operation room and attempted some social engineering. We started by thanking the team for putting together all those fun challenges (we had solved about a dozen others of them at this point). Next, we causally mentioned that we had noticed some other teams having problems with the Sanity Check challenge, and offered to discuss how to improve this type of challenge next time. Instead of answering, they all laughed at us, and we didn’t have a choice but to laugh as well. We tried again, pointing out they had made a typo in the string inside the flag. Yeah, the second word was spelled wrong, what was it again…? But they seemed very determined not to let anything slip. We left, trying very hard to conceal our disappointment.

So… to be honest, I started this writeup under a false pretense. I promised to describe how we solved this challenge, but to this day, we haven’t found a way to do it. If someone else (like one of the top three teams, entropia, alech, or cypp) would like to do a proper writeup of how they found the flag, we would be extremely interested to read it! But, judging from how difficult it must be to derive the flag text, we assume none of them will have the time and energy to describe all the required tools, and the elaborate process required to crack all stages of this devilish challenge. Congrats to all teams who beat it. This one was definitely above our heads.

]]>
Richterfenster richterfenster 2017-08-20T00:00:00+00:00 Sebastian Morr sebastian@morr.cc Entry in the pixel art compo of Evoke 2017. While the original window in the Cologne Cathedral has 72 colors, this one was only allowed to use a given 8-color palette.

]]>
Ten Little Letters ten-little-letters 2017-07-29T00:00:00+00:00 Sebastian Morr sebastian@morr.cc This game was a very small-scope entry for Ludum Dare 39, created during a sick day in Montreál. In contrast to my past participations, this was a solo entry, so I chose the “hard” ruleset, where you have to create the whole game from scratch, including sounds and music.

In the comments, the game was praised for its “original concept”, and the “clean, simple execution”. Many found it quite hard (including myself), but see for yourself! :)

You can download the game from the Ludum Dare website!

Title screen

In-game screens

Development

The theme for Ludum Dare 39 was “Running out of Power”. I spent a few hours drafting a game in the style of Japanese number games, where you would need to connect potato batteries to lamps on a grid, but I didn’t find a combination of gameplay elements which would make this really challenging. Another concept had the title You are the Blackout, where you would kill lights in a skyscraper, making the people inside panic and flee to certain locations. This led me to the idea of a platformer which would play completely in the dark, and you would have to orient yourself only via sound effects. I knew I had to reduce the scope to be able to finish this in a day, so the final game is a very reduced version of this: You click around in the dark, trying to guess which letter is there.

To be honest, this is kind of a recycled idea which I already thought of in preparation to managore’s bit jam. The challenge there was to create a game in 1-bit color, on a 1px x 1px display, without any other form of feedback. I didn’t realize it back then, and I think this version with audio and graphical output is probably much more satisfying to play.

Results

I’m rather proud of the innovation rating. All other categories are in the upper third, except for “Theme”:

]]>
What happened when we offered Free Hugs to people free-hugs 2017-07-16T19:02:00+02:00 Sebastian Morr sebastian@morr.cc How do people react when you hold up a sign labelled “Free Hugs” in public?

A friend and I wanted to find out. We had both heard of Juan Mann, who started his Free Hugs Campaign in 2004. Also, we had already encountered other people doing this, and we discovered that we both had wanted to try it ourselves ever since.

Two cardboard signs

So we wrote two cardboard signs, one in English (“Free hugs”), one in German (“Gratis Umarmungen”). As we walked toward the city center of Brunswick, I started looking at the people passing by and tried to guess whether or not they would accept a hug. To be honest, I was pretty nervous, because the whole thing was so unpredictable. Doing this this was definitely part of my ongoing efforts to leave my comfort zone every now and then.

We selected a busy crossroad in a pedestrian zone, stood at one corner of it, and raised our signs.

Nervously, we waited. Would anyone actually come up to us, or would we simply be ignored?

Our initial anxiety disappeared quickly. It turned out to be quite fun to watch people’s reactions: Some kept a straight face, some looked surprised or narrowed their eyebrows, but the overwhelming majority smiled and talked about us when they realized what we were doing.

Then, after about five minutes, the first two people came running into our arms, tourists from an English-speaking country. In retrospect, these were some of the most heartfelt hugs of the day. “How long can I hug you?” one of them asked. My friend chuckled. “As long as you want!” They hugged each of us, then hugged each other.

After this, we couldn’t stop smiling.

Most of the time, we wouldn’t offer our hugs very aggressively, and let the people come to us instead. We watched many groups hesitating whether or not to approach us. Often, one member would try to convince the others to come with them. Soon, when we spotted this behaviour, we tried to invite them in by opening our arms and waving and nodding. Some groups literally changed direction four or five times (toward us, away from us, toward us), before finally deciding on whether they would do it.

Some woman pointed at her companion. “He wants a hug, he’s just too shy!” He smirked. “Yeah, you know, my social phobia…” “Oh, we’re totally introverts, too!” we replied. “Well, obviously you don’t have to do this. But maybe you’ll come back here again later today?” He didn’t.

A teenage girl walked by, gaping at us, looking so offended that I couldn’t help but burst into laughter. Sorry!

Some older women gave us very tender and long hugs. “This feels good,” nodded one of them.

After hugging, a man with an Italian accent walked away, then quickly turned around again: “Oh, you don’t want any money, right?”

Some dude, walking up to me: “Okay, I’ll hug you. But only ‘cause it’s you!” He came back a few minutes later for a selfie.

Many people asked for our motives. “Why are you doing this?” “Did you lose a bet?” “So, who made you stand here?” My default answer was “We just think the world could use more hugs!” I don’t think everyone understood.

A woman with a group of small kids: “Sooo… explain what are you doing?” “We can hug you if you want!” “And then?!” “That’s all there’s to it!” She came back a few minutes later and all apparently had instructed all four kids to hug us. Cute!

My friend told me beforehand she was a little afraid of creeps. Fortunately, the whole thing was a mostly creep- and asshole-free experience. Even though, there was one rather awkward guy who came to hug (just) her, without any facial expression, and then left, all without speaking a word.

A middle-aged couple came for hugs. “We saw people doing this some time ago in another city! We didn’t use the chance back then, but now we had to!”

A rugged-looking man with bad teeth watched from a small distance. “Do you want a hug?” I asked. “Nah, I’m fine, I get 10 per day! I’m just glad there are still good people out there!”

Guessing which people would come for a hug turned out to be rather difficult. We noticed that most couples wouldn’t, and most kids and elderly people wouldn’t, either.

The waitress of the café across the street came over: “I’ve been watching you the whole time, and I wanted a hug myself!”

A boy of about 7 years sneaked up on us. “Do you want a hug?” He beamed with joy. “Yeah!!” I wondered where his parents were, but then he also walked back to the café, his parents smiling at us from there.

A 12-people bachelor party group came roaming about, and we wiggled our signs, hoping to score a group hug. But they were focused on selling stuff to raise money for the wedding. None of them wanted a hug, one of them even asked for money. I pointed at the word free: “Sorry, this is not how this works.”

One of the most surprising reactions came from a young man: “Can I hold the sign for a few minutes?” A group of his friend watched him from a distance. He seemed a little nervous and withdrawn, and I tried to brief him with some best practises: “Offer the sign up to people coming from that direction, so they have time to decide whether they want to do this. Try to look at them, and smile!” He did none of these things, it didn’t really work out, and he left after a few minutes. I encouraged him to try it again sometime, and I thanked him for the idea of bringing some spares signs in case people wanted to join in.

We mostly stayed stationary, except when the infamous Preacher of Brunswick turned up (“Let! Jesus! Into your heart!”). We really didn’t want to be associated with him, so we temporarily changed our location. Walking around with our signs (very slowly) also worked great, and I would like to try more of that in the future.

When the shops closed, and the amount of people passing by decreased, we decided to break camp. About two hours had passed in a flash. Some people had asked for our experiences – how long we’d been here, how much response we were getting. Truth be told, we got a lot more reaction than I had expected. I’d estimate we hugged about 50-60 people. Hugs definitely came in clusters, I guess because it’s easier for people to come up to us after they’ve already seen others to do the same. Overall, the feedback has been incredibly positive!

Some minutes after we put away our signs, my brain was still in hugging mode, and I was surprised that nobody came up to us. So, yeah, I would love to do this again. Soon.

Lessons learned

Should you ever want to offer Free Hugs yourself (and I think you definitely should try!), here are some hints and pointers to improve your experience:

  • A mixed-gender two-person group seemed to work pretty well. It’s not as creepy as a single guy, not as intimidating as a larger crowd, and people can chose whom to hug. (Although most people hugged both of us!)

  • It’s a good idea to write multi-lingual signs, where applicable. We noticed people who couldn’t read our English one (“Könnten Sie mir die Bedeutung des Wortes Hugs verraten?”), and there were also people who didn’t speak German and laughed about the ridiculous length of the word “Umarmungen”.
  • Bring more signs than you need, in case people want to join in.
  • Our signs were made from thick white cardboard, a little larger than A4. This worked well, but I’d probably make larger ones next time. Write on both sides of the signs, so people behind you can read it when you hold it up.

But really, there’s not much you can do wrong. Go! The world does need more hugs, now more than ever.

]]>
No Way Out no-way-out 2017-06-27T00:00:00+00:00 Sebastian Morr sebastian@morr.cc This is a song of beginnings. Most importantly, it’s the first full real song I’ve ever created. It’s also the first chiptune I made, and the first track I produced using SunVox! I surely learned a lot while making it!

But it sounds rather dark, so I gave it a depressing name! :P

You can listen to it on SoundCloud or download it as MP3 or FLAC. The SunVox project file is available here.

Thanks to Bobo_PK for reviewing the track, and giving helpful feedback! Cover art by Bleeptrack.

]]>
Low poly snail low-poly-snail 2017-06-27T00:00:00+00:00 Sebastian Morr sebastian@morr.cc A low poly snail in low poly grass

Inspired by @nori_wrap’s low poly art.

]]>
Potterbot potterbot 2017-06-18T00:00:00+00:00 Sebastian Morr sebastian@morr.cc @potterbot is a Twitter bot using so-called Markov chains to generate random new lines. I fed it the complete text corpus of all seven Harry Potter books. When I set it up, I was mostly thinking of generating funny lines, but a surprising thing has happened:

A friend of mine has started replying to the prompts generated by Potterbot, to continue the scenes. You can find a good example here. I find it hilarious, and it’s a good example of creativity produced by human-computer interaction!

]]>
Font quiz for Anki anki-fonts 2017-06-06T15:14:00+02:00 Sebastian Morr sebastian@morr.cc This is a set of flashcards for the popular open-source spaced repetition software Anki, which will teach you to identify the most popular typefaces. It showcases over 45 fonts, each with a short history and a list of defining characteristics.

Here is an example card:

The basis for these flashcards is the now-defunct FontSpotting deck developed by Dustin de Souza and Jessica Witt. Their content is used with their kind permission.

Installation

To get started, simply download the current release from the AnkiWeb page. Then, in Anki, use File -> Import and select the .apkg file. This works in the desktop client as well as on smartphones.

Contributing

This deck is maintained on GitHub, using the CrowdAnki add-on. If you find a mistake, or have other ideas on how to improve the deck, please don’t hesitate to open a new issue!

]]>
Esoteric Programming Languages esolangs 2015-02-01T00:00:00+00:00 Sebastian Morr sebastian@morr.cc This was a fun overview paper written in my university seminar “Programming languages through the ages”. I was very lucky to receive the awesome topic Esoteric Programming Languages! :-) In the paper and the accompanying talk, I give an overview of the languages Brainfuck, INTERCAL, Befunge, Malbolge, and Shakespeare.

Paper Talk

You can also have a look at the LaTeX source of the paper.

In 2017, I gave an extended version of the talk at the 17. Gulaschprogrammiernacht (in German):

(If you prefer, there’s also a copy of the recording on YouTube.)

]]>
Pixel Art Workshop pixel-art-workshop 2016-10-08T00:00:00+00:00 Sebastian Morr sebastian@morr.cc I gave this workshop at Hackover 2016 and the 33rd Chaos Communication Congress. The current version of the slides are from the 17. Gulaschprogrammiernacht.

The 8x8 pixel characters are by Johan Vinet.

You can also download the source .ase file for the presentation, which abuses Aseprite’s animation feature to do slides.

]]>
Ampersand jam ampersand-jam 2017-05-06T22:33:00+02:00 Sebastian Morr sebastian@morr.cc Development path of the three designs

TQ & Pecca made me aware of the Saint J&an event hosted by the open source foundry Velvetyne. It was both a workshop held in Paris, as well as a location-independent design event, where participants could create & submit their “contemporary ampersand” designs.

You can click on the images below to download a clean SVG of each design.

Clef

Inspired by the treble clef used in modern music notation. This one definitely took the longest & I found it rather hard to get all the curves right. A huge help was Inkscape’s “pattern along path” effect, which allowed me to vary the thickness the stroke, while being able to modify its positioning at the same time. Oh, & Spiro splines, of course. I couldn’t have done any of this without Spiro splines.

Clef

Clef voting Clef voting 2

Buddha

The idea here was to create an extremely bottom-heavy shape. Already early on, I had to think of the Body Positive Movement & some variations literally depicted a huge belly. The final design stayed rather abstract, but the name still transports the idea! :)

Buddha

Buddha voting Buddha voting 2

Ribbon

Inspired by the awareness ribbons. This was a fast one, because two thirds of the design were already given. Few design choices had to be made.

Ribbon

Ribbon voting

]]>
A Bloody Small World bloody 2017-04-25T00:00:00+00:00 Sebastian Morr sebastian@morr.cc This is our contribution Ludum Dare 38. This time, I was part of a four-person team together with Pecca, Winnie, and Moritz. We built a little, hectic racing game!

Only an event like Ludum Dare gets me into a flow-like state which allows me to work on something without interruptions for 16 hours straight…

You can download the game from the Ludum Dare website!

Screenshot of "A Bloody Small World"

The Button Masher Bros did a hillarious playthrough, you should definitely watch it:

Also, Jupi covered it in her ongoing mission to play ALL THE indie games:

Results

The ratings were generally rather good. But especially the “Fun” category could have been better… we learned our lesson.

Reviewers praised the cute characters, the soundtrack, and the narration.

]]>
#woollyweek woolly-week 2017-04-20T17:06:00+02:00 Sebastian Morr sebastian@morr.cc TL;DR: We invite you to join us for a Mastodon-exclusive week! Starting this Monday, 2017-04-24 at 0:00 UTC, log out of all your Twitter clients, and don’t log back in for a week.

A Mastodon letting a Twitter bird fly away

You might have heard of the Mastodon social network, it’s an open-source, decentralized, community-built alternative to Twitter. You have 500 characters per post, no ads, and many instances explicitly ban discrimination and harassment. Its mascot is a woolly, mammoth-like animal, and instead of tweets you write toots! We think that’s cute. And by now, the network consists of more than 1000 independent active instances with over 400,000 registered accounts!

In our experience, a hard cut works best for trying out new platforms like this. Some of us have made exceptionally good experiences with such a Mastodon-exclusive week. On the one hand, you will get to know Mastodon inside-out during this week, and on the other, it might convince your Twitter friends to come with you! Maybe some of them even already have Mastodon accounts? You can find them using the Mastodon Bridge.

Here’s how you can prepare (right now!)

  1. Choose a Mastodon instance. Don’t worry, almost all of them are connected to each other, so you’ll be able to talk to all Mastodon users! But here are some recommendations:

    • octodon.social is a nice general-purpose instance with reasonable rules.
    • witches.town is a nice place for LGBT+ activists, feminists, anarchists and stuff as well as their sympathizers. Registration opens every day from 18:00 UTC to 19:00 UTC.
    • awoo.space was created to be a safe space with very strict rules and moderation. They work with a whitelist to control which instances they connect to.
    • chaos.social is an instance for and by people close to the Chaos Computer Club.
    • If you’re feeling courageous, you can also take a look at the complete list of instances. Read the respective “About this instance” pages until you find an instance you like!
  2. Register an account there, and try out all the functions! Remember to add an avatar and a short bio to your profile. Here’s a good introductory article to get you started.
  3. We recommend to make an announcement on Twitter before the week starts. Link to your new Mastodon account (and maybe this page?), and use the hashtag #woollyweek (note the double-L! ^_^). Pin that tweet, and change your username to “(see pinned tweet)” or something like that, so your followers can find out what’s going on.
  4. Before Monday, 2017-04-24 at 0:00 UTC, say good-bye to your Twitter followers, log out of all your clients, and pledge not to log back in for a week.

Fun things to try in your first Mastodon week:

  • Post an #introduction! Include many hashtags so people with similar interests can find you!
  • Then, click on your own hashtags to find people with shared interests and follow them!
  • Many of us enjoy having more than one account. For example, tenforward.social is a Star Trek-themed instance, suitable for roleplaying. oulipo.social is a lipogrammatic instance where you are not allowed to use the letter “e”. On dolphin.town, on the other hand, you’re only allowed to use the letter “e”.
  • If you have any questions, you’re very welcome to contact @blinry or @TQ, who will be glad to help you with any problems you might encounter.

This is a list of Mastodon members who will participate in the #woollyweek. Want to join us? Ping @blinry to be added to the list! We’re looking forward to have you with us!

]]>
Let it go... let-it-go 2017-04-11T23:00:00+02:00 Sebastian Morr sebastian@morr.cc A Mastodon mammoth letting a Twitter bird fly away

Drawn when I migrated from Twitter to the open-source alternative Mastodon for a week. See this thread on why I did that:

]]>
Fünf Tage mit dem Teufel teufel 2017-04-09T12:59:00+02:00 Sebastian Morr sebastian@morr.cc Dies ist eine Übersetzung von Joe Edelmans Essay Five Days with the Devil. Wenn ihr könnt, lest das Original!


Was dich erwartet: Ein Gedankenexperiment. Wie menschliche Werte verlorengehen. Und: Eine neue Perspektive auf den momentanen politischen Aufruhr (Trump, Brexit, Terrorismus, und so weiter).

Montag

Am Montag bietet der Teufel dir Produktivität an. Er gibt dir eine magische To-Do-Liste: Sobald du dir etwas wünscht, erscheinen Aufgaben darauf, sofern diese überhaupt erfüllbar sind. Und sobald sie dort erscheinen – BÄM! – werden sie bereits erledigt sein. Du kannst nach wie vor das Gefühl der Errungenschaft und die Früchte des Erfolgs genießen, aber du hast nichts von dem Prozess. Sobald du dir beispielsweise wünscht, ein Buch zu schreiben, wird es bereits geschrieben sein. Sobald du dir ein schickes Abendessen wünscht, wirst du es gerade gegessen haben. Sobald du dir wünscht, mit einer Person, die du liebst, einen entspannten Tag zu verbringen, wird dieser Tag gerade geschehen sein. Er wird vorbei sein.

Ist dies der Himmel oder die Hölle? Gibt es irgendwelche Wünsche, für die eine solche To-Do-Liste hilfreich wäre? Wenn du denkst, dass dies ein schlechtes Angebot ist, was sagt das darüber aus, was du im Leben erreichen willst? Über den Antrieb, produktiv oder effizient zu sein?

Dienstag

Am Dienstag gibt dir der Teufel eine Möglichkeit, deine Beziehungen und deine Zusammenarbeit zu verbessern. Er wird – für immer – das Problem lösen, herauszufinden, welche Handels- und Vertragsbeziehungen in deinem privaten und deinem Arbeitsleben funktionieren werden. Du wirst sofort wissen, wer dich einstellen könnte, wie viel sie bezahlen würden, und was dort von dir erwartet wird. Genau so ist es in deinem Privatleben: Du wirst sofort wissen, wenn es ein gegenseitiges Verlangen gibt – danach, sich zu küssen, miteinander zu schlafen, auszugehen, oder sich über Literatur zu unterhalten. Der Teufel wird den Schmerz und die Verwirrung darüber entfernen, zu verhandeln, zu suchen, zu flirten, und so weiter. Aber er verlangt eine Sache: Deine Beziehungen mit diesen Menschen müssen auf das, was der Vertrag aussagt, beschränkt bleiben. Es wird kein offenes, gegenseitiges Entdecken geben, nur eine Abfolge von zuvor bekannten Tauschgeschäften.

Wie lange wäre ein solches Leben auszuhalten? Wie würde es sich anfühlen, auf der Erde zu leben, wenn alle Menschen das Angebot des Teufels annehmen würden? Hast du Freunde, die dieses Tauschgeschäft eingehen würden, und welche, die das nicht tun würden? Wo liegt der Unterschied?

Mittwoch

Am Mittwoch bietet der Teufel dir an, deine Wahrnehmung und deine Fähigkeit zur Schlussfolgerung zu verbessern. Wie Sherlock Holmes wirst du besser darin sein, Dinge zu bemerken: Die Zusammensetzung deiner Umwelt, Hinweise auf den emotionalen Zustand von anderen, die Wahrheit über deine politische und wirtschaftliche Situation, und so weiter. Der einzige Preis, den der Teufel einfordert, ist eine entsprechende Verringerung deiner Fähigkeit zur Wertschätzung. Du wirst mehr darüber wissen, was geschieht, aber weniger darüber, warum das für dich wichtig ist. Du wirst Schwierigkeiten darin haben, zu erkennen, warum du dich um Dinge scheren solltest. Was auch immer dir momentan wichtig ist – sei es wegen seiner Schönheit, seinem Nutzen oder seiner Passion – es wird dir weniger wert sein.

Würdest du das Angebot des Teufels annehmen? Welche Form der Wertschätzung würdest du am meisten vermissen? Wie würde sich dein Leben ändern? Stell dir vor, du müsstest wählen, nicht nur für dich selbst, sondern für die gesamte Menschheit: Würdest du dich entscheiden, alle scharfsinniger, aber weniger wertschätzend zu machen? Inwiefern wäre eine solche Gesellschaft anders? Ist Wahrnehmung ohne Wertschätzung überhaupt möglich?

Donnerstag

Am Donnerstag bietet der Teufel allumfassende Empathie und Einsicht an. Was auch immer du fühlst, Leute werden es sehen, und sie werden sofort alle wichtigen Details dessen, was dir passiert ist, verstehen, und sich um dich kümmern. Du wirst nicht mehr deine Geschichte erzählen müssen, um Sympathie und Verständnis zu bekommen, weil du sie sofort bekommen wirst. Diesmal ist der Preis, dass die Leute nur über deine Gefühle, deine Geschichte und deine Erfahrungen Bescheid wissen werden. Alles andere wird ihnen verborgen bleiben: Deine Pläne und Träume, womit du dich identifizierst, inwiefern du wachsen oder anders leben willst. Du wirst jedermanns Empathie haben, aber keine Zusammenarbeit, keine Mentorschaft, keine Gemeinsamkeit im Wachsen und Lernen.

Würdest du das Angebot annehmen? Falls ja, würden dir Leute auf lange Sicht mehr oder weniger geben? Welche Art des gemeinsamen Wachsens oder der Zusammenarbeit würdest du am meisten vermissen? Was tun Menschen wirklich füreinander?

Freitag

Am Freitag macht sich der Teufel daran, deinen Erfolg zu erhöhen. Er wird dich doppelt so erfolgreich darin machen, so zu leben, wie du willst. Wenn du Sport machen willst, wirst du das tun. Wenn du die Situation von unglücklicheren Leuten verbessern möchtest, wirst du darin doppelt so effektiv sein wie sonst. Wovon auch immer du träumst, oder was du dir in den Kopf setzt, es ist wahrscheinlicher, dass das umgesetzt wird. Allerdings muss ein Preis gezahlt werden. Für den Rest deines Lebens werden alle von deinem Erfolg wissen, aber niemand von deinen Motivationen. Deine Motive – alle Motive – müssen für immer geheim bleiben.

Was verlierst du bei diesem Tauschgeschäft? Warum ist es wichtig, die Motive der anderen zu verstehen? Was gewinnen wir bei diesem Prozess? Ist ein Leben weniger lebenswert, wenn niemand unsere wahren Motive kennt? Ist es wahrscheinlicher oder unwahrscheinlicher, dass wir die richtigen Dinge tun, wenn wir nicht über unsere wahren Motive reden dürfen?


In jeder der voranstehenden Geschichten hat der Teufel einen wichtigen Teil davon, wie Menschen mit ihren Werten interagieren, untergraben:

  • Am Montag hat er durch das Anbieten der To-Do-Liste alle Werte auf logistische Ziele reduziert.
  • Am Dienstag hat er Flirten und Entdeckung durch eine verbesserte Koordination ersetzt, und dadurch Zusammenarbeit als eine Aushandlung von Zielen umdefiniert, anstelle einer gegenseitigen Erkundung von Werten.
  • Am Mittwoch hat er mit dem Angebot einer besseren Wahrnehmung unsere Fähigkeit dazu gestohlen, in unserer Umwelt Werte zu entdecken. Er hat uns überzeugt, dass nur Fakten real sind.
  • Am Donnerstag hat er mit dem Angebot von Empathie und Verständnis unsere Kompetenz entfernt, einander zu beschützen, was auf dem Erkennen von Werten basiert.
  • Am Freitag hat er uns durch das Verbot, Motive mitzuteilen, von gewissen sozialen Prozessen abgeschnitten: Von der Beratung über Werte, von der gemeinsamen Entdeckung von Werten. Es sind genau diese sozialen Prozesse, die unsere Entscheidungen bedeutungsvoll machen.

Diese Tauschgeschäfte sind nicht spekulativ. Sie sind keine Märchen.

Dies sind die Tauschgeschäfte, die unsere Gesellschaft gemacht hat. Sie sind tatsächlich passiert.


Menschen sind Kreaturen, die einander ständig fragen, was wichtig ist – bei einem Ehepartner, bei einem Wein, bei einer Programmiersprache.

Unsere Werte haben ein soziales Leben. Genauso wie wir auf die Gefühle anderer reagieren, arbeiten wir auch zusammen: Wir erkunden, erweitern und beschützen unsere Werte. Es gibt eine verborgene Struktur dahinter, wie wir das, was uns wichtig ist, weiterentwickeln, aktualisieren und verfolgen. Wir wachsen sozial über Werte zusammen, und wir arbeiten zusammen, um sie in Entscheidungen und in Projekten umzusetzen.


Politik

Leute fühlen sich so, als lebten sie in einer Gesellschaft, die ihre Werte nicht reflektiert. Auf der linken Seite beinhalten diese Werte Gerechtigkeit, Gleichheit und das Leben mit der Natur. Auf der rechten Seite beinhalten sie würdevolle Arbeit, stabile Familien und religiöse Gemeinschaft.

Wir haben eine einfache Erklärung, warum die Gesellschaft unsere Werte nicht respektiert: Die andere Seite gewinnt!

Aber vielleicht sind es nicht linke Werte oder rechte Werte, die gewinnen. Vielleicht sind es nicht liberale Werte oder muslimische Werte oder amerikanische Werte. Vielleicht ist das, was passiert, dass alle Werte verlieren.

Was, wenn das Sozialleben der Werte versagt? Was, wenn unsere Werte nicht dazu führen, dass wir zusammenwachsen, und sie nicht so ausgedrückt werden wie früher? Was könnten wir tun, um das zu reparieren?

]]>
Avoiding Slippery Slopes slippery-slopes 2017-04-06T11:36:00+02:00 Sebastian Morr sebastian@morr.cc Avoiding Slippery Slopes as an O'Reilly book

A “Get Well Soon” card for Rohieb in the style of a fake O’Reilly book. It’s all a giant in-joke, I can’t even begin to explain.

]]>
Pacifion pacifion 2017-03-28T22:00:00+02:00 Sebastian Morr sebastian@morr.cc Scorpion with a pacifier instead of a stinger

]]>
Der Weg zur Weisheit weisheit 2017-03-15T23:32:00+01:00 Sebastian Morr sebastian@morr.cc Dies ist eine Übersetzung von Joe Edelmans Essay When Wisdom Comes, das mich sehr berührt und geprägt hat. Wenn ihr könnt, lest das Original!

Herzlichen Dank an rixx, Pecca und Wolfgang für’s Korrekturlesen! <3


Gefühle werden oft missverstanden. Sogar von Psychologen, Philosophen und Neurowissenschaftlern und sicherlich von Designern und Aktivisten.

Ich werde zunächst beschreiben, wie Gefühle in uns wirken. Daraus ergeben sich Definitionen von Integrität und Weisheit. Ich werde die Frage stellen, ob sich die Weisheit im Niedergang befindet, und Antworten finden, die mit Organisationen und Bürokratien zu tun haben. Und schließlich werde ich betrachten, wie man anderen im Blick auf ihre Gefühle und Werte helfen kann.

Wie Gefühle in uns wirken

Dies ist die Grundidee:

Jedes Gefühl ruft uns etwas in Erinnerung, das uns wichtig ist.

Zum Beispiel:

  • Wut verrät uns, dass etwas, das uns wichtig ist, blockiert ist
  • Angst, dass etwas, das uns wichtig ist, bedroht ist
  • Scham, dass wir etwas, das uns wichtig ist, nicht gerecht geworden sind
  • Verwirrung, dass uns die Vorstellung von etwas fehlt, das uns wichtig ist
  • und so weiter

Wir lernen durch unsere Gefühle, was uns wichtig ist. Sie verraten uns unsere Werte.

Gefühle helfen uns außerdem, unseren Umgang mit unseren Werten zu überprüfen. Positive Gefühle erinnern uns daran, zu begrüßen oder wahrzunehmen, was uns wichtig ist. Negative Gefühle hingegen tun mehr: Ein negatives Gefühl signalisiert einen Konflikt zwischen unseren Werten, über den wir nachdenken sollten:

  • Vielleicht haben wir nach Wert B gestrebt, dabei aber Wert A vergessen. Ich habe früher zum Beispiel versucht, effektiv zu sein, dabei aber vergessen, dass es mir auch wichtig war, freundlich zu sein. Das könnte zu Betretenheit führen.
  • Oder wir vernachlässigen vielleicht Wert B, weil wir es für unmöglich halten, beide zu verfolgen. Ich könnte es zum Beispiel für unmöglich halten, gleichzeitig meinem Interesse nach kreativer Arbeit nachzugehen, während ich meine Familie finanziell unterstütze, aber beides ist mir wichtig. Das führt vielleicht zu Frustration oder Sehnsucht.

Es gibt viele weitere Arten von Konflikten. Zum Glück haben wir aber Gefühle, die uns mitteilen, dass wir uns mit diesen Konflikten auseinandersetzen müssen, anstatt sie einfach zu übergehen. Die Gefühle erinnern uns daran, uns selbst Fragen zu stellen wie:

  • Kann ich freundlich und effektiv sein?
  • Halte ich wirklich viel davon, effektiv zu sein, oder ist es vielleicht immer wichtiger für mich, freundlich zu sein?
  • Ist es wirklich unmöglich, kreativer Arbeit nachzugehen und gleichzeitig meine Familie finanziell zu unterstützen?
  • Was würde tatsächlich passieren, wenn ich aufhören würde, meine Familie finanziell zu unterstützen?

Oft wollen wir uns diese Art von Fragen nicht stellen. Aber die Gefühle kommen weiter in uns auf, bis wir es tun. Bis wir uns die Zeit nehmen, all diese Konflikte so gut es geht zu lösen, gibt es eine Diskrepanz zwischen dem, was wir leben, und dem, was uns wichtig ist. Diese Diskrepanz führt dazu, dass wir nicht stolz darauf sein können, wer wir sind. Um uns selbst und unsere Entscheidungen akzeptieren zu können, müssen wir uns mit den Konflikten auseinandersetzen.

Besitzt du Integrität?

Oft scheitern wir daran, die Botschaften unserer Gefühle zu empfangen. Dafür kann es drei Gründe geben:

  • Verdrängung. Wenn eine Person sich ihrer Gefühle nicht bewusst ist oder es sich nicht erlaubt, sie zu spüren, werden die Gefühle verdrängt. Verdrängte Gefühle können völlig verschwinden. Man wird abgestumpft, depressiv oder ängstlich.
  • Dampf ablassen. Andere Leute spüren ihre Gefühle, nehmen sie aber nicht ernst als Botschafter dessen, was wichtig ist. Die Gefühle kommen immer wieder zurück und die Person wird melodramatisch.
  • Vermeidung. Eine dritte Gruppe schafft den ganzen Weg bis hin zur Erkenntnis, was ihnen wichtig ist, setzt sich aber nicht mit den aufgedeckten Konflikten auseinander und löst sie auch nicht. Diese Leute werden dauerhaft hilflos, konfliktbehaftet, verwirrt und realitätsfern sein.

Du kannst diese Probleme vermeiden, indem du die Situationen in deinem Leben ganz zu Ende fühlst, angefangen bei den Emotionen, und endend mit einer Vereinbarung von Werten:

FühlenWertschätzenSich auseinandersetzenVereinbaren

Eine Person, die alle ihre Situationen zu Ende gefühlt hat, besitzt Integrität. Sie ist geerdet. Integrität bedeutet, dass sie weiß, was ihr wichtig ist, und dass sie sich mit allen Konflikten auseinandergesetzt hat.

Zu Integrität zu kommen ist am einfachsten, wenn sich deine Situation langsam ändert: Dann hast du viel Zeit, um deine Gefühle wahrzunehmen, um herauszufinden, was dir wichtig ist, und um dich mit möglichen Konflikten auseinanderzusetzen.

Und wie ist es mit Weisheit?

Je dynamischer dein Leben ist – je größer die Vielfalt an Leuten und herausfordernden Situationen ist, mit denen du jeden Tag umgehst – desto schneller musst du im zu Ende fühlen sein. Die wichtigste Fähigkeit für Führungspersonen ist es, schnell darin zu sein, Dinge zu Ende zu fühlen. Eine solche Person ist lebenserfahren oder weise.

Es ist leicht zu erkennen, ob eine Person weise ist: Sie spricht klar und deutlich über ihre Gefühle und Werte und darüber, wie sie sich in verschiedenen Situationen mit ihren Werten auseinandergesetzt und diese miteinander vereinbart hat.

Sie ist außerdem kreativ. Eine weise Person lenkt ihr Leben und ihre soziale Aktivität in ungewöhnliche, kreative Richtungen. Sie hat Werte, die nur durch die Auseinandersetzung mit Konflikten entdeckt werden können.

Hier ist ein Beispiel:

Ein Diagramm von Gefühlen und Werten

  • Früher habe ich versucht, von Leuten gemocht zu werden. Aber irgendwann erkannte ich, dass dies mit meinem Wert, mich wohlzufühlen, im Konflikt stand. Ich merkte, dass ich angespannt und unecht war, um gemocht zu werden. Ich fühlte mich bestürzt und verlegen und das half mir, mich dafür zu entscheiden, nicht darauf aus zu sein, gemocht zu werden, sondern stattdessen zu versuchen, authentisch und mitfühlend zu sein.
  • Später kam mein neuer Wert, authentisch und mitfühlend zu sein, in Konflikt damit, effektiv zu sein. Ich merkte, dass ich lieblos war, wenn ich Gruppen dazu drängte, effektiv zu sein. Mich frustriert und verwirrt zu fühlen, ermutigte mich dazu, das aufzulösen. Ich entwickelte eine neue Sicht auf Effektivität, die darauf abzielt, Kompetenz in mir und anderen zu fördern.

In beiden Fällen behob der Übergang von alten zu neuen Werten einen Denkfehler:

  • Als ich es aufgab, gemocht zu werden, erweiterte sich meine Vorstellung von guten Beziehungen.
  • Als ich es aufgab, effektiv zu sein, korrigierte ich ähnliche falsche Vorstellungen von guten Teams.

Ich konnte die alten Werte deshalb aufgeben, weil ich geklärt hatte, was sie wirklich für mich bedeuteten. Die Bedeutsamkeit der alten Werte ging völlig in dem neuen, umfassenderen Wert auf.

Diese mächtigen neuen Werte und Perspektiven resultieren aus negativen Gefühlen. Ohne unsere Gefühle würden wir auf primitiven Werten wie gemocht werden und effektiv sein hängenbleiben.

Ist Weisheit im Niedergang?

Ich glaube, dass all dies – Gefühle, Werte, deren Vereinbarung – Teil der menschlichen Natur ist, genau wie Sprache oder Gebärden. Aber viele von uns haben das aus dem Blick verloren. Wenn Gefühle natürlich sind, warum ist das Wesen von Gefühlen dann so undurchschaubar?

  • Auf das Individuum bezogen, warum verwirren uns Gefühle und Werte?
  • Auf die Gesellschaft bezogen, warum ist diese Verwirrung so verbreitet?

Wie Individuen sich verwirren lassen

Unsere Fähigkeit, Dinge zu Ende zu fühlen, ist Angriffen ausgesetzt. Zum Einen arbeiten verbreitete kulturelle Mythen daran, uns hinsichtlich der Funktionsweise von Gefühlen und Integrität zu verwirren. Und zum Anderen lassen falsche Annahmen unsere Werte unvereinbar erscheinen.

Kulturelle Mythen. Es gibt verbreitete kulturelle Missverständisse zum Thema Gefühle:

  • Einer dieser Mythen ist die stoische Person – üblicherweise ein Mann – die irgendwie weiß, was ihr wichtig ist, und die ihre Werte vereinbart, ohne dabei jemals ihre Gefühle zu spüren. Der Mythos ist, dass sie einfach auf magische Art und Weise eine höchst effektive Person ist.

  • Ein anderer Mythos ist die hysterische Person – üblicherweise eine Frau – deren Gefühle nichts darüber aussagen, was ihr wichtig ist. Der Mythos ist, dass sie einfach ihren Mann stehen, unnachgiebig bleiben oder Gleichmut entwickeln muss.

Die dominierenden Ansätze der klinischen Psychologie unterstützen und fördern diese Mythen: Die stoische Sichtweise wird von kognitiver Verhaltenstherapie und Lebensberatung unterstützt, während die hysterische Sichtweise von verschiedenen Karthasis-Therapien bzw. künstlerischen Therapien, von Achtsamkeitstraining, von manchen Formen der Familientherapie und von Co-Counseling gefördert wird.

Falsche Annahmen. Kulturelle Mythen unterbrechen den Prozess, zu fühlen oder zu erkennen, was wichtig ist. Unsere Kultur ist außerdem voller falscher Annahmen, die Werte unvereinbar erscheinen lassen. Annahmen wie:

  • Wenn ich sage, was ich wirklich will, werde ich sozial ausgestoßen.
  • Ich bin ein schlechtes Elternteil, wenn ich irgendetwas für mich selbst will.
  • Es ist nicht möglich, als Künstler seinen Lebensunterhalt zu verdienen.
  • Solange ich ehrlich bin, muss ich nicht freundlich sein.
  • Ich kann nicht verführerisch sein, ohne manipulativ oder übergriffig zu werden.

Wenn du einer solchen falschen Annahme unterliegst, ist es dir nicht möglich, dich mit einem Wertkonflikt auseinanderzusetzen und ihn aufzulösen. Die falsche Annahme sagt dir, dass eine Auflösung unmöglich ist. Welches Gefühl auch immer den Prozess ausgelöst hat (zum Beispiel Scham darüber, nicht freundlich zu sein, Aufregung darüber, verführerisch zu sein, oder ein Verlangen nach kreativem Ausdruck), es verwandelt sich in Verzweiflung, bevor du die Chance hast, dich mit dem Konflikt auseinanderzusetzen.

Wenn du die falsche Annahme findest und sie hinterfragst, kannst du den Konflikt auflösen.

Warum die Gesellschaft auf Verwirrung ausgelegt ist

Wenn also diese kulturellen Mythen und falschen Annahmen auf individueller Ebene so schlecht für uns sind, warum sind sie so verbreitet? Hier ist meine Vermutung: Sie haben Menschen berechenbarer gemacht und sie in bessere Rädchen im sozialen Getriebe verwandelt.

Im Laufe der letzten 300 Jahre sind Organisationen, Bürokratien und Institutionen immer komplexer geworden. Um stabil zu bleiben, brauchten sie vorhersagbare Entscheidungen der Menschen in ihnen.

Eine Person ist einfacher zu kontrollieren, wenn sie nicht gut im zu Ende fühlen ist und wenn sie glaubt, dass ihre Werte unvereinbar sind. Sie wird ein besserer Konsument und (zumindest in einer Bürokratie) ein besserer Produzent.

Die erfolgreichsten Subkulturen wären also diejenigen mit kulturellen Mythen und falschen Annahmen. Und wenn Leute darauf getrimmt werden, effektiv zu sein, werden diese kulturellen Mythen und falschen Annahmen verstärkt.

Das würde ein Muster erzeugen, das wir heutzutage sehen: Je erfolgreicher eine Gruppe ist, desto verwirrter ist sie im Blick auf Gefühle und Weisheit.

Anderen helfen

Erwarte fürs erste also, von Leuten umgeben zu sein, die schlecht im zu Ende fühlen sind, die nicht lebenserfahren oder weise sind, und die tief in kulturellen Mythen und falschen Annahmen verstrickt sind. Das wird so bleiben, bis Organisationen und Institutionen anders funktionieren.

Aber du kannst den Menschen, die dir nahe stehen, helfen:

  • Wenn sie Probleme damit haben, ihre Gefühle wahrzunehmen, setz dich zu ihnen. Bitte sie, in sich hineinzufühlen, ihre Gefühle auszudrücken, und behandle diese als wertvoll.
  • Wenn jemand Gefühle ausdrückt, frage, worum es dabei geht. Finde heraus, was der Person wichtig ist. Lass sie wissen, dass du dies ernst nimmst. Du möchtest ihr dabei helfen, zu erkennen, was ihr wichtig ist.
  • Wenn sie denken, dass ihre Werte nicht vereinbar sind, versuche, sie nach ihren im Konflikt stehenden Werten zu fragen. Zeig ihnen, wie diese vereinbart werden könnten. Zeig dich zuversichtlich, dass ihre Gefühle zu Weisheit führen werden.

Viel Glück.


Gibt es eine Person, von deren Gefühlen und Werten du gern mehr hören würdest? Schick ihr diesen Text!

]]>
Wikimedia Sustainability Initiative logo wikimedia-si 2017-03-14T15:39:00+01:00 Sebastian Morr sebastian@morr.cc A logo to support the efforts of moving the Wikimedia servers to green energy, based on an idea by Gnom.

Variant with “Wikimedia”:

Full, centered version on transparent background:

Square version on white background, use when the full version would leave too much whitespace in a square:

Sticker version with hairline for the cut:

Variant without “Wikimedia”:

Full, centered version on transparent background:

Square version on white background, use when the full version would leave too much whitespace in a square:

Sticker version with hairline for the cut:

Background

You can find the evolution of this logo in the replies to this tweet:

]]>
Screw this. screw-this 2017-03-13T23:30:00+01:00 Sebastian Morr sebastian@morr.cc

]]>
Disconnect disconnect 2017-03-07T22:00:00+01:00 Sebastian Morr sebastian@morr.cc Fetus with an ethernet cable instead of an umbilical cord

This was in parts inspired by Gravity’s marvellous womb scene.

]]>
Voctocat logo voctocat 2017-03-01T16:43:00+01:00 Sebastian Morr sebastian@morr.cc voctocat

A logo for media.ccc.de, the video/audio archive of the Chaos Computer Club and for the CCC Video Operation Center (C3VOC).

It depicts a lucky cat, which has been the mascot of the C3VOC for quite a while: They place lucky cats in the scenes to be recorded for testing purposes, to make sure the video stream did not accidentally freeze.

The visual style is inspired by GitHub’s Octocat mark, and the name Voctocat is a word play on that and on the abbreviation “VOC”. Thanks to Pecca for suggesting a tail shape! :)

Here’s an optimized version, suitable for immediate reuse and repursposing:

voctocat

If you’re interested in the logo’s development process, you can find some relevant information in the replies to this tweet:

]]>
The Hitchhiker's Guide to the Mandelbrot Set mandelbrot 2017-02-21T16:45:00+01:00 Sebastian Morr sebastian@morr.cc This is a work-in-progress interactive explanation. I'd love feedback! You can reach me at @blinry or sebastian@morr.cc.

Maybe you've seen an image of the Mandelbrot Set before. It's trippy, it's wonderous, it's beautiful. Here it is, have a look:

Click to zoom.

The Mandelbrot Set is a so-called fractal, which means it's self-similar. Zooming in, you can always find smaller copies of itself. Maybe you encountered some yourself when exploring the above image?

But what does this image mean? How is it constructed? It all begins with a sleeping bunny.

Part 1: What is the Mandelbrot Set?

The Mandelbrot Set is the result of repeated application of a very simple rule.

I'll attempt to explain to you how this works in a purely visual way, without any math. If, on the other hand, the math interests you, you can read up on this in the gray columns, but this is purely optional!

In our little world, there is a bunny, and a flag. You can place the flag everywhere you want. The bunny has its own free will. Psssst, it's still asleep! ... z z Z Z Z

The flag represents something which mathematicians call a complex number. It's just like a normal number, but is has a funny little extra number attached to it, which tells you how far it is above or below the number line. Mathematicians call it the imaginary component, and mark it with an i. For example, in the demo below, f = ?. Try placing the flag on -1.0+0.5i!

Drag the flag around. No surprises here.

The bunny always sleeps in the center of the lawn. But look, it woke up! It will now start to walk and hop around. The first thing it always does is to walk to the position of the flag. We call this movement Step 1.

The bunny's position is another complex number, which is initially b0 = 0. The walk movement is equivalent to adding f, so the next position will be b1 = f.

Pull the slider to Step 1, then drag the flag around.

Step 2 consists of two movements: First, the bunny will hop! It has a very particular way of hopping: It hops so that its angle to the right-direction doubles, and the distance to its sleeping position squares. Intuitively, if its distance to its sleeping position is less than 1, it will hop a little bit closer, and if the distance is larger than 1, it will hop a little bit farther away.

The hop movement is equivalent to squaring the current position. The square of a complex number can be calculated using the binomial formula and the fact that i2 = -1: (x + yi)2 = x2 + 2xyi + (yi)2 = x2 - y2 + 2xyi. The behaviour described on the left can be explained using the polar form of complex numbers.

Pull the slider to Step 1.5, then drag the flag around.

The second movement of Step 2 is another walk. The bunny will walk in the same direction and distance as it initially walked towards the flag:

After squaring b1, we add f again. This gives us b2 = b12+f.

And after that, the bunny just repeats these two movements: A hop, a walk, another hop, another walk. Let's look at how this looks for up to Step 4:

Let's get rid of the half-steps! From now on, we will treat the hopp-and-walk as a single movement.

Here's the same demo as before, but the the bunny directly goes full steps. The flag positions of this and the last demo are in sync, so you can compare the resulting path.

If we want to calculate the new position bi+1, and we know the old position bi, we can calculate bi+1 = bi2+f. This is the only formula needed to calculate the Mandelbrot Set!

And NOW it gets exciting! What if we let our bunny do many, many, steps? Like, 100 of them? Look:

Pull the slider to Step 100, then drag the flag around.
Can you find another spiral? A star? A triangle?

Whaaaat. Crazy patterns everywhere!

You can see that for some flag positions, the bunny escapes the dashed circle (into FREEEEDOM!), while for others, it stays inside. Let's do an experiment: In the next demo, if the bunny's path leads it to freedom, we will color the current flag position white. If the bunny stays inside the circle, we will color it black (because it's so sad!)

This is the definition of the Mandelbrot Set: It consists of all flag positions for which the bunny does not escape, if it does an infinite number of steps. Here, we can only approximate: If the bunny hasn't escaped after 100 steps, it's probably close to the Mandelbrot Set, and we will color the flag's position black.

Drag the flag around to scribble.

Why, helllll~o! You drew yourself a teeny tiny Mandelbrot set!

Let's add more color. So far, we only used white (for when the bunny escapes) and black (for when it doesn't). In the next demo, let's count how many steps it took the bunny to escape from the circle. If it took one step, we color the flag's position red. If it took two, we color it orange, and so on. You can see the colors we use below the step slider.

Drag the flag around to scribble.

And that's really all there is to it! Repeated application of a very simple rule, leading to incredibly complex detail.

Here's the last demo for now, which does all the drawing for you, and where you can zoom in. This one has a lot to explore.

Some things you can try:

  • What happens to the path at the centers of the outer "bulbs"?
  • Can you find out which period numbers are connected to each bulb? Do you see a relation to the "antennas" extending outward from that bulb?
  • Zoom in on one of the bulbs. What happens to the path at the centers of its sub-bulbs?
  • What is the period of the bulbs going "outward"? What happens if you follow a number of them?

Click to zoom. Middle-click to zoom out.

Planned content

More fractals, for example:

The Tricorn: bi+1 = (bi*)2+f

The Burning Ship: bi+1 = (|Re(bi)| + |Im(bi)|)2+f

What happens for other exponents than 2?

The Multibrot: bi+1 = bi6+f

And what the hell are Julia Sets? Follow me on Twitter to get updated when the full thing comes out: @blinry

Thanks for reading!

]]>
Emergency Card Template emergency-card 2017-02-16T12:04:00+01:00 Sebastian Morr sebastian@morr.cc I originally created this emergency and organ donation card in 2012. Recently, I gave it an update to translate it to English and make it as international as possible otherwise. I figured it might be useful for other people, so I’m providing a template here. Click on the image to open the SVG, you can edit it using a vector graphics program like Inkscape.

Emergency Card Template

Note that this template uses the Arial font, to be instantly usable as widely as possible. Personally, I use TeX Gyre Heros, a Helvetica clone.

The gray bar on the back side is for your signature. Let me know if you have any other suggestions!

]]>
Nifflers don't only love shiny things! niffler 2017-02-13T21:00:00+01:00 Sebastian Morr sebastian@morr.cc A niffler with a baby niffler in its pocket

]]>
Earth Balloon earth-balloon 2017-01-24T23:09:00+01:00 Sebastian Morr sebastian@morr.cc Earth Balloon

]]>
Master's Thesis: Split Packing split-packing 2016-06-01T00:00:00+00:00 Sebastian Morr sebastian@morr.cc The full name of my master’s thesis is Split Packing: An Algorithm for Packing Circles with up to Critical Density. It covers a topic from the field of Computational Geometry: Packing circles into various containers, like squares and triangles.

In the thesis, I invented an algorithm which can pack circles and other objects into these containers, if their combined area does not exceed certain bounds. The special property of the algorithm is that these bounds are tight: For any larger area bound, there are circle instances which can not be packed.

The thesis contains a large number of figures, I’d like to invite you to take a look! :-)

Thesis Presentation

For the presentation I created a nonverbal description of the central algorithm in the style of IKEA assembly instructions. I’d love to see more algorithms presented like this, if you’d like to try for yourself, you can use my SVG as a starting point!

SPLIT-PÄCK

Also, while working on this thesis, I wrote an interactive visualization tool called Circus, which I used as a personal thinking and explaining tool. You can try it out by clicking on the image below, usage instructions are located in the lower left. The tool is written in plain CoffeeScript and uses the HTML5 canvas for drawing, the source code is on GitHub.

Screenshot of the Circus visualization tool

]]>
Holy Coffee holy-coffee 2017-01-11T10:23:00+01:00 Sebastian Morr sebastian@morr.cc Holy Coffee

Just dabbling around a bit with Krita

]]>
nordlichtbot nordlichtbot 2017-01-08T21:18:00+01:00 Sebastian Morr sebastian@morr.cc @nordlichtbot is a Twitter bot which picks a random YouTube video every few hours, runs the nordlicht tool on it and tweets the result. It’s currently used as an experimentation platform for new features, as a lazy CI framework and as a gallery of computer generated art.

Here’s an example tweet:

]]>
nordlicht nordlicht 2013-07-14T00:00:00+00:00 Sebastian Morr sebastian@morr.cc http://nordlicht.github.io ]]> A QA engineer walks into a bar... qa-engineer 2017-01-04T00:30:00+02:00 Sebastian Morr sebastian@morr.cc QA engineer comic

This is my first attempt to draw an analogue comic since a long time. The text is based on a tweet by Bill Sempf, and published here with his permission. For non-software people: QA means quality assurance.

The tweet sparked many more ideas on what the engineer could order, you can find an overview on Bill’s homepage.

]]>
Goodbye, CCH pixel-cch 2016-12-31T20:32:00+01:00 Sebastian Morr sebastian@morr.cc Pixel Art of the CCH

For five years, the Congress Centrum in Hamburg, Germany has been the venue for the annual Chaos Communication Congress, a four-day conference for hackers, artists, and open-minded folk. The building was opened in 1973, and while it is a little antiquated by now, its charm was loved by many. In 2017, the building will be closed for renovation for a few years, the older parts as well as the depicted front entrance will be removed. This image is dedicated to the old CCH, to say thanks for everything and goodbye!

To the left is one of the CCC’s logos, the rocket Fairy Dust.

Like everything on this site, the image is released under a Creative Commons license. Here’s a “high-res” version (23800x11200 pixels, 200 dpi at 3 meters width), in case you want to print a poster of it or something.

]]>
Was ist das für 1 Room? 1room 2016-12-12T00:00:00+00:00 Sebastian Morr sebastian@morr.cc This was my contribution to the game jam Ludum Dare 37, and my third participation in a row. The theme was “One Room”, and we worked in a three-person team. We also had to do this half-remotely, as I was still in Japan at the time, but that worked out pretty well! This turned out to be the most popular Ludum Dare game I ever did by far!

This time, we created a puzzle game about placing furniture in rooms. One beta tester described it as “Sokoban meets IKEA”! Many reviewers told us the puzzles are rather hard, and it seems consistently to take about an hour to complete. We invite you to give it a go! :)

Again, we used the LÖVE engine. You can download the game from the Ludum Dare website!

Screenshot of "Was ist das für 1 Room?"

rnlf recorded a nice playthrough. He got stuck on one of the more tricky levels, but told us he came back to it later and completed the game. :)

Results

This game definitely got the best ratings of every Ludum Dare game I’ve done so far. We’re especially proud of the “Fun” rating, where we reached the 8th place!

]]>
Mem Advent Calendar advent 2011-12-01T00:00:00+00:00 Sebastian Morr sebastian@morr.cc http://advent.morr.cc ]]> 20,000 Pixels Into the Sea 20000-pixels 2016-08-29T00:00:00+00:00 Sebastian Morr sebastian@morr.cc My second participation in a game jam, Ludum Dare 36. This time, I was part of a two-person team, which was crazily fun! The theme was “Ancient Technology”, and we made a sailing game, which semi-realistic wind mechanics! You sail around, rescue people, and discover some secrets! If you ever wanted to learn how to sail against the wind, we invite you to give it a go!

We used the (awesome) 2D game engine LÖVE, which uses the Lua programming language. You can download the game from the Ludum Dare website!

Screenshot of "20,000 Pixels Into The Sea"

Alice kindly recorded a fun playthrough:

Results

Ludum Dare 36 was special because it was community-organized (instead of Mike doing all the work), and there were no ratings. This led to very constructive and in-depth feedback, which I liked!

]]>
Sand Child sand-child 2015-11-09T20:21:00+02:00 Sebastian Morr sebastian@morr.cc In late 2015, Twitter introduced the functionality to create polls. Jokingly, I wrote a “Choose Your Own Adventure”-style tweet and gave the readers two options on how the story should continue. When the series got more popular than I had imagined, I kept it running for over a month. Below, you can read all tweets which compose the story so far.

The motivation for this overview is that I’m starting a second season!

The story also inspired a piece of fan art by @lichtfeind:

Cover image by @lichtfeind

]]>
EU-Haiku eu-haiku 2016-04-29T18:25:00+02:00 Sebastian Morr sebastian@morr.cc A Pan-European haiku, containing one word in an official language from all EU countries:

Viens du trei four cúig.
Un dva tre vier pet seis hét.
Üks tnejn τρεις dört pięć.

I didn’t manage to get in Luxembourgish, but they also use French and German. Finnish has no one-syllable numbers :-D, but they also use Swedish.

Here is the breakdown:

1 – viens (Latvian)
2 – du (Lithuanian)
3 – trei (Romanian)
4 – four (English)
5 – cúig (Irish)

1 – un (French)
2 – dva (Czech/Slovak)
3 – tre (Italian/Danish/Swedish/Norwegian)
4 – vier (German/Dutch)
5 – pet (Bulgarian/Croatian/Slovenian)
6 – seis (Portuguese/Spanish)
7 – hét (Hungarian)

1 – üks (Estonian)
2 – tnejn (Maltese)
3 – τρεις (Greek)
4 – dört (Turkish)
5 – pięć (Polish)

If you want to try for yourself, there’s this handy list.

]]>
You're a Floor Lamp Now floor-lamp 2016-04-17T00:00:00+00:00 Sebastian Morr sebastian@morr.cc This is my contribution to Ludum Dare 35, the world’s largest game jam. You get a theme, and have 48 hours to create a game around this topic, from scratch, including artwork and sound effects. This was my first time ever I participated in such an event, and I don’t think it will be the last! :-)

This contest’s theme was “Shapeshift”, you can play the resulting game on the Ludum Dare website.

Screenshot of "You're a Floor Lamp Now"

Results

Reviewers praised the game as very original, and many enjoyed the sound effects ;) I was really proud of the “Humor” rating!

]]>
almightree almightree 2012-08-18T00:00:00+00:00 Sebastian Morr sebastian@morr.cc clear

  • almightree
    • What is it?
      • A Javascript plugin for jQuery >= 1.8.0
      • It makes large nested lists (like this one) easier to navigate
        • Yep, it powers this page!
      • Free Software (GPLv2+)
    • Features
      • Folding/Unfolding
        • Click on a node to fold or unfold it, if it has children
        • By default, only the first two layers are visible, the rest is folded
      • Real-time search
        • Type in the search bar at the top to filter the tree
        • The search term and the URL’s hash are kept in sync. Observe: #features
          • Consequence: A sane URL will bring up relevant material for a long time
            • Even when new content is added or the structure changes
        • Search is always case-insensitive
        • Special characters
          • /: separates terms, which are searched for one after the other
            • For example, if you want all occurences of “node” in this “Features” section, use #features/node
          • -: any non-alphanumeric stuff
        • Also supports regular expressions!
          • For example, you can search for crossword patterns: #c…s…d
          • Or, words with at least 12 characters? #[a-z]{12,}
      • Intelligent choice of the headline
        • The lowest node with more than one visible child will be displayed as the headline
        • It’s parents will be displayed as a breadcrumb navigation (example)
      • Zooming
        • Click the bullet point in front of a node to search for it’s content
          • In most cases, that means “focusing” on its content (a feature called “hoisting” in many outliners)
      • Undo/Redo
        • Searches performed by clicking (zooms, crumb navigation) are undoable by clicking your brower’s “back” button
    • Setup
      • Complete minimal example
      • Step 1: Take a nested HTML list, and tag it with a unique id, for example #almightree
        • Of course, you can (and should ;-) generate the lists using Markdown
      • Step 2: Download almightree and extract it somewhere
      • Step 3: Insert the following lines into your HTML:
        • <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
          • … if you haven’t included jQuery already
        • <script src="path/to/jquery.almightree.js"></script>
          • … to include the almightree plugin
        • <script>$(function(){ $("#almightree").almightree({search: "#almightree-search"}); });</script>
          • … to activate the plugin on the <ul> with the id #almightree
          • The search option makes the <input> with the specified id interactive
        • <link rel="stylesheet" href="path/to/almightree.css">
          • This is a default set of style rules
          • If you want to make changes, do it in an additional CSS file to keep the default CSS upgradable
      • Step 4: Report bugs and make feature requests! <3
    • History
]]>
LilyPond vs earworms lilypond-vs-earworms 2015-05-19T00:00:00+00:00 Sebastian Morr sebastian@morr.cc If an earworm gets too bad, I sometimes try to get rid of it by typesetting the melody in LilyPond, a high-quality music engraving program. Can you find out what all of these are? Solutions below.

These are the themes from “Path of The Wind” (from My Neighbor Totoro), the Sax Guy loop, and the Star Trek: The Next Generation intro.

]]>
sike mama sike-mama 2015-10-26T15:30:00+01:00 Sebastian Morr sebastian@morr.cc This is a translation of Andy Weir’s beautiful short story The Egg to a constructed language called Toki Pona, which has a vocabulary of only 120 words and a very simple grammar. Miv was so kind to patiently go over a preliminary version of this text and to fix all of my silly mistakes. Thanks!

Andy kindly allowed me to display the Toki Pona version side-by-side to the English original. For convenience, I also included a Toki Pona-only version below.

The Egg sike mama
   
You were on your way home tenpo pi tawa tomo sina la
when you died. sina moli.
   
It was a car accident. tan moli li pakala pi tomo tawa.
Nothing particularly remarkable, ona li suli ala.
but fatal nonetheless. taso sina moli.
You left behind a wife and two children. sina jo e meli e jan lili tu.
It was a painless death. sina pilin ala e pakala.
The EMTs tried their best to save you, jan sona sijelo li pali mute.
but to no avail. taso ona li weka ala e moli.
Your body was so utterly shattered moli ni li pona tawa sina tan ni:
you were better off, trust me. sijelo sina li pakala mute mute.
   
And that’s when you met me. tenpo ni la sina kama tawa mi.
   
“What… what happened?” You asked. “Where am I?” sina toki pi wile sona e ni: “seme… seme li kama? mi lon seme?”
   
“You died,” I said, matter-of-factly. mi toki lon e ni: “sina moli.”
No point in mincing words. mi wile toki e ijo lon.
   
“There was a… a truck “mi lukin e… e tomo tawa suli.
and it was skidding…” ona li tawa nasa…”
   
“Yup,” I said. mi toki e ni: “lon.”
   
“I… I died?” “mi… mi moli anu seme?”
   
“Yup. But don’t feel bad about it. mi toki e ni: “moli. taso o pilin ike ala tawa ni.
Everyone dies,” I said. jan ali li moli.”
   
You looked around. sina lukin sike.
There was nothingness. ma ala li lon ni.
Just you and me. sina taso en mi taso li lon.
“What is this place?” You asked. sina toki pi wile sona e ni: “ma ni li seme?
“Is this the afterlife?” ona li ma pi jan moli anu seme?”
   
“More or less,” I said. mi toki e ni: “ni li sama lon.”
   
“Are you god?” You asked. sina toki pi wile sona e ni: “sina jan sewi anu seme?”
   
“Yup,” I replied. “I’m God.” mi toki e ni: “lon. mi jan sewi.”
   
“My kids… my wife,” you said. sina toki e ni: “jan lili mi… meli mi…”
   
“What about them?” “seme pi ona mute li suli?”
   
“Will they be all right?” “ona mute li pilin pona anu seme?”
   
“That’s what I like to see,” I said. mi toki e ni: “ni li pona tawa mi.
“You just died tenpo pini lili la sina moli.
and your main concern is for your family. taso sina pilin pi kulupu mama sina.
That’s good stuff right there.” sina jan pona.”
   
You looked at me with fascination. sina lukin pi pilin wawa e mi.
To you, I didn’t look like God. mi lukin ala sama jan sewi tawa sina.
I just looked like some man. mi lukin sama jan ijo.
Or possibly a woman.  
Some vague authority figure, maybe. ken la mi lukin sama jan lawa.
More of a grammar school teacher mi lukin sama jan pi pana sona.
than the almighty. mi lukin ala sama jan pi wawa ali.
   
“Don’t worry,” I said. mi toki e ni: “o pilin ike ala.
“They’ll be fine. tenpo kama la ona mute li pilin pona.
Your kids will remember you jan lili sina li pilin e ni:
as perfect in every way. sina pona mute.
They didn’t have time ona li jo ala e tenpo tawa ni:
to grow contempt for you. ona li pilin ike tawa sina.
Your wife will cry on the outside, meli sina li pana e telo oko.
but will be secretly relieved. insa taso la ona li pilin pona.
To be fair, mi pilin e ni:
your marriage was falling apart. wan pi sina en ona li kama tu.
If it’s any consolation, ken la sina pilin pona tawa ni:
she’ll feel very guilty ona li pilin ike tawa ni:
for feeling relieved.” ona li pilin pona tawa weka sina.”
   
“Oh,” you said. sina toki e ni: “a.
“So what happens now? tenpo ni la seme li kama?
Do I go to heaven or hell or something?” mi tawa ma moli pona anu ma moli ike anu seme?”
   
“Neither,” I said. mi toki e ni: “ala.
“You’ll be reincarnated.” tenpo kama la mi sin e lon sina.”
   
“Ah,” you said. sina toki e ni: “a.
“So the Hindus were right,” jan pi nasin sewi Intu li sona pona.”
   
“All religions are right in their own way,” I said. mi toki e ni: “nasin sewi ali li sona pona.
“Walk with me.” o tawa poka mi.”
   
You followed along sina tawa poka mi.
as we strode through the void. mi tu li tawa lon ma ala.
“Where are we going?” “mi tu li tawa ma seme?”
   
“Nowhere in particular,” I said. mi toki e ni: “mi tu li tawa ma ijo.
“It’s just nice to walk while we talk.” taso mi tu li toki la tawa li pona tawa mi.”
   
“So what’s the point, then?” You asked. sina toki pi wile sona e ni: “sina pali e ni tan seme?
“When I get reborn, sina sin e lon mi la
I’ll just be a blank slate, right? mi kama jan pi sona ala anu seme?
A baby. mi jan lili.
So all my experiences and everything I did in this life ali pi lon mi en pali ali mi
won’t matter.” li suli ala.”
   
“Not so!” I said. mi toki e ni: “ona li suli!
“You have within you all the knowledge and experiences sina jo e sona
of all your past lives. pi lon ali sina lon insa sina.
You just don’t remember them right now.” taso tenpo ni la sina sona ala e ona.”
   
I stopped walking and took you by the shoulders. mi pini e tawa mi li pilin e sewi pi monsi sina.
“Your soul is more magnificent, beautiful, “sina ken ala sona e ali ni:
and gigantic than you can possibly imagine. kon sina li pona mute, li suli mute.
A human mind can only contain a tiny fraction sona jan li ken jo e ijo lili lili wan taso
of what you are. pi kon suli sina.
It’s like sticking your finger in a glass of water ni li sama ni: sina pana e palisa luka sina tawa poki tan ni:
to see if it’s hot or cold. sina wile sona e ni: telo li lete anu seli?
You put a tiny part of yourself into the vessel, sina pana e ijo lili lili wan sina tawa poki.
and when you bring it back out, sina weka e ona tan poki la
you’ve gained all the experiences it had. ona li pana e sona ali pi poki ni tawa sina.
   
“You’ve been in a human for the last 48 years, tenpo suli la sina lon sijelo jan.
so you haven’t stretched out yet and felt sina pilin ala e ni:
the rest of your immense consciousness. kon sina li suli mute.
If we hung out here for long enough, mi tu li awen lon ni la
you’d start remembering everything. sina kama sona sin e ali.
But there’s no point taso ni li pona ala:
to doing that between each life.” tenpo ali la mi tu li awen.”
   
“How many times have I been reincarnated, then?” “tenpo pi mute seme la sina sin e lon mi?”
   
“Oh lots. Lots and lots. mi toki e ni: “a. tenpo mute. tenpo mute mute.
An in to lots of different lives.” I said. mi pana sijelo pi jan ante mute.
“This time around, tenpo ni pi kama lon la
you’ll be a Chinese peasant girl sina meli lili Sonko li pali e kili e soweli
in 540 AD.” li lon tenpo pini pini.”
   
“Wait, what?” You stammered. sina toki pilin e ni: “a, seme?
“You’re sending me back in time?” sina pana e mi tawa tenpo pini anu seme?”
   
“Well, I guess technically. “a, ni li sama lon.
Time, as you know it, sina sona e tenpo.
only exists in your universe. taso tenpo li lon ma suli sina taso.
Things are different where I come from.” ma mi la ijo li ante.”
   
“Where you come from?” You said. sina toki e ni: “ma sina?”
   
“Oh sure,” I explained mi toki pona: “a, lon.
“I come from somewhere. mi kama tan ma ijo.
Somewhere else. mi kama tan ma ante.
And there are others like me. jan sewi ante li lon ma ni.
I know you’ll want to know mi sona e ni: sina wile sona e ni:
what it’s like there, ma ni li seme lukin?
but honestly you wouldn’t understand.” taso mi toki e ni tawa sina la sina ken ala sona e ni.”
   
“Oh,” you said, a little let down. sina toki pi ike lili e ni: “a.
“But wait. taso o kute e mi.
If I get reincarnated to other places in time, mi tawa tenpo ante la
I could have interacted with myself at some point.” ni li ken: tenpo ijo la mi toki tawa mi.”
   
“Sure. Happens all the time. “lon. tenpo mute la ni li kama.
And with both lives only aware of their own lifespan sina tu li sona e lon sina wan taso la
you don’t even know it’s happening.” sina sona ala e ni: sina toki tawa sina.”
   
“So what’s the point of it all?” “seme li tan ali?”
   
“Seriously?” I asked. “Seriously? mi toki e ni: “a, sina toki pi wile sona e ni?
You’re asking me for the meaning of life? sina wile sona e ni: seme li tan ali?
Isn’t that a little stereotypical?” jan ali li wile sona e ni!”
   
“Well it’s a reasonable question,” you persisted. sina toki pi awen pona e ni: “mi wile sona e tan!”
   
I looked you in the eye. mi lukin e oko sina.
“The meaning of life, “tan ali,
the reason I made this whole universe, en tan pi ma suli ni,
is for you to mature.” li ni: sina kama sona.
   
“You mean mankind? “sina toki e ijo pi jan ali anu seme?
You want us to mature?” sina wile ala wile e ni: mi mute li kama sona?”
   
“No, just you. “wile ala. mi wile e ni: sina taso kama sona.
I made this whole universe for you. mi pali e ma suli ni tawa sina taso.
With each new life you grow and mature sina lon sin la sina kama suli
and become a larger and greater intellect.” li kama sona.”
   
“Just me? What about everyone else?” “mi taso? sina pali ala pali e ma suli tawa jan ante?”
   
“There is no one else,” I said. mi toki e ni: “jan ante li lon ala.
“In this universe, there’s just you and me.” sina taso en mi taso li lon ma suli ni”
   
You stared blankly at me. sina lukin pi wawa ala e mi.
“But all the people on earth…” “taso jan ali pi lon ma sike…”
   
“All you. Different incarnations of you.” “jan ali li sina. jan ali li sina ante.”
   
“Wait. I’m everyone!?” “o awen! mi jan ali!?”
   
“Now you’re getting it,” mi toki e ni: “lon. tenpo ni la sina sona.”
I said, with a congratulatory slap on the back. mi pilin e sewi pi monsi sina tan ni: mi pilin pona.
   
“I’m every human being who ever lived?” “tenpo pini la mi jan ali ala jan ali?”
   
“Or who will ever live, yes.” “jan ali. tenpo kama kin la sina jan ali.”
   
“I’m Abraham Lincoln?” “mi jan Epapan Linkon tan seme?”
   
“And you’re John Wilkes Booth, too,” I added. mi toki e ni: “sina jan Jon Wike Pu kin.”
   
“I’m Hitler?” You said, appalled. sina toki ike e ni: “mi jan Itala tan seme?”
   
“And you’re the millions he killed.” “jan Itala li moli e jan mute mute mute. sina jan mute ni kin.”
   
“I’m Jesus?” “mi jan Jesu tan seme?”
   
“And you’re everyone who followed him.” “jan mute li tawa poka ona. sina jan mute ni kin.”
   
You fell silent. sina pini e toki sina.
   
“Every time you victimized someone,” I said, mi toki e ni: “sina pakala e jan la
“you were victimizing yourself. sina pakala e sina.
Every act of kindness you’ve done, sina pali e pona tawa jan la
you’ve done to yourself. sina pali e pona tawa sina.
Every happy and sad moment ever experienced by any human jan ali li pilin pona anu pilin ike la
was, or will be, experienced by you.” sina pilin sama.”
   
You thought for a long time. tenpo suli la sina pilin e ni.
   
“Why?” You asked me. “Why do all this?” sina toki pi wile sona e ni: “sina pali e ni tan seme?”
   
“Because someday, you will become like me. “tan li ni: tenpo ijo la sina kama sama mi.
Because that’s what you are. sina ni:
You’re one of my kind. sina sama mi.
You’re my child.” sina jan lili mi.”
   
“Whoa,” you said, incredulous. sina toki pilin e ni: “a!
“You mean I’m a god?” mi jan sewi anu seme?”
   
“No. Not yet. “tenpo ni la sina jan sewi ala.
You’re a fetus. sina jan sewi pi open ala.
You’re still growing. sina suli kin e sina.
Once you’ve lived every human life throughout all time, tenpo ali la sina jo lon pi jan ali.
you will have grown enough to be born.” ni li kama la sina suli li open e lon sina.”
   
“So the whole universe,” you said, “it’s just…” sina toki e ni: “ma suli ali li …”
   
“An egg.” I answered. mi toki kin e ni: “sike mama taso.
“Now it’s time for you to move on to your next life.” tenpo ni la mi wile e ni: mi sin e lon sina.”
   
And I sent you on your way. mi pana e sina tawa nasin sina.

Toki Pona-only version

sike mama

tenpo pi tawa tomo sina la sina moli.

tan moli li pakala pi tomo tawa. ona li suli ala. taso sina moli. sina jo e meli e jan lili tu. sina pilin ala e pakala. jan sona sijelo li pali mute. taso ona li weka ala e moli. moli ni li pona tawa sina tan ni: sijelo sina li pakala mute mute.

tenpo ni la sina kama tawa mi.

sina toki pi wile sona e ni: “seme… seme li kama? mi lon seme?”

mi toki lon e ni: “sina moli.” mi wile toki e ijo lon.

“mi lukin e… e tomo tawa suli. ona li tawa nasa…”

mi toki e ni: “lon.”

“mi… mi moli anu seme?”

mi toki e ni: “moli. taso o pilin ike ala tawa ni. jan ali li moli.”

sina lukin sike. ma ala li lon ni. sina taso en mi taso li lon. sina toki pi wile sona e ni: “ma ni li seme? ona li ma pi jan moli anu seme?”

mi toki e ni: “ni li sama lon.”

sina toki pi wile sona e ni: “sina jan sewi anu seme?”

mi toki e ni: “lon. mi jan sewi.”

sina toki e ni: “jan lili mi… meli mi…”

“seme pi ona mute li suli?”

“ona mute li pilin pona anu seme?”

mi toki e ni: “ni li pona tawa mi. tenpo pini lili la sina moli. taso sina pilin pi kulupu mama sina. sina jan pona.”

sina lukin pi pilin wawa e mi. mi lukin ala sama jan sewi tawa sina. mi lukin sama jan ijo. ken la mi lukin sama jan lawa. mi lukin sama jan pi pana sona. mi lukin ala sama jan pi wawa ali.

mi toki e ni: “o pilin ike ala. tenpo kama la ona mute li pilin pona. jan lili sina li pilin e ni: sina pona mute. ona li jo ala e tenpo tawa ni: ona li pilin ike tawa sina. meli sina li pana e telo oko. insa taso la ona li pilin pona. mi pilin e ni: wan pi sina en ona li kama tu. ken la sina pilin pona tawa ni: ona li pilin ike tawa ni: ona li pilin pona tawa weka sina.”

sina toki e ni: “a. tenpo ni la seme li kama? mi tawa ma moli pona anu ma moli ike anu seme?”

mi toki e ni: “ala. tenpo kama la mi sin e lon sina.”

sina toki e ni: “a. jan pi nasin sewi Intu li sona pona.”

mi toki e ni: “nasin sewi ali li sona pona. o tawa poka mi.”

sina tawa poka mi. mi tu li tawa lon ma ala. “mi tu li tawa ma seme?”

mi toki e ni: “mi tu li tawa ma ijo. taso mi tu li toki la tawa li pona tawa mi.”

sina toki pi wile sona e ni: “sina pali e ni tan seme? sina sin e lon mi la mi kama jan pi sona ala anu seme? mi jan lili. ali pi lon mi en pali ali mi li suli ala.”

mi toki e ni: “ona li suli! sina jo e sona pi lon ali sina lon insa sina. taso tenpo ni la sina sona ala e ona.”

mi pini e tawa mi li pilin e sewi pi monsi sina. “sina ken ala sona e ali ni: kon sina li pona mute, li suli mute. sona jan li ken jo e ijo lili lili wan taso pi kon suli sina. ni li sama ni: sina pana e palisa luka sina tawa poki tan ni: sina wile sona e ni: telo li lete anu seli? sina pana e ijo lili lili wan sina tawa poki. sina weka e ona tan poki la ona li pana e sona ali pi poki ni tawa sina.

tenpo suli la sina lon sijelo jan. sina pilin ala e ni: kon sina li suli mute. mi tu li awen lon ni la sina kama sona sin e ali. taso ni li pona ala: tenpo ali la mi tu li awen.”

“tenpo pi mute seme la sina sin e lon mi?”

mi toki e ni: “a. tenpo mute. tenpo mute mute. mi pana sijelo pi jan ante mute. tenpo ni pi kama lon la sina meli lili Sonko li pali e kili e soweli li lon tenpo pini pini.”

sina toki pilin e ni: “a, seme? sina pana e mi tawa tenpo pini anu seme?”

“a, ni li sama lon. sina sona e tenpo. taso tenpo li lon ma suli sina taso. ma mi la ijo li ante.”

sina toki e ni: “ma sina?”

mi toki pona: “a, lon. mi kama tan ma ijo. mi kama tan ma ante. jan sewi ante li lon ma ni. mi sona e ni: sina wile sona e ni: ma ni li seme lukin? taso mi toki e ni tawa sina la sina ken ala sona e ni.”

sina toki pi ike lili e ni: “a. taso o kute e mi. mi tawa tenpo ante la ni li ken: tenpo ijo la mi toki tawa mi.”

“lon. tenpo mute la ni li kama. sina tu li sona e lon sina wan taso la sina sona ala e ni: sina toki tawa sina.”

“seme li tan ali?”

mi toki e ni: “a, sina toki pi wile sona e ni? sina wile sona e ni: seme li tan ali? jan ali li wile sona e ni!”

sina toki pi awen pona e ni: “mi wile sona e tan!”

mi lukin e oko sina. “tan ali, en tan pi ma suli ni, li ni: sina kama sona.

“sina toki e ijo pi jan ali anu seme? sina wile ala wile e ni: mi mute li kama sona?”

“wile ala. mi wile e ni: sina taso kama sona. mi pali e ma suli ni tawa sina taso. sina lon sin la sina kama suli li kama sona.”

“mi taso? sina pali ala pali e ma suli tawa jan ante?”

mi toki e ni: “jan ante li lon ala. sina taso en mi taso li lon ma suli ni”

sina lukin pi wawa ala e mi. “taso jan ali pi lon ma sike…”

“jan ali li sina. jan ali li sina ante.”

“o awen! mi jan ali!?”

mi toki e ni: “lon. tenpo ni la sina sona.” mi pilin e sewi pi monsi sina tan ni: mi pilin pona.

“tenpo pini la mi jan ali ala jan ali?”

“jan ali. tenpo kama kin la sina jan ali.”

“mi jan Epapan Linkon tan seme?”

mi toki e ni: “sina jan Jon Wike Pu kin.”

sina toki ike e ni: “mi jan Itala tan seme?”

“jan Itala li moli e jan mute mute mute. sina jan mute ni kin.”

“mi jan Jesu tan seme?”

“jan mute li tawa poka ona. sina jan mute ni kin.”

sina pini e toki sina.

mi toki e ni: “sina pakala e jan la sina pakala e sina. sina pali e pona tawa jan la sina pali e pona tawa sina. jan ali li pilin pona anu pilin ike la sina pilin sama.”

tenpo suli la sina pilin e ni.

sina toki pi wile sona e ni: “sina pali e ni tan seme?”

“tan li ni: tenpo ijo la sina kama sama mi. sina ni: sina sama mi. sina jan lili mi.”

sina toki pilin e ni: “a! mi jan sewi anu seme?”

“tenpo ni la sina jan sewi ala. sina jan sewi pi open ala. sina suli kin e sina. tenpo ali la sina jo lon pi jan ali. ni li kama la sina suli li open e lon sina.”

sina toki e ni: “ma suli ali li …”

mi toki kin e ni: “sike mama taso. tenpo ni la mi wile e ni: mi sin e lon sina.”

mi pana e sina tawa nasin sina.

]]>
Stilles Wasser im Blindtest wassertest 2015-10-12T20:03:00+02:00 Sebastian Morr sebastian@morr.cc Blindtests sind toll! Ich habe in der Vergangenheit schon Blindtests von Vollmilchschokoladen, Colasorten und Koffeinbrausen gemacht. Vor einigen Wochen stieß ich dann auf diesen Tweet von dome, in dem es um die Verkostung von stillem Wasser ging. Ich beschloss, einen ähnlichen Test durchzuführen, denn ich hatte in Restaurants schon öfter unangenehm salziges Wasser serviert bekommen, und war dementsprechend neugierig darauf, wie groß die geschmacklichen Unterschiede sein würden.

Nach der Durchführung wurden Rufe nach Open Data laut, diese Dokumentation ist die direkte Folge.

Noch ein Hinweis: Klar, stilles Wasser in Flaschen ist teuer, produziert Plastikabfall und unterliegt in Deutschland weniger strengen Kontrollen als Leitungswasser. Wenn nichts dagegenspricht, bleibt bei Leitungswasser! Und nun viel Spaß beim Lesen!

Fast alle Flaschen Wasser, die am Test teilnahmen

Fragestellung

Welches stille Wasser ist das leckerste?

tl;dr

Der Preis von Wasser scheint grundsätzlich invers mit der Geschmacksneutralität zu korrelieren. Anders formuliert: Wenn man Wasser mag, das nach nichts schmeckt, kann man mit den Hausmarken der großen Supermärkte (welche momentan 13 Cent pro Liter kosten) nichts falsch machen.

Methode

  1. Die lokalen Supermärkte nach sämtlichen Marken stillen Wassers abgrasen, die sich finden lassen. In diesem Fall umfasste die Auswahl (tatsächlich, und unbeabsichtigterweise) 42 Sorten, plus das örtliche Trinkwasser.

    Einkaufswagen mit etlichen Flaschen Wasser

  2. Jede Wassersorte in einen eigenen Plastikbecher einschenken, auf dessen Unterseite der Name der Sorte steht.

    Abfüllen des Wassers in Plastikbecher

  3. Becher mischen, dann zu Buchführungszwecken seitlich auf jeden Becher eine fortlaufende Indexnummer schreiben.
  4. Prost! Für jede Wassersorte soviele sensorische Eindrücke wie gewünscht notieren (gustatorische, olfaktorische, …). Dabei auch die Indexnummer festhalten, und eine Gesamtnote vergeben. Hinweis: Bei 43 Bechern á 200 ml ergibt sich eine Gesamtmenge von 8,6 Litern Wasser, die, sollte man sie auf einmal zu sich nehmen, definitiv lebensbedrohlich sein kann. Teamwork wird daher empfohlen. In diesem Fall oblag die Durchführung des Tests zwei Personen, Person A und Person B. Person A verwendete ein Schulnotensystem von 0 bis 15 Punkten, während Person B auf einer Skala von -3 (doppelplusschlecht) bis 3 (doppelplusgut) bewertete.

    43 Plastikbecher mit Laptop

  5. Optional: Das obere Quartil der Sorten nochmals durchgehen und auf einer höher angesetzten Skala zu differezieren versuchen.
  6. Die Auflösung. In der Bewertungstabelle die Indexnummern den Wassersorten zuordnen. Folgenreiche Schlüsse ziehen und die bisherigen Lebensentscheidungen kritisch hinterfragen.

Resultate

Folgende Liste ist nach einer gemittelten Gesamtbewertung sortiert, die sich als Durchschnitt aus den Bewertungen von Person A und Person B berechnet. Zur Erinnerung: Person A verwendete eine Skala von 0 bis 15, Person B eine Skala von -3 bis 3, die Gesamtbewertung ist in Prozent zwischen 0 und 100 angegeben. In sämtlichen Skalen sind höhere Werte besser.

Sämtliche Ergebnisse sind außerdem auch im CSV-Format verfügbar.

  • Christinen Carat (von Real, 0.54 EUR/L): 97%

    • A: Ganz leicht trocken, sonst nix. (14)
    • B: Nix! (3)
  • Surf (von Norma, 0.13 EUR/L): 95%

    • A: Sehr schön neutral, nicht trocken, richtig gut! (13.5)
    • B: Schmeckt nach nix, frisch (3)
  • Nestle Pure Life (von Real, 0.33 EUR/L): 93%

    • A: Sehr schön neutral (13)
    • B: Bisschen kratzig, ansonsten lecker und neutral (3)
  • Elitess Marinius-Quelle (von Penny, 0.13 EUR/L): 87%

    • A: Alte Pizza, erfrischend-neutral, nicht ganz geschmacklos, mysteriös (11)
    • B: Süß, weich, rund, gut (3)
  • Quellbrunn Claudius-Quelle (von Aldi, 0.13 EUR/L): 85%

    • A: Gar nichts, ganz bisschen trocken (13)
    • B: Frisch und weich, ganz bisschen süß (2)
  • Fiji (von Edeka, 3.38 EUR/L): 83%

    (Hinweis: Dieses Getränk hat einen so starken Geschmack, dass es eigentlich nicht als “stilles Wasser” bezeichnet werden kann. Die Bewertungen sind eher außerhalb der Reihe zu verstehen.)

    • A: Wie Alkohol, aber ohne scharf im Hals zu sein. Igitt. Richtig süß. Nicht für jeden Tag. Lustig. (15)
    • B: Plastik? Gummi? Starker Eigengeschmack, eingeweichtes Gummibärchen (1)
  • babylove (von dm, 1.67 EUR/L): 83%

    • A: Bisschen Geschmack. Eigentlich ganz lecker (10)
    • B: Rein und neutral und weich (3)
  • ja! (von Sky, 0.13 EUR/L): 83%

    • A: Bisschen metallisch (10)
    • B: Wirklich NIX! Erfrischend und weich! Wie ein Quellfluss durch eine grüße Wiese! (3)
  • Apollinaris Vio (von Penny, 0.33 EUR/L): 83%

    • A: Schön neutral, “aber jo weiß ich auch nicht” (10)
    • B: Nix. Nix ist gut. (3)
  • Vitalbrunnen Naturalis (von Netto, 0.13 EUR/L): 82%

    • A: Gar nix (12)
    • B: Ganz leicht metallisch, sonst sehr neutral (2)
  • Gut und Günstig (von Edeka, 0.13 EUR/L): 80%

    • A: Erfrischend. Neutral. Nix. (9)
    • B: Etwas säuerlich, aber sonst nix (3)
  • Vilsa (von Real, 0.46 EUR/L): 78%

    • A: Sauer, trocken, insgesamt neutral und frisch (11)
    • B: Etwas sauer, sonst gut (2)
  • Saskia (von Lidl, 0.13 EUR/L): 75%

    • A: Neutral, bisschen süßlich, gut! (10)
    • B: Bisschen süßlich, nicht besonders erfrischend (2)
  • Unser Norden (von Sky, 0.39 EUR/L): 75%

    • A: Nix. (10)
    • B: Ganz leicht sauer, sonst lecker und weich (2)
  • Urstromtaler Naturell (von Netto, 0.33 EUR/L): 75%

    • A: Charakterlos (10)
    • B: Ziemlich langweilig, neutral (2)
  • Black Forest (von Real, 0.59 EUR/L): 73%

    • A: Erfrischend, neutral (12)
    • B: Sehr süß! Weich (1)
  • Vittel (von Penny, 0.39 EUR/L): 73%

    • A: Sehr sauer (7)
    • B: Ziemlich ziemlich neutral, ganz leicht angenehm säuerlich (3)
  • Sawell (von Netto, 0.25 EUR/L): 73%

    • A: Bisschen süß, bisschen trocken (7)
    • B: Erfrischend, lecker? Gaaanz bisschen süß? (3)
  • Tip (von Real, 0.13 EUR/L): 72%

    • A: Erfrischend, bisschen sauer (9)
    • B: Frisch, leicht metallig aber gar nicht schlecht. Weich. (2)
  • Bismarck (von Real, 0.65 EUR/L): 70%

    • A: Vielleicht süßlicher Geschmack, nicht so erfrischend (11)
    • B: Vorgeschmack süß, Nachgeschmack etwas sauer, interessant? (1)
  • Volvic (von Real, 0.59 EUR/L): 65%

    • A: Pieksig auf der Zunge, unangenehm, schon neutral (7)
    • B: Süß und abgekocht, nichts auf Dauer, aber so ganz erträglich (2)
  • Adelholzener (von Real, 0.65 EUR/L): 62%

    • A: Schwach metallisch, nicht erfrischend (6)
    • B: Süß und recht neutral. Leiiicht oszillierend in alle Richtungen. Spannend. (2)
  • Harzer Bergbrunnen extra still (von Real Getränkemarkt, 0.26 EUR/L): 57%

    • A: Geschmacksneutral, säuerlich (7)
    • B: Etwas scharf, erfrischend, etwas sauer, sonst ohne Eigenschaften (1)
  • Magnus (von Edeka, 0.56 EUR/L): 57%

    • A: Hart, Kalk. Wie das Schwimmbad bei Oma. (7)
    • B: Etwas staubig, kratzt im Hals, sauer Nachgeschmack, sonst angenehm neutral (1)
  • Frische Brise Reinbecker Klosterquelle (von Sky, 0.25 EUR/L): 48%

    • A: Bisschen metallisch (7)
    • B: Leicht abgestanden, metallisch (0)
  • Leitungswasser (aus Schleswig-Holstein, 0.00165 EUR/L): 42%

    • A: Erst neutral, Nachgeschmack RICHTIG EKELIG (0)
    • B: Ein Hauch süß, Baby-Wasser (2)
  • Contrex (von Penny, 0.49 EUR/L): 37%

    • A: Sauer und Stumpf. Könnte nicht viel von trinken. (6)
    • B: Sauer, staubig, schlecht. (-1)
  • Aqua Nordic (von Edeka, 0.33 EUR/L): 37%

    • A: Salzig, metallisch (6)
    • B: Langweilig, neutral, “hart”, Nachgeschmack ist metallisch (-1)
  • evian (von Real, 0.59 EUR/L): 33%

    • A: Bisschen metallisch und trocken, sonst kein Charakter (5)
    • B: Leicht metallisch, kratzig (-1)
  • Bleib Gesund (von Rossmann, 0.69 EUR/L): 33%

    • A: Bisschen trocken, nicht erfrischend, bisschen süßlich. Nicht gut als Wasser. (5)
    • B: Nicht erfrischend, etwas salzig, staubig (-1)
  • Vitrex (von Edeka, 0.33 EUR/L): 32%

    • A: Ih! Sauer, scharf, schmeckt mir nicht (2)
    • B: Staubig, etwas sauer, etwas metallisch (0)
  • Real Quality (von Real, 0.23 EUR/L): 28%

    • A: Sauer, trocken, abgestanden, nicht gut (6)
    • B: Bisschen sauer-metallisch, abgestanden (-2)
  • Aqua Mia (von REWE, 0.33 EUR/L): 28%

    • A: Richtig staubig (1)
    • B: Abgestanden, etwas süß. (0)
  • Quellbrunn Werretaler-Quelle (von Aldi, 0.22 EUR/L): 27%

    • A: Irgendwie süß, schwebt auf der Zunge. Nicht erfrischend genug. (8)
    • B: Ekelig metallisch, bah. Bisschen süß. (-3)
  • Harzer Bergbrunnen still (von Real Getränkemarkt, 0.48 EUR/L): 27%

    • A: Sauer halt (3)
    • B: Stark sauer! Aber nicht uninteressant! (-1)
  • Carolinen natur-elle (von Real, 0.46 EUR/L): 22%

    • A: Total salzig (4)
    • B: Rostnagel, Nachgeschmack ekelig (-2)
  • Extaler Mineralquell (von Real, 0.34 EUR/L): 22%

    • A: Sehr neutral, ganz bisschen säuerlich, bisschen trocken, pritzelt (4)
    • B: Leicht sauer, stark metallisch (-2)
  • Hella (von Real, 0.51 EUR/L): 22%

    • A: Staubig muffig, aber nicht doll (4)
    • B: Stark metallisch, langweilig? (-2)
  • Vöslauer (von dm, 0.65 EUR/L): 18%

    • A: Nicht viel von, metallisch (3)
    • B: Unangenehm metallisch (-2)
  • Christinen Naturelle (von dm, 1.10 EUR/L): 15%

    • A: Saures abgestandenes Mineralwasser. Kohlensäure-Geschmack. (2)
    • B: Sauer mineralwasserig. Bäh. (-2)
  • Gerolsteiner (von Edeka, 0.59 EUR/L): 12%

    • A: Richtig sauer (1)
    • B: Etwas metallisch, etwas sauer (-2)
  • Carolinen (von Real, 0.60 EUR/L): 3%

    • A: Oh! Süüüüß!! Ne, das mag ich nicht in großer Menge. Trocken. (1)
    • B: Ganz starker Eigengeschmack, salzig und metallisch (-3)
  • Staatl. Fachingen (von Real Getränkemarkt, 0.96 EUR/L): (unbewertet)

    (Hinweis: Dieses Getränk war beim Probieren eindeutig kohlensäurehaltig und wurde deshalb nicht bewertet. Obwohl das Etikett es als “still” auszeichnet, enthält es laut Homepage 1.5 g Kohlensäure pro Liter.)

Auswertung

Offenbar war das Geschmacksideal beider Testpersonen möglichst geschmacksneutrales Wasser. Saure und metallische Geschmacksnoten wurden deutlich abgelehnt, aber auch Sorten mit süßen Unternoten landeten eher im oberen Mittelfeld.

Auffällig ist, dass sämtliche Hausmarken der großen Supermärkte, die momentan für 13 Cent/L gehandelt werden (Gut und Günstig von Edeka, Elitess von Penny, Quellbrunn von Aldi, ja! von REWE, Saskia von Lidl, Tip von Real, Surf von Norma, Vitalbrunnen von Netto) alle mit Gesamtnoten von mindestens 72% abschlossen.

Auch im Allgemeinen ist im Verhältnis von Preis und Gesamtnote ein Abwärtstrend zu erkennen, wenn man eine Trendlinie über die Daten legt (die preislichen Ausreißer Fiji und babylove werden in diesem Diagramm nicht berücksichtigt):

Preis vs Gesamtnote

Es gab außerdem wenige Sorten, die von den Testpersonen grundsätzlich anders bewertet wurden. Ausnahmen umfassen das Leitungswasser, das von Person A mit 0 und von Person B mit 2 Punkten bewertet wurde, sowie das Quellbrunn Werretaler-Quelle, das von Person A mit 8 und von Person B mit -3 Punkten bewertet wurde:

Note A vs Note B

Methodenkritik

Zuletzt noch einige Anmerkungen, welche die Testdurchführung betreffen, und die bei der Nachahmung dieses Versuches hilfreich sein sollen.

Plastikbecher sind dünnwandig [citation needed]. Bei dieser Durchführung wurde nicht bedacht, dass man potentiell in der Lage sein würde, die auf dem Boden stehende Sortenbezeichnung beim Trinken (spiegelbildlich) zu lesen. Es wird eine weitere Indirektionsstufe in Schritt 2 empfohlen: Eine Tabelle der Sorten aufstellen, diese zufällig sortieren, ihnen jeweils eine Nummer zuordnen, und diese dann vor dem Befüllen auf den Boden schreiben. Bei dieser Durchführung wurde dieser Defekt durch die Technik “nicht Hingucken” ausgeglichen.

Die Geschmacksbeurteilung wurde bei dieser Durchführung unstrukturiert in einem Freitextfeld durchgeführt, da uns zu Beginn des Tests keine Kriterienliste vorlag, mithilfe derer die Bewertung strukturiert hätte werden können. Nach Abschluss des Tests empfehlen wir, folgende geschmackliche Aspekte getrennt festzuhalten, um eine differenziertere Beurteilung zu erlauben:

  • Säure
  • Süße
  • Salzgehalt
  • Metallgehalt
  • Härte
  • Sonstige Geschmacksnoten

Ganz sicher fand bei dieser Durchführung durch die gemeinsame, gleichzeitige Verkostung eine gegenseitige Beeinflussung der Testpersonen statt. Dies wurde hier bewusst in Kauf genommen. Wem exakte, unabhängige Ergebnisse wichtiger sind als die Gestaltung des Tests als soziales Event, dem sei statt einer parallelen Verkostung eine serielle empfohlen.

Schlussworte

Wir wären sehr daran interessiert, wie reproduzierbar unsere Ergebnisse sind. Insofern ergeht der Aufruf an alle Leser, diesen Blindtest – gegebenenfalls in kleinerem Stil, mit bekannten oder leicht zugänglichen Wassersorten – zu wiederholen!

Bei der bisherigen Auswertung haben wir uns auf die rein subjektiven Geschmacksbewertungen beschränkt. Eine weitergehende Inbezugsetzung der Geschmacksurteile und der Mineralstoffkonzentrationen in den Wassersorten wäre interessant und ist in Planung.

Schließlich an dieser Stelle nochmals herzlichen Dank an die nicht namentlich gennante Testperson für tatkräftigen und moralischen Beistand und die professionelle wissenschaftliche Betreuung.

]]>
Exact Minkowski Sums of Polygons With Holes exact-ms-of-pwhs 2015-02-22T00:00:00+00:00 Sebastian Morr sebastian@morr.cc This is the first “real” scientific paper which I coauthored. It’s about the design and implementation of an algorithm which computes the so called Minkowski sum of two polygons.

I like to explain the topic like this: Imagine you have two stamps of arbitrary shape. First, you stamp one of them on paper, and then, you mark a point on the second one and stamp all over the other one, so that the point is inside of the first stamp. We’re interested in the shape of the result, and in this paper, we’re investigating an algorithm which computes this exactly and fast. It’s the first exact implementation that is able to compute the Minkowski sum of polygons with holes. We also show that, if the polygons contain holes, you can always “fill up” all holes in one of them without chaning the result, and use that property to speed up the algorithm even more in some cases.

You can find a preprint of the paper on arXiv.org (linked below). I also presented the paper at EuroCG 2015 and ESA 2015:

Preprint at arXiv.org Talk at ESA 2015

The resulting implementation has become part of the open source Computational Geometry Algorithms Library, starting from version 4.7.

]]>
Quote collection blaquotes 2015-09-11T19:33:00+02:00 Sebastian Morr sebastian@morr.cc Some quotes, collected over the course of many years. You can find some german ones here.

Time flies like a river.
Fruit flies like a banana.
unknown

Time is a great teacher, but unfortunately it kills all its pupils…
Louis Hector Berlioz

If the bee disappears from the surface of the earth, man would have no more than four years to live. No more bees, no more pollination, no more plants, no more man.
attributed to Albert Einstein

A clever person solves a problem. A wise person avoids it.
Albert Einstein

Give a man a fish, and you feed him for a day. Teach a man to fish, and you feed him for a lifetime.
unknown

Build a man a fire, and he’ll be warm for a day. Set a man on fire, and he’ll be warm for the rest of his life.
Terry Pratchett

The AI does not hate you, nor does it love you, but you are made out of atoms which it can use for something else.
Eliezer Yudkowski

Friends come and go, but enemies accumulate.
Thomas Jones

It seems that perfection is attained not when there is nothing more to add, but when there is nothing left to remove.
Antoine de Saint Exupéry

Choose a job you love, and you will never have to work a day in your life.
Confucius

With sufficient thrust, pigs fly just fine.
RFC 1925

I will not apologize for art!
Caaaaaaarl from “Lamas with hats”

I am a creationist. I believe man created God.
via soup.io

Give me six hours to chop down a tree and I will spend the first four sharpening the axe.
Abraham Lincoln

Give a man a gun and he can rob a bank. Give a man a bank and he can rob the world.
Graffiti

If you torture the data long enough, it will confess
Ronald Coase

Forget the money, because if you say that getting the money is the most important thing, you will spend your life completely wasting your time. You’ll be doing things you don’t like doing in order to go on living there just to do things you don’t like doing. Which is stupid. Better to have a short life that is full of what you like doing than a long life spent in a miserable way.
Alan Watts

Remember, if you succeed in everything you try in life, you’re living below your full potential and you should take up more difficult or daring things.
Eliezer Yudkowsky

Every time you spend money, you’re casting a vote for the kind of world you want.
Anna Lappe

As long as I feel that I can stand up and leave here, anytime I please… I can stay.
Mimi from “Real Humans”

If you love a flower, don’t pick it up. Because if you pick it up, it dies and it ceases to be what you love. So if you love a flower, let it be. Love is not about possession. Love is about appreciation.
Osho

If you wish to make an apple pie from scratch, you must first invent the universe.
Carl Sagan

Believing this statement will make you happier.
Ryan Lortie

Every word in this sentence is a gross misspelling of the word “tomato.”
Douglas Hofstadter

Every picture of you is when you were younger.
Mitch Hedburg

A clean house is a sign of a wasted life
unknown

For years, I was one of the extremely shy women. I don’t think I ever asked a questions after a talk during my PhD. Not asking a question for fear of looking stupid means giving my own ego a very high priority. A higher priority than a potential learning experience for myself, the audience and the speaker.
zinemin

It really is true that you become an average of the people you spend the most time with.
Sam Altman

Everyone in life has a purpose, even if it’s to serve as a bad example.
Carroll Bryant

Life isn’t about waiting for the rain to pass, it’s about learning how to dance in the rain.
Vivian Greene

Then there is no sign of movement; the stars stared back, unblinking, indifferent, unobscured by flying friends.
Harry Potter and the Chain of Markov

]]>
Quote collection quotes 2015-09-11T19:33:00+02:00 Sebastian Morr sebastian@morr.cc Some quotes, collected over the course of many years. You can find some german ones here.

Time flies like a river.
Fruit flies like a banana.
unknown

Time is a great teacher, but unfortunately it kills all its pupils…
Louis Hector Berlioz

If the bee disappears from the surface of the earth, man would have no more than four years to live. No more bees, no more pollination, no more plants, no more man.
attributed to Albert Einstein

A clever person solves a problem. A wise person avoids it.
Albert Einstein

Give a man a fish, and you feed him for a day. Teach a man to fish, and you feed him for a lifetime.
unknown

Build a man a fire, and he’ll be warm for a day. Set a man on fire, and he’ll be warm for the rest of his life.
Terry Pratchett

The AI does not hate you, nor does it love you, but you are made out of atoms which it can use for something else.
Eliezer Yudkowski

Friends come and go, but enemies accumulate.
Thomas Jones

It seems that perfection is attained not when there is nothing more to add, but when there is nothing left to remove.
Antoine de Saint Exupéry

Choose a job you love, and you will never have to work a day in your life.
Confucius

With sufficient thrust, pigs fly just fine.
RFC 1925

I will not apologize for art!
Caaaaaaarl from “Lamas with hats”

I am a creationist. I believe man created God.
via soup.io

Give me six hours to chop down a tree and I will spend the first four sharpening the axe.
Abraham Lincoln

Give a man a gun and he can rob a bank. Give a man a bank and he can rob the world.
Graffiti

If you torture the data long enough, it will confess
Ronald Coase

Forget the money, because if you say that getting the money is the most important thing, you will spend your life completely wasting your time. You’ll be doing things you don’t like doing in order to go on living there just to do things you don’t like doing. Which is stupid. Better to have a short life that is full of what you like doing than a long life spent in a miserable way.
Alan Watts

Remember, if you succeed in everything you try in life, you’re living below your full potential and you should take up more difficult or daring things.
Eliezer Yudkowsky

Every time you spend money, you’re casting a vote for the kind of world you want.
Anna Lappe

As long as I feel that I can stand up and leave here, anytime I please… I can stay.
Mimi from “Real Humans”

If you love a flower, don’t pick it up. Because if you pick it up, it dies and it ceases to be what you love. So if you love a flower, let it be. Love is not about possession. Love is about appreciation.
Osho

If you wish to make an apple pie from scratch, you must first invent the universe.
Carl Sagan

Believing this statement will make you happier.
Ryan Lortie

Every word in this sentence is a gross misspelling of the word “tomato.”
Douglas Hofstadter

Every picture of you is when you were younger.
Mitch Hedburg

A clean house is a sign of a wasted life
unknown

For years, I was one of the extremely shy women. I don’t think I ever asked a questions after a talk during my PhD. Not asking a question for fear of looking stupid means giving my own ego a very high priority. A higher priority than a potential learning experience for myself, the audience and the speaker.
zinemin

It really is true that you become an average of the people you spend the most time with.
Sam Altman

Everyone in life has a purpose, even if it’s to serve as a bad example.
Carroll Bryant

Life isn’t about waiting for the rain to pass, it’s about learning how to dance in the rain.
Vivian Greene

Design is removal of the irrelevant.
@pyrtsa

]]>
Zitat-Sammlung zitate 2015-09-11T19:33:00+02:00 Sebastian Morr sebastian@morr.cc Ein paar über viele Jahre gesammelte Zitate. Die englischen findest du hier.

Für den, der hinschaut
Sehen die Berge
Jeden Tag anders aus
Zufalls-Gedichts-Generator

Nicht durch Zorn, sondern durch Lachen tötet man.
Nietzsche

Der Mensch sollte sich immer als ein Experiment der Natur betrachten.
Friedrich Hebbel

Wenn du etwas liebst, lass es frei. Kommt es zurück, gehört es dir - für immer.
Unbekannt

Ich habe keine Lösung, aber ich bewundere das Problem.
Unbekannt

Wer wissen will, wie das Wetter ist, sollte aus dem Fenster sehen. Wer wissen will, wie morgen das Wetter ist, sollte morgen aus dem Fenster sehen.
Max Goldt

Wer fragt, ist ein Narr für fünf Minuten. Wer nicht fragt, bleibt ein Narr für immer.
aus China

Planung ersetzt Zufall durch Irrtum
Einstein zugeschrieben

Man kann einen Menschen mit guten Saucen ebenso unter die Erde bringen wie mit Strychnin, nur dauert es länger.
Christiaan Barnard

Ein Bauch sieht von oben am dicksten aus.
Sebastian Morr

Ein reicher Mann ist oft nur ein armer Mann mit sehr viel Geld.
Aristoteles Onassis

Mit der Zeit wird aus Gras Milch.
aus China

Jeder ist nützlich, und sei es nur als schlechtes Beispiel.
unbekannt

]]>
Dozentensprüche dozenten-sprueche 2011-07-17T00:00:00+00:00 Sebastian Morr sebastian@morr.cc Gesammelte Dozentensprüche aus 5 Jahren Informatikstudium an der TU Braunschweig.

Marten

  • “Nech?”
  • “Das ist natürlich klar.”
  • “Vektoren in der Schule als Kohärenzklassen von Pfeilen darzustellen, sollte man unter Strafe stellen!”
  • “Ihre Nasenspitzen sind in R³!”
  • “Das Lambda sieht aus wie ne Giraffe”
  • “Wenn Sie in die Nähe der Sonne kommen, gilt die Euklidische Geometrie nicht mehr. Da müssen Sie aufpassen. Abgesehen davon, dass es sehr heiß wird.”
  • “Wir sind ein freies Land! Sie können auch durch die Klausur fallen, ohne, dass Sie eingesperrt werden.”
  • (Warnt vor überflüssigen Zeilenvertauschungen) “Das ist wie beim Fussball: Man rechnet und rechnet und kriegt nichts raus!”
  • (Zwei Studenten verlassen den Hörsaal) “Dies ist ein sittenfreies Land.”
  • (Ergänzt etwas im Skript) “Das fiel mir heute in der Badewanne ein. Ich wär fast abgesoffen.”
  • (Steht vor sechs vollgeschriebenen Tafeln) “Im Grunde habe ich bisher gar nichts gemacht.”
  • “In der Bronzezeit, als ich zur Schule gegangen bin…”
  • “Auch im großen Zoo von Hannover gibt es keine sqrt(2) zu betrachten.”
  • (Weist darauf hin, dass er die Definition der natürlichen Zahlen eigentlich nicht “Def 1.9” nennen dürfte, da die 9 noch nicht eingeführt ist.)
  • “Bei aller Diskussion, ob der Islam zu Deutschland gehört, wollen wir die römischen Zahlen wieder einführen?”
  • (Empfiehlt Fachliteratur) “Wenn Sie die anfassen, sollten Sie lieber Handschuhe anziehen, damit Sie sich nicht anstecken.”
  • “Newton war ein Arschloch. Aber ein Arschloch, dass wir nach wie vor lieben und verehren.” (Später) “Er hat an der Börse viel Geld verloren, als Mathematiker, darüber kann man eher lachen.”

Fingscheidt

  • (Thema: Widerstände) “Dicke” (zeigt auf sich) “geben Wärme schneller ab”
  • “Das kann ich umformeln”
  • “Die Theoremtabelle ist nicht die Rücktransformationstabelle. Die Theoremtabelle ist die Theoremtabelle!”
  • “Die Aufgabe ist beendet, jetzt gibts noch ein bisschen was zu lernen.”

Opolka

  • (Schaut auf seinen Zettel) “Ich glaube, ‘(gamma, b)’ soll das heißen…”
  • “Wir sollen ja multimedial arbeiten, ich mach das jetzt mal” (holt rote Kreide)
  • “Wenn man verstanden hat, dass der Weihnachtsmann der Äquivalenzklasse aller Männer mit rotem Mantel und weißem Bart entspricht, kann man wieder gut an ihn glauben”
  • “An die Abstraktion gewöhnt man sich ziemlich schnell.” (Hebt den Zeigefinger) “Man kann sogar süchtig werden!”
  • (Beispiel fürs Public-Key-Verfahren) “Wir nehmen als erstes zwei große Primzahlen, nämlich 3 und 5…”
  • “Der Informationsverlust bei Stille Post entspricht der Entropie in der Wärmelehre.”
  • “Irgendwelche Leute sammeln ja online Aussagen von Dozenten, und ich sage demnach immer…” (dann der Spruch mit dem Weihnachtsmann)
  • “Nehmen Sie eine Menge aus zwei Äpfeln und eine aus zwei Birnen. Die Mengen sind disjunkt. Hm, die Menge der Äpfel ist endlich. Gibt es mehr Äpfel als Birnen? Schlechtes Beispiel, nehmen Sie halt irgendwas, was geht.”
  • “Wir nehmen… Also… Ach, ich schreibs mal auf.”

Koslowski

  • “Turingmaschinen können soviel wie Ihr Handy. Naja, Telefonieren nicht.”
  • “Das klappt natürlich nur, weil wir vollständig und deterministisch sind!”
  • “Reguläre Ausdrücke sind plattgehauene Bäume.”
  • “Es gibt für Variablen zwei Möglichkeiten, überflüssig zu sein”
  • “Sobald ein Durchschnitt ins Spiel kommt, bin ich im kontextfreien Fall verloren.”
  • “Hier dürfen Sie mal das Wort ‘trivial’ benutzen. Das ist Ihnen ja sonst bis zum Master verboten.”
  • “Hier brauchen wir eine trusted authority – ein Oxymoron ersten Grades…”
  • “Wo kriegen wir denn unsere Primzahlen her? Das ‘große Buch der Primzahlen’ gibt’s leider nicht.”
  • “Was ist das hier? Der Satz ist mir zu lang.”
  • “Der Angreifer heißt U, für ‘Uschi’ – die Folien sind noch aus seeligen Zensursula-Zeiten.”
  • “Ich hab jetzt Bob wieder rechts hingeschrieben, wie sich das gehört.”
  • (Terminfindung) “Also, 8-Uhr-Sachen mach ich nicht” (Streicht Zeile in Terminplan durch)
  • “Einen Moment Geduld. Das kann nur endlich lange dauern.”
  • “Wenn ich einen Körper habe, kann ich darüber Polynome bilden.”

Fekete

  • “Bitte tragen Sie sich in den Email-Verteiler ein. Wenn Sie keine Emailadresse haben, kommen Sie bitte zu mir nach vorne, dann erkläre ich Ihnen, wie Sie das Studienfach wechseln.”
  • “c_1g und c_2g nehmen f in die Zange und führen es in die Unendlichkeit ab!”
  • (Nennt Objekte x_1, … , x_n. Sagt stolz:) “Das x soll andeuten, dass da noch was unbekannt ist!”
  • (Technische Probleme) “Wenn Kreide abstürzt, dann hebt man sie einfach auf!”
  • (Lösung von NP-vollständigen Problemen) “Alternativ können Sie auch auf Ihr Glück vertrauen. Sind Wirtschaftsinformatiker anwesend?”
  • (Thema: Wiedersprüchliche Ziele beim Algorithmenentwurf) “Das ist so wie mit den ehrlichen, hart arbeitenden Investmentbankern. Davon können auch nur zwei Dinge gleichzeitig erfüllt sein.”

Bode

  • “Sozusagen.”
  • (Hört falsche Lösungsidee) “Nee, da hätte ich Kopfschmerzen”
  • (Hausaufgabenrückgabe, auf dem Tisch liegen die Mappen mit den Hausaufgaben:) “Ich hab ALLES dabei, was ich habe!”

Biegel

  • (Thema: Powerpoint-Präsentationen) “Bis man das vorbereitet hat, bin ich schon wieder gestorben.”
  • (Um halb Acht) “Steht die Uhr?” (Zustimmendes Murmeln) “Ja, es war doch eben schon halb acht! Na, zehn Minuten haben wir noch.”

Adamek

  • “Genug Mathematik, kommen wir zurück zur Logik.”
  • “Die natürliche Deduktion kann ein Programm leicht nachvollziehen. Aber wenn Sie schreiben ‘de-Morgansche Regel’ kratzt sich der Computer am Kopf.”

Reineke

  • Student: “Was heißt das da an der Tafel?” - Reineke: “Eins hoch Dreck!”
  • (Erklärt Lösung umgangssprachlich, so dass sie jeder verstanden hat) “Und das schreibe ich jetzt möglichst kompliziert hin.”
  • (Schreibt:) “Es ist leicht einzusehen…” (grinst selbst)
  • “Für wen Briefmarkensammeln zu aufregend ist, kann es sich ja zum Hobby machen, übers Wochenende Komplexitätsklassen zu besuchen.”

Goltze

  • “Betriebssysteme sollten nach Möglichkeit nicht terminieren.”

Lieske

  • “Wenn Sie in der Klausur auf das Ergebnis kommen, dass die Wasseraustrittsgeschwindigkeit am Schlauch 100 m/s beträgt, sollten Sie nochmal nachrechnen. Denn sonst sind da keine Blumen mehr.”

Sonar

  • “Die Römer waren die Amerikaner des Altertums!”
  • “Menschen können 40 Tage ohne Nahrung auskommen - also, ich nicht, aber theoretisch.”
  • “…Bulldoggen! Äh, Bulldozer!”
  • “Klim-plus-Bim-Quadrat ist Klim-Quadrat plus zwei Klimbim plus Bim-Quadrat!”
  • “Alle diese Bildnisse zeigen einen idealtypischen Griechen. Der sieht ungefähr so aus wie ich: Bart… muskulöser Körper… ernster, in die Zukunft gerichteter Blick…”
  • “Manche Politiker sagen: ‘Wir haben einen Quantensprung geschafft!’ - der Quantensprung ist die kleinste Entfernung, über die man Energie überhaupt übertragen kann!”
  • “Pythagoras gründete eine Sekte mit komischen Regeln, z.B. durfte man keine Bohnen essen. Naja, das versteh ich ja noch.”
  • “Gegeben ist ein kubischer Steinaltar. Konstruieren Sie, nur mit Zirkel und Lineal, einen Altar mit doppeltem Volumen.”
  • “Wenn Sie früher nen Roman schreiben wollten, mussten Sie 500 Ziegen wegmetzeln.”
  • (Stratigraphie) “Christliches Erbauungsmaterial? Was soll der Kack, darunter ist Mathematik! Machen wir das mal weg.”
  • “Die Unendlichkeit zu erwähnen war bei den Griechen wie FKK machen mitten in der Stadt”
  • “Wir machen jetzt mal ein Beispiel … in (tiefe Stimme) 3D!!! (normale Stimme) In 2D ist das ja für Sissies.”
  • “Existieren Sie wirklich? Oder sind Sie nur ein Flackern in meiner Großhirnrinde und ich liege in Wirklichkeit in einem Tank, wie in ‘Matrix’ und der Präsident der TU schreibt ein Programm, das suggeriert, dass ich hier rede?”
  • “Wenn ich eine Strecke habe: Besteht die aus Punkten oder besteht sie nicht aus Punkten? Jetzt werden Sie sagen: ‘Das ist mir scheißegal.’”
  • (Beweis von Volumengleichheit per kontinuierlichem Verfahren) “Da kotzt Ihnen Aristoteles sofort die Currywurst mit Pommes aus!”
  • (Platons Göttervorstellung) “Sie sitzen mit Ihrer Geliebten am Fluss, und damit der so sprudelt, löst Gott dauernd im Kopf partielle Differentialgleichungen.”
  • (Mathematiker) “Ich würde sagen: Lustig. Witzig. Sie würden sagen: Schwere psychische Störung.”
  • “Dürrenmatt hat sein Stück ja nicht ‘Die Mathematiker’ genannt… und er hat gewusst, warum.”
  • “Meine Tochter ist Indie. Hört gerne Indie. Ihre Freunde sind auch alle Indie.”
  • “Zack! Beweis durch Hinmalen!”
  • “Interessiert Sie das überhaupt?”
  • “Phi-lo-po-nos. Ich hoffe, der schreibt sich richtig.”
  • (Insekt im Projektorlicht) “Schön warm da.” (Woche später) “Bring ich die immer mit?” (Woche später) “Da biste wieder!” (Klatsch)
  • (Folien sind durcheinander. Ganz ruhig und langsam:) “Ich… bin… eine… Schlampe…”
  • (Bildinterpretation) “Ich verrate Ihnen was: Das hier ist die Melancolia… und das hier ist ein kleiner, dicker Engel!”
  • “Ziehen Sie sich DAS mal LANGSAM durch die NASE rein! 1522! Da fangen die Leute wieder an, sich mit Kegelschnitten zu beschäftigen!”
  • “Jetzt passiert was, was mich immer wieder fröhlich stimmt:” (Folie: “1588: Vernichtung der Spanischen Armada”)
  • “Denken Sie sich eine Zeit, in der der typische englische Bauer ein Bäuerchen war.”
  • “Jetzt habe ich mich schon wieder festgesabbelt …”
  • “Die Engländer haben dann angefangen, mit dem Jakobsstab die Position der Sonne zu bestimmen. Wie oft können Sie das machen? – Zwei mal. Einmal mit dem rechten, einmal mit dem linken Auge.”
  • “Kommentar einer Braunschweigerischen Mathematiklehrerin: ‘Logarithmen sind überbewertet.’ – Manchmal hab ich so Träume, ich hätte ’ne Kettensäge …”
  • “Sinüsse”
  • (Mathematik) “Sieht man ja an der Millenium Bridge, dass man so nen abstrakten Kack nicht braucht. Schwingt ja auch so ganz hübsch.”
  • “Adelard of Bath, auf Deutsch: Adelard aus Bath, war ein junger Engländer aus Bath …”
  • “Der war leider kein Mathematiker, sondern Geisteswissenschaftler. Muss es ja auch geben.”
  • (Es spricht: Der Mechaniker.) “Du hast wohl den Schuss nicht gehört. Guck mal aufs Jahr! Das ist Feinmechanik, das können wir noch nicht, das wird erst in einigen Jahren erfunden.”
  • (Leibnitz’ d-Notation) “Das geht ganz automatisch. Jeder Schimpanse kann ableiten.”
  • (Versucht, zwei Bücher zu unterscheiden. Nach fünf Minuten Beschreibung eines Buches:) “Das Buch meine ich nicht.”

Balke

  • “Lektion Nummer 1: Immer die Datenbank-Software verantwortlich machen!”
  • (Datenbanken-Interna) “Wenn man eine Sache schön verpacken möchte, dann nennt man es einfach Algebra.”
  • (Allquantor) “Die Ausssage ‘Alle Studenten hier werden den RDB1-Schein bekommen’ zum Beispiel ist offentsichtlich falsch.”
  • “Yeeeeaah! Freie Variablen!”
  • “Das fragt ihr euch jetzt alle?? Ja? Nee? Ach kommt, das fragt ihr euch ALLE!”
  • (Von uns zusammengebastelte Begriffe aus der Vorlesung) “Das Sex-Attribut von Pussy ist nackig!” (Bedeutet: Die Eigenschaft “Geschlecht” der Katzen-Entität ist mit NULL belegt!)
  • (SQL vs Turing-Vollständigkeit) “Mit nem Leatherman kann man schon so allerhand machen. Aber ‘n dicker Hammer macht schon mehr Spaß!”
  • “…da spart man ne Menge Disketten… äh, Speicherplatz.”
  • “Wofür das B in B-tree steht, weiß keiner mehr so genau…”
  • “Das ist von Vendor zu Vendor verschieden!”
  • (DELETE FROM heroes…) “Schade für Superman, aber toller Trigger!”
  • “Ich geh mal davon aus, dass Sie alle Studenten sind. Naja, draußen is’ kalt …”
  • [Reads a quote] “Now we know that [the author] can write very long sentences, but what does it mean?”
  • “With semantic search, we could formulate queries like ‘beautiful pictures of Angela Merkel’. Well, beauty is in the eye of the beholder. She’s married, right?”
  • (Folie: “A frog is not a sunset”)

RDB-Wichtel

  • (Erfindung von SQL) “Der kam aus der Wirtschaft, dementsprechend konnte er nicht viel mit Logik anfangen…”
  • “Diese Relation, die ich jetzt aus Versehen durchgestrichen habe …”
  • “Convey what you want to convey in a simple way.”

Struckmann

  • “Guten Morgen, meine…” (sieht sich um) “…Herren!”
  • (Ackermannfunktion. Schreibt: a(4,4) = 2^2^2^2^16) “Das ist eine irre große Zahl. Aber ich hab übertrieben…” (Ergänzt an der Tafel: -3)
  • “Wenn’s zu dunkel ist, sagen Sie Bescheid.” - Student: “Bescheid!” - “Bitte??”

Studenten

  • (AuD, Binärbäume. Student:) “Was is’n NIL?” - (Anderer:) “Ein Fluss!”
  • Bode: “Wie würden Sie das Verfahren zum Bestimmen der Nullstelle nennen?” - Student: “Raten!”
  • Koslowski: “Wir dürfen den Balkon ja nicht betreten… Wie ernst wollen wir das nehmen?” - Student: “Axiomatisch!”
  • (Einführung in Computergrafik. Magnor zeigt ein Bild voller bunter Pixel.) “Was stellt dieses Bild dar?” Student 1: “Drei!” Magnor: “Das ist die Zahl Pi, jede Ziffer ist in eine Farbe kodiert.” Student 2: “War doch nah dran!”
  • (ARM-Architektur) Student betrachtet seinen Arm.
  • Student 1: “Wie wird denn die Klausur aussehen?” - Student 2: “Weißer Hintergrund, schwarze Schrift?”
  • Student: “Ich hab schonmal Grafikeffekte programmiert!” - Magnor: “Womit?” - Student: “Notepad?” - Magnor: “….. Okay.”
  • (Hausaufgabenabgabe endet mit Beginn der Vorlesung, aber niemand kommt zu spät) Student: “Ich bin enttäuscht, ich bin extra mit dem Auto gekommen, um die Leute leiden zu sehen…”
  • “Woher kommt denn dieses Pfeil-Zeichen in meinem Quelltext?” - “Das ist dein Mauszeiger.”

Rüffer

  • “Durch die Spannungsquelle dürfen Sie nicht gehen! Das ist verboten!”
  • “Ich nehme jetzt eine Vereinfachung vor: Statt 500 Ohm nehmen wir hier 800 Ohm.”
  • (p-n-Übergang) “P steht, wie wir alle wissen, für… ‘Löcher’!”
  • (Schreibt: 0.8_10 = 0.1101_2) “Das Gleich enthält halt ne kleine Ungenauigkeit…”
  • (Student:) “Machen wir jetzt Aufgabe b oder a?” – “Wir machen noch gar nichts, wir gucken uns das Ganze erstmal einleitend an.”
  • “Sehen wir nachher jetzt sehen wir jetzt nachher gleich!”

Wissenschaftliche Mitarbeiter

  • “Na, wie geht’s?” - “Man könnte mir mit nem Baseballschläger den Kopf einschlagen und ich würds nicht merken.” - “Challenge accepted!”

Fritz?

  • “Sie empfinden eine Gänsehaut zum Beispiel, wenn Sie einen Horrorfilm gucken. Oder Volksmusiksendungen.”

Magnor

  • (Konstruiert einen Winkel an der Tafel) “Grafischer Beweis: Der Winkel ist größer als 90°!”

Berger

  • “Die Lösung erhalten wir durch elementares Googlen.”

Kapitza

  • “…sei es Java, sei es irgendeine Programmiersprache, …”
  • “Diese Standardwerke sollten Sie sich zumindest mal aus der Ferne ansehen.”
  • “Verzeigern”, “Weggeschedulet”
  • “Schlossalgorithmen sind wie Umkleiden: Man kann reingehen, hinter sich zuschließen, und dann tun, was man möchte.”
  • (Licht geht plötzlich aus) “Energiesparen, ja?”
  • (Verliert den Faden. Lässt den Oberkörper hängen:) “Meeep!” (Setzt wieder neu an.)
  • “Sozusagen”
  • “Dann frohe Weihnachten, oder so.”

Schaefer

  • “In manchen Firmen kriegen Sie am Anfang so’n dickes Buch mit Coding-Standards, an die Sie sich zu halten haben. Und manchmal wird das auch getan.”

Ernst

  • “Wenn Sie mal ein Smartphone aufschlagen …”
  • (Reißt was Interessantes an) “… aber darauf werde ich nicht eingehen.”
  • “Wenn man so ein iPad aufknackt …”
  • “Ganz ohne jedes Miracle!”
  • (Schaltsymbole) “Für die, die das noch nicht gesehen haben: Das ist ein UND, diese umgekippte, ausgelaufene Badewanne. Jetzt weiß ich, wo der Fleck herkommt…”

Eisemann

  • “Use the library, Luke!”
  • “Mathematisch macht das leider doch Sinn…”
  • “Wir benutzen dafür die leicht schweizerisch klingende Funktion glTexParameteri…”
  • “Wofür wir das jetzt brauchen, sei dahingestellt. Wichtig ist, dass wir es können!”
  • “Use GeForce, Luke!”

Hasemann

  • (Ersti-Vorlesung, es geht um fortgeschrittene Programmierkonzepte) “Sie kennen das ja aus Boost…”
  • (Gute Studenten werden mit Kaffee belohnt) “Bitte keine klugen Antworten mehr, wir haben nur drei Tassen.”

Schicke-Uffmann

  • “Man konnte halt, wenn man das Richtige getan hat - oder das Falsche, je nachdem, wie man es sehen will - schlimme Dinge damit tun.”
  • “Dass ein C++-Programm Ihre Festplatte löscht, sollte nicht passieren, ist aber standardkonform.”

Neumann-Brosig

  • “Don’t listen to what I say, listen to what I mean”
  • “Das war ein Physiker-Argument, aber es stimmt trotzdem.”
  • (Begeistert) “Also ist das gleich…” (Geknickt) “Die Tafel ist zu Ende.”
  • “Mein Lieblingssatz: ‘Das passt noch irgendwo hin’”

Neumann

  • “Prüfung ist leicht, wenn man’s kann.”
  • (Buchvorstellung) “Da haben sich zwei Leute mal drangesetzt… Drei Leute. Vier Leute? Einige Leute haben sich mal drangesetzt…”
  • “Die topologischen Transformationen habe ich Ihnen hier mal anhand der deutschen Grenze dargestellt - damit’s ein bisschen witziger wird.”
  • “Ich hatte ja nur endlich viel Zeit zum Programmieren des Algorithmus’. Und auch nur endlich viel Lust.”
  • “Wir haben dann folgendes getan… Also, wenn ich ‘wir’ sage, meine ich, dass ich Herrn X motiviert habe, es zu tun, und er hat dann die Arbeit gemacht.”
]]>
nom nom 2014-07-30T00:00:00+00:00 Sebastian Morr sebastian@morr.cc http://github.com/blinry/nom

Helps you lose weight by tracking your energy intake and creating a negative feedback loop.

]]>
Vimboy vimboy 2012-07-22T00:00:00+00:00 Sebastian Morr sebastian@morr.cc http://github.com/blinry/vimboy ]]> Managing paper with manila folders managing-paper-with-manila-folders 2015-04-25T12:05:00+02:00 Sebastian Morr sebastian@morr.cc I’ve previously written about how I manage digital notes. This article is about my approach to organizing and storing physical paper documents.

Granted, this sound like an incredibly boring, bureaucratic topic, but this is a personal story of disentanglement and simplification. Wait and see :-)

Labeled tabs of manila folders

Approximately two years ago, I got really into minimalism. The principle of only owning things which are useful, beautiful or important resonates with me strongly. After all, one of my favorite quotes is the following by Antoine de Saint Exupéry:

It seems that perfection is attained not when there is nothing more to add, but when there is nothing left to remove.

My occupation with minimalism (last but not least via the lovely minimalism subreddit) led to simplifications in various parts of my daily life. At one point, I decided it was time to evaluate different approaches to storing paper documents. So, what’s there?

Ring binders

In Germany, it’s very common to store documents in ring binders (“Aktenordner”). You punch some holes in your documents (or put them in punched pockets), tug them away in the binders, and fixate all pages with a clip.

For many years, I did exactly that. I adopted this system from my parents, and put my documents into four different binders, categorized by labeled separator sheets with tabs.

A shelf of ring binders

I always hated this system. Here’s the workflow to file a new document:

  1. Find the correct binder, heave it out of the shelf, put it on a free surface.
  2. Open the binder, remove the clip which holds the pages at the bottom of the binder, open the correct section.
  3. Flip a lever to open the rings.
  4. Punch holes into your document (or fumble it into a pocket) and put it on those rings.
  5. Do steps 3.-1. in reverse.

This process sucks: It takes a lot of time, is boring and repetitive, and often led to me not filing documents at all (which then accumulated in the most durable structure in the known universe: stacks). So, let’s look for better alternatives.

Suspension files

Yeah, suspension files are the way to go, right? Turn your ring binders by 90 degrees, split the documents into separate vertical folders, and hook them onto a pair of rails! You can them access the individual folders directly from the top and insert new ones as needed.

Suspension file

This system was often suggested to me in various self-management books I read in my childhood, I even tried such a system for a few weeks. I didn’t like them for two reasons: Their whole construction seems unnecessarily complex; and their plastic tabs take away a lot of space, even when there’s just one document inside. Your mileage may vary, but they are not for me.

Manila folders

In The Power of Less (a book whose content, in my opinion, is so trivial that I gave it away immediately after reading it - quite ironic ;-), Leo Babauta recommended “manila folders” for filing documents. They also seem to appear a lot in the context of the Getting Things Done method. I had never heard that term before, but for everyone who has used a graphical computer file managers, manila folders look very familiar:

Manila folders

They are open at the sides and at the top, and are designed to hold a collection of loose papers. You can label the tabs, and then put many of them in a box (the German term is “Einstellmappen”).

I present to you: The manila folder workflow for filing a new document:

  1. Find the correct folder and hold it open.
  2. Drop your document into it. (I usually insert new documents at the front, so they are mainly chronologic, but I don’t care that much.)

That’s it! Not much room for improvement, and it could hardly get any simpler - mission accomplished!

My concrete implementation

In Germany, there are two commercial distributors for similar folders: MAPPEI and Classei. Their systems cost a fortune, but might suit you. I knew I wanted cheaper, simpler folders with fixed tabs like those depicted above.

After searching for manila folders in virtually all office stores in my home city to no avail, I finally turned to Amazon Germany, and found the Leitz 2434-00-11 folders, which seemed pretty, durable, and currently cost about 31 ct per piece. They have five slots for fixed tabs, and come in batches of 100 pieces, 20 of each tab position.

Ready for some technical details? The folders are 304 mm wide and 200 mm high (210 mm with tabs). The paper weighs 205 g/m² (the description on the Amazon page is contradictory there), which seems like a good compromise between robustness and thickness. One folder is about 0.8 mm thick.

As I couldn’t find a matching box to put the folders into right away (this one turned out to be too small :-S), I temporarily settled on a shipping box, cut to a width of 31 cm, a height of 16 cm and a depth of 17 cm. This works perfectly for me. I’m ashamed to admit that this temporary box is still in place after more than a year ;-)

Box with manila folders

I sort the folders alphabetically, following the schema below. The alphabet starts at the back, so that the beginning of a label is never covered by a neighboring tab. A disadvantage of this ordering is that the frontmost folder covers all other tabs starting with the same letter. But it has the (bigger) advantage that you get a good overview of the full alphabet, in contrast to a “chaotic tab position”, where, with some luck, you can see each label, but lose a sense of linear alphabetical ordering.

A-Z labels

Long-term experiences

One year later, I’m still very happy with this system. I don’t own ring binders anymore, and never looked back. Over the months, I’ve added some folders, and removed others. It’s quick, easy, and simple and works exceptionally well for me.

I currently use 32 folders. The system contains all important documents; after throwing away many documents I knew I’d never need again, the folders in use are now about 10 cm thick in total. The thickest folder contains about 3 cm of documents, which the system can integrate okayishly, I assume that it gets hard to handle with thicker folders.

These are the things I store in the folders: certificates, stamps (which is handy!), small gifts, bills, coupons, uni stuff, contracts, menus of delivery services, stickers, recipes, health-related documents, tax/insurance stuff, maps, address lists, photos, …

Two things to look out for are rain and sunlight. The open system is vulnerable to both, so I’d suggest putting it some distance away from windows. (Maybe you can see the small smudges on the labels ;-)

When I have to take documents with me, I use folders like this.

]]>
Git Cheat Sheet git-cheat-sheet 2012-04-17T00:00:00+00:00 Sebastian Morr sebastian@morr.cc Git Cheat Sheet

I originally made this to introduce some fellow students to Git for a group project, and updated it in 2014 for a Git introduction I gave to freshman students.

Want the SVG to modify it for your own purposes? I’ve got you covered! The fonts are Bevan and Courier New.

]]>
Novena logo novena-logo 2014-05-12T00:00:00+00:00 Sebastian Morr sebastian@morr.cc Novena logo on three different backgrounds

A logo design for the open-hardware computer Novena. It was one of 124 logo submissions. The “claw” is a reference to the Open Source Hardware logo.

Here are some older designs:

]]>
Freifunk, executive summary freifunk-executive-summary 2014-01-29T12:22:00+01:00 Sebastian Morr sebastian@morr.cc Ich habe mir vor zwei Wochen Freifunk genauer angeguckt, und möchte euch hier mal zusammenfassen, was ich gelernt habe. Die Grundidee ist, in einer Stadt viele WLAN-Router aufzustellen, die sich untereinander vermeshen und so ein dezentrales (unzensier- und -drosselbares) Kommunikationsmedium bilden.

Lokale Communities

Für mich, der neu dazukommt, ist die Organisation der Community zunächst befremdlich: Jede Stadt pflegt ein eigenes Wiki, Mailinglisten und Standortkarten, was zu großer Informationsfragmentierung führt. Oft bauen die Städte sogar ihre eigene Firmware. Ist wohl gelebte Dezentralisierung, wirkt auf mich aber ineffizient. Die Community-Karte listet derzeit 57 Communities in Deutschland und Österreich auf.

Funktionsweise

Üblicherweise machen die Freifunk-Router zwei WLAN-Netze auf: Eines im Access Point-Modus, damit sich Endgeräte drauf verbinden können, eines im Ad-Hoc-Modus, zur Vernetzung mit anderen Routern.

Früher benutzte Freifunk das OLSR-Routingprotokoll, welches permanent die gesamte Netzwerktopologie auf alle Knoten verteilt. Das skalierte wohl nicht so gut, weshalb einige Freifunker eine einfachere Alternative entwickelten: B.A.T.M.A.N (“Better Approach To Mobile Adhoc Networking”). Ein Knoten ruft regelmäßig ins Netz, dass er da ist und merkt sich für jeden anderen Knoten, aus welcher Richtung er die meisten dieser Broadcast-Nachrichten empfangen hat. In diese Richtung werden dann Pakete geschickt, die für diesen Knoten bestimmt sind. Fertig.

Es gibt übrigens einen regelmäßigen Wettbewerb, in dem Mesh-Routing-Protokolle gegeneinander antreten, Battle Mesh ;-)

Hardware

In allen Stadt-Communities sind zur Zeit die Router der chinesischen Firma TP-LINK beliebt, und zwar in der Schnittmenge folgende Geräte:

  • TL-WR741ND: 4 MB Flash, 32 MB RAM, eine Antenne, ca. 23 Euro. Der Flash scheint recht knapp zu sein, reicht aber für normale Knoten aus. Das “D” im Namen bedeutet jeweils, dass man die Antennen austauschen kann, gibt die meisten auch mit fest verbauten Antennen.
  • TL-WR841ND: Hardware wie oben, aber zwei Antennen (doppelte Datenrate per MIMO, ca. 22 Euro. Es gibt von Hardwareversion 8 wohl eine “chinesische Version”, die crappy ist (halber Flash und RAM). Hier bekommt man aber meistens die unabgespeckte internationale Version.
  • TL-WR842ND: Zusätzlicher USB 2.0-Port, ca. 42 Euro.
  • TL-WR1043ND: Schnellere CPU, 8 MB Flash, 64 MB RAM, drei Antennen, USB 2.0, mit Gigabit-Ports, ca. 45 Euro. Laut Kiel “für größere Aufgaben geeignet”.
  • TL-WDR3500: 8 MB Flash, 128 MB RAM, drei Antennen, ca. 36 Euro. Unterstützt als einziger dieser Liste 5GHz-Frequenzen (wovon manche aber wegen geringerer Reichweite durch stärkere Streuung für diesen Zweck auch eher abraten). Momentane Empfehlung von Berlin.

Ich habe mir mal testweise einen TL-WR841ND gekauft und die Hamburger Firmware draufgespielt, dauert vielleicht 10 Minuten, dann ist der Router online.

Braunschweig?

Braunschweig befindet sich auf der Community-Karte in einem ziemlichen Freifunk-Loch. Große “Nachbarn” sind Halle, Bielefeld und Hamburg. Hannover reaktiviert sich angeblich gerade wieder, im Forum ist allerdings bisher wenig Aktivität.

Im Freifunk-Wiki gibt es eine Seite über Braunschweig, die von vereinzelten Anläufen berichtet (letzte Änderung: 2009), die Mailaddressen sind nicht mehr erreichbar. Auf der Hamburger Karte findet man zur Zeit vier Knoten, die mit der Hamburger Firmware ausgestattet sind (die ermöglicht von Haus aus Internetzugriff über ein VPN in die Niederlande, wo es keine Störerhaftung gibt.

Weitere Ressourcen

Wenn ihr noch Fragen habt, gerne her damit!

]]>
Bachelorarbeit, Woche 21: LaTeX-Tipps und Abgabe! bachelorarbeit-woche-21 2013-11-30T07:32:00+01:00 Sebastian Morr sebastian@morr.cc Am Donnerstag habe ich die Bachelorstudiengangsabschlussbescheinigung abgegeben, yay! Die letzten Wochen war noch recht viel zu tun, weshalb ich das Gefühl hatte, mir keine Zeit für einen ausführlichen Blogpost nehmen zu können. Heute berichte ich von der Arbeit selbst, in einem kommenden Post dann noch vom Abschlussvortrag.

Hier kommt zunächst die Arbeit als PDF mit anklickbaren Querverweisen. Im Original sind die Seitenabstände anders, um zweiseitig schöner auszusehen. Der LaTeX-Sourcecode ist auf GitHub. Wer dieses Blog verfolgt hat, ist mit dem Inhalts bereit größtenteils vertraut. Neu sind Beschreibung und Auswertung der Evaluation.

Ich war überrascht und etwas enttäuscht, dass sich am Institut niemand die Zeit nahm, die Arbeit nochmal inhaltlich durchzugehen und zu kritisieren. Während ich mitbekommen habe, dass an anderen Instituten die Abschlussarbeiten oft zu einem guten Teil das Werk des Betreuers sind, war ich hier fast vollständig auf mich allein gestellt. Es war einerseits ganz schön, so autonom arbeiten zu können, andererseits bin ich sicher, dass die Arbeit bei einer intensiveren inhaltlichen Betreuung noch deutlich besser, formaler und tiefgehender hätte werden können.

LaTeX

Auch für lange Dokumente betreut Enrico LaTeX-Klassen im Corporate Design der TU. Während die einwandfrei aussehen, gefallen mir die Schriftarten nicht besonders, daher verwende ich ein blankes scrreprt.

Ich möchte euch folgende LaTeX-Pakete empfehlen, auf die ich beim Schreiben gestoßen bin:

  • microtype ist ein Schritt hin zur typografische Perfektion: Es optimiert Buchstabenabstände, macht die Seitenränder optisch gerade und minimiert Worttrennungen. Ein Blick in das (interaktive!) Handbuch sei höchst empfohlen!
  • cleveref erlaubt textuelle Verweise auf Referenzen per \cref{<name>}, wobei der Typ des verlinkten Dinges angefügt wird (der Verweis lautet dann zum Beispiel “figure 3.14”). Es gibt auch Befehle für “on page 42” etc.
  • menukeys habe ich zum Erstellen von hübschen Darstellungen von Tastenkombinationen benutzt (\keys{\ctrl + C}), es eignet sich auch zum Formatieren von Menüfolgen (\menu{Extras > Settings > General}).
  • listings ist recht gut bekannt für das Erstellen von Codelistings, ich möchte hier nur nochmal unterstreichen, dass das Paket sehr hübsch konfigurierbar ist: Man kann sehr einfach eigene Umgebungen für verschiedene Sprachen anlegen und eigenes Syntaxhighlighting definieren - für meine nutsh-Codeschnipsel oder für EBNF-Grammatiken war das sehr praktisch.
  • pgfplots benutze ich zum Zeichnen von Balken- und Boxplot-Diagrammen. Es basiert auf dem Zeichenpaket PGF/TikZ (was ebenfalls höchst extremst empfehlenswert ist!), ist ziemlich mächtig und gut konfigurierbar. Ich bin nicht restlos begeistert vom Interface, habe mich aber auch nicht lange damit beschäftigt und es tut was es soll.

Nitpicker

Das Nitpicker tool beschreibt sich als “overly picky language style checker”. Es überprüft formale englische Texte automatisch auf häufige grammatikalische, semantische und Rechtschreibfehler (verdammte passive voice ;-). Ich habe das Tool in einem Lightning Talk auf einem der letzten Kongresse kennengelernt und finde es inzwischen unersetzlich, um die gröbsten Schnitzer aus Texten rauszubügeln, bevor man es Menschen zu Lesen gibt. Benutzt es!

Fun fact: Das Nitpicker tool wird durch Katzenbilder angetrieben: 1, 2.

Motivation

Symbolbild: Research paper vs Internet

Beim eigentlichen Schreiben fiel es mir teilweise sehr schwer, konzentriert zu bleiben und nicht herumzuprokrastinieren. Irgendwann kramte ich einen Motivationstrick heraus, den ich auch schon beim Lernen für Klausuren erfolgreich angewendet habe: Die Pomodoro technique. Die funktioniert so:

  1. Man stellt einen Küchenwecker auf eine halbe Stunde.
  2. Solange der Wecker tickt, arbeitet man möglichst konzentriert, ohne sich ablenken zu lassen.
  3. Wenn der Wecker klingelt, malt man ein Kreuz irgendwohin und macht fünf Minuten Pause (Lüften, Nahrungs- und Flüssigkeitszufuhr, Äkta manniskor gucken).
  4. Nach jeweils vier Kreuzen macht man eine längere Pause von etwa einer halben Stunde. Dann GOTO 1.

Und das funktioniert ganz hervorragend für mich. Ich freue mich immer sehr auf die kommende Pause und schaffe es, mich während der halben Stunde nicht ablenken zu lassen. Mithilfe dieser Technik habe ich in den drei letzen Wochen vor der Abgabe etwa 6 bis 7 Stunden pro Tag konzentriert gearbeitet.

Pomodoro ist übrigens das italienische Wort für “Tomate” - der Typ, der sich das ausgedacht hat, hat einen Küchenwecker in Tomatenform benutzt.

]]>
The Nut Shell nutsh 2013-11-26T00:00:00+00:00 Sebastian Morr sebastian@morr.cc http://github.com/blinry/nutsh

A framework for creating interactive command line tutorials, inspired by text adventures.

]]>
Bachelor Thesis: The Nut Shell the-nut-shell 2013-11-03T00:00:00+00:00 Sebastian Morr sebastian@morr.cc In my bachelor thesis, I designed and implemented a framework for creating interactive command line tutorials, called The Nut Shell. Here you can find the final thesis and the presentation:

Thesis (Director's Cut) Final talk

I posted the LaTeX source code of the thesis online – you are welcome to steal stuff from it!

While writing the thesis, I also blogged about my experiences (in German).

The resulting software framework can easily be adapted and reused to various command line environments, you can read more about it here.

]]>
Bachelorarbeit, Woche 13: Gliederung bachelorarbeit-woche-13 2013-10-05T10:33:00+02:00 Sebastian Morr sebastian@morr.cc Blick zurück

So, der Vorkurs lief gut, die Teilnehmer schienen mir recht glücklich mit der Nut Shell, ich habe viel positives Feedback bekommen. Ich habe eine kleine Umfrage durchgeführt, um Spaß und Lernfortschritt quantifizieren zu können, die Ergebnisse werde ich in den kommenden Wochen hier veröffentlichen.

Blick nach vorn

Nun habe ich noch einen Monat zum tatsächlichen Schreiben der Arbeit. Hierzu habe ich eine grobe Gliederung entworfen, unten dargestellt als Outline. Die eingeklammerten Zeilen sind keine eigenen Abschnitte, sondern Zusammenfassungen der vorgesehenen Inhalte.

Ich habe versucht, den Hauptteil “von unten nach oben” zu strukturieren, also tatsächlich in der Reihenfolge, in der die Komponenten aufeinander aufbauen:

Abstract
    (Purpose)
    (Design + evaluation methods)
    (Major results)
    (Summary of conclusions)
Introduction
    (Topic: Command line tutorials)
    (Motivation: Traditional, static tutorials have problems)
        (Attention shift)
        (No goal affirmation)
        (No reaction to mistakes)
    (Core idea: Interlace tutorial text and CLI)
    (Role model: Text adventures)
    (Research question: Is this approach "better"?)
    (Prior approaches)
        (Try Ruby/Git/Haskell)
        (What's missing in them)
    (Conventions in this thesis)
Overview
    (Goals and principles)
        (Basic event loop: prompt -> editing -> execution/output)
        (Adaptability to arbitrary "targets")
        (Annotation + environment changing, otherwise raw CLI interaction)
    (Steps of this thesis)
    (Diagram: Layers)
Design
    Command line parser
        Purpose
            (Recognizing parts of command line output)
        Background
            (How a terminal works)
            (Escape characters)
            (Readline key combinations)
        Architecture
            (Component diagram)
            (Parser EBNF)
        Problems and workarounds
            (Command line editing)
            (...)
    Internal DSL
        (Purpose: High-level layer around CLI parser)
        (Description of necessary DSL calls)
    The nutsh language
        Purpose
            (Describes a self-contained teaching unit, a "lesson")
        Design goals
            (Easy to read and write)
                (Use syntax the user already knows: Regex + Go syntax)
                (Introduce new syntax for often-used semantics)
            (Minimize redundance)
                (DRY, allow reuse of code snippets)
        Properties
            (String-based)
            (Functional)
        Lexical elements
            (Token types)
            (Diagram: State machine)
        Syntax
            (EBNF of language constructs)
        Parsing
            (How YACC works)
        Semantics
            (Specification of language constructs)
        Interpreter
            (State)
            (Function stack)
        Automated testing
            (Motivation)
            (Testing algorithm)
        Examples
Implementation
    Used technologies
        (Go)
        (kr/pty for terminal emulation)
    High-level design
        (Diagram: Package diagram)
    Command line tool
        Usage
        Builtin functions
Application and evaluation
    Methods
        Setting
            (Description of setting: Preparatory course for CS students)
            (Previous teaching method)
            (Groups)
        Tutorial
            (Content, examples)
            (Best practises in lesson writing)
        Survey
            (Questions)
    Results
        (Pretty graphs)
        (Statistical evaluation)
Conclusions
    (Discussion of survey results)
Limitations and future directions
    (Future directions:)
        (Automated typo detection)
        (Simplified prompt syntax)
        (Lesson dependency tree)
    (Outlook, future of the Nut Shell)
Acknowledgements
    (...)
References
    (...)
Appendix A: Example lesson
    (nutsh source code)
    (Execution output)
Appendix B: Table of terminal escape codes
    (...)
Affidavit
    ("Erklärung an Eides statt")

Mit dem langen Kapitel zur Sprache (Spezifikation inklusive Erläuterungen zum Parsen, Interpretieren, etc.) bin ich noch nicht so zufrieden, vielleicht ist es lohnend, einige Abschnitte in den “Implementation”-Teil zu verschieben. Das bricht aber die schöne bottom-up-Struktur. Hm.

]]>
Bachelorarbeit, Woche 11: Vorkurs beginnt! bachelorarbeit-woche-11 2013-09-16T11:37:00+02:00 Sebastian Morr sebastian@morr.cc Nur ganz kurz: Heute beginnt der Vorkurs! Ich bin so gespannt, ob alles klappt! Die letzen Wochen habe ich wirklich viel geschuftet, damit heute alles schön ist.

Wer mitmachen möchte, kann sich die kurze Installationsanleitung geben. Ihr braucht einen Go-Compiler und Git. Und Linux, natürlich. Getestet ist das aber eigentlich nur im Raum, in dem der Vorkurs stattfindet und auf meinem Notebook, keine Garantien ;-)

Warnung: Das Setup ist für absolute Neulinge, deshalb hängt es eine Zeile an eure .bashrc, die das nutsh-Skript in den PATH tut. Dieses Skript sorgt für automatische Aktualisierungen (es kommen jeden Tag neue Lektionen dazu).

Viel Spaß!

]]>
Bachelorarbeit, Woche 9: DSL-Syntax bachelorarbeit-woche-9 2013-09-04T10:31:00+02:00 Sebastian Morr sebastian@morr.cc Der letze Eintrag ist nun schon eine ganze Weile her, höchste Zeit für ein Statusupdate!

Sprache

Die Sprache, in der man Tutorials verfassen kann, nenne ich nutsh, in Analogie zur Nut Shell. Sie ist viele Iterationen durchlaufen, bis ich etwas fand, was mir mächtig genug erscheint, möglichst einfach zu lesen und zu schreiben und simpel umzusetzen ist. Die Irrwege schildere ich vielleicht ein anderes Mal ;-)

Grundlagen

Die Sprache basiert stark auf Strings ("blabla"). Stringausdrücke kann man verknüpfen ("bla"+"bla"), sowie auf Gleichheit überprüfen ("bla" == "bla"). Außerdem kann man überprüfen ob ein String einem Regulären Ausdruck entspricht ("bla" =~ "b.."). Jeder String kann als Wahrheitswert interpretiert werden, der bei einem leeren String falsch ist, ansonsten wahr. Die Vergleichsoperatoren geben bei Erfolg den (beliebig gewählten) String "true" zurück. Die üblichen logischen Operationen (! für nicht, && für und sowie || für oder) sind entsprechend definiert.

Es gibt noch die Kontrollfluss-Strukturen if-else sowie prompt, und man kann Funktionen definieren und aufrufen, und das reicht dann auch schon. Variablen sind nicht notwendig, weil man die auch in der Zielsprache definieren kann.

Naja, und typische C-Kommentare gibt es auch (// für Zeilenkommentare, /* ... */ für Blockkommentare).

Grundbefehle

Ganz zentral ist die Ausgabe von erklärendem Text. Dieser wird eingerückt und farbig hervorgehoben.

say("Dies ist erklärender Text")

Weil der Befehl so oft verwendet wird, kann man auch einfach schreiben:

"Dies ist die Kurzform"

Um einen Befehl im Kommandozeilen-Prozess auszuführen, benutzt man run. Rückgabewert ist die Ausgabe des Befehls.

run("echo testinhalt > /tmp/testdatei")

Ich überlege noch, ob auch hier eine Abkürzungsmöglichkeit sinnvoll wäre, etwa

!"echo testinhalt > /tmp/testdatei"

Kontrollfluss

Ganz wichtig ist die Prompt-Schleife:

prompt {
    // Befehle
}

Sie Semantik ist die einer Endlosschleife, zu deren Beginn jeweils ein Befehl vom Benutzer eingelesen wird. Sie kann durch ein break verlassen werden.

Es gibt zwei eingebaute Funktionen command und output, die jeweils das zuletzt eingegebene Kommando und dessen Ausgabe zurückgeben.

Weiterhin gibt es if-else Ausdrücke, deren Syntax stark von Go beeinflusst ist (keine Klammern um die Bedingung):

if command =~ "^rm " {
    "OMG!"
} else {
    "Brav!"
}

Funktions-Definition

Mehrfach verwendete Codeschnipsel kann man in Funktionen auslagern:

def exit_status {
    return(run("echo $?"))
}

def say_twice(text) {
    say(text)
    say(text)
}

prompt {
    say_twice("Der Rückgabewert war '"+exit_status+"'")
}

Funktionen ohne Argumente können auch ganz ohne Klammern aufgerufen werden.

Umgebende Zustände

Möchte man für eine Gruppe von Prompt-Schleifen die gleichen Bedinungen überprüfen, kann man diese Syntax benutzen:

def help {
    if command =~ "help" {
        "Don't panic!"
    }
}

help {
    prompt {
        if command =~ "panic" {
            break
        }
    }

    "Zweite Chance..."
    prompt {
        if command =~ "panic" {
            break
        }
    }
}

Das bedeutet: “Zu Beginn jedes Prompt-Durchlaufs, führe die Funktion help einmal aus. Das geht auch mit mehreren Funktionen:

def stay_in(dir) {
    if ! run("pwd") =~ "^"+dir {
        say("Bitte komm wieder zurück nach `"+dir+"`!")
        prompt {
            if run("pwd") =~ "^"+dir {
                break
            }
        }
        "Okay, weiter im Text."
    }
}

def help {
    if command =~ "help" {
        "Don't panic!"
    }
}

run("cd /tmp")

stay_in("/tmp"), help {
    "Wie spät ist es?"
    prompt {
        if command == "date" {
            break
        }
    }

    "Und wer bist du?"
    prompt {
        if command == "whoami" {
            break
        }
    }
}

Die Syntax einer solchen “Zustands-Schachtelung” hat mich am längsten aufgehalten, mit dem Ergebnis bin ich aber sehr zufrieden.

Was noch fehlt

Ein Tutorial braucht Metainformationen (Zielsprache, Name, nutsh-Version), man braucht eingebaute Funktionen zum Springen zwischen Lektionen und vielleicht auch ein goto, das wird sich zeigen.

Was ich außerdem möchte, ist ein eingebauter Befehl expect, mit dem man automatisiert überprüfen kann, ob man durch Eingabe dieses Befehls in den entsprechenden Zustand gelangt.

Umsetzung

Das Lexen, also das Zerlegen des Sourcecodes in seine Bestandteile (Strings, Keywords, Identifier, Operatoren, Klammern) ist hier so einfach, dass ich das in einer kurzen Funktion selbst mache.

Zum Parsen, also zum Erkennen der Struktur, benutze ich die yacc-Version, die zusammen mit Go ausgeliefert wird, und mache damit ganz gute Erfahrungen.

Den resultierenden Parse-Baum kann man dann sehr einfach interpretieren, auch dazu später vielleicht einmal mehr.

Wie geht es weiter?

Ich habe noch anderthalb Wochen bis zum Beginn des Vorkurses, in denen ich Inhalte erstellen und die aufgeführten noch fehlenden Sprachelemente umsetzen werde. Ich werde eine Onlineevaluation vorbereiten, um die Eindrücke der Vorkurs-Teilnehmer etwas quantifizieren zu können. Insbesondere wird es eine zweite “Kontrollgruppe” geben, die noch mit den alten Aufgabenblättern arbeitet, um eine Vergleichsmöglichkeit zu haben.

Ich bin gespannt!

Zum Abschluss noch die kurze Lektion aus dem letzen Blogpost in nutsh:

def common_mistakes {
    if command == "1s" {
        "Das ist ein kleines L, keine Eins! Probier's nochmal!"
    }
    if command == ".." {
        "`..` ist der Name des Verzeichnisses, du musst noch dazusagen,
        was du damit machen möchtest. Um \"hinzugehen\", schreib `cd`
        davor."
    }
    if command == "cd.." {
        "Da fehlt noch ein Leerzeichen zwischen `cd` und `..`!"
    }
}

def stayinroot {
    if !(run("pwd") =~ run("echo $ROOT")) {
        run("cd $ROOT")
        "Bleib bitte erstmal hier."
    }
}

run("ROOT=/tmp/nutsh")

run("rm -rf $ROOT")
run("mkdir $ROOT")
run("cd $ROOT")

run("mkdir schuhkarton")
run("mkdir schrank")
run("touch schrank/jacke")
run("touch schrank/hut")
run("touch linker_schuh")

"Hallo! Willkommen in der Nut-Shell! Ich möchte dir zeigen, wie du
mithilfe der Kommandozeile schnell und einfach mit Dateien und
Verzeichnissen umgehen kannst."

"Legen wir gleich los: Tipp mal `ls` ein und drück Enter."

common_mistakes, stayinroot {
    prompt {
        if command == "ls" {
            "Genau. `ls` steht kurz für \"list\" und zeigt dir die
            Dateien und Verzeichnisse an, die sich in deinem
            \"aktuellen\" Verzeichnis befinden. Die Verzeichnisse
            werden dabei blau dargestellt."

            "Du bist gerade in einem Ordner namens `/tmp/nutsh` - das
            steht auch in dem blauen Text, den wir \"Prompt\" nennen.
            Der Prompt endet mit einem Dollarzeichen, das heißt soviel
            wie: \"Du kannst jetzt ein Kommando eingeben!\""

            break
        }
    }

    "Du hast vielleicht gesehen, dass sich hier ein Verzeichnis namens
    `schrank` befindet. Um dieses zu deinem aktuellen Verzeichnis zu
    machen, tippst du `cd`, dann ein Leerzeichen und dann den Namen des
    Verzeichnisses, in das du möchtest. Begib dich doch mal in den
    Schrank und sieh dich darin um!"

    prompt {
        if run("pwd") == run("echo $ROOT/schrank") {
            if command == "ls" {
                "Genau. Hast du bemerkt, wie sich der Prompt geändert
                hat?"

                break
            }
        }
    }

    "Und wenn du wieder aus dem Schrank herausmöchtest? Die Abkürzung
    für das Verzeichnis oberhalb des aktuellen ist `..`!"

    prompt {
        if run("pwd") == run("echo $ROOT") {
            break
        }
    }

    "Gut. So, nun brauchen wir ein wenig Magie... *pling*"

    "[Der Schrank rumpelt und ächzt]"

    run("mkdir -p $ROOT/schrank/magische_tür/tür{1..3}")
    run("touch $ROOT/schrank/magische_tür/tür2/rechter_schuh")

    "Im Schrank hat sich nun etwas verändert. Geh hinein und such den
    rechten Schuh."

    prompt {
        if run("pwd") == run("echo $ROOT/schrank/magische_tür/tür2") {
            if command =~ "ls" {
                "Du hast ihn gefunden! Nun komm wieder aus dem Schrank
                heraus!"

                break
            }
        }
    }

    prompt {
        if run("pwd") == run("echo $ROOT") {
            break
        }
    }

    "Gut! So, das war eine Einführung in `ls` und `cd`. Hier ist das
    Tutorial erstmal zu Ende! Danke!"
}
]]>
Bachelorarbeit, Woche 3: Erstes Skripting bachelorarbeit-woche-3 2013-07-30T22:52:00+02:00 Sebastian Morr sebastian@morr.cc Literatur

Literatur

Ich war letzte Woche in der Unibibliothek. Wissen ist Macht!

Coole Entdeckung waren insbesondere die Tagungsbände der International Conference on Interactive Digital Storytelling, von der ich noch nie etwas gehört hatte. Außerdem das klassische “Drachenbuch” über Compilerbau sowie Grundlagen über Mensch-Computer-Interaktion und Computer-Didaktik. Wird mich bestimmt alles auf die ein oder andere gute Idee bringen.

Erste Skripting-Versuche

Ich habe um die cli-API von letzter Woche eine dünne Schicht von Methoden gelegt, die es mir ermöglichen, einfache Tutorials zu verfassen. Dabei entstand eine primitive interne domänen-spezifische Sprache, das heißt, sie ist Untermenge einer “normalen” Mehrzwecksprache. In meinem Fall heißt das, ich kann ein Programm in der Programmiersprache Go schreiben, wobei ich nur ganz bestimmte Methoden und bestimmte Sprachelemente benutze, und mich dabei meiner Vision der nutsh-Sprache, in der die Tutorials verfasst werden sollen, langsam annähere.

Hier ist ein Beispiel:

func main() {
    Spawn("bash")

    gotoJail()

    bash.Execute("mkdir schuhkarton")
    bash.Execute("mkdir schrank")
    bash.Execute("touch schrank/jacke")
    bash.Execute("touch schrank/hut")
    bash.Execute("touch linker_schuh")

    Say("Hallo! Willkommen in der Nut-Shell! Ich möchte dir zeigen,
    wie du mithilfe der Kommandozeile schnell und einfach mit
    Dateien und Verzeichnissen umgehen kannst.")

    Say("Legen wir gleich los: Tipp mal `ls` ein und drück Enter.")
    for Prompt() {
        Output()
        if Command("^1s\n$") {
            Say("Das ist ein kleines L, keine Eins! Probier's
            nochmal!")
        }
        if Command("^ls\n$") {
            Say("Genau. `ls` steht kurz für \"list\" und zeigt dir
            die Dateien und Verzeichnisse an, die sich in deinem
            \"aktuellen\" Verzeichnis befinden. Die Verzeichnisse
            werden dabei blau dargestellt.")

            Say("Du bist gerade in einem Verzeichnis namens
            `/tmp/nutsh` - das steht auch in dem blauen Text, den
            wir \"Prompt\" nennen.  Der Prompt endet mit einem
            Dollarzeichen, das heißt soviel wie: \"Du kannst jetzt
            ein Kommando eingeben!\"")

            break
        }
    }

    Say("Du hast vielleicht gesehen, dass sich hier ein Verzeichnis
    namens `schrank` befindet. Um dieses zu deinem aktuellen
    Verzeichnis zu machen, tippst du `cd`, dann ein Leerzeichen und
    dann den Namen des Verzeichnisses, in das du möchtest. Begib
    dich doch mal \"in den Schrank\" und sieh dich darin um!")

    for Prompt() {
        Output()
        if bash.Test("$(pwd) = \"$ROOT/schrank\"") {
            if Command("^ls\n$") {
                Say("Genau. Hast du bemerkt, wie sich der Prompt
                geändert hat?")

                break
            }
        }
    }

    Say("Und wenn du wieder aus dem Schrank herausmöchtest? Die
    Abkürzung für das Verzeichnis oberhalb des aktuellen ist
    \"`..`\"!")

    for Prompt() {
        Output()
        if Command("^\\.\\.\n$") {
            Say("`..` ist der Name des Verzeichnisses, du musst noch
            dazusagen, was du damit machen möchtest. Um
            \"hinzugehen\", schreib `cd` davor.")
        }
        if Command("^cd\\.\\.\n$") {
            Say("Da fehlt noch ein Leerzeichen zwischen `cd` und
            `..`!")
        }
        if bash.Test("$(pwd) = \"$ROOT\"") {
            break
        }
    }

    Say("Gut. So, nun brauchen wir ein wenig Magie... *pling*")
    Say("[Der Schrank rumpelt und ächzt]")
    bash.Execute("mkdir -p $ROOT/schrank/magische_tür/tür{1..3}")
    bash.Execute("touch $ROOT/schrank/magische_tür/tür2/rechter_schuh")

    Say("Im Schrank hat sich nun etwas verändert. Geh hinein und
    such den rechten Schuh.")

    for Prompt() {
        Output()
        if bash.Test("$(pwd) = \"$ROOT/schrank/magische_tür/tür2\"") {
            if Command("^ls\n$") {
                Say("Du hast ihn gefunden! Nun komm wieder zurück!")
                break
            }
        }
    }

    for Prompt() {
        Output()
        if bash.Test("$(pwd) = \"$ROOT\"") {
            break
        }
    }

    Say("Gut! So, das war eine Einführung in `ls` und `cd`. Hier ist
    das Tutorial erstmal zu Ende! Danke!")
}

func gotoJail() {
    bash.Execute("ROOT=/tmp/nutsh")
    bash.Execute("rm -rf $ROOT")
    bash.Execute("mkdir $ROOT")
    bash.Execute("cd $ROOT")
}

Prompt() zeigt den Prompt an und liest Kommando und Ausgabe in spezielle globale Variablen. Output() gibt die Ausgabe aus, falls noch nicht geschehen. Say() gibt Text aus, Command() prüft, ob ein bestimmter String im letzten Befehl enthalten ist.

Es gibt noch zwei Bash-spezifische Funktionen: bash.Execute() führt eine Zeile Code aus und stellt sicher, dass er erfolgreich ausgeführt wird (der Rückgabewert ist dann Null). bash.Test() überprüft eine Bedingung mithilfe des test-Befehls.

Ähnliche Experimente habe ich mit Ruby als unterliegende Sprache gemacht und werde damit auch noch ein wenig weiter herumspielen, um herauszufinden, wie man das dahinterliegende semantische Modell später am besten organisiert. Was zum Beispiel noch gar nicht geht, sind “globale” Trigger, die sich über mehrere Zustände erstrecken (und hier zum Beispiel verhindern könnten, dass der Benutzer die Lektion über den nutsh-Ordner verlässt.

Zur Illustration folgt jetzt noch eine Nutsh-Sitzung, die aus oben stehendem Code resultiert. Die Farben gingen hierbei leider verloren, und mir fällt keine einfache Möglichkeit ein, sie hier in den Blog zu übertragen…

    Hallo! Willkommen in der Nut-Shell! Ich möchte dir zeigen, wie
    du mithilfe der Kommandozeile schnell und einfach mit Dateien
    und Verzeichnissen umgehen kannst.

    Legen wir gleich los: Tipp mal ls ein und drück Enter.

/tmp/nutsh $ ls
linker_schuh  schrank  schuhkarton

    Genau. ls steht kurz für "list" und zeigt dir die Dateien und
    Verzeichnisse an, die sich in deinem "aktuellen" Verzeichnis
    befinden. Die Verzeichnisse werden dabei blau dargestellt.

    Du bist gerade in einem Ordner namens /tmp/nutsh - das steht
    auch in dem blauen Text, den wir "Prompt" nennen. Der Prompt
    endet mit einem Dollarzeichen, das heißt soviel wie: "Du kannst
    jetzt ein Kommando eingeben!"

    Du hast vielleicht gesehen, dass sich hier ein Verzeichnis
    namens schrank befindet. Um dieses zu deinem aktuellen
    Verzeichnis zu machen, tippst du cd, dann ein Leerzeichen und
    dann den Namen des Verzeichnisses, in das du möchtest. Begib
    dich doch mal "in den Schrank" und sieh dich darin um!

/tmp/nutsh $ cd schrank
/tmp/nutsh/schrank $ ls
hut  jacke

    Genau. Hast du bemerkt, wie sich der Prompt geändert hat?

    Und wenn du wieder aus dem Schrank herausmöchtest? Die Abkürzung
    für das Verzeichnis oberhalb des aktuellen ist ".."!

/tmp/nutsh/schrank $ ..
bash: ..: command not found

    .. ist der Name des Verzeichnisses, du musst noch dazusagen, was
    du damit machen möchtest. Um "hinzugehen", schreib cd davor.

/tmp/nutsh/schrank $ cd ..

    Gut. So, nun brauchen wir ein wenig Magie... *pling*

    [Der Schrank rumpelt und ächzt]

    Im Schrank hat sich nun etwas verändert. Geh hinein und such den
    rechten Schuh.

/tmp/nutsh $ cd schrank
/tmp/nutsh/schrank $ ls
hut  jacke  magische_tür
/tmp/nutsh/schrank $ cd magische_tür
/tmp/nutsh/schrank/magische_tür $ ls
tür1  tür2  tür3
/tmp/nutsh/schrank/magische_tür $ cd tür1
/tmp/nutsh/schrank/magische_tür/tür1 $ ls
/tmp/nutsh/schrank/magische_tür/tür1 $ cd ..
/tmp/nutsh/schrank/magische_tür $ cd tür2
/tmp/nutsh/schrank/magische_tür/tür2 $ ls
rechter_schuh

    Du hast ihn gefunden! Nun komm wieder zurück!

/tmp/nutsh/schrank/magische_tür/tür2 $ cd ..
/tmp/nutsh/schrank/magische_tür $ cd ..
/tmp/nutsh/schrank $ cd ..

    Gut! So, das war eine Einführung in ls und cd. Hier ist das
    Tutorial erstmal zu Ende! Danke!

Bis nächste Woche! ;-)

]]>
Bachelorarbeit, Woche 2: Maschinenraum bachelorarbeit-woche-2 2013-07-22T11:33:00+02:00 Sebastian Morr sebastian@morr.cc Heute mit Kommandozeilen-Tokenizern, Test Driven Development und Bytes auf Papier.

Ich habe mich während der letzen zwei Wochen weiter intensiv mit Strategien beschäftigt, bei normaler, möglichst unverfälschter Kommandozeileninteraktion die Bestandteile “Befehl” und “Ausgabe” herauszulesen und bin jetzt an einem Punkt angekommen, an dem das ganz ordentlich funktioniert.

Da diese Komponente die allerunterste, schmutzigste Schicht sein wird, war es mir wichtig, damit anzufangen, denn sie ist Voraussetzung für alles Folgende.

Ziel der Command-Line-Interface-Komponente ist Bereitstellung einer solchen Schnittstelle:

// Start a new command line process and initialize it
c := cli.Spawn("bash")

// Repeat the following forever
for {
    // Display the prompt and wait until the user enters a command
    cmd := c.ReadCommand()

    // Post-command, pre-execution logic

    // Wait for the command to terminate, return the output and
    // whether it was interactive
    output, wasInteractive := c.ReadOutput()

    if (! wasInteractive) {
        // Post-execution pre-output logic

        // If it wasn't, the user hasn't seen any output, print it
        fmt.Print(output)
    } else {
        // Otherwise, the output was already printed to the user
    }

    // Post-output logic
}

Interaktiver Modus

Bei der “Interaktivität” geht es um Programme, die im Vordergrund laufen, also auf Eingaben des Benutzers warten und darauf reagieren. Beispiele sind Texteditoren oder Pager, Programme, die einen langen Text anzeigen, in dem man dann hoch- und runterscrollen kann. Bei dieser Art von Programmen kann man nicht auf die Ausgabe warten, sondern muss sie dem Benutzer schon anzeigen bevor der nächste Prompt kommt.

Bisher löse ich das über Timer: Wenn ein Befehl länger als x Millisekunden läuft, schalte ich in den “interaktiven Modus”, der die Ausgabe direkt ausgibt. Man verliert dadurch die Möglichkeit, zwischen Terminierung des Befehls und Ausgabe des Befehls etwas zu tun, beispielsweise Bedinungen zu überprüfen oder Text auszugeben.

Aufbau des CLI-Moduls

Der Prototyp ist ja in Go geschrieben, was Nebenläufigkeit sehr einfach macht. In der folgenden Abbildung ist jedes Oval ein Thread (genauer: eine Go-Routine), die Kommunikation läuft über Channels, die man sich so ähnlich vorstellen kann wie UNIX-Pipes.

Aufbau des CLI-Moduls

startProcess ganz unten kommuniziert mit dem Kommandozeilen-Prozess. Über zwei Channels gehen Runen (Unicode-Zeichen) rein und raus. Die Ausgabe wird von tokenize gelesen, wo sie in Tokens zerlegt wird (Zeichenketten mit Typ, die Token-Typen sind “command”, “output” und “prompt”). Über den “runes”-Channel gehen die interaktiv geschriebenen Zeichen hoch. Die CLI macht damit dann High-Level-Kram. inputStdin pumpt vom Benutzer geschriebene Zeichen nach filterInput, auch von der CLI kommen Strings (z.B. Befehle, die Bedingungen überprüfen). filterInput macht schließlich die beschriebene Enter-Ersetzung und gibt das Resultat an den Prozess weiter. Es gibt eine zentrale “state”-Ressource (States sind “cmdinput”, “cmdecho”, “output” und “prompt”).

Erkennen des eingegebenen Befehls

Dazu habe ich letztes Mal schon etwas geschrieben: Ich fange ab, wenn der Benutzer Return drückt, und sende stattdessen “Ctrl-E Space Ctrl-U ☃ Backspace Ctrl-Y ☃ Backspace Backspace Return”. Das setzt den Cursor ans Ende der Zeile, fügt ein Leerzeichen ein (damit es, falls die Zeile vorher leer war, etwas zu löschen gibt), löscht die Zeile und kopiert sie in die Zwischenablage, schreibt ein spezielles Unicode-Zeichen als Marker, löscht den Marker wieder, fügt die Zwischenablage ein, sendet den zweiten Marker, und löscht diesen Marker und das Leerzeichen und sendet den Befehl. Auf diese Weise steht das eingegebene Kommando sauber zwischen den beiden Markern.

Das mit den Schneemännern ist natürlich nur eine vorläufige Lösung.

Erkennen des Prompts

Auch um den Prompt zu erkennen, benutze ich momentan Unicode-Marker am Beginn und am Ende des Prompts. Das führt zu Problemen, wenn der Benutzer den Prompt ändert oder ihn ausgeben will, ich weiß noch nicht, wie ich das lösen könnte. Aber diesen Ansatz behalte ich halt erst mal bei, bis mir etwas besseres einfällt.

Umgang mit mehrzeiligen Eingaben

Es gibt einige CLIs, die erkennen, dass ein Befehl beim Drücken von Enter “unvollständig” ist, und diesen dann noch nicht senden, sondern dem Benutzer die Möglichkeit geben, ihn fertig zu schreiben. Dabei wird ihm üblicherweise ein zweiter Prompt angezeigt, der sich vom normalen unterscheidet. Momentan schreibe ich andere Marker in diesen zweiten Prompt, machte nach dem oben beschriebenen Enter-Verfahren einen Lookahead, gucke mir also das nächste Ausgegebene Zeichen an. Ist es ein zweit-Prompt-Marker, wiederhole ich den Eingabeprozess und hänge am Schluss sämtliche so eingegebenen Zeilen zusammen.

Das funktioniert soweit gut, setzt aber natürlich Konfigurierbareit der Prompts voraus.

Versteckte Befehle

In den Tutorials werde ich später ausführlich Gebrauch von Befehlen “im Hintergrund” machen, die Bedinungen überprüfen, oder Trainingumgebungen einrichten. Dabei ergibt sich das Problem, dass diese in der Befehlsgeschichte auftauchen, wenn man sie an den Prozess sendet, mit dem der Benutzer auch arbeitet. Hier weiß ich noch nicht, wie ich die wieder daraus entferne/verberge. Befehle, die nicht auf den internen Zustand des CLI zugreifen, könnte man vielleicht in einer zweiten Instanz ausführen?

Test Driven Development

Ich mache stets gute Erfahrungen mit “Testgetriebener Entwicklung”. Dabei geht es darum, automatisierte Tests zu erstellen, die eine korrekte Funktionsweise des eigenen Codes sicherstellen. Der eigentliche Trick dabei ist, diese Tests vor dem Code zu schreiben, dadurch macht man sich selbst sehr gut klar, welche Anforderungen es gibt.

  1. Test schreiben. Der Test will Code benutzen, den es noch nicht gibt, er lässt sich deshalb nicht in ein Programm übersetzen.
  2. Gerade so viel Code schreiben, dass sich der Test übersetzen lässt. Der Test sollte nun fehlschlagen (dieser Schritt ist wichtig, um zu überprüfen, ob der Test korrekt geschrieben ist und tatsächlich fehlschlagen kann).
  3. Den einfachsten Code schreiben, der den Test erfolgreich sein lässt.
  4. GOTO 1.

Mich hat damals dieser Text zu TDD stark beeindruckt: An Extreme Programming Episode.

Planung

Diese Woche möchte ich hautpsächlich zwei Dinge tun: Zum einen Literaturrecherche nach Themen rund um Kommandozeilen, Sprachentwurf und Compilerbau, Didaktik. Zum anderen Schreiben einiger Beispiel-Tutorial, um genauere Anforderungsanalyse für die nutsh-Sprache machen zu können.

Und zum Schluss noch: Das passiert, wenn man zu sehr auf seinen Bytes herumkloppt und irgendwie einen “Drucken”-Befehl dabei erzeugt, der versucht, die Steuerzeichen einer Vim-Sitzung auszudrucken:

Bytes auf Papier!

]]>
Bachelorarbeit, Woche 0: Themenvorstellung und Prototyping bachelorarbeit-woche-0 2013-07-08T14:36:00+02:00 Sebastian Morr sebastian@morr.cc Heute mit: PDF-Präsentations-Software, ehrlichem Feedback, Zeitplanung, Anfängen des Shell-Wrappers und dem Führen eines Logbuchs.

Themenvorstellung

Letzten Montag habe ich den Themenvorstellungs-Vortrag vor meiner Erstprüferin und einigen Institutsmitarbeitern gehalten. Ich verlinke hier nochmal die endgültige Fassung der Präsentation mit mehr Zwischenschritten und leicht umsortierten Folien.

Zur Präsentation des PDFs habe ich pdfpc (“PDF presenter console”) benutzt, das einem die verbleibende Zeit, die nächste Folie, den Forschritt innerhalb der Präsentation sowie Notizen anzeigen kann, das eine Folienübersichts- und eine Schwarz-schalt-Funktion hat und das insbesondere mit den “Zwischenschritten” innerhalb von LaTeX-beamer-Präsentationen klarkommt. Sehr empfehlenswert!

Das Feedback war kritisch und ehrlich: Die Zuhörer stellten die Überlegenheit eines interaktiven Tutorials gegenüber einem herkömmlichen in Frage und äußerten insofern stärkeres Interesse an der Evaluation, als ich erwartet hatte. Ich glaube, mein “Adventure”-inspiriertes Beispiel war zu verwirrend und lenkte von der eigentlichen Idee ab. Wir diskutierten viel über die Generalisierbarkeit des Systems, die ich nach wie vor für machbar halte; über Edgecases (und “böse” Benutzer, die das System austricksen wollen) - ja, die wird es unvermeidlicherweise geben, man muss möglichst viele Fehlerfälle automatisiert abfangen; und darüber, dass eine Unterstützung bei Syntaxfehlern nur begrenzt möglich ist. Schöne Anregungen waren, in Shells den Rückgabewert von Programmen zu beachten, und ein Tutorial so dynamisch zu machen, dass bei “Vergessen” eines Befehls wieder zu dem jeweiligen Abschnitt zurückgesprungen werden kann.

Anmeldung

Am Mittwoch, dem 3. Juli, habe ich dann die Arbeit dann im Sekretariat des Instituts angemeldet. Ab jetzt tickt die Uhr, ich habe 4 Monate Zeit bis zur Abgabe, die also - so wurde mir von Seiten des Prüfungsamtes inzwischen bestätigt - spätestens am 3. November erfolgen muss.

Gleichzeitig habe ich zugesagt, beim kommenden Vorkurs Informatik mitzuwirken, in dem ich die Nut Shell an Studienanfängern aus informatiknahen Fächern ausprobieren möchte. Der Vorkurs beginnt am 16. September, ich habe also 10 Wochen, um eine vernünftige Implementierung zu bauen, und dann noch 7 Wochen, um die Arbeit aufzuschreiben und die Evaluation auszuwerten. Sounds reasonable.

Bei der Anmeldung wird auch der Titel festgelegt, die Professorin fand meinen Arbeitstitel zu lang, während es meinem Betreuer gefiel, den Namen des Frameworks in den Titel mitzunehmen, insofern lautet dieser nun

The Nut Shell – A Framework for Creating Interactive Command Line Tutorials.

Damit bin ich auch sehr zufrieden :-)

Prototyp

Mein derzeitiges Ziel ist prototyp-hafte Umsetzung eines Programms, das sich um einen Kommandozeilen-Prozess wickelt, Ein- und Ausgabe mitschneidet und erkennt, welche Befehle eingegeben werden, was die Ausgabe dieser Befehle ist und wie der Prompt lautet (die Zeichensequenz die dem Benutzer signalisiert “ich bin bereit, du kannst mir jetzt einen neuen Befehl geben”). Das ist weniger einfach, als es klingt, weil in Ein- und Ausgabe diverse Steuerzeichen auftauchen (in der Eingabe Tasten und Tastenkombinationen zur Bearbeitung der momentatnen Kommandozeile, in der Ausgabe diverse sogenannte Escapesequenzen, die von dem Programm in dem die Kommandozeile läuft (dem Terminalemulator) als Aufforderungen verstanden werden, den Cursor zu bewegen, Teile der Zeile zu löschen oder die Textfarbe zu ändern (eine Übersicht der Escape-Codes, mit denen mein Terminal-Emulator urxvt zurechtkommt, findet der Linuxbenutzer unter man 7 urxvt). Die Abgrenzung der drei genannten Bestandteile ist alles andere als klar.

Das Teilproblem, das eingegebene Kommando zu erkennen, denke ich inzwischen zufriedenstellend gelöst zu haben: Alle mir bekannten Kommandozeilen-Interpreter unterstützen die beiden Tastenkombinationen Ctrl-U und Ctrl-Y, welche die momentan eingegebenen Zeichen löschen und in einer internen Zwischenablage speichern bzw. die Zwischenablage wieder einfügen. Diese Kombinationen sind deshalb so verbreitet, weil sie Bestandteil einer Programm-Bibliothek namens Readline sind, die praktisch überall benutzt wird, wo es darum geht, Text vom Benutzer einzulesen. Was ich also momentan mache, ist den Benutzer die Kommandozeile wie gewohnt eingeben zu lassen, dabei kann er tab-completion, Pfeiltasten, etc. benutzen. Sobald er jedoch Enter drückt, sende ich die Sequenz “Ctrl-U Anfangs-Marker Ctrl-Y End-Marker Enter” an den unterliegenden Prozess, was dazu führt, dass in der Ausgabe der tatsächlich eingegebene Befehl sauber zwischen zwei Markern steht. Nach guten Markern muss ich noch suchen (unbenutzte Escape-Sequenzen?), momentan schreibe ich einfach einen bestimmten String und lösche ihn direkt wieder…

Andere lustige Ansätze waren übrigens:

  • Intern ein eigenes Readline mitlaufen lassen – funktioniert aber mit vielen Shell-spezifischen Features nicht.
  • Die bash hat die Option set -x, um Befehle vor der Ausführung nochmals ganz anzuzeigen, soetwas ist mir aus anderen CLIs aber nicht bekannt.
  • Pfeil hoch und Pfeil runter senden, was bei command line interfaces mit Befehlshistory ebenfalls dafür sorgt, dass die Befehle erneut geschrieben werden.
  • Auf Enter warten, und dann (in der bash) “Pos1 CMD=" End "; echo "$CMD"; eval "$CMD"” senden. Aua.
  • History-Datei auslesen. Manche Shells haben aber keine, und die wird oft nur verzögert geschrieben.

Probleme bereiten noch mehrzeilige Befehle. Wie ich allgemein den Beginn des Prompts erkennen könnte, weiß ich überhaupt noch nicht. Auf einen konfigurierbaren regulären Ausdruck plus Pause warten?

Logbuch

Ich mache hervorragende Erfahrungen damit, beim Arbeiten stets die Seite “Bachelorarbeit” meines privaten Wikis offenzuhaben und Ideen, Probleme, wichtige Codeschnipsel, Quellen und Resultate mit Timestamps reinzuschreiben. Das hilft hervorragend gegen „Wo war ich stehengeblieben…?“, und macht mir selbst viele Dinge klarer. Ich hoffe, dass es das spätere Zusammenschreiben wesentlich vereinfacht, weil einfach vieles schon in schriftlicher Form vorliegt.

Dieses “Führen eines Logbuches” erleichtert auch das Schreiben dieser Blogposts ungemein, weil ich einfach nur den ganzen Kladderadatsch seit dem letzten Post durchgucken und zusammenfassen muss ;-)

]]>
Bachelorarbeit, Woche -1: Zukunftspläne bachelorarbeit-woche-minus-1 2013-06-24T18:21:00+02:00 Sebastian Morr sebastian@morr.cc Nanu? Im letzten Blogpost schrieb ich doch noch, diese Woche würde die Arbeit angemeldet? Ja, aber wegen Terminüberschneidungen wurde das noch eine Woche nach hinten geschoben. Also, Woche -1. Was habe ich gemacht?

Präsentation zur Themenvorstellung

Am Institut, an dem ich die Arbeit schreibe, ist es üblich, dem Institutsleitenden die Themen von Abschlussarbeiten in einer kurzen mündlichen Präsentation vorzustellen. Hier ist die derzeitige Fassung. Die Inhalte sind weitgehend identisch zum Text des letzten Posts, neu hinzugekommen sind ein paar Bildchen und eine Animation des Beispiels.

Es gibt ein offizielles LaTeX-Paket namens tubslatex, mit dem man unter anderem auch Präsentationen im Corporate Design der TU erstellen kann. Die Beispieldokumente sehen sehr schick aus, und die Dokumentation taugt auch, es ist mir allerdings trotz einiger hartnäckiger Versuche nicht gelungen, das Paket unter Arch Linux zu installieren. Probleme machen die Schriftarten, man kann zwischen Arial und der „Hausschrift“ Nexus wählen. Bei ersterer fehlte eine benötigte Datei, Nachinstallieren führte zu anderen lustigen Fehlermeldungen, die ich bisher nicht verstanden habe. Bei zweiterer „funktionierte“ alles, die angezeigte Schrift hatte aber ein abscheuliches Kerning und war auch garantiert nicht Nexus. Naja. Ich benutze jetzt Dominiks Template mit einigen kleinen Farbanpassungen, das tut auch, was es soll.

Sprache

Als Training möchte ich die Arbeit auf Englisch schreiben. Letztes Semester habe ich Scientific Writing gehört und fühle mich dementsprechend gut darauf vorbereitet. Ich habe mit mehreren Personen gesprochen, die sehr gute Erfahrungen damit gemacht haben, englische Abschlussarbeiten zu schreiben.

Mein Betreuer wies mich darauf hin, dass die Lektionen für die bash-Shell, die wir im Vorkurs auf die Ersties loslassen wollen, auf Deutsch verfasst sein sollten. Berechtigter Einwand, insofern werde ich versuchen, die eigentliche Arbeit klar von den beispielhaften Anwendungen zu trennen, und Beispiele für den Fließtext notfalls zu übersetzen.

Hier schreibe ich über die Arbeit bisher auf Deutsch, um der Leser-Zielgruppe entgegenzukommen.

Titel

Der Arbeitstitel lautet bisher

Design and Implementation of a Framework for Creating Interactive Command Line Tutorials

und beschreibt die Sache aus meiner Sicht recht gut. Bis zur Anmeldung habe ich dennoch Zeit, daran herumzufeilen. Reizvoll fände ich beispielsweise, den Namen des Frameworks (The Nut Shell) noch als Vorsatz mit hineinzunehmen.

Prototyp

Und ich hatte auch ein wenig Spaß am Gerät: Ich habe einen winzigen Prototypen in der Sprache Go gebaut, der sich um einen Kommandozeilenprozess wickelt und dessen Standardein- und -ausgabe mit dem aufrufenden Terminal verknotet. Das geht ganz prima, man kann dadrin auch Vim starten :-)

Am Rande: Mit Go beschäftige ich mich erst seit einigen Wochen, möchte aber bereits sagen: C schmeckt hervorragend, wenn man es kurz vor dem Verzehr durch Go ersetzt. Ernsthaft, die Sprache ist so gut, wie alle sagen. Mehr dazu vielleicht mal später.

]]>
How to blog with nanoc how-to-blog-with-nanoc 2013-06-23T13:41:00+02:00 Sebastian Morr sebastian@morr.cc This is a follow-up to “History of morr.cc”. I’d like to show you how this blog is created using the fantastic static site generator “nanoc”.

Why would you want static sites?

To be short: Simplicity, security, speed.

OK, how does it work?

You can look at this blog’s source code on GitHub.

  • The content folder contains the blog posts, assets related to the layout (in assets), and some top-level pages and files. Texts are written in the Markdown format, a simple markup language that is even comfortable to read as plain text (for example, look at this post’s source). Each post has a header containing at least a title, the date of publication, and some tags in YAML format.

  • The layouts folder contains some HTML templates with eRuby tags.

  • The lib folder contains helper functions you can use in the eRuby tags and a custom filter that reformats HTML nicely using tidy-html5. More about that later.

This is all tied together by the Rules file, which contains several types of instructions. Files in the content directory are treated as items with an identifier that is the file’s path minus their filename extension. A file like content/how-to-blog-with-nanoc/index.md has the identifier /how-to-blog-with-nanoc/.

  • compile statements say “for an item with this identifier, apply these filters (which evaluate eRuby tags, convert Markdown to HTML, and tidy the result) and layouts (which stuff the result into one of the layout files). Nanoc comes with some basic filters, but its easy to write your own, too.

  • route statements say “for an item with this identifier, put the processed content here”.

  • layout statements say “for a layout with this identifier, apply these filters.

  • preprocess statements can be used to create new items, like pages for each tag, or to do some other preprocessing.

Now, when executing nanoc, all these rules are applied and the result is put in the output folder. nanoc deploy uploads this folder to my web server (the configuration for that is in nanoc.yaml. Very handy is nanoc aco, that starts a web server locally, lets you preview your site and autocompiles everything that is needed when refreshing a page.

And, that’s really everything.

Resources

nanoc.ws contains everything you need to know to build your own nanoc powered site. Have fun!

]]>
Why you might like DuckDuckGo why-you-might-like-duckduckgo 2013-06-18T00:25:00+02:00 Sebastian Morr sebastian@morr.cc DuckDuckGo is an alternative search engine. I’ve made it my default search recently. Let me tell you about the differences to Google, Bing and the like – and why you should care.

Privacy concerns

Search leakage

Normally, when you click on a link, the browser transmits the URL you came from to the visited site. This is called referer information, and it’s nice for a website owner to see where his visitors are coming from. But likewise, when you click on a link after a Google search, the site you visit will see your search query - because it was part of the URL. You might not want them to know that you stumbled across their site while searching for “cheap viagra”.

DDG prevents this so-called search leakage by default. The sites will know that you visited them, but they won’t know your search term.

See donttrack.us for more information about this problem.

Information not collected

DDG does not collect any information about you. It does not build up a search history, does not create profiles about you. You should care about this especially because of two reasons:

First, DDG cannot give information about you to law enforcement, because no information exists. You don’t have to fear “accidents” or malicious hackers, too.

Second, it helps to reduce the filter bubble effect. Because Google knows what you like, it will display results that comply with your beliefs on the top. You are trapped in a “bubble” and will never see other opinions. Do you want this?

For an illustrated explanation of this topic, see dontbubble.us.

Practical benefits

Goodies

DDG has some major time-savers built in. Try to search for

All querys add a helpful “instant result box” to the top of the search results. And there are so many of them. Oh, and you can create your own plugins, of course.

!Bangs

For searching on sites directly, you probably have some search plugins in your browser, maybe in some kind of dropdown menu? Yeah, well, DDG has those built-in. Simply prefix your search term with “!sitename “. Examples:

This is especially awesome when DDG is the default search engine for your address bar. Instant search everywhere, on every device! And there are OVER 3000 different bangs!

Other random stuff I like

You can navigate your search results with “j” and “k”, like in Vim, and follow a link with “l”. Of course, you can also use the arrow keys.

In the settings, you can set “Advertisements” to “Off”. In this case, they kindly ask you to support them on the microdonation platform Flattr. Awesome move.

When you want to go directly to the first hit, use “I’m feeling ducky” in the dropdown menu or simply prefix your search with “! “ or “\”.

And of course, there’s a Let me DDG that for you!

Conclusion

Give DuckDuckGo a try! Visit their about page for a nice video and basic setup instructions and go to the Support Center for many more details.

]]>
Bachelorarbeit, Woche -2: Grundidee bachelorarbeit-woche-minus-2 2013-06-11T19:50:00+02:00 Sebastian Morr sebastian@morr.cc In den kommenden Monaten möchte ich hier über den Entstehungsprozess meiner Bachelorarbeit berichten. Das soll mich zu einer strukturierten, kontinuierlichen Arbeitsweise motivieren – und vielleicht ist es auch ganz unterhaltsam zu lesen, in welche Fallen und Probleme ich so laufe. :-P

Das Thema geistert mir schon seit einiger Zeit im Kopf herum, und die Bachelorarbeit ist eine gute Gelegenheit, sich mal intensiv damit auseinanderzusetzen. Hier ist die erste Themenbeschreibung:

Es geht um Entwurf und Umsetzung eines Frameworks zum Erstellen interaktiver Kommandozeilen-Tutorials.

Zur Motivation: Momentan kranken Tutorials zum Erlernen von Shells oder Skriptsprachen meiner Meinung nach daran, dass der Benutzer seine Aufmerksamkeit zwischen dem Terminal und dem Textdokument, das das Tutorial enthält, hin- und herwandern lassen muss. Das Tutorial ist statisch und kann weder auf Fehler des Benutzers reagieren, noch die Erfüllung von Lernzielen überprüfen. Die Tutorials, die mit dem angestrebten Framework erstellt werden können, unterscheiden sich insofern davon, als dass der erklärende Text mit den Benutzereingaben und den Reaktionen der Kommandozeile verwoben sein soll.

Vorbilder sind dabei auf der einen Seite Text-Adventures bzw. Multi-User Dungeons, die ein ähnliches User Interface haben, als auch existierende Tutorials a la “Try $LANGUAGE in your Browser” (siehe z.B. Try Ruby, Try Git, Try Haskell), die allerdings noch bei weitem nicht so dynamisch sind, wie ich mir das wünschen würde.

Hier folgt eine beispielhafte Sitzung, die im Stil eines Text-Adventures ausgeschmückt ist. Diese Erzählweise ist natürlich optional, gefällt mir aber sehr. Der eingerückte Text ist die Handlung, die automatisch erscheint, der Rest ist normale Shell-Interaktion.

    "Eines der wichtigsten Dinge, die ich dir beibringen möchte, ist
    Hilfe zur Selbsthilfe. Hier, ich möchte dir ein Geschenk
    machen."

    Der Meister zieht ein dickes, in Leder gebundenes Buch hervor
    und reicht es dir. Es trägt die Aufschrift 'man'.

    "Dieses Buch enthält das gesammelte Wissen über unsere Welt. Um
    etwas darin nachzuschlagen, sag einfach 'man', gefolgt von dem
    Kommando, über das du etwas wissen möchtest. Möchtest du das
    einmal ausprobieren? Sag dann 'q' wie 'quit', um das Buch wieder
    zu schließen."

$ man mkdir

    Das Handbuch beginnt, vor dir in der Luft zu schweben und
    schlägt von selbst die Seite über 'mkdir' auf.

[Anzeige der manpage]

    Das Buch schließt sich wieder.

    "Gut. Ich möchte dir eine Aufgabe stellen, die dich im Umgang
    mit dem Handbuch schulen wird. Ich habe in dieser Höhle eine
    unsichtbare Glaskugel verborgen. Finde heraus, wie du das
    Kommando `ls` dazu bringst, verborgene Gegenstände anzuzeigen.
    Dann bring die Glaskugel in die Abstellkammer."

$ ls
abstellkammer/
schriftrolle
$ man ls

[Anzeige der manpage]

$ ls - A

    Die Luft um dich herum vibriert, und du spürst, wie das
    Universum dich anschreit:

ls: cannot access -: No such file or directory
ls: cannot access A: No such file or directory

    "Oh, da hast du dich versprochen: Zwischen das '-' und das 'A'
    gehört kein Leerzeichen!"

$ ls -A

    Für einen kurzen Moment erfüllt helles Licht die Höhle und du
    kannst sehen, was sich darin befindet:

abstellkammer/
schriftrolle
.glaskugel

    Kurz darauf wird es wieder dunkler.

$ rm .glaskugel

    Ein Blitz fährt aus deinem ausgestreckten Zeigefinger und trifft
    die Glaskugel, welche in tausend Stücke zerspringt.

    Der Meister seufzt, und setzt eine neue Glaskugel auf den Boden.

    "Diese Dinger sind teuer! Bitte bring diese in die
    Abstellkammer."

$ echo hilfe

    Deine Stimme hallt von den Wänden der Höhle wieder:

hilfe

    "Um Dinge zu bewegen, sag `mv`. Lies den ersten Abschnitt im
    Handbuch, um zu erfahren, wie man das Kommando benutzt."

$ man mv

[Anzeige der manpage]

$ mv .glaskugel abstellkammer

    "Ausgezeichnet! Du siehst, wie hilfreich das Handbuch ist. Es
    enthält übrigens auch einen Eintrag über sich selbst."

    "Pass gut auf dein Handbuch auf. Es wird dir ein treuer Freund
    werden."

Einen Codenamen habe ich auch schon: nutsh, von “in a nutshell” = “kurz und bündig”. Das Framework soll universell für beliebige Kommandozeileninterfaces einsetzbar sein und könnte beispielsweise zum Lehren folgender Systeme benutzt werden:

  • System-Shells (bash, zsh, …)
  • Read-Eval-Print-Loops diverser Programmiersprachen (Ruby, Python, Haskell, …)
  • Tools wie Git oder andere VCS’e, Makefiles, diverse Compiler-Toolchains
  • UNIX-Verzeichnisstruktur (das dann “erkundet” werden kann und in dem man ebenfalls Aufgaben erledigen soll)

Um das System zu realisieren, muss eine domainspezifische Sprache zur Beschreibung der Tutorials entworfen werden, mit deren Hilfe man bequem Ziele, Fehlerabfragen mit anschließenden Hilfestellungen, Vor- und Nachbedingungen sowie Constraints eingeben kann, die letztendlich eine große state machine modellieren. Der Entwurf einer solchen Sprache wäre vermutlich Hauptproblem der Arbeit. Diese Beschreibung muss dann geeignet geparst und interpretiert/ausgeführt werden (ich habe die Compiler-Vorlesungen gehört).

Technisch soll es so umgesetzt werden, dass nutsh gebuffert mit dem darunterliegenden interaktiven Prozess kommuniziert und – für den Anwender verborgen – Bedingungen überprüft und Veränderungen an der Umgebung vornimmt. Die Eingaben des Benutzers und die Ausgaben des Prozesses werden durchgereicht, aber wie oben mit Anmerkungen versehen (Hinweise auf Tippfehler oder falsche Syntax etc.). Herausforderungen werden hierbei Steuerungskommandos (Pos1, Pfeiltasten) und Shell-spezifische Funktionen wie Tab-Completion sein, die von nutsh verstanden werden müssen, damit das eingegebene Kommando vollständig ermittelt werden kann.

Ein nice-to-have feature wäre ein Webinterface, um nutsh nicht lokal installieren zu müssen.

Soweit die erste Beschreibung. Das Thema kam ganz gut an, ich werde sehen, dass ich möglichst große Teile des Systems verallgemeinere, um es wissenschaftlich wiederverwertbar zu machen.

Nächster Schritt ist dann eine mündliche Themenvorstellung in zwei Wochen, bevor die Arbeit angemeldet wird.

]]>
Keeping a personal wiki keeping-a-personal-wiki 2013-06-05T18:18:00+02:00 Sebastian Morr sebastian@morr.cc In this article, I’d like to show you which tools I use to keep a personal wiki and what I do with it.

Short history

I’ve been keeping text files about personal stuff since 2007. It started with a diary, but expanded to several text files soon (todo, ideas, quotes, …). They contained indented lists, I had Vim macros in place to fold and unfold them (a format I now call vimgirl).

Over the time, I discovered more uses for my directory of text files: GTD lists, brainstorming sessions, command line tricks, lent stuff, all kinds of collections - heck, I even kept my appointments in nested plain text files at some point, which worked surprisingly well.

Then, nothing happened. Then, I created Vimboy.

Vimboy

Vimboy is a Vim plugin that does almost nothing. You have a folder with text files, and when one file mentions the name of another file, it automatically links there. Plus, you get a mapping for quickly deleting the current file, and pressing return creates a new page named after your visual selection/the word you are on. That’s it.

Screenshot of Vimboy

Vimboy also has a “manual link mode”, where you have to use [square brackets] to create links, but since a very special incident where autolinking created an UBERAWESOME association, I recommend automatic links.

I’ve named my wiki BrainDump because I’ve come to see it as exactly this: A storage extension for my brain. Once information is dumped, it’s safe, doesn’t bother you anymore and you can look it up when you need it later. This frees up your mind for important stuff.

When switching to Vimboy, the file’s format changed to something like Markdown, although formatting is completely up to you.

I’m using BrainDump as: An address book, howtos for myself, my clothing sizes, travel packing list, time & goal tracking, geek codes et cetera, chores planning and speedruns, notetaking in classes, idea management, project overviews, online accounts list, quotes, lists of things I want to read/watch/eat/play, recipes, diary, decision making, ratings of cheese/chocolate/wine.

A shell script called wiki supports fast creation and access to wiki pages, I have tab completion in place, too. For full text search, I use ack.

RoboBoy

RoboBoy is a recent addition to the *boy family: An Android application you can use to sync your wiki among main computer and smartphone using Git. It’s quite hard to set up right now and has its quirks, but I like always taking my brain extension with me ™.

Screenshot of RoboBoy

webboy

Finally, webboy is a Markdown-formatted-Vimboy-wiki-to-HTML compiler. I don’t use it right now, but if you’d like to keep a public wiki, or dislike reading text in the terminal, this is for you.

Conclusion

If you never kept a personal wiki, I encourage you to try it! If you dare to use the *boy suite, feedback is very welcome. You can find detailed documentation for the tools mentioned on their GitHub pages.

]]>
History of morr.cc history-of-morr-cc 2013-05-28T00:00:00+00:00 Sebastian Morr sebastian@morr.cc 2005: Plain HTML

Sometime about 2005, I tought myself HTML (with the formerly great site SELFHTML) and created my first home page, with lots of <font> tags and primary colors… It had very premature content and I remember it displaying a “construction site” GIF the whole time it was online. I used the webspace we were given at my school.

2006-2007: CSS, XHTML and m4

From the second iteration onwards, I have backups. In 2006, I learned CSS and XHTML and created this site that borrowed heavily from the W3C’s “Chocolate” Core Style. The “0b5cur3 933k 53c7!0n” contained things like forkbombs, a Geek Code and UNIX russian roulette. It was created by hand.

I got annoyed copying stuff around, and started using Makefiles and m4 macros for including the header and footer automatically. The content mainly remained the same, the main page displayed a cool CSS unfolding effect when you hovered over the categories.

The end of 2007 saw a redesign:

2008-2010: Iwahn

In 2008, I wrote a Ruby script called Iwahn (“I want a homepage NOW!”) that compiled Markdown files to XHTML. It understood nested folder structures and created appropriate navigation menus.

Up to this point I didn’t care much about stable URLs as I disallowed any bots on my site.

2010-2011: Ruby blog

In 2010 came two big changes: I migrated to a new domain, morr.cc, and to a new structure, a blog! It was powered by a heavily nanoc-inspired Ruby script and featured a lot of new content! It had an RSS feed and did quite a lot of SEO.

2011-2012: attoc

I was quite happy with this setup, and I’m not sure why I moved away from it. But in 2011, I switched to a “nerdy wiki”, powered by Vimboy and the simplest compiler I could think of: A 40-line shell script called attoc (get it? It’s smaller than nanoc ;-)

This system saw a redesign to avoid ASCII art in Google snippets (which could have been done with CSS3, too, but meh), using Twitter’s Bootstrap and using git log as a blog on the frontpage, an idea I still like very much.

But in the end, it was too unflexible, so I build something different again.

2012-2013: Almightree

I wrote a piece of JavaScript that transformed a nested tree of <ul>s to a foldable, searchable and zoomable website, and called it Almightree. Neat thing about this was that the URL equaled the search term, and the page refolded itself to display the search results as good as possible.

Downside included slow loading on old mobile devices and the inability to be crawled by robots, as they don’t interpret JavaScript. Maybe could have been solved with caching.

2013: Nanoc

And finally, this is my second attempt to do proper, neat blogging. I decided to push it down into the blog subdomain, to hopefully keep it alive there when I’ll want a different kind of site in the future…

]]>
RoboBoy roboboy 2013-04-11T00:00:00+00:00 Sebastian Morr sebastian@morr.cc http://github.com/blinry/roboboy ]]> Seminar talk: Stitch Meshes stitch-meshes 2013-02-15T00:00:00+00:00 Sebastian Morr sebastian@morr.cc For a computer graphics seminar, I and presented Cam Yuksel et al.’s (awesome) paper Stitch Meshes for Modeling Knitted Clothing with Yarn-level Detail:

Talk

I also designed a website which contains a short summary of the paper.

]]>
informatiCup 2012: PacMap pacmap 2012-03-23T00:00:00+00:00 Sebastian Morr sebastian@morr.cc PacMap is a little Android game that combines elements of Geocaching with those of crossword puzzles.

It was written in the beginning of 2012 with Sandra Hesse and Felix Geilert. It’s our contribution to the informatiCup 2012 competition, where we reached the fourth place.

You can read the (german) documentation and take a look at our talk here:

Documentation Talk

You can also download and play the app, of course!

PacMap screenshot

]]>
git-hydra git-hydra 2012-02-12T00:00:00+00:00 Sebastian Morr sebastian@morr.cc http://github.com/blinry/git-hydra ]]> Stratum 0 logo stratum-0-logo 2011-06-16T10:29:00+01:00 Sebastian Morr sebastian@morr.cc This is by far my most popular and widely-used logo up to this point. When Stratum 0, a Hackerspace in Braunschweig was founded, we started a logo contest, which generated a large body of rather nice logos! But one of my suggestions won:

Stratum 0 logo

It has been described as “runic”, and works quite well in low resolutions. The signet incorporates both the S and the 0 of Stratum 0, and the hour glass connects it to the theme of time, because the name originates from the Network Time Protocol (there’s an atomic clock in Braunschweig). The font used in the text variant is Yanone Kaffeesatz.

I gave the logo a very permissive license, inspired by the license of Tux, the logo of the Linux kernel:

The copyright owner, blinry, allows free use for everything and everyone. The only condition is that you acknowledge him if someone asks.

And I’m very glad I did! These days, it’s used on clothing, in countless print products, on signs, stickers, and presentation slides, it appeared in a comic, has been 3D-printed, sawn out of wood, 3D-modelled, quadtree’d, ended up in another logo for the CTF team Stratum Auhuur… and is used by the band Downshifter (yes, they asked, and yes, the license was meant to be that permissive).

Here are some older variations:

Hour glass variations

Back then, I had a number of other ideas, as well. If you want to use those for your own hackerspace or whatever – they are still free, just get in touch! :)

It's hacking time!

Out of sync

Time transmission

Key and hour glass

Stratum hole

And finally, here are two logos from before the final name for the hackerspace was even chosen! :) I still like the “Layer 8” one very much!

Base 38 and Layer 8

]]>
28C3: Tag 4 28c3-tag-4 2011-12-30T20:37:00+01:00 Sebastian Morr sebastian@morr.cc Programm heute: bup, ein auf Git basierendes Backup-System. Im Rahmen der Lightning Talks gab es ein paar Vorträge über die r0ket, unter anderem nochmal ein leicht verbessertes Massively-Multiplayer-Pong, bei dem ich jetzt mitspielen konnte. Ein anderes Team hat ein Dating-Programm geschrieben, dass einem ein gutes Dutzend Fragen stellt (Lieblings-Texteditor, etc.) und dann gut passende Partner vermittelt. Anschließend ein Workshop über Festplattenverschlüsselung, leider war der Host nicht da. Wir haben aber schnell angefangen, uns untereinander über Verschlüsselungstechniken zu unterhalten. Ein Talk, der erklärte, wie sich Quanteninformation von herkömmlichen Informationen unterscheiden: Qubits (Quanten-Bits) haben zwei Eigenschaften, von denen man jeweils nur eine messen kann, und dabei auch noch den Zustand des Qubits verändert. Das wurde schön anschaulich mithilfe von Socken erklärt. :-)

Mit zwei Stratum-Nullern (\o/!) gabs schließlich noch die traditionellen “Security Nightmares”, ein Rückblick auf vergangene Daten-Diseaster und eine Vorhersage der Unfälle des nächsten Jahres.

In der Abschlussveranstaltung werden immer Statistiken bekannt gegeben. Dieses Jahr haben wir OVER 9000 Flaschen Mate und 3000 Flaschen Flora Power getrunken (I am the 0,1%!), was wohl die gesamte Dezemberproduktion darstellte. Irgendwas knapp um die 100 TB Datenverkehr!

Wenn man per Kabel am Congressnetz hängt, hat man übrigens eine Ping zu google.de von 1.37 ms!

Congress-Mem ist übrigens das Geräusch einer auf Holzboden umfallender Mateflasche, ein sehr markantes primm-bi-bi-bimm. Jemand regte an, aus diesem Geräusch mal Pausenmusik zu komponieren. Weiteres Mem dieses Jahr war die wiederholte Aufforderung des NOCs “Use more bandwidth!”, offenbar war ihnen das Netz nicht ausgelastet genug…

Danach begann dann auch relativ schnell der Abbau. Ich ging noch in die c-base rüber, einen wenige hundert Meter vom bcc entfernt gelegenen Hackerspace. Whoa, Atmosphäre! Der Space hat ein Thema, nämlich “abgestürzte Raumstation”, das auch konsequent und an allen Ecken umgesetzt wurde. Das wirkt ein bisschen so, wie auf einem professionellen Weltraum-Themen-Geburtstag, viel blaues und schwarzes Licht, Blechverkleidungen an vielen Stellen, mit denen zum Beispiel der Eingang zum Tunnel ausgebaut wurde, leuchtende Tische aus Milchglas, Spiegelwände und verwirrende Plakate mit dem “Aufbau” der Raumstation. Das gab alles ein schönes Flair, konnte aber natürlich trotzdem die Quaderförmigkeit der Räume nicht verbergen. Der Getränkeautomat verkauft Mate und andere Hackerbrausen an die “crew” und an “aliens” zu unterschiedlichen Preisen. Anschauen musste ich mir auch die “Häutungsstation” und die “Entsorgungsstation”: Garderobe und Toilette. An letzterer waren schöne Symbole: Einmal ein Kreis mit Fliege drunter, einmal Kreis mit Fliege drauf… An der Decke viele wuchernde, mit Geschwüren versehene hell leuchtende Rohre, sonst relativ dunkel, mit Spotlichtern angestrahlte Urinale. Zum (wohl wesentlich größeren) Mitgliederbereich hatte ich dann allerdings keinen Zugang mehr.

Tja, da isser zuende, mein erster Congress. Ich denke, man konnte meinen Ausführungen entnehmen, dass ich absolut begeistert war und viele schöne Erfahrungen gemacht habe? Wenn man die Streams von zu Hause schaut, hat man mehrere Vorteile: Man kann schneller den Saal wechseln, wenn einem der Vortrag nicht gefällt, man hat immer einen Sitzplatz und gute Sicht, man hat es oft bequemer und leichtere Ess-/Trink-Versorgungsmöglichkeiten. Das ist ein guter Ersatz, bietet aber natürlich nicht alle Möglichkeiten, die eine persönlicht Teilnahme bietet. Daher werde ich mich nächstes Jahr wieder um ein Ticket bemühen! Es gab Andeutungen, dass der Congress nächstes Jahr evt. in einem größeren Gebäude stattfindet. Den Rest des Jahres verbringe ich jetzt damit, auf den 29C3 zu warten ;-)

]]>
28C3: Tag 3 28c3-tag-3 2011-12-30T05:06:00+01:00 Sebastian Morr sebastian@morr.cc Der durchschnittliche Congressteilnehmer, den ich hier mal Christian nennen möchte, ist männlich (hier ist ein gefühlter Frauenanteil von 5 Prozent) und um die 30. Pferdeschwänze sieht man viele, sie bilden aber nicht die Mehrheit, Christian hat kurze braune Haare. Eine Brille hat er auch nicht. Christian ist eher schlacksig. Er bewegt sich schnell und bleibt gerne abrupt in den Fluren stehen. In seinem Rucksack führt er eine Club-Mate und ein mit Stickern verziertes Thinkpad-Notebook mit sich, auf dem Linux mit einem Tiling-Window-Manager läuft. Christian trägt einen schwarzen Pullover und eine Bluejeans. Er bleibt tendenziell eher in seiner vertrauten Gruppe, ist auf Ansprache aber sehr freundlich und hilfsbereit.
Klone Christian einige hundert Mal mit einigen Mutationen, und, tadaa! Du hast die Congressteilnehmer!

Okay, heute habe ich gehört: Den CCC-Jahresrückblick, eine Vorstellung der Plattform Frag den Staat, die versucht, Politik ein bisschen transparenter zu machen, Überlegungen über ein modernes Programm zum Musikerzeugen im Browser, ein Video über eine Show, die jährlich in Spanien stattfindet und Leute auf den Wert freiter Kultur aufmerksam macht, Beispiele der Darstellung von Hackern in Filmen (Schön war die Szene, in der der “Hacker” bei dramatischer Musikuntermalung einen “Virus” auf eine Diskette kopierte, die dann in Zeitlupe sehr stylisch über mehrere Hände gereicht wurde und schließlich im Zielrechner landete. Musik geht plötzlich aus. Hacker: Das war ja einfach). Dann wurden drei neue Schwachstellen in Browsern erläutert, und schließlich gab es noch einen weiteren sehr beliebten Jahresrückblick (mit Frank und Fefe, zwei weiteren CCC-Berühmtheiten). Ich find den eher so meh.

Nachmittags fand eine kleine, recht spontan wirkende Demonstration gegen die Vorratsdatenspeicherung statt (“Teuer, sinnlos, einfach dumm! Vorratsdatenspeicherung!”), ich habe die Anzahl der Teilnehmer auf etwa 150 geschätzt. Es ging einmal um den Fernsehturm, inklusive kleiner Kundgebung. Sozusagen ein Freiheit statt Ängst-chen. Viele Zaungäste, aber ich bezweifle, dass die mit Schildern wie “No VDS” (was nicht nur eine Abkürzung, sondern zwei SPRACHEN enthält!) viel anfangen konnten. Naja, sowas ist ja auch für die Teilnehmer, Gemeinschaftsgefühl stärken und so.

Durch reinen Zufall lief ich in eine Gruppe von CAcert-Assurern. Ähm, also. Es gibt ja verschlüsselte Webseiten. Und um sicherzustellen, dass die Seite von der richtigen Person verschlüsselt wurde (und nicht jemand mittendrin mithorcht), werden die Schlüssel mit Zertifikaten “vertrauenswürdiger Stellen” versehen. Wenn man der Zertifizierungsstelle vertraut, die wiederum dem Anbieter der Seite vertraut, kriegt man dieses tolle grüne Symbol neben der URL-Leiste, die aussagt: Alles jut. Normalerweise muss man sich ein solches Zertifikat kaufen. CAcert ist nun ein nichtkommerzielles Projekt, das die ganze Vertrauensgeschichte durch eine Community, ein Punktesystem und ein “Netz des Vertrauens” regelt. Ist jetzt alles zu viel ums zu erklären, auf jeden Fall will man sichergehen, dass eine Mailadresse tatsächlich einer Person gehört, die tatsächlich existiert. Und genau das prüfen die Assurer (“Zusicherer”?), die gucken sich nämlich offizielle Ausweisdokumente an und vergeben dann entsprechend “Vertrauenspunkte”. Wenn alles gut läuft, habe ich jetzt hundert davon und könnte selbst anfangen, als Assurer tätig zu werden. Nette, ruhige Leute waren das. Der erfahrenste bezeichnete sich selbst als Spießer, während er sämtliche Sicherheitsmerkmale meines Persos überprüfte. :-)

Noch ein kleiner Blumenstrauß der Sachen, die ich so weggetwittert habe:
Ich war heute im Bällebad! Total gemütlich und warm! Etwa 2 mal 2 Meter, bietet Platz für vielleicht fünf Leute.
Ihr kennt die langen Schlangen vor Frauentoiletten anderswo? Das dreht sich hier exakt um.
Und an einigen Urinalen hängt ein “Defekt”-Schild. 28C3 ist, wenn du nicht weißt, ob du denen glauben sollst.

]]>
28C3: Tag 2 28c3-tag-2 2011-12-29T04:12:00+01:00 Sebastian Morr sebastian@morr.cc Heute berichte ich sehr spät, Mitternacht ist schon vorbei. Irgendwie habe ich mir heute keine Zeit zwischendurch genommen. Ich sitze in Saal 1 und sehe den Jeopardy-Leuten beim Aufbauen zu.

Ich habe mich heute näher mit der r0ket beschäftigt. Es war noch eine Test-Firmware drauf, die ausschließlich die Grundfunktionen ausprobiert und dann anhält. Die Dokumentation im Wiki ist fürchterlich durcheinander, teilweise veraltet oder ungenau, aber man findet sich irgendwie zurecht. Zum Ausprobieren habe ich ein kleines Programm geschrieben, das die Werte des Helligkeitssensors in Form einer an- und abschwellenden Kurve darstellt. Man wedelt mit seiner Hand vor dem Sensor rum und kann so lustige Wellen auf dem Display zeichnen. Könnte man ein schönes Spiel draus machen.

Außerdem hab ich mir die Huge Hardware Hacking Area heute näher angesehen. Wer gerne blinkende Dinge baut, seine r0ket zur Laserpistole umfunktionieren möchte oder Löten lernen möchte, fühlt sich hier wohl. Es lief gerade ein Lötkurs für “absolute N00bs”, denen beigebracht wurde, auf Arduino-Basis eine TV-Be-Gone zu bauen, ein Gerät, das auf Knopfdruck ein “Fernseher ausschalten”-Infrarotsignal sendet. Auf der Straße gegenüber “könne man das gut ausprobieren”. Außerdem hat jemand eine Häkelmaschine so gehackt, dass diese Club-Mate-Mützen häkelt.

Es fand ein Workshop zum Selberbrauen von Mate statt, dessen Organisatoren allerdings zugaben, das vorher selbst noch nie ausprobiert zu haben. Eine Person davon war Mitautor des Hackerbrause-Buchs, in dem das Rezept auch abgedruckt ist. Tja, hätten sie vorher vielleicht mal ausprobieren sollen, das Gesöff wurde fürchterlich bitter, wo auch die Zugabe von Unmengen Honig nichts mehr half. Roch allerdings sehr ähnlich wie echte Mate. War ein bisschen trüber. Ne, ne, ne.

Ich war in Vorträgen über Foodhacking (Mohrrüben sind nicht unbedingt orange, es gibt sie auch in Rot, Gelb und Pink-Weiß gepunktet; Sushi aus fluoreszierenden Fischen und Meringen aus Smog-Luft herstellen; Talk war wenig anschaulich und irgendwie eher aus künstlerischer Sicht gehalten. Aber eine typographische Freude), über eine Methode, durch gezielt herbeigeführte Hashing-Kollisionen hohe Auslastungen bei Webservern zu erzeugen (ne, das erklär ich hier nicht. Again, google it), über Energieerzeugung zu Hause (Solarzellen! Surprise! “Das ins öffentliche Stromnetz einzuspeisen geht auch, irgendwie”), über Hörgeräte (total interessant, mit Hörbeispielen aus der Perspektive von Hörbehinderten; Wenn ganze Frequenzbänder unhörbar sind, verschiebt man die in andere Bereiche und komprimiert den Rest; Mit tollen Diagrammen!), über die (ganz frühe) Planung eines Satellitennetzes. Nick Farr, der in diesen Kreisen eine gewisse Bekanntheit hat, machte eine mitreißende Einleitung. Er nannte wichtige Eigenschaften, die das System haben sollte, und blendete die einzeln ein: “Offen”, “Sicher”, noch irgendwas, und beim letzten Punkt schaltete die Präsentation nicht mehr weiter. drück drück … “Zuverlässig”. Das war doch glatte Absicht. :-)

Und der letzte richtige Talk war dann nochmal der Hammer. Der Titel lautete “Quantified Self”, es ging also um die zahlenmäßige Erfassung von Körperdaten, vor allem um Hirnströme, und er wurde von drei TYPEN gehalten, die alle auf ihre eigene Art… draufwaren. Einer gab seinem Kollegen beim Vortragen Gesten, eine Folie weiter zu blättern, aber nicht durch ein kleines Winken, sondern indem er die nach unten zeigende Handfläche mit einer forschen Bewegung von oben nach unten führte. Woraufhin die Anregung kam, das nächstes Jahr mal mit Microsofts Motion-Tracking-System, der Kinect, umzusetzen. Der zweite saß währenddessen beinahe absolut regungslos da, um später beim Reden ruhelos auf der Bühne herumzulaufen. Er war in einen geschmackvollen Mantel mit gemustertem Kragen gekleidet und trug eine ebenfalls gemusterte Sonnenbrille und seinen Haarreif mit Messelektroden stets auf dem Kopf (Zitat aus der Präsentation: “Es wurde mal behauptet, dass Selbstmessung süchtig macht. Glauben wir nicht). Es war (oder spielte??? - Ich bin mir nicht sicher!) dann extrem überheblich, meinte ständig, dass es ja wohl möglich sein müsste, Fragen zu formulieren, und dass wir bei langweiligen Stellen jetzt bestimmt unsere Mails abrufen würden. Sein Computer ging zu Beginn irgendwie “kaputt”, woraufhin er sich auf der Bühne auf den Boden setzte, und versuchte, ihn wieder zu “reparieren”. Naja, und der folgende Inhalt ließ mich teilweise laut auflachen, teilweise mit fassungslos offenstehendem Mund dasitzen, so pseudowissenschaftlich, unbeweisbar, subjektiv, voodomäßig und esoterisch war das. Dummerweise waren aber auch viele kluge, neue Ideen drin. Methoden wie Biofeedback etwa klingen für mich absolut vernünftig. Damit kann man seine Gehirnfrequenzen in eine bestimmte Richtung lenken, weil man einerseits die Werte seiner eigenen EEG-Messung sieht, andererseits von einer Software für Veränderungen in die richtige Richtung durch zunehmend harmonischere Töne belohnt wird. Angeblich könne man so richtig Musik machen. So verließ ich diesen Talk sehr nachdenklich.
Ein dritter Mann redete auch noch, aber der drehte nu wirklich völlig frei, erzählte von einer visuellen Programmiersprache, die mit Gedanken geschrieben werden könne, und die aus “den vier Elementen” aufgebaut sei: Erde stünde für die Variabeln, und so weiter. Ich konnte auch ihn nicht komplett lächerlich finden, denn eine colle Idee ist Programmieren mit Gedanken ja schon. Aber dass die drei viele Personen überzeugen konnten, an ihrem tollen, großen Softwareprojekt, “in dem endlich mal keine Idee lächerlich sei” mitzuarbeiten, bezweifle ich. Ich halte die Hackergemeinde ja für sehr tolerant, aber die hier wurden einfach die ganze Zeit ausgelacht.

Jemand hat heute SMS-Spam im GSM-Netz betrieben: Zunächst kam ein ASCII-Fisch: >(((°>, eine halbe Stunde später eine Veranstaltungs-Einladung von der selben Nummer.

Auf der Toilette wird abends Rickroll, Nyan Cat und Trololo gespielt!

In der Lounge in Ebene B (Erdgeschoss) steht die PainStation des Computerspielemuseums.

An verschiedenen Stellen hing ein Schild: “Der DDoS fällt aus. Letztes Jahr waren sie zu gut vorbereitet.” Ha, ha, I guess? Ein “Distributed Denial of Service”-Angriff ist das Äquivalent zu hundert Leuten, die gleichzeitig mit dir reden wollen. (Ergänzung 2012-12-27: Es ging um den kollektiven Besuch des nahegelegenen Dukin’ Donuts.)

Und ein tolles T-Shirt mit dem tollen Logo hab ich jetzt auch, das übrigens eine Hexadezimal-Repräsentation von ASCII-Zeichen enthält, die Artikel 10 des Grundgesetzes, Paragraph 1 ergeben: “Das Briefgeheimnis sowie das Post- und Fernmeldegeheimnis sind unverletzlich.”


Das Prinzip der heutigen Spielshow, Hacker Jeopardy, sieht wie folgt aus: Die drei oder vier Kandidaten bekommen eine Lösung präsentiert und müssen eine passende Antwort dazu bilden. Die Fragen stammen aus verschiedenen Kategorien und haben verschiedene Punktzahlen. Bei Unklarheit über die Lösung wurde mit den r0kets abgestimmt. Später kam ein weiteres Entscheidung- und Unterhaltungswerkzeug dazu: Der bunte Laserpunktschwarm, der von Zuschauern mit Laserpointern gebildet wurde, und gelegentlich bestimmte, welcher Spieler sich eine Frage aussuchen durfte. Während der dritten Runde veranstalteten die Punkte eine sehr unterhaltsame Jagd über die Saalkuppel (DAS war nicht im Stream zu sehen :-P) Jeopardy gehört schon traditionell zum Congress, ist sehr beliebt und wird sogar simultan auf Englisch übersezt. Könnte ruhig mal n bisschen mehr frischer Wind rein.

Gerade noch so meinen Bus erwischt. Mein Schlafrythmus verschiebt sich weiter nach hinten… :-)

Cooler Tag. Bis morgen, wo ich eine Charakterstudie an den Congressteilnehmern vorhabe!

]]>
28C3: Tag 1 28c3-tag-1 2011-12-28T01:26:00+01:00 Sebastian Morr sebastian@morr.cc Nachmittag. Ich hab mir einen gemütlichen Platz im Basement gesucht, mit Strom- und Kabelnetzversorgung und kann ein bisschen dokumentieren. Heute morgen bin ich gegen Zehn im bcc aufgeschlagen. Vor dem Gebäude wehen Pesthörnchen-Flaggen (google it), eine einige Meter hohe “Fairy Dust”-Rakete wurde aufgebaut. Innerhalb einer Minute habe ich mein ausgedrucktes Ticket gegen ein Armbändchen eingetauscht und konnte mich daran machen, das Kongressgebäude zu erkunden. In den letzten Jahren hat man immer von langen Warteschlangen vor dem Eingang gehört, dieses Problem gehört wohl der Vergangenheit an.

Das bcc besteht grundsätzlich aus drei (zugänglichen) Ebenen. Im Erdgeschoss ist hinter der Kasse die Garderobe und der Infodesk, der einem bei allgemeinen Problemen hilft und CCC-Mitgliedsanträge entgegennimmt, wenn ich das richtig sehe. Man findet hier außerdem bereits einige Tische, an denen sich diverse Projekte vorstellen, etwa der FoeBuD, der sich für Datenschutz einsetzt, oder der AK Vorrat, der gegen Vorratsdatenspeicherung kämpft. Klamotten werden zum Kauf angeboten, schön waren ein Strampelanzug mit der Aufschrift “Ich wiederspreche der Verwendung meiner Fotos […]”, Mausefallen mit der Aufschrift “Google”. Außerdem gibt’s hier das Buch Hackerbrause kurz & geek von O’REILLY und viele, viele Aufkleber, von denen einige jetzt meinen Laptopdeckel zieren :-) Im Erdgeschoss findet man außerdem die Vortragungs-Sääle 2 und 3, die wesentlich schmaler und länger sind, als ich sie mir immer vorgestellt habe. Im Zentrum dieses Stockwerks befindet sich eine runde Chillout-Lounge mit viel buntem Licht, bequemen (und stets belegten) Sitzmöglichkeiten und dem Bällebad! Daneben werden Getränke und Speisen verkauft, ab 14 Uhr gibt’s da richtig echtes warmes Essen zu vernünftigen Preisen (so um die 4 Euro). Ein halber Liter Mate kostet hier 2 Euro.

Geht man eine der Treppen rauf, gelangt man - wenig überraschend - in den ersten Stock. Von hier aus hat man Zugang zu dem riesigen Saal 1, der ebenfalls einen runden Grundriss hat und von der Kuppel überdacht wird, die man auch von außen sieht. Außen um diesen Saal herum, ist viel Platz für Projekttische. Wichtig sind das Phone Operation Center (POC) und das Network Operation Center (NOC), die man bei Problemen aufsuchen kann. Gesehen habe ich außerdem Tische diverser Hackerspaces, einige Quadrokopter-Projekte, die kleine Flugobjekte mit vier Rotoren bauen, die BlinkenArea mit vielen bunten, blinkenden Lichtern und Leute von Gentoo und Debian, zwei großen Linux-Distributionen.

Vom Erdgeschoss kann man auch eine Treppe runter gehen, dann kommt man ins Hackcenter, den Lebensraum des gemeinen Kellerkindes. Viele Reihen Tische mit Steckdosen und dicken Switches. Auch diese Tische scheinen größtenteils diversen Gruppierungen zugeordnet zu sein. Abgehend vom Hackcenter gelangt man zu mehreren Workshopräumen, in einem davon, in dem momentan nichts stattfindet, sitze ich gerade. Schließlich kommt man von hier zum “Himmel”. Im Himmel halten sich die Engel auf, wenn sie nichts zu tun haben… “Engel” ist die Bezeichnung für die zahlreichen freiwilligen Helfer, die Access Control am Eingang und an den Sälen machen oder während der Talks die Zuschauer in Zaum halten. Die also können im Himmel kostenlos Ambrosia beziehen ;-)

Zwischenspiel: Zur Steuerung der Lichtanlage hängt ein Touchscreen mit Bedienungselementen an der Wand. Jemand kam da gerade versehentlich drauf, worauf das Licht komplett ausging. Kommentar: “Jah, so wachen die Zombies mal auf!” Das Licht ging später natürlich auch wieder an. Komplett. Und dann wieder komplett aus. Zuruf: “Das is dimmbar!” Na, und nach ein paarmal hin und her, Herunter- und Herauffahren der Rollos und der Projektionsfläche war auch bald der Normalzustand wiederhergestellt.

Soweit die Beschreibung des Gebäudes. Nachdem ich mich einigermaßen orientieren konnte, ging ich zur Matequelle. Hier wird nicht nur Club Mate, sondern auch “MATE flora POWER” verkauft. Während mich Mate geschmackich an Feige erinnert, schmeckt Flora angenehm nach grünem Tee, kann aber nicht mit dem Original mithalten. WLAN funktioniert, manchmal. Eher unzuverlässig, gerade in Stoßzeiten zwischen den Vorträgen kommt man oft nicht rein.

Naja, ich habe dann als allererstes mit einem anonymen Stratum 0-Mitglied die Keynote, den ersten, richtungsweisenden Vortrag, angehört. Folien und Vortrag waren nicht besonders ansprechend aufgemacht, und für mich manchmal nicht ganz verständlich. Es ging um den Einsatz von westlicher (Überwachungs-)Technologie in Diktaturen. Klar, findet statt. Klar, lässt sich nicht verhindern. Anschließend ein netter Vortrag über die Atari Spielekonsole, eine ganz frühe populäre Spieleplattform, die umfassend, mit vielen grafischen Beispielen beschrieben wurde. Danach die Vorstellung der neuen r0ket, die oben bereits erwähnt wurde. Am Ende des Vortrages wurden alle, die bereits eine neue r0ket besaßen, aufgefordert, sich drahtlos entweder mit dem Spiel “Left” oder dem Spiel “Right” zu verbinden, und dann wurde kollaborativ vorne auf der Leinwand Pong gespielt. Die r0kets haben kleine Joysticks, und die zwei Paddles vorne wurden durch die durchschnittliche Steuerung der teilnehmenden Personen gesteuert. Was erstaunlich gut funktionierte.


Übrigens, zum Thema eigene Datensicherheit: Heute im Atari-Talk waren meine Google-Ergebnisse bei der Bildersuche plötzlich Russisch! Sofortige Reaktion: WLAN-Hardwareschalter auf “aus”. Aber ich vermute, da haben sich die Leute, die sich ums Netzwerk kümmern, einen Scherz erlaubt. (Anmerkung 2012-12-27: Wr ein ganz trivialer Grund: Der IP-Bereich des Congressnetzes wurde von Google in Russland vermutet :3)

Der Kongress hat nicht nur ein Datennetz, sondern auch ein eigenes, lokales Telefonnetz, das dieses Jahr auch GSM-Geräte, sprich, Handys, umfasst. Für zwei Euro bekam man am POC eine SIM-Karte und konnte sich dann einen Account (mit Wunschnummer!) anlegen. Das hab ich mit meinem alten Nokia-Handy gemacht, während ich im Gebäude bin, bin ich jetzt also via 9-BLIN (bzw. 92546) erreichbar. Anrufe empfangen kann man sogar von draußen (0531-349439-92546), SMS allerdings nicht. In diesem Telefonnetz kann man coole Sachen machen, es gibt zum Beispiel einen Telefondienst namens Mate-o-Meter. Das ruft man an, pustet 3 Sekunden über die Mateflasche, und aus dem Klang berechnet der Dienst einem den Füllstand der Flasche. Das FUNKTIONIERT auch noch!! Meine Flasche WAR zu 21% gefüllt! Andere Nummern sagen die Zeit an, lesen das aktuelle Programm vor oder übertragen den Ton aus den verschiedenen Sälen. Und einen coolen Dienst gibt es noch, den irgendein Hackerspace aufgebaut hat: Man schickt eine SMS an eine bestimmte Nummer, und der Text wird dann von einer modifizierten Schreibmaschine auf einem Endlosband ausgegeben.

“Nachmittags” gabs den Vortrag Packets in Packets, in dem über eine bisher offenbar unterschätzte Angriffsmöglichkeit über die niedrigste Ebene des Internetstacks vorgestellt wurde, bei dem man Pakete in Pakete stopft und dann hofft, dass der erste Header bei der Übertragung kaputt geht und der zweite genommen wird. Danach hieß es: Anstellen für die r0ket. Das Interesse war so groß, dass ich ungefähr eine Stunde anstehen musste. Habe mich mit zwei jungen Mitgliedern des Hackerspaces in Siegen unterhalten (der bisher HaSi heißt…), sodass die Zeit tatsächlich relativ schnell verging. Verkauft wurden auch ansteckbare Module, die die Rakete um eine leuchtende Flamme erweitern, aber die schicken Logos waren alles schon weg. Braucht man ja auch eigentlich nicht. Irgendwann waren wir dran und nahmen sehr glücklich unsere Geräte entgegen. Sie waren schnell zusammengebaut, man musste nur einige Dinge zusammenstecken und -kleben. Beim Hochfahren bleibt meine allerdings bisher hängen.

Die Döner mit Knoblauchsoße hier schmecken nicht nur gut, sie werden auch von sehr orientalisch aussehenden Männern in mit goldenen Ranken geschmückten Gewändern zubereitet. In meinem war ein langes Haar, das kann aber gut Eigenverschulden gewesen sein.

Jetzt geht’s noch zu Dan Kaminsky über Netzwerksicherheit und zur ersten Gameshow des Kongresses. Aber davon berichte ich morgen, wenn’s was Berichtenswertes gibt.

]]>
28C3: Tag 0 28c3-tag-0 2011-12-27T16:03:00+01:00 Sebastian Morr sebastian@morr.cc Mit einem prall gestopften großen Rucksack und einem kleinem Rucksack, in dem ein süßer Stoffbär sitzt, mache ich mich auf den Weg zu meinem ersten Chaos Communication Congress, dem 28C3. Das Packen war am Ende doch noch hektisch geworden, ich führe mindestens 9 Kabel und 6 Geräte mit, zur fachlichen Lektüre eine alte Ausgabe der Unix Power Tools, ein legendäres Buch über die grundlegenden Werkzeuge, die auch auf der Linux-Kommandozeile zum Einsatz kommen. Die Fahrt zu meinem ersten Zwischenhalt habe ich genutzt, um ein grobes Programm für die kommenden Tage zusammenzustecken. Wow, coole Sachen dabei, viel Foodhacking (Hackerbrause selbst brauen!), und ich freue mich besonders auf den Vortrag über die r0ket, ein kleines Stück frei programmierbarer Hardware mit kleinem Display und Knöpfen (eines der Logos des CCC ist die Rakete Fairy Dust). Bekanntheiten wie Cory Doctrow und Dan Kaminsky muss man auch live sehen, ansonsten lautet mein Maßstab: Auf das konzentrieren, was man nicht ohnehin hinterher in den Stream-Aufzeichnungen sehen kann.

Jetzt sitze ich am Wolfsburger Hauptbahnhof und fühle mich unwohl. Bahnhöfe sind kalte, ungemütliche Orte voller seltsamer Leute. Wobei “seltsam” hier je nach Wunsch “aufgetakelt”, “aggressiv” oder “betrunken” bedeuten kann. Auf der Bank gegenüber konnte eine Frau gerade ihren Mann nur durch kräftiges Ziehen dazu bewegen, mit auf den Bahnsteig zu kommen, wo “IN VIER MINUTEN!!!” der Zug fahren sollte. Der antwortete stets: “Ich komm gleich…”.

Bei der Bestellung war mir gar nicht aufgefallen, dass die Anbindung hier nicht “20:50 Ankunft, 20:55 Weiterfahrt” lautete, sondern “21:55 Weiterfahrt”. Naja. Solange ich noch Saft im Akku habe, kann ich die Zeit ja gut nutzen.

Was verspreche ich mir davon, zum Congress zu fahren? Die letzten beiden Jahre habe ich mich ausgiebig den Streams gewidmet, 2009 von zu Hause aus, 2010 bei einem dezentralen Stream-guck-Treffen, die damals nach dem Motto des Congresses (“We come in peace”) Peacemissions genannt wurden. Dieses Jahr lautet das Motto “Behind enemy lines”, weshalb die Treffen unter “No nerd left behind” laufen, im Folgenden NNLB abgekürzt. Der in momentan in Braunschweig entstehende Hackerspace Stratum 0 wird, gemeinsam mit der Fachgruppe Informatik der TU Braunschweig, ein solches Treffen organisieren und ich werde mich bemühen, möglichst viel von meinen Eindrücken “nach Hause” zu senden.
Dieses Jahr bin ich also persönlich da, kann Workshops besuchen, Hacking Areas besuchen, r0kets kaufen, und viel von der Atmosphäre des Congresses selbst schnüffeln. Ich möchte herausfinden, ob sich eine persönliche Teilnahme auch nächstes Jahr lohnt. Weitere Ziele: Kunde von Stratum 0 verbreiten und Tipps für unser weiteres Vorgehen sammeln. Nette Leute mit ähnlichen Interessen kennen lernen. Einige Berliner Hackerspaces besuchen. Und ganz viel Inspiration mitnehmen, welche Gebiete noch hack-bar sind.

Von einem Kommilitonen habe ich eine Prepaid-SIM-Karte von blau.de ausgeliehen, sodass ich unterwegs und in der Berliner Wohnung meines Vaters Internetzugang habe - eine ganz neue Erfahrung für mich. Habe erstmal eine 100 MB-Flatrate draufgebucht (nach diesem Volumen wird auf 54 kb/s gedrosselt, yay, wie früher!). Das klingt nach lächerlich wenig, aber das ist schon eine Menge Holz, wenn man keinen Multimedia-Krempel aufruft. Man wird sehen, wie ich damit auskomme.
Klar, auf dem Congress gibt’s auch WLAN (ich bin mir sicher, davon wird noch zu hören sein) und dickes Kabelinternet, aber solche Dinge wie Mails abrufen möchte ich nicht unbedingt aus dem Congressnetz heraus, da ich mir der Sicherheit meines Mailservers nicht allzu sicher bin. Zitat Veranstaltungs-Wiki: “…wenn du dir dein Passwort nicht vom Schwarzen Brett abholen möchtest” :-)


So, Zug pünktlich und Steckdosenplatz, dann kann ja nichts mehr schief gehen. Die Autotürme blinken mir zum Abschied. Vielleicht noch einige ganz grundsätzliche Anmerkungen zu der Veranstaltung, zu der ich da fahre: Der Chaos Computer Club ist eine nach eigener Beschreibung “galaktische Organisation”, die in den letzten Jahrzehnten viel zur technischen Aufklärung in Deutschland beigetragen hat. Der Congress ist ihre jährliche Veranstaltung, in der das Zusammenspiel von Technologie und Gesellschaft mit starkem Fokus auf die Zukunft im Vordergrund steht. Sie bringt Ähnlichgesinnte zusammen, damit diese voneinander lernen können. Die Teilnehmer werden oft (auch von sich selbst) als “Hacker” bezeichnet, was für uns keine negative Konnotation hat, sondern einfach Leute bezeichnet, die ganz in ihrem Fachgebiet aufgehen, die Technologie auf ungewöhnlche Weise nutzen, die daran interessiert sind, wie Dinge funktionieren. Und die dann oft wild auf ihrer Tastatur “herumhacken”. Also, morgen geht’s auf den Hackerkongress. Whee!

]]>
Pong 1D pong-1d 2011-09-26T00:00:00+00:00 Sebastian Morr sebastian@morr.cc Inspired by the movie Flatland, I wrote this one-dimensional game. For those who don’t know this movie (go watch it, seriously!), let me briefly explain the concept: Pong, as you know it, is a two-dimensional game: Everything happens in a flat plane. Now imagine you were one of the paddles - you’d see your surroundings as a line, one-dimensional. The rest is just normal Pong.

You can move around with your arrow keys. First to get 11 points wins.

Computer 0:0 You

Your browser does not support Canvas.

Inner workings

The rendering is realized by a 2D raytracer: For every pixel of the viewport, a ray is being shot. The color and the angle of the object this ray first hits is used for calculation of the pixel’s color.

]]>
Aufsatz: Der Rechenschieber rechenschieber 2011-09-05T00:00:00+00:00 Sebastian Morr sebastian@morr.cc Im Rahmen der Vorlesung Geschichte technischer Hilfsmittel in der Mathematik schrieb ich diesen kurzen Aufsatz über Entwicklung, Funktionsweise und heutige Bedeutung des Rechenschiebers:

Aufsatz

]]>
Four Eyed Monster four-eyed-monster 2011-02-25T15:38:00+01:00 Sebastian Morr sebastian@morr.cc Four Eyed Monster

]]>
Java-Applet: Mandelbrot-Menge mandelbrot-applet 2011-01-23T00:00:00+00:00 Sebastian Morr sebastian@morr.cc Ich lese gerade den New Turing Omnibus, ein Buch, das grundlegende Themen der Informatik vorstellt. In einem Kapitel geht es um Fraktale, genauer: Die Mandelbrot-Menge. Ich konnte nicht anders, als den Algorithmus zu implementieren. Das Ergebnis ist atemberaubend.

Applet öffnen

Bei etwa 100-Trillionen-facher Vergrößerung ist Schluss: Hier hört stößt der Datentyp double an seine Grenzen.

Algorithmus

Für jeden Pixel mit der Koordinate (j,k) definiert man sich die komplexe Zahl c = j + ki sowie ein x = 0 + 0i und führt wiederholt (z.B: 100 mal) die Zuweisung x = x*x + c aus. Ist der Betrag von x dann noch kleiner als 2, wird wird der Pixel schwarz dargestellt, ansonsten kriegt er ne schöne Farbe. Das ist alles.

Die Mandelbrot-Menge ist übrigens verbunden, alle schwarzen Punkte hängen zusammen.

]]>
Programme abschießen mit xkill xkill 2010-09-29T10:59:00+02:00 Sebastian Morr sebastian@morr.cc xkill ist ein Linux-Programm, mit dem man bockige Fenster abschießen kann. Fühlt sich an wie ein Ego-Shooter!

Wenn der Browser sich mal wieder an einem Javascript aufgehängt hat, und alles Hämmern auf den Schließen-Knopf nicht hilft, kommt xkill to the rescue! Man führt es aus, klickt auf das böse Fenster und es schließt sich sofort.

Sehr befriedigend. Definitiv eins meiner Lieblingsprogramme.

]]>
SCHUFA-Selbstabfrage schufa-selbstabfrage 2010-09-29T09:52:00+02:00 Sebastian Morr sebastian@morr.cc Dadurch, dass es mir bei einer Online-Bestellung untersagt wurde, per Rechnung zu bezahlen, wurde ich auf die SCHUFA aufmerksam. Das ist ein Unternehmen, das auf den Personendaten von drei Vierteln der Deutschen sitzt und für jeden davon einschätzt, wie wahrscheinlich es ist, dass er seine Rechnung nicht bezahlt.

Im Sinne von § 34 Abs. 1 BDSG kann aber auch jeder Einzelne abfragen, was die so über einen wissen. Die SCHUFA bietet - vorbildlich! - sogar ein eigenes Formular dafür an. Das füllt man aus, schickt es ab, und wartet drei Wochen.

Vor ein paar Tagen kam die Antwort. Und, was wissen die nun über mich? Naja, Name, Geburtsdatum und -ort sowie Adresse. Eine “SCHUFA-Kundennummer” habe ich auch.

Auf der zweiten Seite wird es interessant: Da ist der Zeitpunkt der oben erwähnten Bonitätsprüfung aufgeführt. Außerdem hat meine Bank ihnen “mitgeteilt, dass ein Girokonto unter der Kontonummer X eröffnet wurde”. Stand wahrscheinlich in den AGB, dass die das dürfen.

Auf der dritten Seite sind die “Score-Werte” aufgeführt. Die anhand “moderner mathematisch-statistischer Verfahren” ermittelte Wahrscheinlichkeit, dass ich eine Rechnung bezahle, beträgt 95,51%. Klingt hoch, ist aber für manche Unternehmen vielleicht nicht akzeptabel. Der Wert ist noch weiter aufgeschlüsselt: Aus meinen “Bisherigen Zahlungsstörungen” ergibt sich ein “deutlich unterdurschnittliches Risiko”, meine “Allgemeinen Daten” stellen hingegen ein “deutlich überdurchschnittliches Risiko” dar. Hä?

Fazit: Wesentlich schlauer ist man hinterher auch nicht. Ich bin immerhin überrascht, dass so wenig über mich gespeichert ist. Die Berechnung des Score-Wertes ist aber nicht transparent genug.

Dieses Datenauskunfts-Experiment werde ich auf jeden Fall fortsetzen, und mal schauen, wie auskunftsfreudig die verschiedenen Unternehmen so sind (sie sind immerhin verpflichtet mir Auskunft zu erteilen!)

]]>
Frauen ernähren sich von Schuhen! frauen-ernaehren-sich-von-schuhen 2010-09-15T20:00:00+02:00 Sebastian Morr sebastian@morr.cc Eine Busgeschichte, die erklärt, warum viele Frauen den Hang zum Ansammeln von Schuhen haben: Sie ernähren sich davon!

Ich höre einen Gesprächsfetzen von hinten mit. Offenbar unterhalten sich zwei junge Männer über ihre Freundinnen. Man denke sich die türkische Betonung dazu.

“Sag mal, isst deine auch so viel?”

“Jaah, voll hart, ne?”

“Meine hat neulich nen ganzen Schuh weggesnackt. Da kam ich nach Hause und war erstmal voll wütend… Ich hab se dann erstmal die Treppe runtergetreten.”

Dem Gesprächspartner geht das wohl ein wenig zu weit, er druckst.

“Jaaa, tat mir hinterher auch voll Leid. Ich bin da irgendwie n bisschen ausgerastet…”

Auch ich finde eine solche Reaktion leicht überzogen. Wenig später klärt sich die Situation allerdings für mich, mit der Frage:

“Is deine n Männchen oder n Weibchen?”

Ein weiterer Beweis, dass der Kontext alles ist, man mit seinen Annahmen ziemlich daneben liegen kann - und man nicht so vielen Gesprächen lauschen sollte!

]]>
Schneller Service schneller-service 2010-09-12T10:47:00+02:00 Sebastian Morr sebastian@morr.cc Die Postbank stellt zum Testen ihres Onlinebanking-Angebotes einen Demo-Account unter dem Namen “Petra Pfiffig” zur Verfügung. Dort kann man alle Funktionen ausprobieren und sieht Beispiel-Transaktionen. In der Nachrichtenbox fand ich etwas, was nur oberflächlich nach gutem Service aussieht!

Nachrichtenbox

]]>
Der Mann mit dem Schlüsselbund mann-mit-schluesselbund 2010-09-04T11:30:00+02:00 Sebastian Morr sebastian@morr.cc Als ich heute vom Brötchenholen wiederkam, stand vor der Tür zum Gebäude ein Mann, den ich noch nie gesehen hatte. Auch er hatte eine Brötchentüte in der Hand und fummelte mit einem Schlüsselbund herum. Offenbar probierte er jeden Schlüssel aus und fand nicht den richtigen.

Er hörte meine Schritte, drehte sich um und grüßte fahrig. “Welcher ist denn der Schlüssel für die Haustür?” - “So ‘n abgerundeter”, half ich ihm aus und zeigte ihm meinen. Er fand einen ähnlichen an seinem Schlüsselbund, öffnete die Tür, grunzte verlegen und verschwand zielgerichtet in einer Wohnung im ersten Stock.

Auf dem weiteren Weg nach oben ging meine Fantasie mit mir durch.

Ein neuer Mieter hätte wohl gewusst, welche Schlüssel er da ausgehändigt bekommen hat - es sei denn, ihm wäre ein großer Haufen Schlüssel für die Haustür, die Wohnungstür, den Keller, den Zimmertresor, das Bad und die beiden Nachtschränke hingeworfen worden - und es wäre sein allererster Tag. Nee.

War der Mann vielleicht ein Einbrecher, der den Besitzer der Wohnung überfallen und ihm seinen Schlüsselbund abgenommen hatte, und dann natürlich nicht wusste, wofür die einzelnen Schlüssel waren? Und zur Tarnung eine Tüte Brötchen geholt hatte, um Leute wie mich zu täuschen? Naja, in meine Wohnung wäre er so immerhin nicht gekommen.

Oder war er zu Gast bei einem Freund oder - noch pikanter - bei einer Dame? Während sie noch schlief, hatte er sich die Schlüssel genommen und war rausgeschlichen, um ihr mit einer Tüte Croissants das Herz zu erweichen und den Magen zu füllen?

Ich bin sicher, die Antwort ist viel banaler und langweiliger. Und deshalb frage ich auch nicht nach.

]]>
Qu'est-ce que c'est? quest-ce-que-cest 2010-09-02T14:23:00+02:00 Sebastian Morr sebastian@morr.cc Wer’s weiß, kriegt nen Preis.

Fingerzeig

]]>
50 vs. 100 Hertz 50-vs-100-hz 2010-09-02T12:17:00+02:00 Sebastian Morr sebastian@morr.cc Bei mir steht seit letzter Woche ein neuer Fernseher. Bei meiner intensiven Beschäftigung mit Fernsehtechnik in der letzten Zeit hatte ich ein paar “Aha”-Erlebnisse, die ich mit dir teilen möchte. Als erstes erkläre ich, was der Unterschied zwischen Bildschirmen mit 50 und 100 Hertz ist, denn da gibt es eine kleine Überraschung.

50 Hertz? Warum nicht 42?

Videokameras haben früher 25 Bilder pro Sekunde aufgenommen. Wenn die Fernseher das mit derselben Frequenz wiedergegeben hätten, hätte das Bild ganz schön geflackert. Man dachte sich also einen Trick aus: Fernseher strahlen die Einzelbilder mit doppelter Geschwindigkeit aus, aber immer nur jede zweite Zeile: Erst die erste, dritte, fünfte Zeile, eine Fünfzigstel Sekunde später dann die zweite, vierte, sechste, und so weiter. Man spricht von Halbbildern. Wenn die Bilder so schnell vorbeirauschen, nimmt das unser Auge als flüssige Bewegung war.

Das ist also die Funktionsweise eines 50-Hz-Fernsehers. Er zeigt fünfzig Halbbilder pro Sekunde an.

Was machen 100-Hz-Modelle anders?

Klaro, sie zeigen 100 Bilder pro Sekunde an, aber wo kriegen sie die her? Normales Fernsehen setzt sich aus 50 Halbbildern pro Sekunde zusammen, ein Kinofilm sogar nur aus 48. Hier kommt also ein zweiter Trick ins Spiel: Ein 100-Hz-Fernseher schaut sich zwei aufeinander folgende Bilder an, und überlegt sich dann, was wohl dazwischen kommen könnte. Angenommen, ich winke in die Kamera, und meine Hand ist auf einem Bild links, auf dem nächsten allerdings schon rechts, generiert der Fernseher ein zusätzliches Bild, auf dem meine Hand in der Mitte zu sehen ist. Das ist das ganze Geheimnis: 100-Hz-Fernseher zaubern Bilder aus dem Nichts. Das funktioniert meistens ganz gut, bei ihren Schätzungen können sie aber auch danebenliegen, und meine Hand zum Beispiel zu weit oben hinmalen, sodass ich Gummiarme kriege.

So what?

Das menschliche Auge kann ohnehin nur etwa 65 Bilder pro Sekunde wahrnehmen. Beim Vergleichen im Laden habe ich schon einen sichtbaren Unterschied festgestellt, schnelle Bewegungen oder Kameraschwenks sehen auf einem 100-Hz-Modell durch die zwischengerechneten Bilder nicht so verwaschen aus. Es mag jeder für sich urteilen, ob das den Aufpreis wert ist, mir reichen 50 Hertz vollkommen.

]]>
Mich gibt's bei Amazon mich-gibts-bei-amazon 2010-08-25T18:49:00+02:00 Sebastian Morr sebastian@morr.cc In meinen Serverlogs tauchte als Referer eine Freenet-Suche nach mir auf. Und siehe da…

Sebastian Morr gibt es auch bei Amazon

Haha, und wenn man draufklickt: “Meinten Sie: sebastian mary?” - da wird einem dann unter anderem die CD “Schön entspannt 3” von “Brigitte Wellness” empfohlen. Ranking-Algorithmen sind schon ne Spezies für sich…

]]>
Finger print doorbell finger-print-doorbell 2010-08-25T00:00:00+02:00 Sebastian Morr sebastian@morr.cc Sweep your finger for identification

Another idea: “To enter the apartment, click HERE.”

]]>
36 Cube gelöst! 36cube-geloest 2010-08-21T00:00:00+02:00 Sebastian Morr sebastian@morr.cc Gestern Abend habe ich mit Jan den 36 Cube gelöst. Es geht darum, 36 Plastik-Türmchen in verschiedenen Farben und Größen so auf einem Brett anzuordnen, dass in jeder Reihe und Spalte jede Farbe genau einmal vorkommt - und die Türmchen auf der gleichen Höhe abschließen (es gibt eine Online-Version davon).

Wir begannen etwas planlos, merkten schnell, dass uns das nicht zum Ziel führen würde, und entwickelten ein stupides, mechanisches System, dass uns sicher zur richtigen Lösung führen müsste. Eine halbe Stunde später saßen wir vor dem Plastikdämon und weinten. Wir hatten keine Lösung gefunden, im Gegenteil, wir hatten (scheinbar) alle möglichen Lösungen ausgeschlossen - oder irgendwo einen Fehler gemacht.

Wir sahen uns an. “Let’s try math!” Naja, ich schrieb dann ein Programm, dass im Grunde genau das machte, wie wir vorher: “Darf dieser Turm in die erste Zeile? Nein. Darf dieser Turm in die zweite Zeile? Ja. Kann der nächste Turm noch irgendwo hin? Nein. Nimm den letzten Zug zurück. Darf der Turm in die dritte Zeile?” Es stellte sich heraus, dass es Lösungen gab, in denen alle Türme richtig saßen - bis auf zwei. Eine komplette Lösung fand auch das Programm nicht. Ich wurde misstrauisch.

Google. “has 36 cube a solution?” … Ja, der Cube könne gelöst werden, aber “Your assumptions are probably wrong”. Mehr möchte ich an dieser Stelle auch nicht verraten. Es gibt da… einen Trick.

Wenig später (ich untertreibe, wir waren beide schon ziemlich müde) stand er vor uns. So sieht Stolz in seiner reinsten Form aus:

Gelöster 36 Cube

Hab gerade mein Programm nochmal angepasst und durchlaufen lassen, es gibt sogar 96 verschiedene Lösungen!

]]>
Google-Rekursion google-rekursion 2010-08-19T00:00:00+02:00 Sebastian Morr sebastian@morr.cc Du kennst bestimmt die Korrekturfunktion von Google. Wenn du ein Wort falsch schreibst, schlägt die Suchmaschine eifrig vor: “Meinten Sie: …?” Da kannst du dann draufklicken und Google sucht nach dem korrigierten Wort. So weit so praktisch. Ich verwende die Funktion gerne, wenn ich mir nicht sicher bin, wie ein Wort geschrieben wird.

Aber eigentlich möchte ich dir einen kleinen Gag zeigen, den Google in diese Funktion eingebaut hat. Geh dazu auf http://google.com (der Trick funktioniert leider nur auf der englischen Seite) und such nach “recursion”. Falls dir der Begriff nichts sagt, Rekursion bedeutet soviel wie Selbstbezug, Rückbezug, Selbstaufruf. Eine Schleife. Hast du die Google-Schleife gefunden?

]]>
Engel-Karte engel-karte 2010-08-12T00:00:00+02:00 Sebastian Morr sebastian@morr.cc Meine Weihnachtskarte aus dem Jahr 2009. Klick auf das Bild, um die Karte aufzuklappen.

Engel-Karte

]]>
Kernel-Flüche kernel-flueche 2010-07-30T00:00:00+00:00 Sebastian Morr sebastian@morr.cc Wusstest du, dass sich im Linux-Kernel ganz schön viele Flüche befinden? Sehr unterhaltsam!

Du brauchst den Quellcode des Kernels (in Ubuntu/Debian gibt’s ein Paket namens linux-source, das den Kernel ins Verzeichnis /usr/src legt). Dann gibst du folgende Befehle ein:

cd /tmp
tar xvf /usr/src/linux-source*
cd linux-source*
egrep -ir " (fuck|shit|crap)" .

Viel Spaß!

]]>
Piratenpartei Braunschweig logo pp-bs-logo 2010-07-24T00:00:00+00:00 Sebastian Morr sebastian@morr.cc

]]>
Kiel Panorama kiel-panorama 2010-07-05T00:00:00+00:00 Sebastian Morr sebastian@morr.cc This panorama photo was taken in summer 2010 on a vacation in Kiel. I like how the natural, green beach slowly fades into the industrial, human made, gigantic ship dock.

Warning: This image is 21 MB large. It could take a while to load.

First activate your fullscreen mode (F11), then click on the link below. The picture is mirrored for dramaturgic reasons. Slowly scroll to the right using your arrow keys. Have fun!

Open

This was made from multiple photos that were stitched together using the awesome software Hugin.

]]>
Waldi in Gefahr waldi-in-gefahr 2010-04-23T00:00:00+01:00 Sebastian Morr sebastian@morr.cc Eine wahre Geschichte aus der Serie ‘Neulich im Bus’

Im hinteren Teil des Busses sitzt eine ältere Omma. Sie hat standestypische Stricksachen und einen breiten Schal an und ist beladen mit Einkaufstüten. Begleiter: Ein kleines braunes Hundchen. Seinen Namen kenne ich noch nicht, aber den werde ich bald erfahren.

Der Bus stoppt an einer Haltestelle. Einige Fahrgäste steigen aus, Hundchen springt begeistert hinterher.

Omma nimmt das genau solange nicht zur Kenntnis, bis die Türen ihr “Ich-mach-gleich-zu-weißte-Bescheid”-Tröten ertönen lassen. Jetzt jedoch springt sie auf: Ihr Hund steht draußen, sie hat ihn an der Leine und steht selbst drin, und die Türen drohen zu schließen! Horrorvorstellungen branden nicht nur vor meinen Augen auf, denn Omma fängt an zu ziehen, sie zieeeeht an der Leine, versucht, Waldi wieder ins Businnere zu holen und kreischt dabei: “Waldi! Nicht aussteigen!!”. Ich schwöre, die drei Sekunden bis zum Schließen der Türen dauerten länger als sonst.

Irgendwann entscheidet Waldi, dass es ihm nicht behagt, zu Tode geschleift zu werden, oder vielleicht war ihm auch einfach langweilig geworden, jedenfalls hüpft er wieder in den Bus und die Türen schließen sich hinter ihm.

Erschöpft lässt sich Omma wieder auf ihren Sitzplatz fallen. Während der Schock langsam einsetzt, murmelt sie: “Noch nicht aussteigen! Ist doch noch eine Haltestelle…”

]]>
Rätsel: Wie viele Beine? wie-viele-beine 2010-04-17T00:00:00+01:00 Sebastian Morr sebastian@morr.cc Eine Rätselaufgabe, die meine Tante mir vor einiger Zeit stellte. Und meine Antwort.

In einem Bus befinden sich 7 Kinder. Jedes Kind hat 7 Rucksäcke. In jedem Rucksack sind 7 große Katzen. Jede große Katze hat 7 kleine Katzen. Wie viele Beine sind im Bus?

Ich löse die Aufgabe unter der Voraussetzung, dass sich keine Insekten oder weitere unbekannte Tiere im Bus befinden - denn deren Beine würden das Endergebnis signifikant in die Höhe treiben (man denke an Tausendfüßler!).

In jedem Rucksack befinden sich 7 große Katzen und 7 × 7 kleine Katzen, was schonmal (7 + 7 × 7) × 4 Katzenbeine pro Rucksack ergibt. Derer gibt es ebenfalls 7 × 7 - eine Gesamtzahl von (7 + 7 × 7) × 4 × 7 × 7 Katzenbeinen.

Die 7 Kinder haben jeweils 2 Beine. Von den Nasenbeinen, Brustbeinen, Steißbeinen, Schlüsselbeinen ist im Sinne der Aufgabenstellung abzusehen - erstens versteht man “Bein” für gewöhnlich im Sinne “untere Extremität”, zweitens reichen meine Medizinkenntnisse nicht aus, um genau anzugeben, wie viele “Beine” ein Mensch denn nun hat. Also: 2. Macht 7 × 2 Kinderbeine.

Schließlich muss noch eine stochastische Analyse vorgenommen werden: In der überwältigenden Mehrheit der Fälle befindet sich zusätzlich zu den Kindern noch ein weiterer Mensch im Bus: Der Busfahrer. Ausnahmen davon sind:

  • Pinkelpausen des Busfahrers
  • Wechsel des Busfahrers sowie
  • die Existenz begabter, leider sträflich fehlgeleiteter Kinder, die sich morgens selbst im Bus zur Schule fahren.

Ersteres und zweiteres nimmt am Tag nur wenige Minuten in Anspruch, letzeres traue ich Kindern mit Katzen im Rucksack nicht zu. Zur Beinsumme addieren sich also noch 2 Busfahrerbeine.

Resümee: (7 + 7 × 7) × 4 × 7 × 7 Katzenbeine + 7 × 2 Kinderbeine + 2 Busfahrerbeine ergeben eine Gesamtmenge von unglaublichen 10992 Beinen im Bus!

Bei meinen Überlegungen stieß ich auf eine interessante Tatsache: Wenn wir annehmen, dass eine erwachsene Katze um die 5 kg, eine kleine Katze um die 2 kg, ein Schulkind um die 40 kg und ein Busfahrer um die 90 kg wiegt (ja, 90. Die Typen sitzen doch den ganzen Tag rum.), dann trägt der Bus ein Passagiergewicht von insgesamt 7 × 7 × 7 × 5 + 7 × 7 × 7 × 7 × 2 + 7 × 40 + 1 × 90 kg, was umgerechnet knapp 7 Tonnen entspricht, etwa so viel wie der Bus selbst wiegt.

Und das Fazit, das wir aus dieser Rätselaufgabe ziehen können? Busfahrer haben’s nicht leicht. Das Miauen von zweieinhalbtausend Katzen, der Platzbedarf von 49 Großraumrucksäcken, das ständige Genöle der Kinder - und das JEDEN TAG!?

Und nicht zuletzt ständig diese Leute mit ihren Taschenrechnern…

]]>
Bundeswettbewerb Informatik bwinf 2008-11-16T00:00:00+02:00 Sebastian Morr sebastian@morr.cc Ich habe an drei Runden des Bundeswettbewerbs Informatik teilgenommen (in den Jahren 2009 und 2010). Hier möchte ich meine Lösungen veröffentlichen, vielleicht können kommende Teilnehmer daraus lernen. 2010 war ich außerdem Teilnehmer der Endrunde.

1. Runde des 27. BWINF1. Runde des 28. BWINF2. Runde des 28. BWINF

]]>
Screamie screamie 2009-08-17T00:00:00+02:00 Sebastian Morr sebastian@morr.cc Screamie

]]>
Abi 09 logo abi09-logo 2009-05-02T00:00:00+00:00 Sebastian Morr sebastian@morr.cc

Translation: “To hell with Pisa, it’s not our tower.” Was created for a T-shirt when I finished high school.

]]>
Ubucon 2008 logos ubucon-logos 2008-08-10T00:00:00+00:00 Sebastian Morr sebastian@morr.cc

]]>
Facharbeit: Künstliche neuronale Netze knn 2008-04-04T00:00:00+00:00 Sebastian Morr sebastian@morr.cc Im 12. Jahrgang schrieb ich meine Facharbeit zum Thema Künstliche neuronale Netze. Diese Arbeit stellte ich außerdem in einem Referat vor:

Facharbeit Referat

]]>
Freie Software: Eine Analogie freie-software 2007-05-07T00:00:00+00:00 Sebastian Morr sebastian@morr.cc Mithilfe einer Analogie kann man sehr anschaulich erklären, was Freie Software ist. Es werden nur wenige alltägliche Elemente benötigt, an denen man jedoch viele Sachverhalte erklären kann. Gerade für technisch weniger Versierte sollte dieses Modell hilfreich sein.

  • Ein Kochrezept: Ein Rezept entspricht in diesem Modell dem Sourcecode, der “Sprache”, in der Programme verfasst werden.
  • Ein Koch: Das sind wir - man stellt sich vor, jeder von uns Computernutzern sei ein Koch.
  • Ein Gericht: Aus einem Rezept kann ein Koch ein fertiges Gericht zubereiten. Dies entspricht in der Computerwelt einem ausführbaren Programm. Erfreulicherweise kann der Koch dabei keine Fehler machen; Es hängt also nicht von der Erfahrung des Koches ab, wie gut das Gericht wird, sondern ausschließlich vom Rezept. Rezepte und Gerichte haben in dieser imaginären Welt außerdem die Eigenschaft, dass die enorm schnell und kostengünsig vervielfältigt werden können, denn Dateien kann man schließlich auch kopieren.

Nochmal zusammengefasst: Der Koch bereitet aus einem Rezept ein leckeres Gericht zu. Als nächstes könnte man fragen: Woher bekommt der Koch seine Rezepte?

Möglichkeit 1: Er erfindet es selbst. Das ist natürlich ein langwieriger und aufwändiger Prozess. Damit verhielte er sich so wie ein Programmierer, der seine eigene Software entwickelt. Möglichkeit 2: Er kocht nach einem schon existierendem Rezept. Genau hier kommt der Gedanke der Freien Software beziehungsweise Rezepte ins Spiel: Wenn etwa jemand, der einige Rezepte erfunden hat, daraus ein Kochbuch schreibt, können alle Anderen ein Rezept nachschlagen und selbst kochen.

Das mag wie eine Selbstverständlichkeit klingen, doch diesen grandiosen Gedanken muss man sich vor Augen halten, wenn man das Prinzip wieder in die echte Welt überträgt: Autoren von freien Programmen veröffentlichen den Sourcecode kostenlos und jeder kann ihn aus dem Internet, von CDs oder anderen Datenträgern beziehen und mit einem Computer in ein funktionsfähiges Programm übersetzen.

Das ein solches Rezept nun “frei” ist, bedeutet nicht nur Kostenfreiheit, obwohl das sicher auch eine wichtige Eigenschaft ist. Noch wichtiger ist die Freiheit, das Rezept beliebig an andere Köche weitergeben zu können. Auch das Gericht darf man weitergeben, wenn man etwa Freunde einlädt und jedem einen Teller Nudeln vorsetzt (aufgrund der schnellen Verdopplung ist das natürlich noch leichter). Weiterhin kann man ein Rezept natürlich auch verändern und nach eigenen Vorlieben anpassen. Erneut sei hier daran erinnert, dass alle diese Eigenschaften auch auf Freie Software zutreffen! Beispiele für grandiose Freie Software sind GNU/Linux, Mozilla Firefox oder OpenOffice.org.

Schön und gut - klingt nach einer Menge positiver Eigenschaften. Doch ist das nicht alles irgendwie … selbstverständlich? Keineswegs! Die Welt ist voll von Köchen, die Geld mit ihren Kochkünsten machen wollen (Bill Gates etwa ist ein sehr prominenter). Das Ganze funktioniert bei ihnen so wie in einem Restaurant: Ihre Rezepte sind geheim und sie kochen hinter verschlossenen Türen. Das fertige Gericht wird dann gegen eine oft saftige Gebühr an den Tisch gebracht. Die Gäste in diesem Restaurant wissen weder, wie das Essen zubereitet wurde, noch was die Zutaten sind. Außerdem ist es fast unmöglich das Gericht selbst zu verändern, wenn es ihnen nicht schmeckt. Sie dürfen es auch keinesfalls kopieren, jeder Gast muss erneut bezahlen. Der Koch lacht sich dabei ins Fäustchen, denn wie wir wissen, können die Gerichte in diesem Modell fast kostenlos immer wieder verdoppelt werden. Zurück in die echte Welt! Für die meiste Software muss man heutzutage bezahlen. Man darf sie nicht studieren, nicht verändern, nicht weiterverbreiten und oft ist sogar die Benutzung eingeschränkt. Diese Art von Programmen nennt man proprietär oder unfrei. Windows und die Microsoft Office Suite sind bekannte Beispiele. Das war nicht immer so - vor einigen Jahrzehnten, als Computer noch in den Kinderschuhen steckten, war jedes Programm frei. Bill Gates war dann einer der ersten, die anfingen, für das sehr kostengünstige Kopieren von Software Geld zu verlangen.

Erwähnen sollte man noch Programme, die zwar kostenlos benutzbar sind, jedoch ebenfalls Einschränkungen in ihrer Benutzung haben - sogenannte Freeware. Diese muss man ganz deutlich von Freier Software angrenzen. Die Analogie wäre ein Mann mit Bauchladen, der kostenlos Fritten verteilt. Man muss zwar nichts bezahlen, aber alle anderen oben genannten Nachteile bleiben erhalten.

]]>
Aufruf: Benutzt Jabber! benutzt-jabber 2006-12-18T00:00:00+00:00 Sebastian Morr sebastian@morr.cc Hallo! Ich bin der Sebastian! Und ich erklär euch heute, wie man sich übers Internet unterhalten sollte und wie nicht.

Ihr kennt doch alle ICQ. Dieses bunte Programm zum chatten. Haben eure Freunde ja auch. Aber, was ihr vielleicht nicht wisst: ICQ ist sehr, sehr böse. Kann man hier alles nachlesen. Kurz gesagt, dürfen die Betreiber von ICQ alles, was ihr euch dadrin so schreibt, speichern und mitlesen. Ihr verliert all eure Rechte an dem, was ihr schreibt. Theoretisch dürften die eure geheimsten Gedanken auch veröffentlichen. Klingt komisch? Ist aber so.

Ist natürlich doof. Kann man aber was machen! ICQ, MSN und die anderen bösen Protokolle sind ja nicht die einzigen fürs Instant-Messaging! Da gibts nämlich auch noch was namens “Jabber”. Das ist ein freies Protokoll, da darf niemand mitlesen und so. Ein guter Client ist Pidgin. Kann man ganz einfach installieren und einrichten. Ist ganz ohne nervige Werbung. Und wenn ihr jetzt sagt “Das haben meine Freunde aber nicht!”, dann erzählt denen doch einfach davon und nennt ihnen die oben genannten Argumente gegen ICQ! Für die Übergangszeit könnt ihr auch mit Pidgin euer böses ICQ-Konto weiterbenutzen.

Auch ich finde das ganz schön blöd, dass so wenige Jabber benutzen. Aber vielleicht kann ich ja hiermit dazu beitragen, es bekannter zu machen. Denn jetzt wisst ihrs ja besser. So bleibt mir nur, ein letztes Mal zu sagen: “Benutzt Jabber!”

Und nächste Woche erzähle ich euch, welche Browser ihr verwenden solltet und welchen nicht!

Blitzstart

Wenn ihr dieser Anleitung folgt, habt ihr in etwa 10 Minuten einen eigenen Jabber-Account. Mit dem Programm dazu, Pidgin, könnt ihr sowohl die Vorzüge von Jabber nutzen, aber auch mit ICQ weiterchatten.

  1. Auf www.pidgin.im Pidgin herunterladen (10,9 MB).

  2. Das Programm installieren. Normalerweise reicht es, bei der Installation immer auf “Weiter” zu klicken.

  3. Beim ersten Start öffnet sich das Konten-Fenster. Dort klickt man auf “Hinzufügen”. Als Protokoll wählt man XMPP, das Jabber-Protokoll. Nun sucht man sich einen schönen Benutzernamen und ein Passwort aus. Die anderen Einstellungen kann man so lassen, wie sie sind. Bequemerweise klickt man schließlich noch auf “Passwort speichern”, macht ein Häkchen bei “Konto neu anlegen” und klickt zweimal auf “Registrieren”. Kommt die Fehlermeldung “Konflikt” hat sich schon jemand den Benutzernamen ausgesucht, man wiederholt die Prozedur dann einfach mit einem anderen Namen. Das wars schon! Das neue Jabber-Konto ist einsatzbereit!

Nun kannst dich mit einem Klick auf das Kästchen vor dem Konto anmelden. Adde alle Jabberaner, die du kennst (= mich, blinry@jabber.org) unter Buddys->Buddy hinzufügen.

Nun kannst du noch das alte ICQ-Konto hinzufügen: Wieder im Konten-Fenster auf “Hinzufügen”, als Protokoll ICQ (ist Pidgin nicht herrlich selbsterklärend?), als Benutzername deine ICQ-Nummer, Passwort wie gehabt, Speichern. Deine alte Kontaktliste wird übernommen.

Das war’s! Viel Spaß beim Chatten! (Und empfiehl Jabber weiter!)

]]>
Kalauer-Sammlung kalauer 2005-09-16T00:00:00+00:00 Sebastian Morr sebastian@morr.cc
  • Sagt die Null zur Acht: Schöner Gürtel!
  • Warum ham die Araber ka Brot? Weils ka Mehl haben!
  • Treffen sich zwei Jäger: Beide tot!
  • Ich gehe nicht zu seiner Beerdigung, er geht auch nicht zu meiner…
  • Was ist ein Keks unter einem Baum? Ein schattiges Plätzchen!
  • Was sind die Steigerungsformen von imposant? Im Hintern Kies, im Arsch Beton!
  • Ich hasse Leute, die mitten im Satz
  • Der kürzeste Trabbi-Witz: Steht’n Trabbi auf’m Berg…
  • Gestern hab ich bei den Weight Watchers angerufen - hat keiner abgenommen!
  • Treffen sich zwei Fische: “Hi!” - “Wo?”
  • Fällt ein Kuckuck ins Meer. Taucht ein Hai auf. Sagt der Kuckuck: “Hi!”. Sagt der Hai: “Kuckuck!”.
  • Was ist weiß und stört beim Essen? Eine Lawine!
  • Was ist weiß und tut weh, wenn man es ins Auge kriegt? Ein ICE!
  • Was ist weiß und steht hinterm Baum? Eine schüchterne Milch!
  • Ein Schneemann zum anderen: Riechst du auch Karotten?
  • Warum gehen Fliegen nicht in die Kirche? Sie sind Insekten!
  • Zwei Kanibalen essen einen Clown. Meint der eine: “Schmeckt irgendwie komisch.”
  • “Kellner, bitte Zahlen!” - “Fünfzehn, achtundsiebzig, elf…”
  • Wie heißt ein Bumerang, der nicht zurückkommt? Stock.
  • Ober: “Wie fanden Sie das Schnitzel?” Gast: “Rein zufällig unter dem Salatblatt!”
  • Pessimist: “Schlimmer geht’s nicht…” Optimist: “Doch!”
  • Was ist der Unterschied zwischen einem Ingenieur und einem Bauingenieur? Die einen bauen Waffen, die anderen Ziele.
  • Kundin ruft beim Support an: “Mein Monitor ist kaputt.” Support: “Ist er denn an?” Kundin: “Ja.” Support: “Dann machen sie ihn mal aus.” Kundin: “Oh, jetzt geht er.”
  • Brechstangen sind aus Diebstahl gemacht.
  • Der Pessimist: Das Glas ist halb leer! Der Optimist: Das Glas ist halb voll! Der Ingenieur: Das Glas ist doppelt so groß, wie es eigentlich sein müsste!
  • Fünf von vier Leuten können nicht rechnen.
  • Das Leben ist eine tödliche Krankheit, die durch Geschlechtsverkehr übertragen wird.
  • Ein Bahngleis ist ne harte Droge: Ein Zug und du bist tot…
  • Liebe ist nur ein Wort. Quark auch.
  • Neulich hab ich mal einen Chemie-Witz erzählt. Keine Reaktion.
  • Meine Freundin meint, ich wäre neugierig… zumindestens steht das in ihrem Tagebuch.
  • Wenn Atheismus eine Religion ist, dann ist “Aus” auch ein Fernsehsender.
  • Kann ich mein Leben mal kurz speichern und was ausprobieren?
  • Bevor man stirbt, zieht das ganze Leben an einem vorbei. In Echtzeit.

  • A balanced diet is a chocolade in both hands.
  • If I agreed with you, we’d both be wrong.
  • I stepped on a corn flake - now I’m a cereal killer.
  • If this sentence is true, then Santa Claus exists.
  • ]]>
    Kunstprojekt "Babel" babel 2005-09-06T00:00:00+00:00 Sebastian Morr sebastian@morr.cc Diese Fotoserie entstand in der zehnen Klasse. Es stellt in achtzehn Bildern zwischenmenschliche Beziehungen mit Büchern dar.

    Ich habe auch eine Reflexion über die Entstehung geschrieben.

    Freudschaft

    Freudschaft

    Liebe

    Liebe

    Familiensinn

    Familiensinn

    Disziplin

    Disziplin

    Ueberwachung

    Ueberwachung

    Bedrohung

    Bedrohung

    Furcht

    Furcht

    Hass

    Hass

    Ausgrenzung

    Ausgrenzung

    Bedrohung

    Bedrohung

    Misshandlung

    Misshandlung

    Trauer

    Trauer

    Angst

    Angst

    Bedraengung

    Bedraengung

    Raserei

    Raserei

    Machtlosigkeit

    Machtlosigkeit

    Sehnsucht

    Sehnsucht

    Ehrfurcht

    Ehrfurcht

    ]]>
    Simpsons-Zitate simpsons-zitate 2005-08-22T00:00:00+00:00 Sebastian Morr sebastian@morr.cc Zitate aus der gelbsten Fernsehserie der Welt. Gesammelt während meiner intensiven Simpsons-Phase um 2005 herum.


    Homer: “Tut mir nichts, ich hab Frau und Kinder! Tötet die!”


    Grampa: “Ich mach jeden Test mit, den ihr wollt: Sehtest, Hörtest, Erinnerungstest, Erinnerungstest, …”


    (Dokumentarfilm): “Mach dir nichts vor, Jimmy. Wenn eine Kuh die Möglichkeit hötte, würde sie dich auch essen und alle, die du lieb hast!”


    (Krusty tritt als Vampir verkleidet auf): “HEYHEY! Today I’m going to SUCK!” (Pause) “… your blood!”


    (Etwas explodiert)

    Wiggums: “Puuh, das war knapp! Gut, dass es in dem qualmenden Krater gelandet ist!”


    (Marge betet und ein Wunder geschieht)

    Homer: “Gut Marge, er ist drauf reingefallen!”


    Homer: “Bart, Lisa, geht auf eure Zimmer und verprügelt euch selbst!”

    Bart: “So ein fauler Vater…”


    Marge: “In den meisten Serien wird leider viel zu viel wiederholt”

    Smithers kommt reingestürmt: “Maggie hat schon wieder Mr. Burns umgebracht!”


    Lisa zu Milhouse: “Sei nicht traurig, du hast noch dein ganzes Leben vor dir!”

    Milhouse: “OH NEIN!! WÄHÄHÄ!!”


    Moe: “Seht euch nur die Sterne an… So viele kleine Lichter, die im Grunde niemandem nützen…”


    Homer: “So eine dumme Topfpflanze! Steht einfach hier rum und vertrocknet!”


    Homer: “Sieh dir nur diese Typen an, mit ihren Pelzmänteln und komischen Hüten!”

    Marge: “Homer, das sind Hirsche!”

    Homer: “Na und? Ich hasse sie trotzdem!”


    TV-Spot: “Bürgermeister Quimby setzt sich für Drehtüren an Gefängnissen ein und hat sogar den Massenmörder Tingeltangel-Bob freigelassen! Kann man einem solchen Menschen trauen? Wählt Tingeltangel-Bob!”


    Homer: “Oh nein, das jüngste Gericht! Schnell, schafft Bart aus dem Haus, bevor Gott kommt!”


    Chief Wiggums: “Hey, das ist Tierquälerei!” (lächelt freundlich) “Haben Sie eine Genehmigung dazu?”


    (Nach Itchy und Scratchy)

    “Dieser Film enthielt äußerst gewaltsame Szenen und hätte nicht von kleinen Kindern gesehen werden dürfen”


    Wiggums: “Ihr Rücklicht hat ‘nen Wackelkontakt, das blinkt beim Abbiegen”


    Homer: “Hm, wie bestraft dich deine Mutter normalerweise?”

    Bart: “Sie zwingt mich, Bier zu trinken”


    Homer: “Oh nein, wir haben Mr. Burns umgebracht! Mr. Burns wird bestimmt sauer sein!”


    Homer: “Kommt, wir gehen nach Hause!”

    Lisa: “Wir sind zuhause…”

    Homer: “Das ging aber schnell!”


    (Homer testet eine Pistole und fuchtelt damit herum)

    Verkäufer: “He, nehmen Sie sich in acht!”

    Homer: “Ich brauch mich nicht in acht zu nehmen, ich hab ne Waffe!”


    Willie zu Edna: “Es würde mir konvenieren, dienstagabend mit Ihnen zu dinieren”

    Schreibt in seinen Kalender: “Schlampe bumsen”


    Grampa: “Ich möchte in Würde sterben, zum Beispiel beim Ausrutschen in der Dusche! Und dann findet mann mich zwei Wochen später so aufgequollen, dass man nicht weiß, bin ich ein Mann oder ein Sofa?”


    Flanders: “Ich bin Flanders, aber meine Freunde nennen mich Ned”

    Homer: “Hallo, Flanders”


    (Filmleute malen einem Pferd Flecken auf)

    Martin: “Entschuldigung, aber warum nehmen Sie keine echten Kühe?”

    “Kühe sehen im Film nicht wie Kühe aus, da muss man Pferde nehmen”

    “Und was machen Sie, wenn ein Tier wie ein Pferd aussehen soll?”

    “Ach, da binden wir meistens nur ein paar Katzen zusammen”


    (Bart ist taub)

    Skinner: “Ah ja, ein Klassiker, genauso wie der blinde Bart, Rollstuhl-Bart, der schwangere Bart und mein persönlicher Favorit, Eisenbahnschwellen-Bolzen-durch-den-Kopf-Bart”


    Zeitungstyp: “Unsere Zeitungen enthalten einen gewissen Prozentsatz recyceltes Papier!”

    Lisa: “Und welchen?”

    “Null! Null ist auch ein Prozentsatz!”


    Homer: “If an emergency goes off, there are earplugs in the top drawer.”


    [Ethiopian resautaurant] Lisa: “They’re using pancakes as spoons.” - Bart: “Ooh, let’s see what else they do wrong!”


    Bart: “Heh, heh, we totally wasted his time!” - Homer: “And ours!”


    (Psychologist) “So, what I understand from our phone conversation, you have a very poor service provider.”


    “Tonights Simpsons episode was brought you by… the number e. Not the letter, but the number, whose exponential function is the derivative of itself.”


    “America has so many enemies: Iran, Iraq, China, Mordor, …”


    Lisa, on walkie talkie: “Roger.” - Bart: “Name’s Bart.”

    ]]>
    Was man alles mit einem Backstein machen kann backstein 2004-06-11T00:00:00+00:00 Sebastian Morr sebastian@morr.cc

    Vor vielen Jahren gingen wir im Klassenforum der 9c der Frage nach, was man alles mit einem Backstein machen kann. Hier die gesammelten Ergebnisse!

    1 Gegen Türen werfen
    2 Drauf sitzen
    3 aus dem fenster werfen
    4 papier drumm wickeln
    5 gegen Bauch werfen
    6 gegen Kopf werfen
    7 In eine Menschenmenge werfen
    8 Versuchen zu essen
    9 Ein stück von abschlagen
    10 Cd auf den boden legen und stein durff werfen
    11 Auf stifte werfen
    12 Auf mäuse werfen
    13 auf mäuse (pc) werfen
    14 auf tastaturen werfen
    15 auf bildschirme werfen
    16 gegen puter werfen
    17 versuchen mit dem kopf in der mitte zu zerbrechen
    18 draufstellen
    19 in die luft werfen
    20 in die luft werfen und nicht weggehen
    21 in einen bratwürstchen stand werfen
    22 verkleiden als ein würstchen und dann verkaufen gg
    23 einen bieba butzemann enthüllen und drüber stülpen
    24 ein haus bauen
    25 eine mauer bauen
    26 ein turm bauen
    27 in baugruben schmeißen
    28 gegen wände schmeißen
    29 auf den boden schmeißen
    30 arbeitern gegen kopf werfen
    31 Tiere abwerfen
    32 in mülleimer schmeißen
    33 in brennende mülleimer schmeißen
    34 gegen laternen schmeißen
    35 gegen litfaßsäulen (scheiß wort) werfen
     
    so jetzt macht ihr mal weiter!!
     
    so viel Zerstörung...
    ok, geb ich auch meinen senf dazu
     
    -=:§ DIE LECKEREN BACKSTEINREZEPTE §:=-
     
    36 gebratener Backstein mit Weißbrot
    37 gekochter Backstein mit Schnitzel und Pilzsoße
    38 mit Käse überBACKener Backstein (muhaha)
    39 Backsteinauflauf
    40 Kartoffeln mit Backsteinsoße
    41 Backsteinpudding mit heißen Kirschen
    42 Backsteinpuffer mit Apfelmus
    43 gedünsteter Backstein mit Johannisbeeren
    44 und die Spezialität des Hauses, Backsteinkuchen mit Zuckerguss und 
    Schlagsahne auf Wunsch
     
    -------------------------------------------
     
    45 in den Kühlschrank legen und Eltern erschrecken
    46 mit in die Schule nehmen und damit angeben
    47 in den Garten pflanzen und warten ob ein Backsteinbaum wächst
    48 in der Handtasche mitnehmen
    49 in der Schule damit rumprahlen
    50 viele stapeln und dann wieder durcheinanderschmeißen
    51 kleinen Geschwistern zum Spielen geben
    52 Tauschbörse eröffnen
    53 ins Diskettenlaufwerk schieben
    54 als Glücksbringer mit zu Mathearbeiten nehmen
    55 sich damit unterhalten
    56 bei Ebay versteigern
    57 bis in die Erdatmosphäre pfeffern
    58 zerkrümeln und Feinden ins Essen streuen
    59 Gedichte drauf schreiben
    60 ins Vakuum stellen und gucken, was passiert
    61 verschenken
    62 filmen
    63 fotografieren
    64 ein abstraktes Kunstwerk draus machen
    65 anbeten
    66 Toiletten damit verstopfen
    67 in Briefkästen der Nachbarschaft werfen
    68 "Backstein" in Englisch, Französisch, Spanisch, Elbisch und
    Zamonisch übersetzen
    69 damit schimpfen
    70 lieb haben und damit kuscheln
     
    viel Spaß beim Nachmachen
     
    woho, du hast ehrlich die besser fantasie, meine besteht nur aus 
    zerstörung! Muhahahahahaha!! :D
     
    71 an Stromkreis anschließen
    72 erhitzen
    73 abkühlen
    74 mit radioaktiver Strahlung beschießen
    75 im Teilchenbeschleuniger gaaaaanz schnell beschleunigen
    76 in den Weltraum schießen
    77 mit einem Thermoelement die Temperatur des Backsteins messen
    78 würfeln und damit Wahrscheinlichkeitsrechnung machen
     
    Kann man mit einem Backstein vielleicht auch mathematisches machen? Zum
    LGS lösen taugen sie jedenfalls nicht...
     
     
    man könnte doch auch die kanten messen und die oberfläche und das
    volumen ausrechen! ist doch mathematisch oder?!
     
    stümmt
     
    79 Höhe mal Breite mal Tiefe ausrechnen
    80 Zwei mal Höhe mal Tiefe und zwei mal Höhe mal Breite und Zwei mal
    Tiefe mal Breite ausrechnen
     
    und noch was naturwissenschaftliches
     
    81 Teilchenmenge ausrechnen
    81 wiegen
    82 Zusammensetzung untersuche Massenproduktion
    85 verkaufen
     
    da komme ich von der Wissenschaft ab... Jetzt was revolutionäres
     
    86 auspressen und
    87 Treibstoff daraus herstellen
    88 verstrahlt als Lichtquelle nutzen
    89 und sowieso als Energiequelle
    90 sehr viele verbrennen um einen Klimaumschwung zu erzeugen
    91 wenn die Polkappen abschmelzen aufpumpen und zusammenbetonieren um
    Boote herzustellen
    92 damit Wohnungen unter der Wasseroberfläche bauen
    93 oho; als neue Währung einführen (nennen wir sie doch "Backstein")
    94 alle alten Gebäude vom damaligen Land abreißen und reich werden
    (muhahaa, daher kommt "steinreich" :)
    95 Raumschiffe daraus bauen und zu einem unverseuchten Planeten fliegen
     
    jetzt werden wir wieder primitiv
     
    96 möglichen Außerirdischen an den Kopf werfen
    97 auf deren Gebäude und Technologien werfen
     
    98 neue Städte daraus aufbauen
    99 den Backsteintag als Nationalfeiertag einführen
    100 den Backstein als eigenständiges Wesen verehren
     
    vergessen habe ich jetzt
     
    98,1 Neue Längen-,
    98,2 Gewichts- und
    98,3 Volumeneinheiten auf Grundlage der Länge, des Gewichts und des
    Volumens eines Backsteins einführen
    98,4 ärgern, das früher alles viel einfacher war und deshalb alle 
    existierenden Backsteine
    siehe 20 in die luft werfen und nicht weggehen
     
    Boah 100 erreicht! Respekt!
     
    da gibt es bestimmt noch viel mehr!!!=)
     
    stimmt.
     
    101 Stefan an den Kopf werfen (von Frau Evers)
    und meine Ideen a la David:
    102 David an den Kopf werfen
    103 Henni an den Kopf werfen
    104 Möhrchen an den Kopf werfen
    105 Schmiddi an den Kopf werfen
    106 Maurus an den Kopf werfen
    107 Hendrik an den Kopf werfen
    108 Benni  an den Kopf werfen
    109 Gerrit an den Kopf werfen
    110 Daniel an den Kopf werfen
    111 Jasper an den Kopf werfen
    112 Joachim an den Kopf werfen
    113 Lukas an den Kopf werfen
    115 Jan an den Kopf werfen
    116 Simon an den Kopf werfen
    117 Tim an den Kopf werfen
    muuhaha; jetzt gaaaanz weit werfen:
    118 Peer an den Kopf werfen
    119 Kevin an den Kopf werfen
    Keine Gewalt gegenüber Fastfrauen.
     
     
    Man kann auch leckere Sachen damit machen:
    120 Essen
    121 Zerbröckeln und als Brause trinken
    122 Kochen
    123 Braten
    124 Erwärmen bis es flüssig wird und dann trinken
    125 Erwärmen bis es gasförmig wird und dann einatmen
    etc. (usw.)
     
    126 weihnachtsgeschenk
    127dem weihnachtsmann an den kopf werfen
    128 in geschenkpapier einwickeln
    129 als kerzenständer nutzen
    130kekse drauflegen!!;)
     
    etwas aus dem sportlichen bereich:
     
    131 handstand drauf machen
    132 Handstandüberschlag drauf machen
    133 handstand drüber machen
    134 Handstandüberschlag drüber machen
    (sehr einfallsreich ;))
    135 Mit skatboard fahrn
    136 kickflip mit machen
    137 Eine Halfpipe mit runter fahren
    138 Zwei jeweils unter einen Fuß schnallen und mit Inliner fahren
    139 damit an einer rail grinden
    140 versuchen irgendwo aufzuhängen und einen aufschwung machen
    141 wenn klappt umschwung
    142 unterschwung dann umfallen
    143 dann den stein auf den kopf bekommen
    144 als boxsack gebrauchen(kann möglicherweise wehtuen, nicht machen)
    145 Auf einen tich legen und hocke drüber machen
    146 drüber hüpfen
    147 drauf seilspringen
    148 drauf arobic (wusste bich wie's geschrieben wird) machen
    149 Rolle drauf machen
    150 Handstandabrollen drau machen
     
    suuuuper ideen! eine übertrifft die andere! für manche übungen brauchst
    du aber einen gaaaanz großen stein...
    so langsam wird dieser backstein lästig... versuch mal ihn
    loszuwerden...
     
    151 in Scheiben schneiden
    152 in eine Kanone stopfen und wegschießen
    153 ertränken
    154 einfrieren
    155 vergraben
    156 grillen
    157-172 mit dem Blaster, der Bl, der Lavapistole, dem Minigeschützturm,
    der Klingenpistole, dem Multiwurfstern, dem Lancer, dem Blitzgewehr,
    dem Infektor, dem Schicksalsagenten, dem Zoomer, der Bananenpistole,
    dem Vernichter (keine Lust mehr) und der N48 kaputtmachen
    173 in einen Lavasee werfen
    174 sprengen
    175 implodieren lassen (keine Ahnung, wie das gehen soll)
    176 als Dummy benutzen
    177 an die Hochspannungsleitung anschließen
    178 in die Streckbank spannen (ja, und kurbeln)
    179 versuchen, Daumenschrauben anzulegen
    180 auf den elektrischen Stuhl mit ihm!
    181 werft ihn ins Feuer!!
    aber ich soll mich nicht von meinen Gefühlen leiten lassen
    182 Bioarbeit schreiben lassen
    183 ihm die Bioarbeit wiedergeben
    184 ihn die Bioarbeit berichtigen lassen
    185 ihm die Bioarbeit mit Fehlern wiedergeben
    186 ihn die Bioarbeit nochmal berichtigen lassen
    187 im finsteren, bitterkalten Wald aussetzen
    188 ihn Rotkäppchen als Geschenk für die Großmutter mitgeben
    189 ahaaaa: vom bösen Wolf fressen lassen
    190 in ein Reh verwandeln
    191 in den Backofen schubsen
    192 aus dem achten Stock fallen lassen
    193 Stücke abschlagen
    194 Stücke abraspeln
    195 Stücke abschmirgeln
    196 Stücke abfeilen
    197 in einen aktiven Vulkan werfen
    198 in einen aktiven Wirbelsturm werfen
    199 nach einem Erdbeben in eine Erdspalte werfen
    -=:[200]:=- über Millionen Jahre hinweg von Bakterien zersetzen lassen
     
    ob wir den nochmal wiedersehen?
     
    201 per modernster technik wieder rematerialisieren
    202 ihn fragen wie es vor millionen jahren mal war
    203 ihn ein geschichtsbuch schreiben lassen (was den titel "Geschichte 
    eines (psychisch und physisch gequälten) Backstein" trägt)
     
    nein ahh, uhuhuaarrrrrrrrgg, wahhhhhhhhhh, 203 eine ungrade zahl, was
    soll das? hm? sach ma? was fällt dir eigendlich ein?ß hm? erklär mir
    das?
     
    Etwas aus dem nützlichen Bereich
     
    204 als türstopper benutzen
    2e
    206 lochen und abheften, dafür, dass man ihn mal irgendwann wieder
    brauch
    207 rundmachen und als kunstobjekt bezeichnen
    208 dünn fräsen und als klopapier benutzen
    209 dünn fräsen und taschentücher draus machen
     
     
    210 klein hacken und als kleine kekse auf dem weihnachtmarkt verkaufen
    211 in ein brötchen packen, ketchup drauf und als 1/2 kilo bratwurst
    auf dem weihnachtmarkt verkaufen
    212 zu pulver machen und als tütensuppe verkaufen
     
    an david: ich galube briefbeschwerer war schon dabei!!!
     
    haha selber reingefallen, dann wäre es jetzt keine ungerade zahl
    mehr!!!!!!!
     
    danke jasper! :D
     
    213 als Erkennungszeichen für einen geheimen Bund benutzen
    Kähähä
    
    hey was soll das :'C  jetzt bin ich ganz traurig und schreib was da
    zu!!
    214 bei einer Versteigerung versteigern(ist nicht ebay!!)
    kähähähähähä
    
    hmm. ist 214 eine schöne zahl? huch, ich hab nichts gesagt, wir wollen
    ja die backsteingötter nicht verärgern... backstein drüber! ahaaa:
    
    215 damit die Tafel wischen
    216 damit waschen
    217 214 Backsteine abzählen und finden, dass das keine schöne Zahl ist
    218 Rätselheft machen:
    
    --------------------------------------------------------------------
    DAS GROßE BACKSTEINRÄTSELHEFT
    
    219 Was ist schwer, schmeckt gut, ist leicht zu zerstören und eine
    wirksame Waffe?
    220 Suchsel
    Such das versteckte Wort:
    ORAC
    WDBX
    YAAL
    DICÖ
    SCKH
    MESC
    KTTG
    UTEP
    ESIM
    NNNN
    CPÜG
    MFIP
    
    221 Führe den Backstein zum Mörtelsack!
    Tipp: Geh nicht den direktesten Weg!
                                                             _W_
     _____    ###########################################   /    \
    |\ ____\                           #                   |     |
    \|_____|  ##################       #      ###########  |_____|
                               #              #
                               ################
    Außen rumgehen ist gemogelt!
    
    222 Wie kommt man auf die Idee, zu fragen, was man alles mit einem
    Backstein machen kann?
    - Man bestraft ein Geburtstagskind damit.
    
    HÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ????
    werden jetzt manche sagen.
    Aber David kann uns die Geschichte erzählen (falls er sie noch weiß)
    

    David hat die Geschichte im Forum nicht mehr erzählt, wenn ich mich recht entsinne, wurde sein Bruder mal an dessen Geburtstag im Geschichtsuntericht mit dieser Aufgabe betraut. Whatever. Unsere Aktionen im Forum haben gerockt! :-)

    ]]>