I am a passionate software developer. Ever since I've had access to technologies – be it software or circuit boards – I've loved tinkering with it, tearing it apart and figuring out how it works.
I love every aspect of software development: writing tests to get those last 2% out of my coverage, tracking down that nasty bug, writing documentation in order to introduce others to my work, learning new technologies and of course seeing newly implemented features running for the first time.
In my freetime I like working on personal projects together with others featuring interesting libraries or frameworks and challenging me in new ways. I am most passionate about game development which challenges my creativity in many different ways.
Thanks to continuously operating servers for many years I know much about the world of Linux and open source. Running mail servers, web sites and colaboration platforms on them has given me a solid foundation in providing stable and reliable services. For easy deployment to the cloud I am familiar with Docker, for instrumenting servers I tend to use Ansible.
In my three years of work and study at the RWTH Aachen and the FH Aachen I acquired well-founded knowledge in high performance computing on super computers, experimental hardware and modern embedded and desktop systems.
Writing open source software for years I am familiar with collaborating with other software developers using version control systems like git or SVN. I am also used to agile methodologies like Scrum or Test Driven Development and techniques like continuous integration.
Spoken Languages: German (native tongue), English (fluid)
Programming Languages: Rust, C/C++, Java, Javascript, Typescript, Python, SQL, Cypher, PHP, Kotlin
Popular Frameworks: Node.js, Express, Boost, Redux, React, Android, Flask, QT
Other Technologies: OpenMP, MPI, OpenCL, OpenGL, Neo4J
Markup Languages: HTML5, Modern CSS, Less
Version Control Systems: Git, SVN
I consider myself capable of acquiring new skills fast, be it new programming languages, frameworks or tools. I am also used to teaching others my knowledge by giving presentations, guiding them individually or writing tutorials.
By writing clean and well-documented code and keeping a tidy version history I produce easy to read and easy to maintain code.
I am familiar with creating sufficiently abstracted and modular software in object-oriented programming languages as well as writing highly optimized and paralellized codes in languages like C or Fortran. And equally important: I am able to distinguish which of both is neccessary in any given situation.
I was born in Stade, Germany.
I visited the Halepaghen-Schule in Buxtehude and received my Abitur (German general qualification for university entrance).
After three years of studies I finished my bachelor degree in Scientific Programming at the FH Aachen (University of Applied Sciences).
I wrote my bachelor thesis about the evaluation of high-level programming models on the experimental hardware "Keystone II" by Texas Instruments in cooperation with the department for High Performance Computing at the RWTH Aachen.
Since quitting my job at SinnerSchrader I had the chance to work at many interesting and challenging projects from all over the world.
While working as a developer at SinnerSchrader I learned how to work in teams of >50 people and acquired many skills with modern Frontend technologies as well as knowledge about agile methodologies.
Together with my studies at the FH Aachen (University of Applied Sciences) I finished my vocational training as a Mathematical and Technical Software Developer at the department for High Performance Computing at the RWTH Aachen in Germany.
During my internship at Vattenfall Europe Information Services GmbH I was able to get valuable insights on working at a datacenter.
Most contracts for my professional work contain an NDA, so the following is a list of older and newer personal projects which I develop and maintain in my freetime.
A library written in Typescript which can be used to upload huge files (even hundrets of Gigabytes) to any server. The library is abstract enough to be able to work with (probably) any backend implementation. It works by chunking the files using the HTML5 File Api without loading the whole file into the memory at once. It generates SHA1 checksums of the chunks and then transmits the list of chunks as well as the content to the backend. It can be used for resumable and fail-safe uploading.
This is a small casual game written in pure Javascript utilizing HTML5 features such as canvas regions.
An online multiplayer version of the boardgame "Go" using websockets and a backend written in node.js.
A collaborative online version of the popular game "Crossword" written in pure Javascript and Java right after the release of the first browser supporting websockets using my own implementation of websockets for Java before any other library was available for this language.
This game was created in 48 hours by a team of 5 during a coding contest using C++14. A web version is available compiled using Emscripten.
Using Leaflet this software provides an interactive map for the game "7 Days To Die" on which multiple people can create markers and see other players live.
With node.js, express, many bindings to native C/C++ libraries and node-mumble I created a bot for the communication platform "Mumble" able to record, store and play back audio from users, talk to the users using multiple text-to-speech modules and understand the users using Pocketsphinx for speech-recognition. The bot is controlled by voice commands or a webinterface in realtime.
A collaboration and e-learning platform for exchanging knowledge, homework and old exams handcrafted in PHP for students of the Scientific Programming university course at the FH Aachen.
Using UDP holepunching with WebRTC in the browser this software is capable of transmitting files between two browsers peer to peer.
Copyright © 2017 by Frederick Gnodtke