MICHAEL ADELMANN'S WEBSITE

ABOUT ME  PROJECTS

Public projects


The Slang Programming Language (Github)

An object orientated scripting language with a static type system.

This is my love child in which I have already invested a lot of time and sweat. It is more of a concept than a real world language because there are still a lot of issues to cope with (inferior performance compared to major languages and the occational bugs here and there), but it resembles what I initally wanted to create.
I love the power of native languages like C++ (especially since newer standards cleaned up the language a lot) but I honor what Java and its ecosystem has brought to the world of software development even though it was still in its infancy when I first got in contact with it. Slang visually resembles Java but with some additional features borrowed from C++ that, in my mind, would make a perfect language out of it like operator overloading, RAII and the magic 'const' word. In Slang you can const everything. Methods, parameters, locals, return values and even classes (which I call objects; I don't get the classes thing that every OO language does. Since we are object oriented, shouldn't we be oriented to objects instead of classes..?).

Since Slang isn't that fast - a problem that many interpreted languages share - I implemented an extension system to be able to extend the language with new features and to enhance the performance of specific tasks.

extensions A collection of extensions which were originally included in the main project featuring access to System V message queues, pipes, a JSON serializer and extensions for HTTP servers to be able to access GET and POST data.
extBase64 Base64 encoding/decoding for Slang
extCurl Create cURL requests from Slang
extJson JSON serializer
extMariaDB Connect to a MariaDB database
extMySQL Connect to a MySQL database
extSQLite3 Connect to a SQLite3 database file

As a second option to extend the functionality of Slang I implemented a package manager (slang-pkg) that is able to download modules from a central repository (stable) and has some knowledge about module versions.

System Library The Slang standard library
MysqlObject MySQL entity serializer
libBehaviourTree Behaviour tree module
libCSVReader CSV reader module

And there's of course a debugger (slang-dbg) to do some basic debugging of Slang scripts. It's able to create breakpoints, add watches, show the source code of the currently debugged files and store and reload debugging sessions, so that one doesn't have to add breakpoints and watches again and again.

CryptoFox

Trade your cryptos with a bot that supports multiple trading strategies.

Some time ago, some friends tried to convince me to start trading crypto coins. But since I am not really interested in trading, I found a way to combine their trading affinity with my technical affinity and skills. That's why I wrote 'CryptoFox' as an automated trading tool.

At the moment, only Bitpanda Pro and my own BitBroker are supported, but I will gradually add more supported exchanges to the system.
I did some research and found out that the most common bots in the wild use DCA (Dollar Cost Average) and grid strategies, and after figuring out what exactly that is, I think my versions of it are at least on par with the implementations of the most popular commercial projects.

Currently you can use it for free, but maybe sometime in the future I'll start charging for it.

BitBroker (Github)

A demo crypto broker implemented in Slang.

As I'm now into cryptos (I guess this phase will pass as soon as I loose my first coins), I wanted to understand the concept of a broker more deeply, and what could be better to understand something then to implement it once self. There is no GUI for this broker since this was not one of the goals of this effort - as you clearly can see from my other projects I'm not into that visual stuff - but it features a simple but powerful API to query and create orders and trades.
Although I wrote this within one afternoon, I expect the project to slowly grow over the next few months. Let's see what will come out in the end.

MovieBase (Github)

A frontend to access and organize the movies and series stored on my NAS, written in Slang.

It works a lot like all the other media libraries you find out there. The backend mostly consists of a (MariaDB) database and some scripts to read in supported media files from disk and create thumbnails for them in customizeable sizes. The frontend displays these thumbnails in a grid spread over multple pages - I think you can imagine how this looks like. You're able to add tags and a brief description to all movies/items and it's also possible to add actors to them, for whom you can also add tags and a short text. If you want you can add movies/items to collections which themself can also be tagged. Currently it's not automatically possible to arrange episodes in seasons but this can be done by adding them manually to collections.

If you're interested in the source code, just contact me.

SQLMurder

Play detective by solving a crime through SQL queries.

This is a single page web application in which you can query a SQLite3 database to find out who the murderer is. As soon as you enter the page a private copy of the template database is created, which is then used for your queries. Feel free to modify the data, or do whatever you want to do with the database, since it will be deleted automatically if you reset your session.
The actual data has been copied from knight lab (https://mystery.knightlab.com/) as it originally was only intended as a test for my Slang SQLite3 extension. Thank you knight lab for doing such a cool thing!

Pascal (Github)

A Pascal interpreter and debugger completely written in Slang. Running very slowly because it is interpreting inside of an interpreted language... considering that, it has quite good startup times.

Basic (Github)

A Basic interpreter and debugger completely written in Slang.

Stuff


Parking TicketSharing (not maintained anymore) A project I designed and developed together with a good friend of mine. We found out that many people throw away their parking tickets even though they are still valid, so we created a small platform where people can post their tickets for others to use. This project is also the base for my single page web framework. Feel free to use it.
Rezepte Kiste (not maintained anymore) A small recipe page for my ex-girlfriend. Sadly she never used it. Fun fact: this is the base for my MovieBase project which I use almost on a daily base.
Sudoku Solver This was not done by me, I just wanted to have a Sudoku solver next to hand, as I always forget where to find it.