Skip to content
View rbaltrusch's full-sized avatar
Block or Report

Block or report rbaltrusch

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Please don't include any personal information such as legal names or email addresses. Maximum 100 characters, markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
rbaltrusch/README.md

Hello World πŸ‘Œ

I am Richard Baltrusch, a German software engineer that likes to build all kinds of stuff, with a faible for Python.

You can contact me using the following links:

Languages

  • Professionally Python, Java and Javascript (previously MATLAB/Simulink).
  • Currently:
    • Developing a full stack web application using Java (Spring Boot) and Javascript.
    • Learning machine learning in Python (with Tensorflow/Keras and from scratch).
    • Using Lua for game development.
    • Tinkering with Julia and Haskell.
  • Interested in Scala, Go and Rust.

Interests

Games

Bullet Sudoku

Bullet Sudoku is a small game I wrote in summer 2020 using my custom made game engine written in Python. A free demo of the game is available on itch.io. It is currently sitting at almost 100 downloads!

Short GIF of Bullet Sudoku gameplay

The source code is currently not open-source, but I plan on releasing a condensed open-source version of the game engine in the near future.

Game jam submissions

Since 2023 I published multiple game jam submissions, with open source code, to try out new technology and new ideas:

Unicast Network Sim: a Python game where you deliver network packets. Placed 16th out of 500 for innovation due to the creative input system.

Unicast network simulator gameplay

Myrkur: a dungeon exploration game written with Love2D in Lua.

Myrkur gameplay

Fungal Whimsy: a 2D precision platformer set in a dense mushroom forest.

Fungal Whimsy gameplay

Uncaved: a reverse cave-exploring game where you control a cave full of traps, written in Java with libGDX.

Uncaved gameplay

Pygame examples

I have a number of small / medium size pygame examples that illustrate a certain technique or explore game concepts, such as particle effects, lighting, events and networking, in more detail. Source code is available here.

Gif of the particle effects Gif of the lighting system Gif of the hexagonal tile map Gif of a red light source

Chess engine(s)

I have developed a semi-complete chess-engine in Python from scratch and done a fair amount of optimization, until realizing a fully optimized chess engine likely would require more speed than Python can offer, so I started work on an implementation in C. The C-code looks less beautiful, but already runs around 70 times faster :)

Here is an AI playing chess against itself using a minimax algorithm (depth 4) using the Python version:

Chess artificial intelligence playing a game

Music

Music analysis

Here's my music analysis tool, which I started building in 2018 and recently built a fancy user interface for:

Screenshot of the analysis GUI

Music generators

Over the years, I have worked on multiple procedural music generators, two of which are open-sourced on Github and available on pypi:

  • My Bach generator generates a transformed version of music input (via midi files) using a machine-learning algorithm optimizing for correlation of the output with the input. This ensures the produced musical transformations are internally consistent.
  • Continuo is a pypi package that procedurally generates music based on a provided set of input parameters.

Tools

Batest

Batest is a lightweight unit testing framework for Windows batchfile scripts. As no testing framework existed when I was learning Batch, I wrote my own πŸ‘.

It generates simple HTML test reports like this:

Screenshots of the test reports

Meta-programming

Natscript

Natscript is an interpreted programming language with a natural syntax resembling English:

define function main as {
    set squares to []
    for each number in range from 0 to 5 not equal to 3 {
        multiply it by itself, then append it to squares
    }
    return squares
}

# This will output [0, 1, 4, 16] to the console
print result of call main

Although a bit slow, due to its current main implementation being in Python, it is a fully functional language that support procedural and functional programming. Performance issues may be addressed in the future with the C++ version (currently still WIP), or by implementing a LLVM JIT-compiler for the language.

Object oriented batch

For people unfortunate enough to come to Batch with an object oriented background, I wrote an object oriented framework for Batch, including classes and instances, methods and attributes, inheritance, encapsulation, polymorphism and object composition.

As can be seen in the code examples below, the batch OOP syntax is surprisingly clean (for batch):

Simple use of a class instance:

::instantiate new object obj of type MyClass
call new MyClass obj construct

::calling method myMethod of instance obj
call # obj myMethod

::reading obj attribute myAttr
echo !%obj%.myAttr!

::writing obj attribute myAttr
set %obj%.myAttr=1

Simple class definition:

::boilerplate
call class %*
%class%

::this is the constructor, adding one custom attribute attr
:public-construct
    call super %*
    set %self%.attr=0
exit /b

It's probably not very useful, but at least it was fun to make πŸ’―πŸ’―

Apps

  • I wrote a small shop application to solidify my understanding of SQL and handling confidential data securely in databases.
  • I also made a small chat application to get a good grasp of networking using websockets. The application can be run on a local network.

Gif of the application GUI

Stats

rbaltrusch's GitHub stats

Pinned

  1. pygame_examples pygame_examples Public

    A repository for short pygame drafts, examples, tutorials and more!

    Python 23 11

  2. music_mood_analysis music_mood_analysis Public

    Real-time analysis of music, extracting tempo and tonality

    Python 14 1

  3. natscript natscript Public

    The Natscript interpreter, a custom programming language, with a natural English-like syntax.

    Python 6

  4. desktop_shop desktop_shop Public

    Desktop shop application interfacing with a generated database of customers, products and transactions (Python / SQLite3).

    Python 1 2

  5. chess_ng chess_ng Public

    Full chess engine including chess AI

    Python 1 2

  6. cpp-natscript cpp-natscript Public

    C++ translation of Natscript interpreter previously implemented in Python.

    C++ 1 1