02Projects
ASS - Advanced Search System
This is a Rust-based search tool that runs client-side using WebAssembly. This tool keeps it simple yet efficient with its use of Trie and Hash table data structures, ensuring speedy autocomplete suggestions and search result retrievals.
To maintain its reliability, I've included a small test suite. This suite covers various scenarios, ensuring that the tool performs consistently across different situations. So, while it may be small in size, it's functional.
Feel free to visit the repository or play around with the live demo. Your feedback or contributions are always welcome!
03Experience
![Computer](/images/computer.webp)
JavaScript
JavaScript was the first language I learned and is still one of my favorites. Even though it has its quirks, I like the ease of use aspect and the way I can write working code without thinking (and then refactor later ๐ ). It's probably the language I use most for my day-to-day work, making elements a bit more interactive ๐.
Some of the more envolved Projects I've done are a simple web scraper using Puppeteer, a interface for data visualization and a image compression tool.
![Pineapple](pineapple.webp)
html/css/scss
HTML, CSS, and SCSS are coding essentials. Despite occasional complexities, they became second nature to me (even though my styles are often not that well organized ๐ฅด). From crafting responsive layouts to interactive UI's, they form the backbone of my front-end development toolkit.
I also have some experience with tailwind using the Skeleton a UI toolkit for Svelte.
![Apple](apple.webp)
PHP
PHP was the second language I learned, and it remains a true love hate relationship ๐ซ . I find it easy to use and somewhat versatile. But it can also be quite unappealing to me, and I think I would not use it if it wasn't required for my current work, because there are other tools that do the same job but better.
I still try my best to understand its nuance and have already built a small CMS using PHP (mainly for learning purposes ๐).
![Blueberry](blueberry.webp)
Sveltekit
SvelteKit is a web framework that has won me over (in parts because I'm pretty basic and let my opinion be influenced by what's popular at the time ๐). The simplicity of Svelte's syntax makes development a joy, allowing me to focus more on crafting features than dealing with complex configurations.
I also tried some other popular frameworks like React and they are also pretty good. It's hard to describe, but I think Svelte is more fun. The whole web-dev thing is more like a hobby for me and that's why I stuck with Svelte โค๏ธ, even though React or Angular are a bit more established.
I used Sveltekit for the web scraper UI, the data visualization UI, for this Portfolio and a couple smaller projects.
![Rambutan](rambutan.webp)
SQL
SQL, particularly SQLite, has defently a place in my toolkit. Its simplicity and directness makes it my favorite. While I have hands-on experience managing some MySQL and PostgreSQL databases, plain SQLite remains unmatched in my workflow ๐ช.
Beyond executing queries, I appreciate the importance of database normalization concepts in crafting efficient and scalable data structures ๐. Whether it's optimizing table structures or ensuring data integrity, my conceptual knowledge of normalization principles comes into play when designing robust database schemas and planing database-driven websites.
I also worked a bit with noSQL databases like mongo, but dont really have a opinion at this point.
![Plum](plum.webp)
Node
Node.js has become the backbone of my backend development ๐๏ธ, serving as my go-to runtime for nearly all of my projects. Whether powering Svelte applications or utilizing Express for RESTful APIs, Node.js provides an easy and robust foundation.
What I find compelling about Node.js is that I already know JavaScript, making it well-suited for either quick conceptual work or full-fledged applications. The whole ecosystem of npm packages streamlines development and allows me to focus on building features (I'm aware that having a lot of dependencies is often not optimal ๐ซ). Node.js remains an integral part of my stack, offering the flexibility to tackle a wide range of backend challenges.
![Cucumber](cucumber.webp)
Rust
Rust ๐ฆ is a language that captured my interest and has become a clear favorite in my programming journey. Its unique blend of performance, safety, and expressive syntax (that was very hard to understand at first ๐คฏ) makes it worth to learn and work with. Unlike some other languages, Rust doesn't impose unnecessary abstractions but still forces me to write efficient and robust code.
I have a long way to go, but I'm really proud of the things I was already able to achieve. The projects I used Rust for are coding challenges for a linear algebra course ๐งฎ, a rewrite of the web scraper I mentioned in the JavaScript part and some simple wasm scripts.
![Pomegrade](pomegrade.webp)
Docker
Docker has really changed the way I host simple web servers , manage my Minecraft server ๐ฎ, deploy home automation applications like ioBroker or Home Assistant and create isolated test environments. The simplicity and efficiency of the Docker CLI has made these tasks not only manageable but also highly streamlined.
Whether it's spinning up a web server or home automation setups, Docker's containerization brings a level of portability and ease of use that simplifies my workflow. The ability to define environments as code and quickly reproduce them makes testing and deployment a seamless process.
It's important to underline the fact that I can only speak from a limited private experience ๐ , not in a professional environment.
![Blackberrie](blackberrie.webp)
Linux (cli)
Linux ๐ง, particularly through Ubuntu, serves as the main operating system I use for my servers, providing a reliable and well established environment for hosting a variety of applications. Whether deploying Node.js applications managed by PM2, utilizing Caddy as a reverse proxy and for SSL certification, or configuring Nginx for simple HTML file serving and load balancing, the Linux command line is my preferred environment ๐ฅ๏ธ for system management.
![Mint](mint.webp)
.NET core/c#
I used .NET Core and C# while writing a MacroDeck add-on. The concise syntax of C# was pretty enjoyable. Although I didn't finish the add-on, the limited experience I have gave me a solid first impression and I'm looking forward to getting more experience with C# ๐ฏ.
![Dragonfruit](dragonfruit.webp)
other...
From C to C++ or Java, exploring other languages just briefly broadened my understanding ๐ก of how and why things are the way that they are. Diving into more hardware-oriented stuff like the Turing Complete puzzel game helped me to get some perspective, highlighting the fact that you can find interesting things all over if you look for them ๐.
Getting into this field was really important for my personal development. Even though a lot of the things I do are not at a professional level (and probably never will be ๐ถโ๐ซ๏ธ), I still find joy in them and I hope that only grows with a more fundamental understanding.
![Potato](potato.webp)
04Resources
![Camera](camera.webp)
Books
- The Rust Programming Language - Steve Klabnik and Carol Nichols
- A Common-Sense Guide to Data Structures and Algorithms - Jay Wengrow
- Clean Code - Robert C. Martin
- The Clean Coder - Robert C. Martin
- Clean Architecture - Robert C. Martin
Courses
- Complete linear algebra: theory and implementation in code
- JavaScript: Understanding ES6 and Beyond - Anthony Alicea
- JavaScript: Understanding the Weird Parts - Anthony Alicea
- PHP-Bootcamp: Vom Anfรคnger zum PHP-Entwickler - Jannis Seeman
- Der ultimative HTML5 und CSS3 Komplettkurs - Ruben Winkler
YouTube(rs)
- suckerpinch
- Sebastian Lague
- Low Level Learning
- 3Blue1Brown
- Let's Get Rusty
- Fireship
Other...
- trying stuff and seeing what works (about 51% of the time)
- rustlings
- code challenges
- reading blogposts, documentation or paper summarys
- Turing Complete (puzzel game)
- Workshops (at work)
05About me
Who am I?Tim Raphael
Hey, I'm Tim Raphael, a web enthusiast living in Germany. I've got a fascination for all things tech-related - I can spend hours tweaking stuff just for the fun of it. I can't help but wonder how and why the things around me work.
In addition to my technical pursuits, I find solace in my photography which allows me to convey compelling narratives or just capture a moment if find special. I always embrace the opportunity to explore and share unique perspectives.
I also view physical activity as a vital component of a balanced lifestyle. I appreciate the benefits of maintaining both physical fitness and a somewhat stable state of mental well-being.
Feel free to reach out! I'm always open to connecting, just send me a DM. Looking forward to hearing from you!
![Duck](duck.webp)