https://github.com/rbaltrusch/rbaltrusch
Software engineer, enjoying building stuff in Python.
https://github.com/rbaltrusch/rbaltrusch
batch batest bullet-sudoku game-development gui matlab music-generation python simulink
Last synced: 2 months ago
JSON representation
Software engineer, enjoying building stuff in Python.
- Host: GitHub
- URL: https://github.com/rbaltrusch/rbaltrusch
- Owner: rbaltrusch
- License: mit
- Created: 2021-02-24T17:23:39.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2025-06-07T11:28:14.000Z (about 1 year ago)
- Last Synced: 2025-06-07T12:23:56.401Z (about 1 year ago)
- Topics: batch, batest, bullet-sudoku, game-development, gui, matlab, music-generation, python, simulink
- Homepage:
- Size: 14.5 MB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Hello World :ok_hand:
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:
- Email: [richard@baltrusch.net](mailto:richard@baltrusch.net?subject=[Github])
- [LinkedIn](https://www.linkedin.com/in/richard-baltrusch-aa809a131/)
- [YouTube](https://www.youtube.com/channel/UCBB1v2nSWPvX_9Km-AMGkGQ)
## Languages
- Professionally mostly Python, Java and Javascript.
- In the past, I have professionally worked with MATLAB/Simulink on numerical computing.
- Currently:
- Developing a full stack web application using Java (Spring Boot) and Javascript.
- Refining a lazily-computed iterator-chaining library for Lua: [stream.lua](https://github.com/rbaltrusch/stream.lua).
- Tinkering with Lua and Haskell.
- Interested in Rust, Go and Scala.
## Interests
- Games: I wrote a game engine and used it to develop a full game release, [Bullet Sudoku](https://github.com/rbaltrusch#bullet-sudoku), a 2D top-down platformer.
- Languages: I am interested in constructed languages and [custom programming languages](https://github.com/rbaltrusch/natscript).
- Music: I compose and [procedurally generate music](https://github.com/rbaltrusch/music_generation). The music generated by my neural network [Bach generator](https://github.com/rbaltrusch/bach_generator) is at least "interesting" :)
## Games
I released a number of games, including a full release, and [pygaja](https://github.com/rbaltrusch/pygaja), a small open-source Python game engine for game jams.
### 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](https://richardbaltrusch.itch.io/bullet-sudoku). It is currently sitting at almost 100 downloads!

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**](https://github.com/rbaltrusch/unicast_network_sim): an action-puzzler game where you deliver network packets (Python). Placed 16th out of 500 for innovation due to the creative input system.

[**Myrkur**](https://github.com/rbaltrusch/myrkur): a dungeon exploration game written with Love2D in Lua.

[**Fungal Whimsy**](https://github.com/rbaltrusch/fungal_whimsy): a 2D precision platformer set in a dense mushroom forest.

[**Uncaved**](https://github.com/rbaltrusch/uncaved-gmtk): a reverse cave-exploring game where you control a cave full of traps, written in Java with libGDX.

#### Closed source game jam submissions
I have also published some game jam entries with closed source code:
[**City of London 1923**](https://richardbaltrusch.itch.io/city-of-london-1923): A frantic landlord game in which you continually have to fix problems in rental units.

[**Desert Ranger**](https://richardbaltrusch.itch.io/desert-ranger): A run-and-gun shootem-up game set in a blazing hot desert. Developed in a team of 4.

### 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](https://github.com/rbaltrusch/pygame_examples).






### Chess engine(s)
I have developed a semi-complete [chess-engine in Python](https://github.com/rbaltrusch/chess_ng) 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](https://github.com/rbaltrusch/thcc_engine). 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:

## Music
### Music analysis
Here's my [music analysis tool](https://github.com/rbaltrusch/music_mood_analysis), which I started building in 2018 and recently built a fancy user interface for:

### 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](https://github.com/rbaltrusch/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](https://github.com/rbaltrusch/continuo) is a pypi package that procedurally generates music based on a provided set of input parameters.
## AI and Machine Learning
I have worked on a few AI and machine learning projects, including:
- [A chess engine](https://github.com/rbaltrusch/chess_ng) including a minimax AI.
- [Bach generator](https://github.com/rbaltrusch/bach_generator), a data-driven music generator that uses a neural network to generate Bach-like music.
- [Game ML](https://github.com/rbaltrusch/gameML), a repository of various machine learning algorithms, such as reinforcement learning, applied to simple games.
## Tools
### Batest
[Batest](https://github.com/rbaltrusch/batest) is a lightweight unit testing framework for Windows batchfile scripts. As no testing framework existed when I was learning [Batch](https://github.com/rbaltrusch/batch), I wrote my own :+1:.
It generates simple HTML test reports like this:

## Meta-programming
### Natscript
[Natscript](https://github.com/rbaltrusch/natscript) is an interpreted programming language with a natural syntax resembling English:
```powershell
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](https://github.com/rbaltrusch/cpp-natscript) (currently still WIP), or by implementing a LLVM JIT-compiler for the language.
### Interpreters
I have written a collection of simple interpreters in various languages (including Python, Java and C), available [here](https://github.com/rbaltrusch/simple_interpreters).
### Object oriented batch
For people unfortunate enough to come to Batch with an object oriented background, I wrote an [object oriented framework for Batch](https://github.com/rbaltrusch/objectbatch/wiki), 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:
```batch
::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:
```batch
::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 :100::100:
## Apps
- I wrote a small [shop application](https://github.com/rbaltrusch/desktop_shop) to solidify my understanding of SQL and handling confidential data securely in databases.
- I also made a small [chat application](https://github.com/rbaltrusch/pychatter) to get a good grasp of networking using websockets. The application can be run on a local network.

## Stats
[](https://github.com/anuraghazra/github-readme-stats)