- 👋 Hi, I’m @Laifsyn
- 👀 I’m interested in ... learning new things and Rust
- 🌱 I’m currently learning ... on how to write an UI and backend
- 💞️ I’m looking to collaborate on ... Interesting projects
- 📫 How to reach me ... GitHub (I guess?)
I found myself enjoying socializing overall. I believe knowing different perspectives can help me to come up with different ideas that wouldn't have been possible with just me alone.
- Table of Contents
- Summary of Experiences (Of varying levels)
- Programming Languages
- Small Personal Projects
All experience has been mostly been obtained through exploratory learning. I still think there's more to learn from actual experts, and still lot's of space to improve from practical experience.
- Programming in General
- Back-End
- DevOps
- CI
- Database
- Writing Documentation
- User Interface
- Data Structures
- Code Architecture and Design
- Languages (With pretty decent level of expertise)
- Rust
- Java
- Scripting Languages in general (Mainly AHKv2)
- Spanish > English > Chinese
I've worked with Java's Swing library on some simple rendering of some tabular-like report data, and simple input components.
I have some knowledge about the nuances between IM-GUIs and RM.
Regarding website frontend, I recognize importance of strategies related to Server Side Rendering (SSR)
or Search Engine Optimization (SEO)
which are important to improve public visibility in search engines.
I have a rough idea what're on how to work with some Rust-based GUI libraries like Dioxus, egui, tauri(App Bundler) as well as templating libraries like Handlebars, and hence I have a somewhat clear idea in what situation each of these tools are more fit to solve a particular issue in the field.
I also dealt with Svelte due to testing projects with tauri. Svelte seems to be a pretty good of a framework, with relatively lean learning curve, and is really loaded with batteries(which is good).
There's a handful of Web Frameworks in Rust. I've researched a bit about each of them, and among them
exists Rocket, Actix-Web as well as Axum, which was built
on top of Hyper
, A Ruby's Rust Variant of Rails called Loco. I currently chose to learn Axum
mainly because of its modularity promises.
A disadvantage of using Axum
that I have considered was the not so straightforward way to generate
type-safe OpenApi documentation. A detail which differs from frameworks that defines endpoints via macros
like Actix
or Salvo-rs which seems to simplify the Docs generation of the functions.
I've first programming as some copy&paste .bat
scripts to spam an ok message in windows back in 2016. By 2018 I got to get a hand on scripting language of AutoHotkey(v1.1) for windows because I was bored and thought I could try to make some scripts to automate small and simple tasks of the time I was using the computer. I still remember how I thought that EnvSet was updating an object's instance field data. Needless to say, all those scripts I've written are an horror of a monolith which a small change upstream was almost guaranteed to break something down in the script's execution.
Rust (First half of 2023 - Present Time)
It's a young(2015) general purpose System's Programming language with a rich type system and an ownership model which can guarantee safe memory management without the need of relying on a Garbage Collection system. In my opinion it overall has made awesome design decisions, something only possible by learning from mistakes that has been done.
I really love LSP. LSP even though not crucial for Rust, however it does make developing really comfortable.
- Closure vs Functions vs Methods
- Design Patterns like
Newtype
,Singleton
,Functional Programming
,Composition
... - Borrow Checker
- How to make sense of documentation in general.
- Writing Markdown
- Tests
- Benchmarks
- Async Programming in General (i.e.
Concurrency
vsParallelism
&Deadlocks
) - Traits Semantics. (Loosely interpretable as Interfaces in Java or C#(?))
The Borrow Checker: Think about "Why you can't a return a pointer to a local variable in C"
,
and you will find out that the Borrow Checking is something we always have been doing, but just embedded at the
Language Level. The reason why I think people find the borrow checker as a nuisance would be because we were
allowed from the start to not need to bother about lifetimes or reference invalidation, or even no guarantees
were in place for pointer aliasing. It was just so "easy" to know when a reference doesn't live long enough
that we didn't "bother" to properly learn about "Borrow Checking" in languages like C
or C++
.
(But to be fair old-time computers weren't really fit to do so many compile-time checks)
Rust
is undoubtedly a complex language, however this arises from its design choices to enforce safety and performance at the language level. I believe this complexity is needed
because it provides powerful guarantees that are hard to achieve with other languages. For example,Rust's ownership model makes me think more deeply about the "responsibilities" of my data. It's no longer "Anyone can be the owner"
but instead "What the owner allows"
.
The learning process can be improved by actively participating at Rust communities to get answers, and even learn from
often fresh ideas that often times would be ignored had you chosen to brute force learn Rust
by yourself.
- File Tagger and a simple File Explorer which displays only relevant data.
- Working with Tauri to build an App (Details deliberately omitted)
- Upgrade your Java version to 21 or higher if you're learning.
- Graphic Interfaces in Java are awful, but at least helps me to understand how to work with callbacks.
- Records are really awesome for Not-mutable objects/structs as well as emulating enums when you use `sealed Interfaces.
- I don't know why it was hard for me to understand the difference between
abstract Class
vsClass
. - Maybe Rust would be more fitted to teach low level Systems Programming Data Structs than Java.
- Circular References mistakes feels like an easy mistake to do in Java.
- I disliked Eclipse's IDE.
- Why so many build tools? (I still can't get to differentiate advantages of Maven vs Gradle)
- Use Intelli's IDE if you're getting started in java.
- IntelliJ's Community Edition (Free version of IntelliJ) exists.
These projects are some small projects I had done. They should be solution for small niche problems, where... chances are, there's way better alternatives.
Simple Summary of projects Source Code into a .md
file AHK
Reads (for now java) source code files and paste it at N-nested Heading into a single .md
file.
The purpose was to be able to copy and paste the rendered html into a word, and have a poor-man tool to navigate
source code with a PDF viewer or Word Document viewer, making use of the headings that get pasted from the .md
file.