Since I decided to start building in public, I think it's time to introduce myself.
I'm Rainier, from the Philippines.
I'm 21 years old.
I don't have a degree.
I'm currently unemployed.
A few months ago, I made a decision that honestly scared me.
I spent all of my savings on a small dev setup, knowing that if I didn't do it, I might never return to the path I left years ago.
I started coding 4 years ago on my phone.
Python was my first language. Then I discovered web development (JavaScript, HTML, CSS). I also explored C, C++ and Bash scripting out of curiosity. I didn't have a mentor, a classroom or a roadmap. Just a small screen, slow internet and a stubborn desire to learn.
I truly believed I could make something out of it.
But like many self-taught developers, it wasn't easy. Life got in the way and I had to stop coding.
Not because I wanted to, because I had to.
Now I'm back.
The tech world has changed a lot. AI is everywhere. News about programmers being replaced, layoffs happening left and right. It would be easy to feel scared and honestly, I am. I know the path ahead won't be easy or clear.
But instead of worrying about the future, I decided to take the risk anyway.
Instead of asking, "What if I fail?", I'm asking, "What if I succeed?"
And if I do fail? That's okay too.
Because even failure will teach me real skills and give me real experience and I'll know I gave it my all, instead of spending my life wondering, "What if I tried?"
It's not too late to try again. It's not too late to start over.
I'm giving the next few years of my life to tech.
You'll either watch me fail or succeed.
I don't have the advantages many others have, no degree, no connections, no safety net.
But I do have something else: resilience, curiosity and the willingness to learn from the ground up.
Right now, I'm building things from scratch to truly understand how everything works, instead of relying on tutorials.
A few weeks ago, I published some of my projects:
DomatorJS, a lightweight JavaScript library for DOM manipulation, event handling with touch gesture support and a simple animation engine built from scratch, inspired by jQuery.
CipherX, a simple cipher tool inspired by AES, used to encrypt and decrypt files with multithreading support, written in Rust.
I believe strong foundations make great developers.
This is me, starting to build in public, sharing what I learn along the way, the struggles, the wins and everything in between.
Whether I fail or succeed, I'll keep moving forward.
To everyone who believes in me and supports my journey, thank you. It truly means more than you know ๐ฅบโค๏ธ
Day 8-12 of Building in Public
The past few days, I decided to pause feature work and focus on learning Rust more deeply. At the same time, I started researching AES-GCM since that's the feature I really want to implement next in CipherX.
Honestly, I got frustrated.
The documents I tried to read are very technical cryptography papers filled with pseudocode and mathematical symbols that I could barely understand. It felt like reading something written for mathematicians, not for programmers especially for someone like me without a computer science degree.
I don't want to rely on AI to write the code for me so I pushed myself to do my own research. And I realized that studying cryptography from these kinds of materials is really hard when you don't yet understand the math language they use.
So I took a pause.
Instead of forcing myself to understand everything at once, I went back to Rust advanced topics: atomics and locks, macros, unsafe Rust and proper error handling. If you check my CipherX code right now, I still haven't handled errors properly especially in file streaming where I mostly used unwrap just to make things work first.
I also got a mathematics book for programmers and a computer science book for programmers. I'm hoping that next time I encounter those mathematical symbols in cryptography papers, I won't feel lost or intimidated anymore.
Since I'm learning Rust and building things from scratch, I realized that studying core computer science and math concepts will help me a lot especially for low-level work, systems programming and cryptography.
And I think this is the part that self-taught programmers don't talk about much.
Sometimes you really have to stop building, admit you don't fully understand the foundation yet, go back, study the fundamentals and strengthen your base before you can move forward again.
5/5
Final thoughts
There's still a lot I can improve in the codebase, especially in terms of structure, optimization and testing. But for now, I'll continue working on it step by step and refining the implementation as I learn more.
Day 6โ8 of Building in Public
Still working on my CipherX library (a tool for file encryption and decryption in Rust).
Like I mentioned in my README, this library is mainly for educational purposes and my own learning. Because of that, it originally didn't strictly follow the AES standard.
But after thinking more about security and future features I want to implement, I decided to gradually adapt it toward a proper AES implementation.
So here are the changes I made ๐
4/5
Why these changes?
These changes are mainly to improve the security and correctness of the encryption system, especially since I'm planning to build additional features on top of it.
It also makes the system easier to extend in the future without relying on custom designs that could weaken security (like the previous 256-byte block structure).
By aligning more closely with AES, I can focus more on building features instead of worrying about whether the underlying cryptography is structurally sound.
Day 4โ6 of Building in Public
I thought adding this feature would take few hours but instead it took me 3 days.
I finally finished the file streaming feature in my CipherX library (a tool for file encryption and decryption written in Rust)
This means:
Even if your file is larger than your total memory, it will not crash.
It can still encrypt and decrypt the file safely.
I already tested it on my phone with 12GB RAM using a zip file around 10GB:
Encryption: around 7 minutes
Decryption: around 7 minutes
It took me so long cause i had to:
- review how my library worked internally
- adjust the code to work with streaming instead of full buffers
- understand BufReader, BufWriter, Read, Write, Seek and SeekFrom
- print values everywhere as my way to follow the code logic
- try multiple failed approaches before one finally worked
At first i thought it will be easy but it's not especially if you care about correctness, performance and memory usage.
This feature forced me to understand file I/O, buffering and chunk processing on a much deeper level.
Still adding improvements and more tests but getting file streaming to work safely on large files was a big milestone for me.
#Rust #BuildInPublic