I'm Felix Mayer, a passionate software developer, born in 1998 and living in Ottobeuren (near Memmingen, Germany). I started programming at an early age and have done it as a time expensive hobby since 2013. I gathered over four years of full-time experience as a professional full-stack developer and still working on personal projects in my spare time.
I love low-level and hardware related technologies and building custom tools and libraries. On the other hand, I also admire high-level concepts like JavaScript or TypeScript. I'm enthusiastic about the genius design of computers and programming languages controlling their execution order. That's why I built computers with integrated circuits and Redstone in Minecraft. Furthermore, I wrote a little programming language with a cross-compiler into web assembly.
I must be able to understand, maintain, customize and extend the code I engineer, so I'm not a big fan of external dependencies. Because of this, I often write my very own libraries and helpers, which get the job done well. In my experience, this is the best and fastest way to achieve this goal. This page is a neat example of this attitude. I didn't use any external libraries for graphics, styling or frameworks. If you find a bug, I'll be able to fix it. ;)
Besides my speaking and typing abilities in both English and German, I also can write languages a computer is capable of understanding.
I only had the pleasure to use the AVR Instruction Set while working on a professional project, but I quite liked it. Before that, I'd never written any assembly instructions. But after a few weeks, I was really into it. It's perfect for low-level and internet of things related edge computers. If you need to be in control of every bit, it's precisely the right choice.
I know enough about these languages that I can write programs in them with ease. Not many languages beat their performance. That's the reason I used them both for private and work-related projects. Besides that, I prefer C# because it's easier to develop and maintain.
I used C# for both professional and private projects alike. I've taken a deep dive into the language throughout the last seven years. Through the help of decompiles, I also gathered a good understanding of some inner workings of built-in libraries. I began with version 6.0 of the language and went with time to the current C# 10 standard. I'm feeling very confident using it not only for small but also for large scale projects. That's why it's my go-to language for many tasks.
Even though these aren't my favourite languages, I'm sure I've got a pretty solid familiarity. I think they are sometimes unnecessary complicated, but I know how to get them right. I worked both in private and in a professional environment with them.
Nowadays, I'm not up to date with the latest feature of the language, but I've got a solid base. It was my gateway into object-oriented programming and my career. But after I discovered C#, I'm only using it rarely. I've still got my Minecraft server and am writing my plugins in it.
I wouldn't call myself a Python developer. Over the last few years, I used it from time to time for small programs. I'm sure I can get comfortable with it after a few more days of reading into it.
I appreciate the concepts and technologies surrounding it. I'm pretty confident in using and optimizing queries to get precisely the data I need at an optimal speed. I think SQL is an excellent tool. I used it not only professionally but also in many private programs. Though I nowadays believe Mongo DB is predominantly better.
TypeScript is currently my favourite programming language of them all. After using JavaScript private and professionally for many years and teaching friends programming with it, I switched to TypeScript after a good friend recommended it. Now I wouldn't like to switch back. It's a strongly typed language that compiles into JavaScript. That's why it's perfect for big web projects. A problem I see with this language is that it looks like another C language when it isn't. It's a dynamic scripting language with fluid type conversions.
I like programming languages and their concepts, so I try and learn a lot of them. To name a few: Bash, Brainfuck, Elm, GLSL, Haskell, PHP, PowerShell, VBA, WebAssembly, Windows Batch, etc. I wrote at least some programs in each of the listed languages, but I wouldn't say I know them well. I used PHP as an example for a few projects, but I was never stuck on it.
On the other hand, Elm is a language I'm currently learning. It's a functional language with many beautiful features, like the goal of no runtime exceptions or side effects. Maybe I'll never use it in any production environment, but I can learn a lot from its design.
I'll try to stay open-minded toward new ways of coding. In most cases, we don't need to reinvent the wheel. There are many field-proven technologies, but we can still enhance others.
There isn't any use in languages if you can't communicate with others. I enjoy sharing concepts and ideas with friends, colleagues and other people. Most of the time, both sides benefit from it.
I prefer working in small-sized teams to get a more versatile picture of the problem and the possible solutions. In some way or form, I think my job is thinking differently. That's why the views of other people can benefit this whole process.
I'm burning to share new knowledge I gathered and when I'm receiving it. That's why I frequently also taught many people different kinds of programming.
My parents gave me my first PC while I was in Kindergarten, and since then, I've been hooked and interested in the inner workings of computers. It didn't take long until I unscrewed it and took it apart, but after my third computer, it also worked after I reassembled it. :) I don't know how often I (re-) installed Windows 98 on it, but it was every few months.
I taught myself programming, in the beginning with simple Windows Batch scripts and later with AutoIt. When I was 13 years old, I started playing Minecraft a lot. I hosted my servers and started learning Java. I used Java for custom plugins to manage my server and add features for the players there. That was my gateway into object-oriented programming. I learned the concepts surrounding it and how I could use it.
I finished secondary school and began an apprenticeship as an IT specialist for application development in 2015. During my first year there, I started working for over four years on a big project for managing vehicle keys. It was an investment of over 700.000€ in hardware alone. It has been extended and maintained since 2017 and is running pretty stable. I made most of the decisions and developed, for example, a custom bus communication protocol between the boxes used for storing the vehicle keys. Wrote the firmware on them and created the schematic for the PCBs. The system uses ASP.NET Framework as a centralized Server, Windows touch clients for user input, a background service for connecting the boxes, a fingerprint reader and a vehicle key reader with the server. For data storage, I used Microsoft SQL, Mongo DB and a self-made automatic in-memory caching system witch creates indexes on every tuple value. This way, it runs extremely fast and has no problem keeping up with hundreds of thousands of in-memory queries per second.
I designed and developed the whole system from the ground up. My colleagues and I put it up and rolled it out in our multiple branches. After that, we trained our employees. With this project, I experienced the whole process of designing, building, expanding and maintaining a more or less complex software project witch also involves custom made hardware. I can do nothing but thank my colleagues and employer for this great work and for the chance I could grow.
Looking back, I would do a few things differently. But I didn't know it better at that time. I completed my current degree in computer science as a Computer Science Expert in the subject area of Application Development there.
I quit my job as a full-stack developer in 2019 to go back to school and get high school graduation. Currently, I'm studying Computer Science at the university of applied science in Kempten. But in my semester breaks, I get back to my old colleagues and employer to improve my project and earn some money.
I'm looking with curiosity into the future and trying to grow my skillset until then. :)
As I stated earlier: I love programming! I do it a lot in my spare time, but it isn't the only thing I spend my time on.
I've got asked a lot by friends and family if I could help them with programming. They'll send me their code with bugs, and I'll try to find and explain why it isn't working. Or they describe some problem they are trying to solve, and I'll try my best to help them.
But my favourite thing is when we meet up in person or online and I explain to them some basics with a graphical example. Sometimes it's in the form of a small game like tic-tac-toe or a platformer. Other times it's an animation/simulation with JavaScript, like the one in the background of this page. I think the best way is to learn by doing/playing, and often the concepts of a game are somewhat simple. This way, both sides can expand the scope with their ideas, and in the end, there is something impressive. And best of all, everyone learns something new.
I'm not in a relationship with my soldering iron, but there is always something exciting surrounding it. ;)
When I had my 3d printer, auto bed levelling wasn't a widespread feature, so I added it. I modelled and printed many things to improve its capabilities. One week I also wrote a small program converting images into g-code for plotting with a pen, attached to the head with cable ties. I discovered a lot with this machine, which hadn't any real-world use for me.
I built and modified some sensors and actors for home automation. I've used a lot of integrated circuits and breadboards for making impractical wirings. But there's a lot to learn about their inner workings and electronics.
A current project is a smart mirror consisting of a display, a one-sided mirror, a raspberry pi and some sensors. It looks like a regular mirror, but you can see through the surface and read text from the display underneath. That way, I can display information like the current date and time, weather data and events. With the help of an infrared frame, the glass surface can recognize touch inputs, and I can control other devices. There is also motion- and ambient light sensors on it, so it knows when you're near it.
In my early teens, I've spent a lot of time with 3d motion-, material- and light design with Cinema 4D. On top of that, I also liked video editing and VFX. Currently, I'm not that interested anymore, but I like the concepts and technics surrounding it. So I bought a small mirrorless camera a few years ago, and since then, photography has become one of my hobbies.
It helps me to get a balance between sitting activities and travelling. I enjoy going on a walk with dogs or hiking in the Alps. And most of the time, I've got my camera near me.
I've got a few, mainly virtual, servers in my home. I tried unraid in 2018, and now I've got 36 CPU cores (72 threads), 160 GB RAM and over 26 TB of raw storage running 24/7. I fully configured a pfSense firewall with VLANs, NAT and DMZ. Got a traffic proxy for requests from the outside and can host most of the services I need on a daily base at home. This site also is running on one of my servers. :)
This way, I learned a lot about networking, virtualization and hosting.
At the beginning of 2021, I discovered Home Assistant and smart-home. When I switch on my projector, the lighting dims, and the sound system powers on automatically. I know how much water there is in the garden pond and how fast it's flowing through the garden hose. If I want to fill It up, the water stops without any manual interaction after the pond has reached the desired level. I can unlock the door with my phone. Mounted motion sensors in the hallways and made the lights controllable.
Everything runs locally on my server, and I'm in complete control. I've got an outdoor night vision cam with local object detection and face recognition set up, and everything runs in real-time.
I disassembled an old body scale and mounted the sensors underneath the feet of my bed. My bed is now a scale, and my house knows when I, my partner or both lay in bed. When we are going to sleep, the heating regulates down on its own, and the alarm clock in the morning only stops after leaving it.
I don't need a voice assistant or cloud application, nor is it required. Everything is in one app.
Do you want to get in touch with me?
Don't hesitate to write an E-Mail to:
info@FelixMayer.info
.
You can also check out GitHub (yerTools).
Here is kind of an imprint to be legally on the right sight:
Felix Mayer
Obere Str. 17
87724 Ottobeuren
contact@FelixMayer.info
+49 1525 9018334
I'm looking forward to hearing from you. :)