Hi, I'm Stefan
My skills and experience
Over the years, I have gained extensive experience in multiple fields. The tabs below show a lot of my skills and experience. I am currently available and willing to work in all of the fields detailed below. In particular, if you need a website made or tutoring for school, just contact me!
Electronics has been my main hobby for the past few years. I have devoted many hours and much energy to learn and build as much as I can. I have studied multiple subfields of electrical engineering. My knowledge and experience are listed below:
Experiences:
- RT-Thread 2023 Global Tech Conference talk
- Presented a talk on Supplementing and Interfacing Legacy Embedded Systems with RT-Thread Enabled Microcontrollers in June 2023 where I discussed revitalizing legacy embedded systems with the RT-Thread Real-time Operating System. Built a demo where I interfaced an old PLC with a modern CH32 RISC-V microcontroller running RT-Thread.
- RISC-V Design Challenge
- Built a musical synthesizer where I interfaced an RT-Thread RTOS-powered CH32 RISC-V microcontroller with a vintage Yamaha musical synthesizer IC. Created a complex GUI from scratch and programmed the microcontroller to allow the user’s full control over the musical synthesis, enabling the creation of very unique sounds and an engaging user experience.
- CEESA High School Robotics Competition
- Partook in my high school’s robotics team for 4 years. I was the lead programmer, and my responsibilities were to program the robot in Java (2 years) and C++ with an RTOS (2 years) while teaching inexperienced members programming. Organized and taught a school-endorsed Python bootcamp for 2 months. Won an award in 2023 and an award in 2020.
- RT-Thread IoT Challenge
- Built an ultraviolet IoT surface cleaner with mesh capabilities and low-power sleep. Used the Raspberry Pi Pico W and ESP32 microcontrollers to ensure that most people could construct it. Implemented multiple safety features. Wrote project documentation which detailed the biological effects and the safety of the project, while highlighting its low cost and significantly higher efficiency than traditional ultraviolet surface cleaners. Used physics and math to calculate optimal illumination times for different desired effects.
Microcontrollers I have worked with (links are projects):
- Raspberry Pi Pico
- STM32
- CH32 RISC-V
- AVR (with and without Arduino)
- PIC12, PIC16 and PIC18
- 8051
- Z80
Programs I have worked with:
- EasyEDA PCB Designer
- MPLAB X
- Arduino IDE
- STM32CubeIDE
- MounRiver Studio
- RT-Thread Studio
- WinCUPL
- Visual Studio Code
Featured projects:
- Pico Midician
- Developed and programmed a dual-channel USB to MIDI interface for musical applications. The device is user-customizable and complies with the MIDI standard for both the physical layer and the communication protocol. The device uses an RP2040 ARM microcontroller and Python programming language. The project is published on GitHub and documented in a blog post.
- DOS-Synth
- As part of the RISC-V Design Challenge, I designed and implemented a musical synthesizer using a RISC-V microcontroller and an FM synthesizer IC. I programmed the microcontroller in C to run the RT-Thread RTOS and drive a color LCD display. I developed a multi-menu user interface that enabled full control over the synthesizer parameters. I designed and shared a PCB with the synthesizer. I documented the project in a 5000+ word project report and published it on the website Hackster.io. This project enhanced my skills in interfacing modern and old hardware, embedded graphical user interfaces, and real-time operating systems.
- PLC Reverse Engineering
- I performed reverse engineering and documentation of an old custom factory PLC. I analyzed the design choices and their rationale and wrote a blog post about them. I reused the PLC boards for a live demonstration of safe, secure industrial design and industrial interfaces at the RT-Thread 2023 Global Tech Conference talk. This project improved my knowledge of reverse engineering and industrial systems.
- VGA signal generator
- Designed and built a VGA video test pattern generator. Built with TTL logic ICs and PLDs. I designed a PCB for the test pattern generator. I learned high-speed digital design, high-frequency design considerations and the CUPL PLD programming language.
- PIC USB devices
- Designed and built multiple USB devices (MIDI device, UART transceiver, EEPROM programmer, JTAG programmer) using the PIC16F1459 and PIC18F4550 microcontrollers. Studied the USB standard in depth and ensured each device conformed to them.
- 8051 and Z80 retro computers
- Built retro computers using the 8051 microcontroller and later Z80 microprocessor. Learned about bus systems, assembly programming, peripheral ICs, memory banking and interrupts. Designed circuit boards for the computers and interfaced them with different outside systems such as displays and desktop computers.
- PIC Thermometer
- Designed an advanced thermometer that utilizes multiple analog design techniques to achieve high precision, showcasing technical proficiency and attention to detail.
- Leveraged the advanced analog features of the PIC16F1705 microcontroller to create a sophisticated and effective solution.
- Demonstrated expertise in accurate analog measurement, error calculation, and the use of floating point numbers in embedded devices.
- FM Synthesizer Boards
- Designed circuits for Yamaha FM synthesizer ICs (YM2151, YM2612, YM3812, YM3438), demonstrating proficiency in analog audio design techniques and interface design for multiple logic IO levels.
- Overcame challenges posed by incomplete documentation to successfully utilize ICs in circuit design.
- Programmed microcontrollers with MIDI interfaces to create complete synthesizers, showcasing exceptional technical proficiency and problem-solving skills.
- UV-C IoT surface cleaner
- Conceptualized, designed, and built a surface cleaner that utilizes a powerful UV-C LED to effectively disinfect surfaces, ensuring a safe and hygienic environment.
- Developed a sophisticated WiFi server using advanced microcontroller technologies, including the ESP32 and Raspberry Pi Pico, to control multiple client nodes, each equipped with its own UV-C LED.
- Engineered the system to be scalable and adaptable, making it ideal for use in larger areas such as libraries, where multiple individuals use the same surfaces at different times.
I have also shared some of my projects on websites like Hackster.io and PCBWay Community.
So, if you have a project you want to collaborate with, or need help with something, just contact me!
Programming has been the longest hobby I have ever had. I love programming because it has allowed me to manipulate the world around me in unique ways, which is why I have always strived to have a diverse programming skill set. From embedded systems to web scraping and video games, I have tried and built anything I could. Combined with my constant effort to learn as much as I can, this has led me to learn the following programming languages:
- C/C++
- C#
- Python
- GDScript
- MATLAB (with GUI designer)
- BASIC (VBA, TI-BASIC)
- Java
- Javascript
- Z80, x86, AVR, PIC Assembly
- CUPL
As well as the following templating languages:
- HTML
- CSS (with the Bootstrap library)
- LaTeX
- Markdown
My main IDEs are Visual Studio and Visual Studio Code.
I am also very interested in automation, which has led me to learn to automate the main three office suites (Microsoft Office, Google Suite, LibreOffice). To this end, I have built multiple applications to manage different parts of my life in these applications, particularly spreadsheet ones. I have also learned Microsoft Power Automate, which I have extensively used to automatically call different APIs and have built a custom dashboard for myself in Microsoft Power BI.
Experience:
- GNOME Community Engagement Challenge
- Participated in the 2021 GNOME Community Engagement Challenge where I was a Phase One Winner and received a 1000$ prize. Designed and realized a project meant to teach beginners coding through building their own video games in the Godot Game Engine in the Python-like programming language GDScript. Wrote a small book as a guide for the project, whose layout I designed in Adobe InDesign.
- School 2020 Python Bootcamp
- Personally organized and taught a Python course aimed at high school students of all ages. Received official endorsement from the school and developed a curriculum where I taught the basics of Python syntax, data structures, functions, loops, and modules using interactive lectures and exercises. I personally guided struggling students and helped everyone build a capstone project.
Projects:
- Statistical test suite
- Developed and implemented a statistical test suite in C++ for a school final project. The program evaluates the randomness of random number data sets using six NIST standard tests. The program features a command line UI for inputting and outputting results and comparing multiple data sets. The project involved applying complex mathematical concepts and processing large quantities of raw data in C++.
- File parsing and web scraping scripts
- Wrote dozens of file parsing and web scraping scripts in Python, Javascript, Power Automate and C#. Learned calling APIs, advanced string manipulation techniques and managing large strings of data. Used the Godot Game Engine, Microsoft Power BI or the Python Tkinter library to make graphical user interfaces (GUIs) for the data.
- ProgramKitsForEveryone
- A project developed during my participation in the GNOME Community Engagement Challenge aimed to teach programming to children. Designed as a choose-your-own-path teaching tool to learn programming through video games. Took online courses on curriculum design and teaching to increase the teaching effectiveness of the project. The programming language used and taught was GDScript, which is used in the Godot Game Engine and is similar to Python.
- Restorani
- Built a website for reserving tables at restaurants for the startup of a few friends. Programmed the backend in Python Django with a MariaDB database and the frontend in HTML + Bootstrap CSS. Built a Javascript tool with the Three.js library for customers to physically see the layout of the restaurant and choose a table. Hosted the website on an AWS Lightsail instance. Learned to build full-stack web apps, complex program design and advanced UI/UX. Still under development.
- Math IA
- Wrote a program for a final high school math project in Java using the Processing framework which simulated light raycasting with complex shapes. Learned about how to implement mathematical concepts and how to simulate visual environments in code.
Since successfully installing Ubuntu Server on an old Pentium 4 desktop, I have been passionate about Linux and servers. My experience ranges from hosting a Minecraft game server for my friends to managing six different applications running on Docker with daily off-site backups. To make my website truly my own, I have implemented a firewall, reverse proxy, and domain. The firewall selectively blocks ports to enable only certain IPs or IP ranges to access different parts of the website. The reverse proxy enables multiple websites to have their own subdomains, and when combined with the firewall, enables IP range blocking. This website runs on a Wordpress instance running on Docker on an ARM Linux instance. I believe that this website is a testament to my ability to host websites on a Linux server instance.
In addition to hosting websites, I have extensive knowledge of the hardware side of working with networks, servers, and computers. I have installed servers and operating systems (Windows, Linux, and even MacOS) on multiple real hardware devices. I have built my own server computers and worked on upgrading and repairing normal computers as a side job.
Finally, on the network side, I have set up customized and advanced networking setups in each place that I have lived in. In my childhood home, I set up an advanced network with three network switches, two print servers, and a security network with multiple cameras. The network uses a Raspberry Pi 4 as a PiHole advertisement DNS black hole server while also serving as a network-attached storage (NAS) with backups enabled. Due to the size of the house, I set up a WiFi mesh with multiple nodes, and in total, the network served around 40 devices at its peak without any issues.
Technologies I have used:
- Docker
- Linux (mainly Ubuntu and Debian)
- SSH
- FTP
- SMB
- Wordpress
Teaching is one of my main passions in life. I enjoy helping others learn new things and sharing my knowledge and experience with them. I have created various online platforms to showcase my educational projects, such as my blog, my wiki, and my YouTube channel. I also document and justify my choices and processes in most of my projects, so that others can learn from them.
One of the ways I express my passion for teaching is by making educational YouTube videos on tech-related topics. I have produced four long-form videos so far, covering programming and electronics. I carefully plan and script my videos, aiming to make them engaging and informative. I also apply educational principles and research to enhance the effectiveness of my content.
In terms of documentation, I have written documentation for many of my projects, as well as contributed to multiple documentation projects on GitHub, such as RT-Thread and the official Microsoft C# documentation. I have also written an article for Hetzner on installing the Open edX software on Docker on Linux. I have received recognition from the RT-Thread project for my extensive rewrites of their documentation. I post some of my project logs on other websites too, such as Hackster.io. Apart from creating documentation, I have also translated and redesigned documentation which is damaged, incomplete or in another language, such as my translation of an unknown (in the West) Yamaha music chip (YM64Axx).
For my personal blog, I have been writing articles for almost four years now. Most of my articles are on technical/scientific topics and include detailed steps and thought processes. Others are on creative topics, such as analyses of media. I have also written small research projects which can be found at the bottom of the Blog Homepage.
I value the importance of organization, structure, and appearance in the effective transmission of knowledge. That is why I have mastered multiple design programs that help me achieve this goal. I use the following programs for different purposes:
- Adobe InDesign: to create and publish print and digital media
- Adobe Premiere Pro: to edit and produce high-quality videos
- Adobe Photoshop: to edit and enhance photos and images
- Adobe Illustrator: to create and design vector graphics, such as charts, diagrams, and infographics
I have also developed multiple scripts in Python that assist me in each part of the process, such as:
- Automating tasks and workflows, such as importing and exporting data, applying dynamic filters and effects
- Analyzing and visualizing data, such as creating charts and graphs
In my high school, I was the lead designer of the school newspaper, for which I learned advanced design and typesetting techniques. Over the course of three years, I advanced and developed my design and typesetting skills, which you can see here.
I have experience with various office software applications, such as LibreOffice, Google Suite, and Microsoft Office. I use LibreOffice for personal purposes, as it is a free and open-source alternative to Microsoft Office. I am familiar with its word processor, spreadsheet, presentation, and database programs. I have also used Google Suite and Microsoft Office to collaborate with others on various projects, such as creating documents, slides, forms, and surveys. I can easily switch between different platforms and formats, and I am always eager to learn new skills and tools.
My most extensive knowledge lies in the spreadsheet programs, such as Excel, Google Sheets, and LibreOffice Calc. I can use these applications to perform various tasks, such as:
- Creating, editing, and formatting data tables and charts
- Applying formulas and functions to perform calculations and analysis
- Using conditional formatting, filters, and sorting to highlight and organize data
- Automating tasks using macros (in both VBA and Javascript)
- Importing and exporting data from different sources and formats
- Leveraging APIs with macros to import data from online sources
- Collaborating and sharing data with others using cloud-based services
I have experience with Microsoft Power BI and Microsoft Power Automate, two powerful tools that enable me to create, automate, and share data-driven insights. I use Power BI to connect to various data sources, transform and model data, and design interactive reports and dashboards. I use Power Automate to create workflows that trigger actions based on data changes, such as sending notifications, updating data sources, or refreshing datasets. Using Microsoft Power BI I have created a personal dashboard which integrates data from multiple APIs from my social media and displays them on one screen.
This website
This website is meant to be a portfolio of my work, a home for my blog and a list of the places where you can contact me or find my work. At the moment, I am available and willing to work on all of the topics mentioned above, so if you need any of those services, just contact me! The header above has links to all of the important pages on my website.
The StefWiki is an extension of this website which contains knowledge written in a more impersonal and formal manner. It is a project through which I aim to share the knowledge I have gathered over the years. The information there is mostly focused around technology and science.
Both the blog and the Wiki are open to guest articles, so if you want to write one, you can also contact me!