Einträge über Softwareentwicklung

Status-Update für Slack basierend auf WLAN-Netzwerk

Auf der Arbeit nutze ich das Team-Chatprogramm Slack. Dort kann man einen Status einstellen. Wenn ich von Zuhause arbeite, möchte ich einen entsprechenden Status haben, damit die Kolleg*innen wissen, dass sie mich nicht im Bürogebäude suchen brauchen. Wenn ich aber im Büro bin, will ich das auch entsprechend ankündigen. Das geht, ich vergesse es allerdings nur immer.

Weiterlesen…

Primitive Obsession

On the Refactoring Guru website, there is one anti-pattern called “primitive obsession”, which is about the obsession with primitive types. In Python I would define “primitive types” as “jsonable types”, the ones that can be represented in JSON. This is a pattern that I have observed a couple of times, and I want to show a little example from my own code.

Weiterlesen…

Qt GUI for Vigilant Crypto Snatch

The Vigilant Crypto Snatch software started as a two-user project, where Chris and I just had it running on our respective machines. Over time a few other users came along, and now we have a Telegram group with around 50 members and likely even more users of the software. Initially the software was just a command line utility and ran only on Linux. Then I've used Streamlit to create a little web user interface to simulate triggers. People have asked for Windows support, which was not hard to do with Python. The user basis grew even more, and eventually somebody asked for a GUI. Command line programs are very uncommon on Windows, and the reach of the software seems to be large enough to be of interest to non-tech-savy users.

Weiterlesen…

Creating a Tree Search Library

I have recently simulated a few games using Python code, see the articles with the Game Simulation Toolbox tag. All the code is in one repository, but I haven't really written good code. It was mostly just experimenting, and I did not work as cleanly as I otherwise do. My latest addition, the backtracking with Railroad Ink ended up as completely hacky code: Control flow on the module level, no clear separation, huge functions, little use of classes. It is a total mess.

Weiterlesen…

Refactoring with Dependency Inversion and Injection

In this post I want to show how to refactor with the Dependency Inversion Principle. I find it hard to create a mock example with sufficient complexity, so I will just take the cryptocurrency buy software that I have featured in this blog a few times. In each iteration I will show the full code, talk about the problems.

Weiterlesen…

Kanban Board Software

I have used todo lists for quite a while, and I find it relaxing to be able to write tasks down. This way I don't have to keep all the tasks in my mind and try not to forget anything. The software that I have used was list-based. For short lists or short-term projects this was nice. One could just add a few tasks, and complete them later. One could just pick the next task from the list, and eventually it was all done.

Weiterlesen…

Jira Isn't as Bad as I Thought

I used to hate Jira with a passion. And I still dislike Confluence, see my rant. But lately I have realized that most of my hate actually comes from my misunderstanding of it. It turns out to be quite the useful tool, but you need to have the right use case for it. Otherwise it will be plain agony.

Weiterlesen…

My GNU Autohell Story

In academic software development I have seen one software suite which was known to be hard to compile. I was tasked to do try it, and ended up writing a 1200 line Bash script which took care of all the edge cases.

Weiterlesen…

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.

Weiterlesen…

Software Development in Scientific Research

I've worked in research for the past four years, during my master and PhD thesis. And although I did research in physics, my main day-to-day work has been developing software. The software projects were either the large-scale simulation code, some post-processing code or the analysis.

Weiterlesen…

Python has no Variables

Python doesn't have variables. It sounds mind-boggling, as one seems to use them all along. But really, that is not how it works with Python. This will really confuse people with a background in C or C++. If we do int n in C++, and write n = 1, n += 1 or the like, the address &n will never change. The value changes.

Weiterlesen…

Tools for Remote Programming Teaching

In the past years I have done a bit of programming teaching. Mostly at the university, where I have tutored in-person classes for C and LaTeX. On the side I have also taught people C and recently Python. In order to learn programming, one has to be able to experiment, therefore one needs to have a shared environment that allows to execute code. I want to introduce a few options that I have found.

Weiterlesen…

Bash and Spaces in File Names

On LinkedIn one can specify skills that one has as a collection of keywords. Contacts can verify these skills by vouching that one has them. A recently added feature is that one can take a 15 question multiple choice test and show a badge if the test result lies in the 0.7 quantile or above. In principle a nice idea.

Weiterlesen…

Learning New Programming Languages

Over the time I have learned a lot of programming languages. DOS batch scripts was the first, but that is not really programming, more scripting. Later I started to learn C but got stuck at pointers. At that age I just did not understand this concept from the book I had. My father has showed me HTML and then PHP, I started to create my personal website with that. And then with PHP I was able to program things that other people could see and try out on my website. Then I wanted to write GUI applications and came to Java, programmed a bunch of little games with that. During my high school I also needed to learn Pascal for my computer science class but never gotten far with it.

Weiterlesen…

Library Instead of Language

There are many programming languages out there, and I can learn only so many of them. Languages have a different focus and therefore there are cases where I can completely understand that somebody created a new language.

Weiterlesen…