The trip to Oslo and back last weekend with the family was surprisingly entertaining. Sure, the ship was full of people whose primary interest in life (or at least: on vacation) seemed to consist in a combination of canned beer, loud noise, cigarette smoke, and preferably no daylight or fresh air at all (why are they even on a ship?), but since they kept to certain areas of the vessel where these interests were best supported, we had the almost undisturbed use of the boat deck and–surprisingly–a bar high up in the superstructure that offered a 180 degree view of a lot of sea over the bow, wheat beer, and occasionally life music that wasn’t even too bad. Passing the Oslofjord on the way out in great though windy summer weather was a scenic experience, and a small storm in the Skagerrak added spice.
And then I returned on Monday to the neverending story, my stupid bachelor thesis of which meanwhile saying I’m sick and tired of it doesn’t even come close to the general area of the truth. Not even the continent on which the truth is on, which is decidedly not Europe. More like the moon.
Yeah OK, I had a few useful hours when I went over the entire text again and tried to smooth a few rough edges in the structure. I even added a few interesting thoughts on lessons learned to the conclusion. But now the rest is adding even more citations, as if the bibliography wasn’t already 10 pages long. (Point is, I’m trying to cite more books and journal articles to make up for the fact that a lot of my primary information comes from the internet–willy-nilly, to be sure, since neither the German fuel market nor the technologies I’ve resorted to using have had much coverage in scientific writing.) And graphics. And making sure the text is “scholarly” enough.
Which is likely to lead to a small clash with my conscience. You see, for all my first professional life I’ve whenever possible preferred working with English-language texts. The academic culture is simply so different from the German one. In Germany, the first and foremost hallmark of scholarly texts is that they should be crammed with information, heavy with citations, and as impersonal, humorless, and generally bone-dry as humanly possible. Even minor irony, figures of speech, or sentences a layperson could readily understand are considered indications of an author’s not taking himself or herself serious enough. The use of the active voice is discouraged and the personal pronoun “I” (ich) is banned on pain of exclusion from the sacred halls of academia. It should be pure scholarship speaking. Not a mere mortal.
Conversely, in my experience, the English-speaking academic and scientific community generally permits–maybe even encourages?–writing texts that people will read voluntarily. And in my first life as a professional academic it was always my objective to write like that. It’s not all that easy in German which is, by nature, a heavy-handed, somewhat pompous language, but you can try. I do have a suspicion, however, that my never getting a professorship may have had at least something to do with my writing like a normal person rather than like a pundit. Mind you, I don’t think it must make texts any less precise or informative. In fact, I think it’s an art to write both concise and readable; an art that too few people in Germany have ever even tried to master. They stick doggedly to their awkward wooden flatulent impersonal phrases.
Oh, how I digress, again!! I do wonder though. Well, at least now you know why I’m writing the thesis in English. I have a small hope that the additional level of indirection will help to mask to some extent, to my German supervisors at least, the fact that the text is actually quite readable. And writing English is fun. Plus it makes sense in a field where all the relevant literature and all technologies and terminologies are in English anyway.
But then, as I said, I still also wanted to implement one minor (I thought) addition to the project itself–program something, that is. Nothing more than making sure that if one of the instances of the application responsible for training my neural networks crashed (as the containers in the Kubernetes clusters are prone to doing, at times), that network would automatically be picked up by a new instance of the same application and trained to completion.
Seemingly so simple, this was in fact a minor design challenge. It was necessary to determine which of the networks saved in the document database were in fact so orphaned, and that wasn’t easy because evidently a crashing container could not first somehow note in the database the fact that it was now no longer training the network in question. At the same time, it was necessary to make sure that an abandoned network would not be picked up and trained further by more than one application instance.
All that was solvable of course, but needed some thinking through as well as trial and error. The real fight however was with technology, and there everything seemed to have conspired against me to make these last few days of programming in the bachelor thesis project a living developer hell.
To start with, to develop a cloud-based application, unless you’re serious about having a local development environment completely independent from the production environment in the cloud (which I never got round to setting up), involves frequently deploying the application in the cluster to test it. That means packing the program in a JAR file, building a Docker container, and pushing the container image to the registry so Kubernetes (the container framework) can use it for building and deploying the cluster pods.
The crucial bottleneck is the pushing to the registry part. For a couple of weeks already this had been taking forever. It should be a few seconds, but for a while it was like 30 minutes. Not even remotely practicable for actively developing an application when you’re just figuring out the syntax for accessing an unfamiliar database in an unfamiliar language.
Since it used to work for months before, I thought, naturally, it was a problem with the cloud. The administrator however said for him pushing was quite fast (it works on my machine you know!) and suggested my virtual machine was the culprit. Could I try it from a new VM?
Cloning the VM made no difference. Next I spent nearly a day trying to get Docker to run in the Ubuntu bash on my Windows host (it turns out that will positively not work). And finally I ended up setting up an entirely new VM, with a different Linux distro, to check if that changed anything. Unfortunately that involved getting the entire authorization process for even pushing to the registry working again, which took another hour or so.
Yet when I finally had it, pushing to the registry took just seconds. Alright.
Then I checked from my old VM for comparison. That too took only seconds. WTF?
Seems it was never my VM that was the problem in the first place. Not that I’d ever thought it was.
Well, to be precise, my VM was a problem, though in a different way. Namely the disk image was filling up fast and increasingly things did no longer work because they needed more space than was available. For a while I was scraping by by deleting things, but it was only a matter of time. And finally, yesterday, inconveniently in the final throes of the programming part of this project, it came crashing down. All morning I found myself trying to get these last few lines of code still missing written and debugged–so close!!–while fervently deleting things left and right because it became increasingly impossible even to save text file a few KB small needed for the cluster deployment. It was ridiculous, but I wanted this over with before I attended to the needs of my stupid VM. (And mind you, why the hell can’t my company let me have a native Linux machine, as a developer?)
And under these far from ideal conditions I was fighting a tough battle with the syntax for filtering requests to a less than well documented database in a language for which no database driver was available (Scala). This was really one of the curses of this project–technologies with next to no documentation and a very small to non-existent user base, which means the internet is no help. Even though my queries worked in the user interface of the DB, they didn’t work in the code. After four hours (!) of trial and error to get a simple query to work, I finally, experimentally, or rather accidentally, hit upon the solution. Naturally it was completely opaque, counter-intuitive, and why all the others didn’t work I’ll never understand because logically what did the trick in the end was exactly the same as what I’d been doing all along, only a lot more roundabout. Makes no sense at all.
So these were the two last days for me: Fighting technology rather than the problem. Oh well, at least now it works.
And in the middle of all that there was, on Wednesday morning, the certification exam for Certified Tester. I had my flashcards on my phone with me on the Norway trip, but all I could get myself to do was the daily reviews scheduled by the software, 10 minutes or so. Before all previous exams I had, for days on end, actively reviewed entire card decks, randomly or oldest first. But before this final exam I could no longer stand it. I’m now so completely and entirely fed up with studying I can no longer find words for it. I have an almost physical revulsion against ever again studying anything at all. It’s often been fun and I said as much as recently as a few weeks ago, but right now I never want to see another flashcard again in my life.
In fact even in the three hours on Wednesday morning before the exam I barely managed to look at the material again. I have never known such a thing in all these three years. I’m so done with this stuff. And even though the examination itself was a lot tougher than we all thought I know for sure I won’t take this exam again–I can’t take it again–even should I have failed. Blast the fee, already paid. I’m done studying. For good.
At the same time it’s odd. Even though I’m so completely fed up with this entire studying business, and daily congratulate myself upon realizing I don’t have to do flashcards today–for the first time in nearly three years–it leaves quite a hole in my life. I’ve become so used to always working in overdrive that the mere prospect of slack scares me. Oh, writing this blog is OK, because it always was part of the studying–my only safety valve. But the mere idea that I should, on a working day, do something other than work on the bachelor thesis–say, do things around the house which would be in dire need of some improvements–feels absurd. My guilty conscience would kill me. The pressure is gone but it leaves some sort of phantom pain.
Problem is, the bachelor thesis won’t need more than at best 3 to 4 more days. It’s all over but the shouting.
Then what will I do? Still over a month before I’ll start working for good in September. Vacations would be great, but the school holidays are already over and my wife will be back to work. Hanging around the house all alone? Hardly an attractive prospect. I feel sort of stranded.
Well, this too will pass.