Projects

Here are most of the projects I have worked on and the respectivily used technologies. This page is quite long and I am still working on making it more digestable and adding images. So, for now here is a table of contents:

Study Projects (Bachelor Informatics and Media Applications)

During my bachelor's program in 'Informatics and Media Applications' I had (bi)weekly programming assignments and we developed multiple final projects in groups of two or three. Technologies like the JavaScript library jQuery or the PHP framework Laravel were used. One project implemented real-time communication via WebSockets. We also developed a game with C# and Unity. This experience made the transition into a full-time developer job easy.

In a group of 6 we developed a C# Desktop application for measuring the repeated accuracy of an industrial robot with a laser measuring device (by Keyence). The application communicated via a serial interface (RS-232 to RJ45) with the measuring device. The project included the development of a web mobile app for remotely taking measurements while standing next to the robot controls which exchanged data via WebSockets with the main application.

As a two-week study project, we developed as a team of two a administrative or content management system for a small religious community. In the past, Excel files were shared via Dropbox, which was cumbersome for non-technical users (lacking office licenses, accidental file deletions, a member spreading a virus...). The goal of the project was to create a content management system for community preachers and external preachers to plan and create Sunday services collaboratively. This included a collection of songs and the functionality to print out a guideline for the Sunday service. The project was developed with the PHP framework Laravel and a relational database. The database scheme consisted of 11 entities and 13 relationships.

For half a year I had a side job as a student and extended a jQuery web application with an interactive view. A kind of mindmap visualized different aspects of a product.

Work Projects

After finishing my degree, I worked for an IT supplier with 200-300 employees for three years:

For the first two years, I was responsible for developing Customer Relationship Management solutions for customer projects in Microsoft Dynamics CRM (nowadays called Dynamics 365 Customer Engagement).

  • My bachelor thesis project displayed customer data from a CRM system on an interactive map and table. The table structure was fetched from CRM entity views. Also, data could be selected in the table or on the map by dragging a rectangle and subsequently exported into a CRM (email) marketing campaign. It was built with HTML, CSS, TypeScript, jQuery and the libraries Leaflet.js (for the map) and DataTables (for the table).
  • Customization of the CRM system of our customers towards their branch and needs with low-code tools, JavaScript and C# background processes.
  • For one project I developed a C# console application that fetched product data from a CRM quote which allowed the sales representative to generate a PDF and attach it to the CRM frontend.
  • Development of Web Applications that were integrated into the CRM system. Oftentimes these were invoicing and quotation applications with an interactive table for reading and writing data from/to the CRM system via a REST API. Used technologies were HTML, CSS, JavaScript, jQuery and interactive table components (e.g. DataTables, DHTMLX, AG Grid).

In the third year, I switched to a newly founded department for developing internal products which were distributed to customers by related departments.

  • For half a year I worked on sales related dashboard application which allowed evaluation and forecast of sales opportunities. The Data was fetched via a REST API. Features included an SVG-based slider visualization, activation of an automatic or manual process and a version history among others. This project was implemented with Vue.js.
  • A smaller project used XState instead of a handmade state management pattern. We also built internal tools with Powershell.

Study Projects (Master Cognitive Science)

In the Cognitive Science Master's program, I worked on machine learning and web projects.

  • A science tweet predictor application tried with machine learning algorithms to predict whether a given input text is likely to go viral or not. The algorithms are applied with Scikit-learn (Sklearn) in Python scripts. Accompanying shell scripts run a preprocessing and training pipeline. The code and a project report can be found in this GitHub repository.
  • After one year we took over a study project for another year. Escapeling is Telegram chat bot written in Python that allows students to practice English in a group of 3 by playing language practice tasks embedded in a spaceship escape story. Escapeling Website.
    The Escapeling Lobby was developed in a sub-group of three to offer a platform for finding people to play the game with. It is built with vanilla TypeScript, XState and Socket.io. I hosted it on Heroku.
  • Further projects (or homework assignments) included doing statistics and data analysis in R, plotting with various Python libraries (Matplotlib, Seaborn...) and next-word prediction (language models) with Python and the deep learning library PyTorch (Natural Language Processing). I also looked into the math of neural networks and touched Tensorflow briefly.
  • Two Unity (C#) game projects: Shark game: Control a Shark to catch fish swarms and collect treasure chests. In Lingotown you practice a language by having a dialogue with virtual characters in a bilingual split-view.
  • The Cognitive Science Course Recommender was originally created as a university course project: see Hobby Projects > course-recommender
  • My master thesis project uses HTML, CSS as well as SvelteKit and the libraries XState (for state management) and Cytoscape.js (for visualization). Each selected concept of a "mindmap" has a unique URL route and is rendered server-side, so search engines could theoretically list individual pages. Through SvelteKit, after a page is first loaded, subsequently opened pages are dynamically replaced with client-side JS so that navigation feels fluid and like a single-page application. Text content is written as Markdown files and converted to HTML.

Hobby Projects

  • Mobile party game app (Android) with 50.000+ downloads. I created 90% of the vector graphics (with Affinity Designer – an Illustrator clone). I have got a superficial look into Android development and debugged on (virtual) devices. I also toyed with Flutter when it was pre version 1.0 (late 2019).
  • In the Cognitive Science Course Recommender a user can select uni module preferences and get the most relevant courses recommended in an interactive table. The recommended courses can be further filtered by the user. The data is scraped from an official Uni website with Python and Node.js and preprocessed. The web server (Flask) is written in Python serves the Vue.js (SPA) client and offers a REST API. The application is deployed on Heroku as a monorepo.
  • This website is built with SvelteKit. The content of the blog is written in markdown and hosted on GitHub processed with Node.js code. The markdown files are fetched from GitHub's REST API (which requires configuring a Personal Access Token) and converted from markdown to HTML during a built process or on-demand (the latter for bilingual routes). The whole website still works when JavaScript is disabled.
  • Did some minor things with a Raspberry Pi and Arduino.
  • I have a track record of answering answers about JavaScript, TypeScript, Vue.js, Node.js and Python on Stack Overflow.
  • Some other small experiments and tryout projects on GitHub, Codepen or JsFiddle