Do you lead a team, or a company and want to adopt agile practices, like Scrum or Kanban, but don’t know how to start?

💡 Let me help you!

Django 4.0 released

Django 4.0 has been released, so it’s time to plan the upgrade from 3.x. Here are some important things to note about the upgrade: The latest 3.x-release is 3.2, which will receive security and “data loss” fixes until April 2024. Any 3.x-release before 3.2 will no longer receive updates or fixes. It’s time to upgrade to 3.2! Django 4.0 drops support for Python version <= 3.7. Django 3.2 still supports Python 3. [Read More]

Updated: How to extract a date from a PDF file using Python

I have updated the script to support a new parameter. Here is my use case: Why this update? When I generate a PDF from a web-page, the resulting PDF often contains the current date at the very top, before all other dates. However, that’s not the date that I am interested in. I introduced a new before-parameter that will return the first date that is before the given date. I have updated the previous post with the changes. [Read More]

A new remote workflow for PyCharm (and other Jetbrains IDEs)

The recent PyCharm release (2021.3) adds a feature that enables a new kind of remote development workflow. This seems to be similar to what VS Code has been able to do, but since I am using PyCharm, this is exciting. Basically, the new feature allows you to run PyCharm locally and connect it to a “PyCharm server” running remotely. The PyCharm server is a headless version of IntelliJ that you connect to using your local PyCharm (or rather a special version of a locally installed PyCharm IDE, I believe). [Read More]

Remote pair programming tools (end of 2021)

If you’re a remote team, or a freelance looking to do some pair programming with someone remotely, you used to be very limited in your choices. You could go old school on the terminal using ssh and tmux. But that’s only an option if you are comfortable with a terminal-based editor or IDE. If you are like me, and use a non-terminal based IDE, the easiest way was to use screen sharing, but that is very limited. [Read More]

How to extract a date from a PDF file using Python

Here is a quick one-off script that I created to extract a date from PDFs. (Actually, this is an updated version. Maybe it’s not a one-off script after all?) The script will look for dates in common German formats, like 31.12.2021, 31. Dezember 2021, 31 Dez 2021. It will print either the first date it finds, or nothing It will print the date using ISO 8601 date part, e.g. 2021-12-31 Using an optional second parameter, you can make sure the printed date is before a certain date Requirements The script uses two external libraries for PDF and date parsing: pdfminer. [Read More]

rxPY3: Always implement on_error and on_completed

In my quest to better understand rxPY, I have written some short example scripts that use different operators. I have published these on GitHub as rxpy3-examples. In order to keep the examples as short as possible, I had omitted implementing on_error and on_completed. I thought that simple examples would be bloated by this, but that was actually a mistake. When I implemented these calls, I noticed that I had made a couple of mistakes in my previous implementation of the custom observable called dequeue: [Read More]

Is there not todo-app that can do this?

There are so many todo apps, but none of them seems to have the ability to let me do this: I want to be able to create a list of todo items – let’s call this list the should-do-list – and manually change the order of todo-items. Then I want to take this list, and create a new view of it. Let’s call this view the want-to-list. The want-to and the should-do list will always contain the same items, only the order of items is different. [Read More]

How to ask developers for help

Today I reached out to the maintainers of rxPY for help on understanding the window_with_count-operator. I have trying to get this to work for a while now, and it just does not what I would expect. I have read the official rxPY-documentation, searched Stackoverflow, Google, and the project’s GitHub issues (because people are very helpful there in this particular project). I also looked at the tests, but those were confusing me even more. [Read More]

rxpy3-examples: Fixing the multiple observer example

As I was adding a test for the examples/rx3_buffer_example.py I noticed that the endless while-loop was actually never called, because observable.connect() seems to be a blocking operation, until the stream finishes with on_error or on_complete. To make this example testable, I changed the dequeue() from using an endless while-loop to emitting a list of items. The changes can bee seen in this commit. In addition, I made a small change to the capture_stdout_as_list context-manager: I renamed the to_string()-method to __str__(), so that the context-manager’s result can be used in the test assertions using str(result) instead of result. [Read More]

Adding the first test to `rxpy3-examples`

Since I went through the effort of publishing my rxpy3-examples repository on GitHub, I thought it’s time to add tests. I had already taken a look at the test-suite for the rxpy-library, thinking that I might get some inspiration from that. But looking at their code I quickly found that it is way too complicated to be helpful to a rxpy-beginner like myself. They have created their own DSL for test, which is fine if you work a project over long period of time. [Read More]