Monthly Archives: September 2012

Why I don’t do step-by-step instructions

Sometimes I refuse to give help, especially when people ask for “step-by-step instructions” (only topped by further requests for videos showing exactly what to do). Why? Because I’m not in the business of hand-holding. I’m not your father, Luke.

Three reasons:

  1. It doesn’t teach you anything.
  2. It’s dangerous not to think for yourself.
  3. You didn’t give me anything, why should I give you even more than I’ve already given you?

Asking for a step-by-step guide for something is like saying “do my work for me, I don’t want to have to think about it”. Unfortunately, this rarely works, or if it works then only for one very specific situation, and others won’t benefit from it.

Consider a child and its father going down the street. The child suddenly says “Daddy, I want to go to the supermarket!” Which is across the street. Now this child has never crossed a street, and its dad must decide how to grant this wish. One solution is to take his child by the hand, head over to the traffic lights, wait until they turn green, cross the street, and head back to the supermarket on the other side. The child doesn’t have to do anything but tag along. It can happily do completely unrelated things in the meantime, e.g. goof off, read a comic book or simply stare at the pavement all the time. It doesn’t have to think.

The problem with this solution is that the child doesn’t learn anything in the process. The next time it will be in a similar situation it might be able to repeat these steps, but it will not be able to adjust to unforeseen circumstances. What if there are no traffic lights but only a zebra crossing? Why do I have to walk all over there to those lights anyway, can’t I just cross the street right here?

The better solution is for the father to patiently explain why each step is done. What is its significance? What are the dangers? That way the child will learn to be able to apply those steps in different situations. Yes, this is exhausting. And it brings me back to my opening statement: “I’m not your father.” I have no obligation to spend that much time on your education.

To the “it’s dangerous” part: Too often I’ve seen people simply copy & paste stuff they’ve read one a guide somewhere without even thinking about what they’re doing. This sometimes works, but often enough it doesn’t. Yes, you may have to replace “PASSWORD” in the example with your actual password. Yes, simply pasting “rm -rf /” without knowing what it does is incredibly stupid. If you don’t think about what you’re doing then you’re in for very nasty surprises, the most harmless being that it just doesn’t work.

The last point is “You didn’t give me anything, why should I give you even more than I’ve already given you?” I’ve spent countless hours writing software and the documentation for it. I’ve spent probably just as many hours giving support via emails or forum posts. And all you do is take without spending any effort yourself. I don’t want money, but I also want a basic appreciation for the worth of my time. Show me some effort (e.g. by describing properly what you’ve done so far, what your problems where in the process and what your specific problem is) and I will almost always spend the effort on a proper explanation myself.

Now I’m pretty sure several people will feel offended and think me a pompous, self-righteous ass. I don’t care. This is my time to spend, and I chose to spend it with people who show they don’t need to be spoon-fed.

MKVToolNix v5.8.0 released


I’ve released v5.8.0. It adds a couple of new features and fixes a few bugs; most prominently mmg not displaying mkvmerge’s last couple of messages.

Here are the usual links: the home page, the source code and the Windows installer and 7zip archive.

All of the binaries that I provide myself are already available.

Here’s the full ChangeLog since release 5.7.0:

  • 2012-09-02 Moritz Bunkus <>
    • Released v5.8.0.
    • Build system: dropped support for gcc 4.6.0.
    • mkvpropedit: new feature: Added support for adding, deleting and replacing attachments.
  • 2012-09-01 Moritz Bunkus <>
    • mmg: new feature: chapter editor: Added support for the edition flags "hidden", "default" and "ordered" as well as the chapter values "segment UID" and "segment edition UID". Implements ticket #736.
  • 2012-08-30 Moritz Bunkus <>
    • documentation: Added a Basque translation of mmg’s guide by Xabier Aramendi (see AUTHORS).
    • all: bug fix: Fixed a buffer overflow in the Base64 decoder routine.
  • 2012-08-19 Moritz Bunkus <>
    • source: Various fixes for building with g++ 4.7.x and clang 3.1.
  • 2012-08-08 Moritz Bunkus <>
    • Build system: Boost’s "bind" library is not required anymore. The C++11 features from "functional" are used instead.
  • 2012-08-07 Moritz Bunkus <>
    • mkvmerge: bug fix: MPEG transport streams whose timecodes wrap around/overflow are handled correctly. Fixes #777.
  • 2012-08-06 Moritz Bunkus <>
    • mkvmerge: bug fix: MP2/MP3 audio tracks in MPEG program streams that contained garbage at the start of the very first packet caused mkvmerge to use uninitialized/random values for certain parameters (sample rate, number of channels, and therefore also during timecode calculation).
  • 2012-08-05 Moritz Bunkus <>
    • mkvmerge: new feature: Added support for reading ALAC (Apple Lossless Audio Codec) from CAF (CoreAudio), MP4 and Matroska files. Implements #753.
  • 2012-08-02 Moritz Bunkus <>
    • mkvmerge: new feature: mkvmerge will remove stuffing bytes from MPEG-1/-2 video streams that are used to keep the bit rate above certain levels (the 0 bytes between slices and the following start code). Implements #734.
  • 2012-08-01 Moritz Bunkus <>
    • mkvmerge: bug fix: Fixed audio/video synchronisation when reading MPEG program streams with MPEG-1/2 video with respect to B frames. Fixes #579.
    • mkvmerge: enhancement: SRT files can have spaces in their timecode line’s arrow (e.g. "– >").
  • 2012-07-31 Moritz Bunkus <>
    • mkvmerge: bug fix: VC1: mkvmerge will now only mark frames as I frames if a sequence header precedes them directly. Fixes #755.
  • 2012-07-30 Moritz Bunkus <>
    • all: new feature: Added a Basque translation by Xabier Aramendi (see AUTHORS).
  • 2012-07-20 Moritz Bunkus <>
    • all: bug fix: The programs do not try to create directories with empty names anymore. This happened if the output file name for e.g. mkvmerge or mkvextract was only a file name without a directory component. With Boost v1.50.0 the call to "boost::filesystem::create_directory()" would result in an error if the name was empty (it didn’t in earlier versions of Boost).
  • 2012-07-11 Moritz Bunkus <>
    • mmg: bug fix: Fixed mmg not reading the very last line of mkvmerge’s output. The result was that messages like "the cues are being written" did not show up in mmg and that the progress bar was not filled completely. Fixes #774.

Have fun.