{"id":19901216,"url":"https://github.com/rbaltrusch/rbaltrusch","last_synced_at":"2026-04-19T14:33:54.431Z","repository":{"id":134140098,"uuid":"341978424","full_name":"rbaltrusch/rbaltrusch","owner":"rbaltrusch","description":"Software engineer, enjoying building stuff in Python.","archived":false,"fork":false,"pushed_at":"2025-06-07T11:28:14.000Z","size":15211,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-07T12:23:56.401Z","etag":null,"topics":["batch","batest","bullet-sudoku","game-development","gui","matlab","music-generation","python","simulink"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rbaltrusch.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-02-24T17:23:39.000Z","updated_at":"2025-06-07T11:28:18.000Z","dependencies_parsed_at":null,"dependency_job_id":"b4e86735-2b52-4e34-b5a4-f6e47f697bce","html_url":"https://github.com/rbaltrusch/rbaltrusch","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rbaltrusch/rbaltrusch","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rbaltrusch%2Frbaltrusch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rbaltrusch%2Frbaltrusch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rbaltrusch%2Frbaltrusch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rbaltrusch%2Frbaltrusch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rbaltrusch","download_url":"https://codeload.github.com/rbaltrusch/rbaltrusch/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rbaltrusch%2Frbaltrusch/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273047026,"owners_count":25036278,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-31T02:00:09.071Z","response_time":79,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["batch","batest","bullet-sudoku","game-development","gui","matlab","music-generation","python","simulink"],"created_at":"2024-11-12T20:14:24.404Z","updated_at":"2026-04-19T14:33:54.397Z","avatar_url":"https://github.com/rbaltrusch.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hello World :ok_hand:\n\nI am Richard Baltrusch, a German software engineer that likes to build all kinds of stuff, with a faible for Python.\n\nYou can contact me using the following links:\n\n- Email: [richard@baltrusch.net](mailto:richard@baltrusch.net?subject=[Github])\n- [LinkedIn](https://www.linkedin.com/in/richard-baltrusch-aa809a131/)\n- [YouTube](https://www.youtube.com/channel/UCBB1v2nSWPvX_9Km-AMGkGQ)\n\n## Languages\n\n- Professionally mostly Python, Java and Javascript.\n- In the past, I have professionally worked with MATLAB/Simulink on numerical computing.\n- Currently:\n  - Developing a full stack web application using Java (Spring Boot) and Javascript.\n  - Refining a lazily-computed iterator-chaining library for Lua: [stream.lua](https://github.com/rbaltrusch/stream.lua). \n  - Tinkering with Lua and Haskell.\n- Interested in Rust, Go and Scala.\n\n## Interests\n\n- 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.\n- Languages: I am interested in constructed languages and [custom programming languages](https://github.com/rbaltrusch/natscript).\n- 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\" :)\n\n## Games\n\nI 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.\n\n### Bullet Sudoku\n\nBullet 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!\n\n![Short GIF of Bullet Sudoku gameplay](/media/bullet_sudoku2.gif)\n\nThe 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.\n\n### Game jam submissions\n\nSince 2023 I published multiple game jam submissions, with open source code, to try out new technology and new ideas:\n\n[**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.\n\n\u003cimg width=\"384\" height=\"256\" src=\"/media/unicast_network_sim.gif\" alt=\"Unicast network simulator gameplay\"\u003e\n\n[**Myrkur**](https://github.com/rbaltrusch/myrkur): a dungeon exploration game written with Love2D in Lua.\n\n\u003cimg width=\"384\" height=\"256\" src=\"/media/myrkur.gif\" alt=\"Myrkur gameplay\"\u003e\n\n[**Fungal Whimsy**](https://github.com/rbaltrusch/fungal_whimsy): a 2D precision platformer set in a dense mushroom forest.\n\n\u003cimg width=\"384\" height=\"256\" src=\"/media/fungal_whimsy.gif\" alt=\"Fungal Whimsy gameplay\"\u003e\n\n[**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.\n\n\u003cimg width=\"384\" height=\"256\" src=\"/media/uncaved.gif\" alt=\"Uncaved gameplay\"\u003e\n\n#### Closed source game jam submissions\n\nI have also published some game jam entries with closed source code:\n\n[**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.\n\n\u003cimg width=\"384\" height=\"256\" src=\"/media/city_of_london.gif\" alt=\"Fungal Whimsy gameplay\"\u003e\n\n[**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.\n\n\u003cimg width=\"384\" height=\"256\" src=\"/media/desert_ranger.gif\" alt=\"Fungal Whimsy gameplay\"\u003e\n\n### Pygame examples\n\nI 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).\n\n![Gif of the particle effects](https://github.com/rbaltrusch/pygame_examples/blob/master/media/particle_effects.gif?raw=true \"Gif of the particle effects\")\n![Gif of the lighting system](https://github.com/rbaltrusch/pygame_examples/blob/master/media/lighting_system.gif?raw=true \"Gif of the lighting system\")\n![Gif of the hexagonal tile map](https://github.com/rbaltrusch/pygame_examples/blob/master/media/hexagons.gif?raw=true \"Gif of the hexagonal tile map\")\n![Gif of a red light source](https://github.com/rbaltrusch/pygame_examples/blob/master/media/red_light.gif?raw=true \"Gif of a red light source\")\n![Gif of an evolution simulation](media/evolution_sim.gif?raw=true \"Gif of an evolution simulation\")\n![Gif of the cloth simulation](media/cloth_sim2.gif?raw=true \"Gif of the cloth simulation\")\n\n### Chess engine(s)\n\nI 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 :)\n\nHere is an AI playing chess against itself using a minimax algorithm (depth 4) using the Python version:\n\n![Chess artificial intelligence playing a game](https://github.com/rbaltrusch/chess_ng/blob/master/media/chess_ai.gif?raw=true \"Chess artificial intelligence playing a game\")\n\n## Music\n\n### Music analysis\n\nHere'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:\n\n![Screenshot of the analysis GUI](https://github.com/rbaltrusch/music_mood_analysis/blob/master/music_mood_analysis/gui/media/screenshot2.png?raw=true \"Screenshot of the analysis GUI\")\n\n### Music generators\n\nOver the years, I have worked on multiple procedural music generators, two of which are open-sourced on Github and available on pypi:\n- 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.\n- [Continuo](https://github.com/rbaltrusch/continuo) is a pypi package that procedurally generates music based on a provided set of input parameters.\n\n## AI and Machine Learning\n\nI have worked on a few AI and machine learning projects, including:\n- [A chess engine](https://github.com/rbaltrusch/chess_ng) including a minimax AI.\n- [Bach generator](https://github.com/rbaltrusch/bach_generator), a data-driven music generator that uses a neural network to generate Bach-like music.\n- [Game ML](https://github.com/rbaltrusch/gameML), a repository of various machine learning algorithms, such as reinforcement learning, applied to simple games.\n\n## Tools\n\n### Batest\n\n[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:.\n\nIt generates simple HTML test reports like this:\n\n![Screenshots of the test reports](https://github.com/rbaltrusch/batest/blob/master/batest/media/screenshot.png?raw=true)\n\n## Meta-programming\n\n### Natscript\n\n[Natscript](https://github.com/rbaltrusch/natscript) is an interpreted programming language with a natural syntax resembling English:\n\n```powershell\ndefine function main as {\n    set squares to []\n    for each number in range from 0 to 5 not equal to 3 {\n        multiply it by itself, then append it to squares\n    }\n    return squares\n}\n\n# This will output [0, 1, 4, 16] to the console\nprint result of call main\n```\n\nAlthough 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.\n\n### Interpreters\n\nI have written a collection of simple interpreters in various languages (including Python, Java and C), available [here](https://github.com/rbaltrusch/simple_interpreters).\n\n### Object oriented batch\n\nFor 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.\n\nAs can be seen in the code examples below, the batch OOP syntax is surprisingly clean (for batch):\n\nSimple use of a class instance:\n```batch\n::instantiate new object obj of type MyClass\ncall new MyClass obj construct\n\n::calling method myMethod of instance obj\ncall # obj myMethod\n\n::reading obj attribute myAttr\necho !%obj%.myAttr!\n\n::writing obj attribute myAttr\nset %obj%.myAttr=1\n```\n\nSimple class definition:\n```batch\n::boilerplate\ncall class %*\n%class%\n\n::this is the constructor, adding one custom attribute attr\n:public-construct\n    call super %*\n    set %self%.attr=0\nexit /b\n```\n\n\u003csub\u003eIt's probably not very useful, but at least it was fun to make :100::100:\u003c/sub\u003e\n\n## Apps\n\n- 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.\n- 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.\n\n![Gif of the application GUI](https://github.com/rbaltrusch/pychatter/blob/master/pychatter/gui/media/gif1.gif?raw=true \"Gif of the application GUI\")\n\n## Stats\n\n[![rbaltrusch's GitHub stats](https://github-readme-stats.vercel.app/api?username=rbaltrusch\u0026theme=holi\u0026show_icons=true)](https://github.com/anuraghazra/github-readme-stats)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frbaltrusch%2Frbaltrusch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frbaltrusch%2Frbaltrusch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frbaltrusch%2Frbaltrusch/lists"}