Posts about Computer

I had my first computer with 5 and started C programming when I was 13. Then I made some simple websites using PHP which grew into ever more complex ones. In 2007, I created some Java applications, some of them are still among the portfolio on this page. While I was an intern at the DLR, I started to learn Python and IDL, which introduced me to matrix based languages. For the numerical methods lecture and especially my bachelor’s thesis I used C++11. During my master’s thesis I have learned Haskell for fun. Later on for my PhD thesis I also learned R and the Wolfram Language.

This section of my site is for articles about programming practices and performance tests. Also various stuff about computer hardware and software.


Obsidian Markdown

A while ago I have written about note-taking software. At the time the most promising candidates were Joplin and just flat Markdown files. A colleague has told me about Obsidian. It is an awesome note taking application as it satisfies all the needs that I have: It uses plain Markdown files to store the notes, there is on siloization into an opaque database. But it provides a file explorer to quickly switch between notes. It also has some gadgets like a link graph, but I haven't used these yet.

Other great features is HTML import from the clipboard, which makes copying snippets from webseites much easier. It also supports split windows, which can serve as editor, preview and outline panes in any combination. It also manages attachments by copying them into the notes directory. And one can have multiple note directories, which are called “vaults”.

Read more…

Code Documentation Epiphany

In the past decades I have written a bunch of software. And most was rather ephemeral stuff, like hobby projects or university assignments. In most cases there was no need for any sort of formal documentation. I would understand the code as I am working on it, and once I have abandoned it, it would never be touched again anyway.

During my PhD this has changed. I have worked on three software projects which were meant to be used in the work group after I am gone. And because I knew it from the start, I tried my best to document it. At the time I had the feeling that the documentation should be very close to the code, in the spirit of Donald Knuth's literal programming. I have used tools like Doxygen, Epydoc, Sphinx or JavaDoc to create HTML pages from the docstrings in the code. I only had to write a comment for each function, and then everything would be documented!

In reality I found that this documentation was not really useful. It wasn't motivating to write. The generated website didn't look beautiful by default, though with Sphinx one can find beautiful themes. At the time I didn't really see the systematic problem, I just thought that if I were to write better docstrings, it would become great.

And then for my PhD I needed to write something in Wolfram Mathematica. And as I learned the language, I looked for equivalents of tools that I usually use. There was no documentation generator, no real docstring functionality. I was annoyed by the language. And so I just started out with a Markdown document. And I have documented the functions there, but also the design decisions, use cases, caveats. Something that you can only do in a long-form document. The end result has been a 40 page manual. It has a common theme, has a structure, and you can actually work with that thing.

Read more…

Rant about Confluence

Over the years I have been using content creation software which had a clear separation of a source and a rendered output. This has been LaTeX for scientific documents, Markdown and reStructuredText for computer documentation. I also use Markdown for my notes with Ghostwriter or Obsidian. I have also used GraphViz to create diagrams and graphs. To create 3D models I have used OpenSCAD, which is a programming language for 3D models. When I needed a Wiki, I have used DokuWiki All these software packages let me use the text editor of my choice, version the source code in Git and share it via GitHub. So for me, having a Git repository of Markdown files is the perfect way to create documentation.

In the average company there are not only technical people like me, but there are also many people who prefer graphical WYSIWYG user interfaces. And I can completely understand that, there are just different workflows and needs. On the other extreme might be a Windows network drive with a bunch of Word documents on it. This would be my personal nightmare, but so would my Markdown setup be to them.

Confluence, a wiki software by Atlassian, is advertised to bridge this gap. It offers the organization of documents in a hierarchy of pages, possibly separated into different spaces. It has access control. And it has a WYSIWYG which caters to the Word-workflow and a wiki syntax editor which caters to people like me who like source code. So in principle it would be the best compromise between the network drive of Word files and the Git repository of Markdown files. And for the most part, it really is that. But there are a couple of things which really make me annoyed with it.

Read more…

New Monitor Mounts

I have recently written about height adjustable monitors and how they usually don't reach the height that I would need to comfortably sit. And the mount that I bought didn't really do me much good. Eventually I started looking for mounting options again. Most of them only go up to 40 cm in height, but there are a select few options which go even higher. And I didn't actually want to has gas spring arms, just fixed arms are fine. So I have found two products to make it work in the way that I want:

This consists of a dual monitor stand on the right side. That goes up to 100 cm, which is very great. I won't need that much, but it certainly works for me. And then I also have a combined monitor and laptop stand where both can be adjusted independently. In this way I can have the laptop on head height and also do video conferencing without having to look down.

As a side effect, the desk is much neater now. On the picture I haven't put away the cables, by now it looks even better.

Password Guideline Nonsense

My company has solid security policies which seem to be oriented at best practices. And I am very glad that they don't enforce nonsense policies that would actually weaken the passwords that users choose. That of course isn't the case with every company. There is one particularly arcane case. They have these rules for passwords:

  • At least two capital letters
  • At least one special character
  • At least one digit
  • At least 12 characters
  • At most three characters may overlap with the last 10 passwords
  • No characters from the last password

And the passwords have to be changed every four weeks. Of course, writing them down is forbidden, as that would weaken the security.

How are employees supposed to sensibly come up with these passwords and remember them? They will of course come up with a clever enumeration scheme that will just barely abide these rules. And I am sure none of them will have more than 12 characters. If they were allowed to have the passwords for more than four weeks, people might actually take more time to craft a sensible password. But this seems to encourage writing it on sticky notes …

Wear on CF card receptacles

My camera is a rather old DSLR which still uses CF cards. In order to get the images, I would take it out of the camera body, put it into a card reader and then transfer the images. Afterwards the card was inserted back into the camera body. This has worked fine for years, but one day the card reader would not work any more. I didn't understand, and just bought a new card reader. One day in 2016, the new card reader stopped working. I then looked into the card reader and saw that a pin was bent.

So I took a simple screwdriver and tried to fix the pin and bend it back.

Read more…

Cookies and Do Not Track

As an internet user, you of course have seen more of these cookie banners than you had liked to. They are on virtually all sites that I browse and they totally annoy me. A decade ago websites had those pesky adversisement pop-ups, now they have those banners that show up seconds after the site has loaded enough to see the content.

There is quite the spectrum. Some sites will just notify that they are using cookies and by using the website you agree. They offer a link to a page where you can learn more. You can ignore the notification at the bottom of the screen and just go on reading the actual content. Other pages have a blocking modal dialog where you have to first take care of the cookies.

Read more…

US International Keyboard Variants

I have been using the ANSI keyboard layout for many years now and stronly prefer it over the ISO layout. The ANSI layout has the smaller enter button and a longer left shift key. Then I use the US international layout such that I can create German umlaut characters and other fancy things. On top of that I use the Linux compose key to create even more characters.

The issue the sheer variety of US international keyboard layouts. Every time I set up a new computer, I end up having to cycle through all of them to find the one that I actually want. There are two major differences: One is whether there are more accented characters or more symbols. The other is the presence of dead keys. I absolutely hate dead keys, I need those accents on their own for programming. Curiously the one that has no dead keys has “dead keys” in the name.

But there are many other variants, which don't work for me.

Read more…

Bluetooth Incompatibility

I have a hate-love relationship with Bluetooth. I would like to like it, but it always turns out to be frustrating. The idea of having a short-range wireless standard which allows coupling devices to each other is great. And on humble days I find it amazing that it works to the extent that it does.

Bluetooth has long been what USB is becoming, namely an opaque mess of incompatible devices where a layperson cannot determine whether they will be compatible beforehand. The box will only say “Bluetooth”, perhaps something like “Bluetooth 4.2”, but what does this really mean?

My latest frustrating example is with my bluetooth keyboard and my TV. My TV has already successfully paired with my headphones, and my phone can pair with the headphones and the keyboard. But the TV cannot pair with the keyboard. In order to see whether they had a theoretical chance to work with each other, I looked up the Bluetooth versions:

Device Model Bluetooth
Headphones Sony WH1000-XM3 4.2
Laptop Lenovo ThinkPad X220 3.0
Keyboard Logitech K380 3.0
Phone Xiaomi Mi A1 4.2, A2DP, LE
Tablet Samsung Google Nexus 10 3.0, A2DP
Tower PC Mpow Bluetooth 5.0
TV Samsung GU43TU8079 4.2

From this table I see that the TV and the phone have the same bluetooth version, so why does the keyboard work with the smartphone but doesn't work with TV?

Read more…

Fragmentation of Stack Exchange

For years I am a user of Stack Overflow and network of sites called Stack Exchange. My network profile has a long list of accounts that I have within the network. The sheer amount of sites became really annoying for me years ago, and today's experience was the straw that broke the camel's back.

As I finished the post about Bluetooth incompatibility, I thought about asking online and postedn on Super User. I chose the Stack Exchange network as I have a question and want an answer. And Super User seemed like the best fit for consumer hardware. My question was closed because it was not within the defined scope. Although Super User is about computer hardware and software, it is not about electronic devices, even if they interface with the computer. I have asked the moderator who closed the question which site would be a better fit for this, and got “no idea” as an answer. Great!

Fortunately somebody has asked on the meta discussion page for Super User where one can ask questions which don't fit on Super User. The top answer is really funny to read while writing this blog post. My question might fit into the “Phones and Tablets” category there, but the device is neither an Android, iOS or Windows based system. So all the specialized sites are off, and there is no Tizen specific site. For electronics equipment one could go to the “Electrical Engineering” site, just not if it is a consumer device. For video games and consoles there is an additional site, but this doesn't fit either.

Read more…