A Farewell to Anime

In the final scene of Mamoru Oshii’s 1995 film Ghost in the Shell, the being that was once known as the Major quotes a verse from the Bible. More specifically, 1 Corinthians 13:11, which in the King James Version reads:

When I was a child, I spake as a child, I understood as a child, I thought as a child: but when I became a man, I put away childish things.

This is one of the very last lines of dialogue in the film, and it is a callback to an earlier scene where Batou and Motoko are drinking beer on a boat. In that scene, Project 2501 quotes the first part of the the subsequent verse (1 Corinthians 13:12), which is the perhaps better known line that starts with “For now we see through a glass, darkly”. Which, although a famous phrase in and of itself, is perhaps better translated into modern English as “Now we see but a poor reflection as in a mirror”.

Now, an Oshii film quoting the Bible certainly isn’t unusual and I’m not going to go into any depth of analysis of the film here, but there’s one thing I want to discuss. One of the major themes of Ghost in the Shell is the familiar one of human transcendence; becoming something more than human, and both the first quote and the dialogue the Major has with Togusa about the dangers of overspecialization even earlier in the film can certainly be interpreted as belonging to this theme. There is, however, also a less obvious nuance to this, namely the one of moving on, in the emotional sense. The final scene has Batou and what was once the Major saying their goodbyes, which fits very well with the overall plot and the general transcendent theme.

Thematically, moving on or letting go certainly isn’t uncommon in Japanese story telling. Japan, has, after all – perhaps influenced by the Buddhist concept of impermanence – basically turned feelings of nostalgia into an art form in and of itself.

With this in mind, it may or may not be surprising that anime fans are really, really bad at moving on. Granted, I’ve seen the same phenomenon in other pop culture as well, but anime fans are particularly persistent. Basically, the actual point of this blog post (which I’m actually starting to get to now) is the question of why people have such a hard time letting go of the hobbies and the stories of their youth.

Coming back to 1 Cor. 13:11, the message is unambigous. When I became a man, I put away childish things. Ten years ago, in the summer of 2004, when I was 17 years old, I got into warezing anime. Today, I’m writing what will be the last post on this blog and I’m ready to move on with my life. The friendships I’ve made during these ten years are in some cases still important to me, but I really cannot say anime or fansubbing has made a lasting impression on me. After finishing this blog post, I plan on deleting what anime-related stuff might still be sitting around forgotten on my HDD and unfollow the few anime-related people I still follow on Twitter. It is time to move on.

What puzzles me is why so many people choose to stay with the stories of their youth. Hollywood films based on comic books are seemingly very popular. People who once played World of Warcraft are coming back to it. Which Saturday morning cartoons you watched as a kid is apparently still very important to many people. People who got into anime at about the same time as I did (or in many cases many years earlier) are still watching and writing about it, even though in some cases (see: Colony Drop) mostly limited to complaining about how things were just better in the Good Old Days. People cosplay their favorite teen culture franchise as grownups. Why cling so desperately to these teenage years? Is it just nostalgia, or have I missed an important part of the zeitgeist? Is it that the social networks you establish around your hobbies now are stronger than they once were?

I once had some loose plans on writing a full disclosure post about what I accomplished during my years of fansubbing and what it was like ten years ago, but I don’t really care enough to write that now and I’m not sure anyone else cares either. Fansubbing is dead, after all, and I don’t think its history is mine to write.

However, I will leave those of you who are younger than I with a few words of advice that you will surely ignore, as young people are wont to do with advice from their elders: value your friendships, but don’t get caught up in some small corner of the wonders of this world. Fictive stories, while entertaining, are ultimately not all that important. You can move on with your life if you choose to do so.

With these words, I leave this blog as I came to it, with a post about how I don’t really like anime. Closing the circle is thematically important in stories about moving on, after all. Good bye.

Use of ultrajson considered harmful

Someone at work got the idea that we should use this Python JSON library called ultrajson because apparently the standard Python json library was slow, or something. Well, we did end up using it, and it turned out to be a Bad Idea.

The standard JSON library in Python, which ujson is intended to be a drop-in replacement for, handles errors in a sane and Pythonic way. For example, if you attempt to serialize something that obviously doesn’t have a reasonable JSON representation, such as a Python function:

>>> def b():
...  pass
>>> json.dumps({'test': b})
Traceback (most recent call last):
  File "<stdin>", line 1, in 
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 231, in dumps
    return _default_encoder.encode(obj)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", line 201, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", line 264, in iterencode
    return _iterencode(o, 0)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", line 178, in default
    raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <function b at 0x1056b3398> is not JSON serializable

TypeError, of course. The programmer immediately realizes what the problem is and how to fix it.

Let’s see what ultrajson does with, say, a Python object.

>>> class Test(object):
...  def t(self):
...   print "hello"
>>> t = Test()
>>> ujson.dumps({'a': t})

Yep, it apparently serializes a lot of things it doesn’t want to deal with as empty JSON objects. Silent failure, the king of error handling. We had a funny bug caused by this; thankfully it never made it to production.

What if I try to serialize something else? Like, say, a function?

>>> def b():
...  pass
>>> ujson.dumps({'a': b})
Traceback (most recent call last):
  File "<stdin>", line 1, in 
OverflowError: Maximum recursion level reached

Wonderful. I hope I don’t have to explain why this stinks and how much. Please spread the word and save the world from the potential bugs caused by this terrible library.

A post about Real Life

This post is about my actual Real Life and falls under the category of blogging (as defined below). It will be in Swedish, because it’s not relevant to anyone who can’t read Swedish. You can go do something else now.
Continue Reading »

On blogs and bloggers

Recently there has been some confusion regarding the terms “blog”, “blogging” and “blogger”. This article is here to define the terms as clearly as possible.

Definition of terms

Let us start with the verb form, “to blog” or more commonly “blogging”. In earlier work on the subject, a common assumption was that in order to blog (verb) one had to have a blog (noun), and that the blog had to be a web page of some kind. This is incorrect; it is possible to blog in any medium, textual as well as spoken and offline as well as online. Briefly, blogging is defined as speaking or otherwise expressing oneself at length on a topic that is either only relevant to oneself or only interesting to oneself and perhaps one or two others, particularly in a context that makes it impolite or hard for others to ignore the blogging. There are, however, a few caveats that make the definition more complex. Most importantly, if the text (or speech) can be considered funny and/or engaging regardless of the reader’s (or listener’s) general disinterest in the topic, then the activity cannot be considered blogging. Also, speaking or writing to just one or a few people generally cannot be considered blogging.

The definitions of “blog” and “blogger” follow quite naturally from the above; a blog is any textual or vocal context in which blogging takes place (such as a webpage, an IRC channel, a Skype conversation or just a circle of friends at a party) and a blogger is, of course, a person who is wont to blog with some regularity.

Warning signs

Clearly, being a blogger is highly undesirable. Nobody likes a blogger, and people on the internet are regularly mean to them. Here are some helpful tips to avoid being considered a blogger:

  • If you have one or a few special interests or hobbies that interest you greatly but few, if any, of the people you are speaking with share, you should be very careful when discussing them. Unless you are very, very good at making them seem funny or interesting to someone with no knowledge or interest in the subject, discussing them will easily let you slide into blogging territory. This goes for technical stuff in particular.
  • Discussing events that happened to you in your own daily life is generally considered blogging unless you are either a) very good at making the mundane seem hilarious, or b) the event is interesting or funny in and of itself.
  • Venting your opinions may be a danger zone. Some people will always consider this blogging, while others will happily engage in long arguments regarding Wittgenstein’s views on ordinary language philosophy or what Ron Paul really wants. You will have to be very careful in order to avoid being considered a blogger, here. A good rule of thumb is that if people are arguing back, you’re not considered a blogger, at least not by those arguing people (be careful with bystanders, though).

Moral of this story

With the internet giving us access to more information than ever before, the bandwidth of the human perception is more limited than ever. It’s human nature to talk about things that interest you, but please have some empathy: if you don’t have anything funny (to other people) or interesting (to other people) to say, don’t say anything.

Related content

edit: actually, everything here: http://www.asciiartfarts.com/blog.html

Stop using Avisynth-MT

let’s start a vote, should I rename the blog “TheFluff’s list of things you shouldn’t be doing”? yes/no/maybe

  • Since the entire point of Avisynth is to load Avisynth plugins, and most Avisynth plugins sure as heck aren’t threadsafe, the efforts to try to make Avisynth-MT itself threadsafe are sort of meaningless. Not to mention they’ve failed spectacularly so far.
  • Nobody wants to have anything to do with the 64-bit version (or even make a trivial 64-bit wrapper) despite lots of threads requiring hilarious amounts of RAM.
  • Avisynth-MT uses Avisynth 2.5.6’s infamously memory leaking frame cache. Running out of memory is a Bad Thing, mmkay?
  • Avisynth-MT doesn’t handle system exceptions because someone commented out the original Avisynth code that did that forever ago and never replaced it.
  • In short, Avisynth-MT developers have no clue about what they’re doing.

Stop getting fooled by the ~blazing~ FPS numbers. An encode that crashes halfway through is effectively encoding at a negative FPS.

TL;DR: Pain is nature’s way of telling us “hey, stop fucking doing that, retard”. When nature does this, it usually has a good reason for doing so, and if you don’t listen, Bad Things will happen to you. Similarly, random crashes in a computer program are sorta your computer’s way of telling you “hey, stop fucking using that broken program, retard”.