In a previous post I detailed the issues that arose when I upgraded my Ubuntu to 22.04 (a.k.a. Jellyfish), and gave a broad outline of how I went about fixing them. But there’s one nasty issue I left out: after the upgrade I found out that the OS would sometimes automatically log me out right after I log in. The behavior was very inconsistent. Sometimes I got logged out, sometimes I didn’t. I would have to try logging in a varying number of times, up to 6 or 7, before a log in would be accepted. The time interval between logging in and getting logged out ranged from immediately to 2 minutes. It was an annoying bug, but it was another couple of months before I decided to tackle it. Fixing the other upgrade problems took a couple of hours, but I had a feeling this one was different. I had software projects I wanted to work on, so I decided to postpone dealing with the problem.
When I finally started working on the issue, the first thing I discovered was that it doesn’t happen when I switch from Wayland to Xorg. Since Ubuntu 22.04 was Wayland’s debut as the default display server, I concluded that something broke in Wayland during the upgrade. With this conclusion in hand I turned to Google for help. A search informed me that it’s a problem which many Linux users have experienced before, but there was little in the way of solutions which relate to my specific case. A useful suggestion was trying to log in using a test user account, something which informed me that the problem was system-wide and, consequently, enabled me to rule out my user’s configuration files as the source of the problem. Another suggestion was checking my tmp directory’s permissions, but there was nothing anomalous there. Other than that the only relevant suggestion I found was the nuclear option: reinstalling the desktop environment and the gdm. The reinstallation process went smoothly, but when I tried to log in afterwards the OS logged me out again. At this point I concluded that the cause of the issue was unique to my case and that I, consequently, had to come up with a solution on my own.
I started, naturally enough, with examining the authentication log. But after poring over its records for a long time I finally came to the conclusion that there was nothing relating to the problem there. I examined the kernel log next, but the result was the same. The breakthrough came when I moved on to the syslog. When I examined the event records whose timestamps matched the time of the automatic log outs, I discovered that every time an automatic log out happens a couple of records similar to these would be present:
13 Jan 29 08:12:12 COMPUTER NAME systemd-oomd[644]: Killed /user.slice/user-1000.slice/user@1000.service/session.slice/org.gnome.Shell@wayland.service due to memory pressure for /user.slice/user-1000.slice/user@1000.service being 55.78% > 50.00% for > 20s with reclaim activity
13 Jan 29 08:12:12 COMPUTER NAME systemd[1899]: org.gnome.Shell@wayland.service: systemd-oomd killed 25 process(es) in this unit.
The cause of the problem was now clear: the “out of memory” daemon (oomd) kills a bunch of the Gnome Shell’s processes every time its swap activity exceeds 50%. The problem started after the upgrade because oomd was turned on by default in 22.04. I’m not sure why oomd didn’t cause the same problem when I tried switching to Xorg. My guess is that it’s either because the Gnome Shell’s swap activity under Xorg is always lower than 50%, or that oomd is somehow turned off when Xorg takes over as the system’s display server.
I wasn’t surprised when I found out the cause of the problem. Ever since it was made a default on Jellyfish, people have been complaining about oomd killing software processes without proper justification and without a warning. What’s different about my case is that oomd’s aggressive killing of software processes has resulted in an automatic logouts problem.
The solution was disabling oomd. Following the instructions outlined here, I executed the command:
systemctl disable --now systemd-oomd
then checked the status of the process using:
systemctl is-enabled systemd-oomd
The result was exactly what it was supposed to be:
disabled
I logged out and then logged in. To my surprise, I got automatically logged out again. The next log in attempt was successful. When I checked syslog I found the familiar records showing that oomd had, once again, killed a bunch of the Gnome Shell’s processes right before the automatic logout. I checked the status of oomd but the official verdict was that the process was still:
disabled
The oomd process was running even though its official status was “disabled”. It was time to go for a more dramatic solution, and the recommendation was using the command:
systemctl mask systemd-oomd
for which the result is:
Created symlink /etc/systemd/system/systemd-oomd.service → /dev/null.
I’m happy to say that this was the end of the automatic logout problem on my Ubuntu.
Linux has historically had a serious problem dealing with situations where the system is critically low on memory. The “Task Manager” was the brilliant solution which Microsoft’s developers came up with, in 1994, to handle situations like these. In contrast, Linux’s userspace attempt, taken a quarter of a century later, to tackle this problem turned out to be the cure that is as bad as the disease.
What about the “Year of Linux on the Desktop”? Maybe the next millennium.
Posted: 13-02-2023
Tags: software
In the C programming language, recursive directory traversal is provided by POSIX’s ftw library. But there’s also a popular non-POSIX library that provides the same service, which is fts. It originated in BSD, and was later adopted by Linux (via glibc) and macOS.
The fts library traverses a directory recursively and returns a struct for each file it encounters. The returned struct contains comprehensive information about the file, including the following properties:
char *fts_path; /* root path */
size_t fts_pathlen; /* strlen(fts_path) */
char *fts_name; /* file name */
size_t fts_namelen; /* strlen(fts_name) */
It’s important to note that this is taken from the FreeBSD documentation. The fts_path property is described as the “root path”, but what it actually provides is the file’s full path. The long description contains the reason for this choice of words:
fts_path
The path for the file relative to the root of the
traversal. This path contains the path specified to
fts_open() as a prefix.
Generally, describing a path as root implies that it’s a directory. The BSD people chose to describe the full file path as “root” because of its relation to the path of the directory being traversed, which, in this context, is a root path.
As it happens, this BSD use of the word caused a mix-up to happen in the library’s GNU documentation:
char *fts_path; /* root path */
short fts_pathlen; /* strlen(fts_path) +
strlen(fts_name) */
char *fts_name; /* filename */
short fts_namelen; /* strlen(fts_name) */
Because fts_path is described as the “root path”, the writer thought that it represents the directory containing the file, and that led him to redefine fts_pathlen as the sum of the lengths of the fts_path and fts_name properties. This happened even though the GNU documentation’s long description is copied verbatim from the FreeBSD documentation:
fts_path
The path for the file relative to the root of the
traversal. This path contains the path specified to
fts_open() as a prefix.
This mistake happened because of a combination of BSD’s unconventional use of a technical term and the GNU writer’s failure to read (or comprehend) the relevant description. Another interesting observation to be made here is that the library’s documentation was written by someone who hasn’t actually worked with the library.
Posted: 31-01-2023
Tags: software
I <3 Ethan Hawke
(Daybreakers)
(Credits: Me)
Posted: 26-12-2022
Tags: film
For Sale (LIMITED TIME ONLY):
Beautiful error screen with minimalist design and ergonomic font
(Credits: Me)
Posted: 24-09-2022
Tags: software
Every two years the time comes to upgrade my Ubuntu. I know that I’ll get Ubuntu’s most stable updates for the packages on my system, and I also know that the upgrade will break some of my packages and I’ll have to spend a couple of hours fixing them.
This year the upgrade is from 20.04 (Focal Fossa) to 22.04 (Jammy Jellyfish). A few days ago all the stars aligned and I decided that “[i]t’s time, Butch”. I rely on the command line to do upgrades, but when I, whilst performing due diligence, checked out Ubuntu’s official website I discovered that there was no mention at all of the command line - the tutorial was exclusively on the GUI client. I find this odd, but my guess is that it may be part of a push by Canonical to present Ubuntu to the masses as a mainstream OS. (Linux in general had always, with good reason, been more attractive to the techie/developer crowd than to average users.) I decided to put on my “average user” hat and use the GUI client, but it turned out that this year wasn’t meant to be the “Year of Linux on the Desktop”.
I began by backing up my data and launching the GUI client. Then I clicked through the screens until I got to this one (image from online tutorial):
When I clicked on the “Details” tab a text box containing the details appeared and the window expanded to accommodate it. The problem was that the expansion happened vertically in both directions, something which resulted in the title bar, with its controls for resizing/minimizing/closing/moving the window, disappearing beyond the top edge of the screen and the “Cancel” and “Start Upgrade” buttons below disappearing beneath the bottom edge. Clicking on the Details tab again doesn’t help because it makes the text box disappear without returning the window to its original state.
This means that I’ve just lost all means of interacting with the window using the mouse, and if I opt to use the keyboard instead I’ll be working blind, with no way of verifying that the focus generated by the tab key was on the correct button. My setup is a VirtualBox virtual machine with the screen scaled to 100%, a typical platform with a typical configuration. A UI design failure of this type is unacceptable under any circumstances, but what makes this particular one egregious is that it occurs in a crucial application like the OS upgrade client, where pressing the wrong button can completely ruin your day.
The only good thing about the situation is that it happened at an early stage in the process, where cancellation was still a viable option. I pressed the tab key once, thereby (hopefully) setting the focus on “Cancel”, and pressed “Enter”, which resulted in the cancellation of the upgrade process.
I sighed, put my techie hat back on, and returned to the good old command line.
The command line upgrade process is simple and painless. But regardless of the upgrade method used, there will always be broken packages afterwards that have to be discovered and fixed. This time I discovered that the upgrade had broken crucial packages all along my web stack, namely Apache, MySQL, and phpMyAdmin. Moreover, I discovered that Emacs had been completely removed from the system.
I won’t go into the details of how I spent the couple of hours after the upgrade, but here’s a summary:
- Apache broke because when Ubuntu upgraded PHP from 7.4 to 8.1 Apache’s configuration files weren’t updated to point to the new version of PHP.
- phpMyAdmin and Emacs were both removed. I’m not sure why but it could have something to do with each of them having been originally installed as part of a bundle (LAMP in the case of phpMyAdmin and Git in the case of Emacs) instead of through the standard installation process. If this hypothesis is correct then reinstalling the packages individually should resolve the issue.
- MySQL is a package that breaks on every upgrade and I have to admit that I bear part of the responsibility for that. Shortly after installing it for the first time I did a lot of half-ignorant mucking about with the configuration files to get it to work, and it became a tradition for every OS upgrade afterwards to trip over one of the changes I made at the time. Fortunately, the changes are easy to spot and revert with the aid of the error messages.
Based on this year’s experience, here are a few ways I can see of improving the upgrade process:
A few days ago a software update on Ubuntu broke the left-click functionality on my touch pad. This is how it happened and how I fixed it.
It all started in the morning when I ran sudo apt update, and upon discovering that there were no less than 48 packages waiting to be upgraded I ran sudo apt upgrade. I didn’t pay much attention during the upgrade process but, as you’ll see later, that wouldn’t have made a difference. This is a virtual machine that I mostly use for development work, but all I did afterwards was browse a couple of websites and then shut it down.
Later, whilst sipping my coffee, I powered up the machine to get some work done. However, when the log in screen appeared I discovered that clicking on the account section didn’t make the password field appear. I then tried clicking on the menu bar options at the top, but nothing happened. Moving the cursor over the GUI elements activates hover effects and reveals tool tips, but clicking was useless. I let out a sigh, rolled up my metaphorical sleeves, and set to work.
I began the troubleshooting process, conventionally enough, by performing a reboot. I had access neither to the Power Off option in the menu nor to the command line, so I performed a shutdown using VirtualBox’s ACPI Shutdown feature (EDIT: It slipped my mind that you can access the terminal from the login screen and log in from there or perform a shut down). When I powered on the machine again I discovered that the problem hasn’t been solved. But this time, unlike before, it occurred to me to click on the “Not listed?” link, and to my surprise the username prompt appeared. I promptly entered my username and password and logged in.
I clicked around the desktop, but the only additional piece of information I gained was that the right-click functioned normally, showing context menus wherever it should. I concluded that, with the odd exception of the “Not listed?” link mentioned before, nothing in the GUI responds to left-clicks.
The obvious next step was to fire up the terminal, something which, of course, had to be done using the keyboard. I was practically certain that one or more of this morning’s updated packages was responsible for the current state of affairs, so I began my investigation by running sudo apt update, thinking that if a package hadn’t been installed properly it might be listed as available. But the result was negative: no updates were available.
The next step was to dig deeper and examine the package manager’s log file. A bit of googling (on my phone of course) informed me that the file was at /var/log/dpkg.log. I used the grep command to retrieve a list of installed packages from the log file and filter them by date, and redirected the output to a new file. Examining the file showed that of the 48 packages installed this morning, 42 failed to install properly (i.e. had records listing “half-installed” as status). The records also showed that many of the “half-installed” packages were successfully reinstalled afterwards (i.e. each one had an additional record listing “installed” as status), so the next step was to ascertain which, if any, of the packages had a “half-installed” record without having a corresponding “installed” record.
I used grep twice again on the log file, sending each group of “installed” and “half-installed” records to a separate file. And to make the upcoming comparison job easier I used the sort command to sort each file’s contents by package name. I then opened each file in a separate tab and began checking the “half-installed” records against the “installed” records. But the result was again negative: every single package with a “half-installed” record had a corresponding “installed” record.
By now the package manager has twice assured me that the morning’s packages were properly updated. But I wasn’t buying it. It was time to closely examine the purpose of each one of the 42 reinstalled packages. I noticed that of the 7 packages directly related to the system’s GUI, 5 were specifically related to the display server. Four of the updates were to Xserver’s packages while the fifth was to the XWayland package. I don’t know much about display servers but I knew that GUI applications rely on them to function properly. I also knew that Ubuntu was transitioning from Xserver to Wayland, and a bit of googling informed me that XWayland is a compatibility layer used to run Xserver applications on Wayland. Now, for all I knew, any of these 5 packages could have caused the issue, but since my past experience with Wine had left me biased against compatibility software I decided to start with the XWayland package. Sure enough, as soon as I reinstalled the package, the left-click functionality returned.
While dealing with this incident I learned some interesting bits of technical information. But as far as the larger picture was concerned it only confirmed what I already knew:
- Never trust the package manager.
- The command line is awesome.
- “Year of Linux on the Desktop” my ass.
Posted: 27-07-2022
Tags: software
Abe Shinzo has died.
Posted: 08-07-2022
Tags:
I wrote a python script which fixes two common problems with subtitles files.
The first problem the script solves is the offset you find sometimes between the the time the subtitles are supposed to appear on the screen and the time they actually appear. The script very swiftly synchronizes the subtitles and the video when you provide it with the number of minutes and/or seconds that make up the offset.
Note that this fix applies only to cases where the file's time offset is constant throughout the video (e.g. the difference is always 3 seconds); in cases where the offset changes frequently this script won't help you. You can look for other software to help you fix this particular issue, but having done some research myself I recommend you save yourself a headache and just download a different subtitles file.
The second problem the script solves is the presence of closed captions. Closed captions are very beneficial for the hearing impaired, but for the rest of us they can be very annoying. This script removes them with extreme prejudice.
This script works only on files of the type ".srt", the most common type of subtitles files.
Options:
--ma : Add minutes (integers only)
--ms : Subtract minutes (integers only)
--sa : Add seconds (integers only)
--ss : Subtract seconds (integers only)
--nocc : Remove closed captions
Usage:
_For example, to subtract 3 seconds from the timestamps:
python subtitlefix.py --ss 3 [PATH/]filename.srt
_To remove closed captions:
python subtitlefix.py --nocc [PATH/]filename.srt
_You can do more than one operation on the file at the same time. For example, to add 1 minute and 20 seconds and get rid of closed captions at the same time:
python subtitlefix.py --ma 1 --sa 20 --nocc [PATH/]filename.srt
Note that the order of the options isn't important.
As usual, since neocities doesn't allow the upload of python files, the code is uploaded inside a text file:
subtitlefix.txt
Enjoy your movie night!
Posted: 26-04-2022
Tags: software
Where did you get this?
I found it in the park. Pretty, isn’t it?
Someone’s probably looking for it.
I wish them luck.
Let’s move on, literally and metaphorically.
You know, there’s a coffee shop that recently opened near here, we can wait there while we check it out.
You mean the one by the laundry?
Yup.
I wonder whose idea it was to open a coffee shop next to a laundry.
It makes sense, you can wait there while your pile is spinning and, if you’re lucky, have a chat with the cutie who happened to be washing her stuff next to you.
Sounds to me like the setup of a bad rom-com.
You watch too many movies.
Too many for what?
For the health of your poor eyes. I mean, look at your glasses, I swear they’re just like a seashell that grows a new layer every year.
They’re the same thickness they were when I was in school and you know it.
Ok, Ok, let’s take that table by the window before those kids get to it.
….
That was close.
Right? Must be laundry day or something in this neighborhood.
Pity though the cutie didn’t show up.
He did show up. Turn to your seven and pretend you’re looking for the waitress.
I’ll take your word for it. And, by the way, where is the waitress?
* * *
*Buzz Click*
….
*Buzz Click*
….
*Buzz Click*
What’s that sound?
I don’t know.
Fuck, it’s annoying.
Don’t like it? Go home.
Haha.
Big haha.
I don’t know what I’m going to do if I don’t get this job. I’m getting desperate here.
One wouldn’t have thought, I practically had to drag you out of the coffee shop.
I couldn’t help it. You don’t see that type of eye candy every day, you know.
This is about priorities. If you’re broke, you won’t be able to get into a relationship and keep it.
You mean the “love vs. money” cliché?
No, I don’t mean the “love vs. money” cliché. What I mean is that when you’re in a relationship you have to take care of the ones you love and help them solve their problems. And since the economy runs on money, not hugs and kisses, you’re going to need money for a lot of that. I mean, just as an example, suppose your loved one gets sick and there’re hospital bills to pay, what would you do then?
I agree. I’m not just saying that, I really mean it.
But you’d still miss an appointment like this one if I’m not there to drag you out of the coffee shop.
I can’t help it. You don’t see that type of eye candy every day, you know.
If you blow this interview you won’t have the money to go into a coffee shop in the first place.
I won’t need money if I’m going in to rob the place. Hey, you can help me with that, you go for the register, I’ll be crowd control.
Yeah, and the cutie will be so impressed that he’ll leave with you, and you two will live happily ever after on your share of the loot….hold on, they’re going to call out a new name.
Posted: 02-04-2022
Tags: vignette
In the sci-fi series “Raised by Wolves”, a brutal war serves as the backdrop for the show’s events. On one side are the followers of a fictional religion (an obvious stand-in for religion in general), and on the other is an army of atheists who fight for atheism as a cause. I’ve reviewed the show elsewhere, and what I want to do here is examine the idea of atheists banding together and going to war solely (or mainly) for their ideology. In my opinion, the idea is both unrealistic and interesting, and it’s the exercise of determining what makes it unrealistic that makes it interesting.
The Roads out of Rome:
Atheism plays a crucial role in shaping the atheist’s perceptions of, and behavior towards, himself, human beings in general, and the universe as a whole. But for all its revolutionary effects, atheism is a system of thought with a relatively limited domain of influence, requiring the atheist to seek elsewhere the answers to many of the most important questions a person might ask. This includes many political, economic, and philosophical questions, including what some consider to be the fundamental question of philosophy: is life worth living?
In the quest to find answers, the atheist may encounter and adopt any of a whole array of ideologies that are either compatible with an atheistic worldview (e.g. Liberalism), or include an atheistic worldview as a component (e.g. Communism). The result is that atheists are scattered across ideologies with varying degrees of (in)compatibility, such as Communism, Fascism, Liberalism, Nihilism…etc. Atheism is a negative position towards certain beliefs and ideas, and when people are running away from something their paths tend to diverge.
Convincing all these people to set aside their differences, focus on their atheism, form an army on that basis, and, most importantly, stay united in war conditions would be an extremely difficult task. Obviously, the task’s difficulty is proportional to the level of incompatibility between the ideologies the atheists hold, which means that the only realistic way of building a functioning fighting force out of atheists is to select for members who hold a specific ideology (or at least similar ideologies) and exclude all others, something which would undermine the army’s claim to be fighting for atheism or representative of atheists. In reality, it would be the specific ideology’s army, instead of being an atheist army.
An Army of Cats:
In the military, the structure is a rigid hierarchy, strict discipline is maintained, orders from superiors are expected to be obeyed without questioning, and stiff penalties are imposed on dissenters. These are necessary requirements for the existence a functioning fighting force, regular or irregular, especially in war conditions.
Generally, atheists are unfit for army life because the typical atheist has an inquisitive, skeptical mindset, and anti-authority tendencies. In “The God Delusion”, Richard Dawkins said: “Indeed, organizing atheists has been compared to herding cats, because they tend to think independently and will not conform to authority”[1]. These qualities are what enable the person to question and overcome deeply ingrained supernatural beliefs.
A realistic army of atheists would have to consist not only of members of the same ideology, but that ideology would have to be one which, much like religion, emphasizes conformity, discourages doubt, and is intolerant towards dissent (e.g. Communism). In this case, even more than before, it would be an army of atheists without being an atheist army.
A Math Problem:
As always, the overwhelming majority of the world’s population belongs to one religion or another. A lot of the statistics on atheist populations are of limited use because they don’t differentiate between atheists and agnostics. Nevertheless, the statistics indicate that atheists are in the single digits everywhere except in some countries in Europe and East Asia. In Europe the percentage ranges from 1% in Romania to 33% percent in France[2]. In the U.S. the percentage is 4%, compared to 65% who describe themselves as Christians[3]. In the majority of cases, the numbers are simply too low for creating an atheist army, let alone one which can take on a dominant religion’s army.
What are the alternatives?
If atheists can’t raise an army for self defense then they can either blend in or flee. Activism can be an option in some cases, for some people, and under certain conditions.
------------------------------------------------------------------------------------
[1]
The God Delusion, Richard Dawkins, 2006, pp. 4-5.
[2]
Social values, Science and Technology, Directorate General Research and Communication (European Commission), 2005.
[3]
In U.S., Decline of Christianity Continues at Rapid Pace, Pew Research Center, 2019.
Posted: 07-03-2022
Tags: rationality
Rating: 5/10
(Contains spoilers)
tl;dr: No wolves in there, what a ripoff!
In 2020, HBO Max released the first season of the sci-fi series “Raised by Wolves”. The show revolves around two sets of characters trying to create a new home for humanity on a distant planet. One set is composed of two androids and the children under their care while the other is composed of a band of devout believers who are unaware that there are two atheists in their midst. The storylines of the two sets converge and diverge more than once over the course of the show, and the dramatic tension arises mostly from the conflicts between and within the sets.
Notably, director Ridley Scott was heavily involved, as he directed the first two episodes and served as executive producer for the show.
The Themes:
Ridley Scott’s influence shows in, among other things, some of the main themes, which he had visited before in “Blade Runner” and the new Alien movies:
- Theism vs. Non-theism (Alien: Covenant)
- The relationship between creator and android, and the way it connects to the ancient “Man vs. God” conflict (Blade Runner - Prometheus - Alien: Covenant)
- Can androids truly develop emotions? And how are humans supposed to deal with a situation in which they apparently do so? (Blade Runner – Alien: Covenant)
- The challenges a small group of people faces while trying to establish a new home for itself far away from its place of origin; the manner in which the group’s members handle the complexities of such a project; the way all this affects the relationships between them (Alien: Covenant)
Aside from Ridley Scott’s pet interests, there are a few other themes that the show handles (or rather, tries to handle) like pacifism and animal rights.
The problem is that all these interesting themes are presented to the viewer without being discussed in any depth, let alone with original insights provided on any of them. The show is too ambitious and tries to handle too many things at once. It escapes pretentiousness but never achieves profundity. Although “Prometheus” and “Alien: Covenant” should’ve prepared me for this, I couldn’t help but expect more from the man who made “Blade Runner”.
The Plot & Characters:
For most of the show the characters aren’t very interesting, and the plot suffers as a consequence. For example, the way the androids are depicted as they gradually behave more like humans, towards each other and towards the children in their care, makes their storyline resemble a soap opera, reaching its peak in the “cuckolded husband” scene in the final episode. An intriguing origin story is revealed halfway through but the show’s writer quickly squanders its potential. I have to say that as the androids were making their plunge into the lava in the final episode I was cheering them on.
By far, the worst thing about the show’s script is its religious adherence to the familiar woke taxonomy: Black Female > Black Male > White Female > White Male. A character’s place in the taxonomy determines practically everything about them, including their personality, motivations, character development, interactions with other characters, errors, chances at redemption…etc. The artificiality of the plot followed naturally from the artificiality of the characters.
Let me give an example. There are three black females in the show, a human and two androids. The black female human is a victim of rape by a white male who uses religion to justify his crime. The black female androids are owned by a white male who happens to be the leader of the overwhelmingly white band of believers. One of them is sacrificed by her owner to protect the group and the other is executed by a white male when she’s used as a pawn in a power struggle within the group.
The only ones spared are the little children and a South Asian female who’s always in the background (it’s as if the writer, not finding anything about her species in the taxonomy, didn’t know what to do with her). Speaking of the little children, Campion and Paul, along with the talented child actors representing them, made up a large part of what’s positive about the show.
There are a few other weaknesses, including odd omissions (e.g. where do they get their water from?) and illogical actions (e.g. Father’s decision to plunge into the lava along with Mother).
The Recycle Bin:
Some of the show’s elements (mostly in the final episode) were recycled from the Alien franchise. The androids have a milky substance for blood; a monster uses the female protagonist’s body as an incubator, grows ridiculously quickly, then bursts out; the protagonist commits suicide by diving into molten lava in order to get rid of the monster.
A noticeable cliché, one that’s extensively used in the horror genre, is that of malignant entities taking the form of children or children being vessels for them. And another horror cliché is the pale, vicious, cave-dwelling humanoids we’ve seen before in “The Descent”, “The Hills Have Eyes”, and, similarly produced by devolution, in “Pandorum”.
I can’t say that I regret watching the first season, but I have no intention of watching the second.
Posted: 14-02-2022
Tags: review
(November 2018)
Rating: 6/10
Twenty years ago, the cyberpunk cult manga “BLAME!” began its serialization run. Tsutomu Nihei’s debut work was a dark, violent epic featuring a gunman on a quest to restore humanity’s control over the Net. Nihei employed a distinctive art style to depict the labyrinthine city, with its gigantic, towering structures and outlandish inhabitants, and backed it up with sparse, terse dialogue in order to maintain the manga’s nightmarish atmosphere.
In 2003, a few ONAs adapting certain scenes of the manga were released, and were deservedly forgotten. Last year, however, Netflix released a feature-length film adaptation, mostly based on the “Electro-Fishers” arc. The question I want to answer here is this: “Notwithstanding Tsutomu Nihei’s involvement as ‘Creative Consultant’, does the Netflix film do justice to the manga?”
The short answer is “No”. And I’ll use the rest of the review to explain my point of view.
I want to start by stating that I’m not a purist - my problem with the film isn’t that the filmmakers frequently deviated from the source material, but that some of these deviations have had a very negative effect on the quality of their adaptation.
Most of this film’s praise goes to the graphics, which were very impressive. True, the visual design for the characters and their city isn’t as dark or distinctive as the original, but it’s high quality nonetheless. It reminded me of Mamoru Oshii’s 2004 film “Ghost in the Shell 2: Innocence”, and sure enough I found out that the same studio (Polygon Pictures) was responsible for both films.
Killy:
The main character is given a corny “tough guy” character redesign, complete with a square jaw and pumped-up physique. This is in contrast to the “metalhead highschooler” depiction of the manga, which gives the impression of a man more reliant on inner determination than physical strength. His Western shooting theme adds to the corniness, as does the swirling smoke around him (reminiscent of the swirling dust in old Westerns) which is accompanied by yet another Western heroic theme in the “final farewell” scene.
Killy also speaks as if drugged and, aside from combat scenes, moves like a zombie. Enhancing the impression of a reanimated corpse are the unexplained neck injections he administers to himself every now and then, and which are, by the way, nowhere to be found in the manga.
Cibo and the Electro-Fishers:
The characters of the original manga are custom-made for their world, and what is sacrificed in depth is made up for by an intense focus on the world and its dynamics, delivered using the device of “What would happen if a gunman undertook a mission to look for the key to controlling the Net?”. The filmmakers restructured the source material according to a traditional blueprint: the characters are placed at the forefront, along with the plot, while the world serves as the background.
One of the biggest changes introduced in the movie was a shift in perspective: the main point of view became that of the Electro-Fishers instead of Killy. A lot of good effort went into giving them fleshed-out characters, but there were a couple of problems:
- The melodrama was sometimes piled on a bit too thick - the tragic scenes milked for all they’re worth. In the manga, the city’s inhabitants rarely show strong emotions, and appear accustomed to the violence and brutality that plague their world. This fosters a feeling of fatalistic dread in the reader. It’s an uncommon style of characterization, and its examples are few and far between (one of them is “Texhnolyze”, another cyberpunk work of art). This contrasts with the emphasis the mainstream places on stirring empathy on behalf of the characters. In principle, there’s nothing wrong with the characters engaging the viewer through the strong emotions they display, as long as they don’t stray far into melodrama territory as we’ve seen happen in this film.
- In the manga, the most important characters after Killy are Cibo and Sana-kan, who are both strong, influential female characters. However, following the edicts of American identity politics, Netflix also moved the Electro-Fisher female characters to the forefront, in an obvious quota-filling, checkbox-ticking manner.
The Plot:
A lot of good effort also went into adapting the plot, which was based on the Electro-Fishers arc, while borrowing elements from other arcs and heavily modifying Cibo’s storyline.
Unfortunately, it suffers from a major hole. When Killy asks Cibo: “Do you know any humans who have the Net Terminal Gene?”, she answers: “If there were any humans like that, then this city would have been made functional ages ago”. Of course the reasoning in Cibo’s answer renders Killy’s whole journey worthless. What makes it bizarre is that Killy doesn’t object to or even question her reasoning, but promptly resumes his search for the genes after he parts ways with Cibo and the Electro-Fishers. But I guess that, after all, is what you should expect of a zombie.
I don’t regret watching the movie, but I’m not looking forward to its planned sequel.
Posted: 06-02-2022
Tags: review, film
I wrote a Python script for downloading Facebook videos. I originally wrote the script last year, but a couple of months ago Facebook changed its code and, consequently, broke mine. So this is actually version 2.0.
The nice thing about the script is that it has no third-party dependencies; Python is all you need to use it. The code itself is quite simple and minimal. I also allowed myself a bit of self indulgence and made it so that the HD version of the video, if available, is downloaded by default.
Usage:
python fbvids.py “URL”
(The double quotes are necessary to prevent the shell from chopping up URLs with ampersands)
Since neocities doesn’t allow uploading python files, I’m uploading it as a .txt file: Download.
Enjoy!
Posted: 18-01-2022
Tags: software
I’m bored. Today is my day off and I’m bored…I mean, how sad is that! And while I’m recording this for the benefit of future posterity, I spot an impudent cockroach sticking its antennae out of its hole-in-the-wall hideout. The critter is probably considering embarking on a foraging expedition, or maybe a mating expedition, or, fuck, he could be as bored as I am and just looking forward to a change in scenery.
My eyes instinctively swerve towards the slippers. I make sure at least one of the pair is within reach and calculate the dimensions of the kill zone, before returning my attention to my newfound roommate.
Kafka, as I’ve decided to call him, emerged into the shadows, and stopped to take the measure of his surroundings. Meanwhile, his size served as a reminder of the inefficacy of my powder pesticide against medium- and small-sized members of his species - the smaller ones hide in the pipes while the big ones are caught in the manholes with their (metaphorical) pants down.
While tracing the line at which the wall meets the floor, Kafka swiftly scuttled towards the bedside table, where the crumbs from last night’s dinner resided. My eyes followed him.
“The level of sophistication in state-of-the-art artificial intelligence hasn't yet reached the level of cockroaches. Consider survival tactics: When under threat, a cockroach executes evasion maneuvers which…”
The voice of my college lecturer droned on somewhere inside my head, while my slipper-wielding hand hovered in anticipation.
*
Later, as I watched the ants pick Kafka apart, and took notice of his limbs’ faint, spasmodic twitches, I wondered if he’ll visit me in my dreams tonight.
Posted: 03-01-2022
Tags: vignette