The Final Retrospective
Interests
Rust
I’ve always been REALLY interested in the Rust programming language, and as such I’ve taken a lot of interest in learning it. In fact, as much as I’d like to deny it, I’ve spent a lot more time on learning Rust than on the Platformer4x
game.
I’ve started quite a few projects in Rust mainly for learning (none of them are actually worthy of deployment), but I’ll showcase some here:
-
Advent of Code - A collection of my solutions to Advent of Code challenges written in Rust. This was actually my very first introduction to Rust programming, and I think it hurt a little bit because moving to actual class based programming with Rust (or at least whatever it’s called for Rust) was quite different from the more algorithmic approaches required for AoC. Nonetheless, it was quite helpful to learn all the regular semantics of the language.
-
SGC - Synergy Grade Calculator. My initial attempt at creating software to send and fetch requests. I later ran into problems with cookies, but migrated to Python using the Selenium WebDriver. This is stored locally on my other desktop PC on Visual Studio (which I absolutely detest). I later built a webapp that connected the Python code to JS via a Rust medium using Tauri, but I couldn’t figure out how to prevent freezing even while running multithreading. I believe I was running the Python code as a background task, but apparently not. This project was an amazing help towards learning Rust, however.
-
All my other random scrapped projects. I’ve tried writing a lot of miscellaneous projects to learn Rust, and they’re all scattered around my Github or scored locally. I’m really enjoying the language so far, but it’s been difficult adjusting to Rust’s take on OOP (using things like
enum
,struct
,impl
,mod
, etc.).
I’ve also spent quite a bit with some other Rust resources:
-
Jon Gjenset’s longggg Rust content and especially his Crust of Rust series - I usually just passively consume his content and it was my introduction to the more OOP based side of Rust (with actually good practices instead of “whatever the heck I feel like!”).
-
The Book - This has been my main reading resource for Rust, and it’s been great! Self explanatory, good book, great code, lovely language.
-
Bunch of random other resources I find as I go. This includes
Programming Rust, 2nd Edition
(book),Greedy Gloomers
(ditributed systems challenge),Exercism
(exercises),Codewars
(exercises),PingCap Talent Plan
(exercises + book + roadmap), and whatever else I find.
In my introduction to Rust, I’ve discovered quite a few cool projects, some of which I’ve tried implementing myself (usually in vain). I’ve tried my hand at:
-
Embedded Rust on an Espressif ESP-32C DevMod Kit - which failed horribly, but was a great learning experience with the Nightly toolchain
-
E2E messaging software - cool project that I have no idea how to implement, but I am now!
-
And everything here in this awesome list
There’s been a lot of talk about Rust as an up-and-coming language for a load of companies and industries I’m interested in.
-
I’ve heard that the Ethereum maintainers recently implemented an experimental Rust blockchain that happens to run much more reliably than its original blockchain. I guess if I ever decide to go into blockchain, that’ll be something hopeful to look to.
-
SpaceX and NASA have both announced that they’re quite hopeful about Rust and I’m pretty sure that NASA has already begun using it. I think some other space companies are using MicroPython, and I think my embedded “experience” would be a good entryway to that.
-
Basically every single new company isn’t rewriting their legacy code in Rust…. HOWEVER, they are building new products with Rust, so that’s great to hear!
-
Personally, I want to work on something QUITE specific: Guidance & Navigation Control systems for aircraft and airborne projectiles (aka missiles). I remember watching a video a while back about somebody building a rocket with the missile guidance system and having it tilt towards waypoints in the sky, in addition some other videos about the AIM9X Sidewinder missile and other A2A missiles (Fox 2, Splash 1!). I think my current dream job is something at SpaceX working on Starship systems… more on that later.
Assembly
Towards the beginning of this school year (9th grade), I spent a lot of time looking into Assembly languages with a focus on x86 ASM
. I’d spent some time before in 7th and 8th grade competing as a reverse engineer in a few CTF competitions and fell in love with decompiling and rebuilding programs with assembly as a medium. I usually used Ghidra, but sometimes had to look at a lower level using the gdb
debugging tool. Here’s some things I found myself having a lot of fun with:
-
Microcorruption - Really cool site that leads you through both an embedded CTF problem series and a reverse engineering series (which I was more focused on). It was quite fulfilling disassembling the programs and reading the Assembly while exploiting it, so I would highly recommend.
-
ringzer0 - Yet another CTF platform focused on crackmes. Great fun, cool puzzles, still working on it now.
-
Programming from the Ground Up - Really, really cool book I followed along to learn ASM from the basics. Writing my first ASM program by myself (with the semantics learned from this book) was VERY endearing. Still trying to chase that same high assembling, linking, and executing the program.
-
Shenzhen I/O - Nice game I found that uses an esoteric assembly language to program circuits. Been having fun designing and running the circuits at low level – so much so I decided to write a blog about it here, built with the Jekyll skills I learned from CSSE, I might add.
College
Ok, about college. I’ve got a few mixed ideas. Of course, there’s my dream schools: Stanford, MIT, CMU, and Caltech (which I have objectively 0 chance of getting into), and I’ve got my more realistic options: UC Berkeley, UC San Diego (which I think would be the best overall), Cal Poly SLO, UT Austin, Texas A&M, all the other UCs, U of Toronto, U of Tokyo, U of Kyoto, ETH Zurich, and U of Berlin. Lot of international as you may have noticed.
Frankly, I think I’d want to shoot for UC San Diego because it’s both in state and near my home (the CS program is amazing, of course), in addition to the fact that San Diego is an amazing work area. If that doesn’t work out and I do get into some international school, I think it’d be cool to work abroad, especially in Scandinavia. Quality of life there is great (good welfare, relatively stable, good work culture) and I think I’d be happy developing software at my own pace.
Anyhow, main idea is that I’m actually quite ok with whatever college I go to (the reaches would be GREAT), but I’m more interested in the work after than the college, and I think of colleges more as keystone pivots to network to get to said jobs (especially given the competitiveness of the CS market recently).
I’m especially interested in CMU, Cal, MIT because they produce some really interesting code challenges and hackathons I’ve tried to solve myself. CMU does picoCTF
and some other competitions; Cal does a few hackathons; MIT does MITIT
. I’m also especially interested in Cal for the development of quite a few softwares that I actually use normally.
Career
As for my career, there’s a few fields I’m interested in.
Aerospace
Since 2020, I’ve been consistently watching SpaceX launches, and I’ve been amazed by how utterly consistent they are. I remember SpaceX mentioned once that they were looking into Rust as a future language to move to (with good reason, memory safe is important in space), and since then I’ve been charmed by the company. Their recent Starship series is what really inspired me to look into SpaceX more, I think, so I’ve taken quite a liking to learning Rust.
I remember NASA also mentioning that they were actually actively using Rust for some systems, but mainly shifting to MicroPython. I’d be quite happy working for SpaceX, NASA, Rocket Labs, Blue Origin, Virgin Galactic, or any other space contracting company (minus Boeing…).
Now, you may be asking, “What exactly about code and space are you so interested in?” (You’re probably not asking this, but I’ll tell you anyway). Guidance and Navigation Control systems! It’s just such an interesting topic to me, tilting rockets using guidance systems (especially in A2A missiles) and navigation via telemetry data. I think Rust fits right in as a medium to do so. At this point in life, I wouldn’t really mind the ethics of working for defense contractors like Raytheon, Palantir, Anduril, Shield.ai, and other companies.
Embedded Systems
My dad is, by training, an electrical engineer, but he’s frequently asked for help with software in embedded projects. He once got me on an ESP32 development kit, and running a simple “Hello, World!” on the microcontroller first with Rust, then with C was awe inspiring. Since then, I’ve taken quite an interest in embedded systems (not to mention the amount of devices we use everyday that use them). This, by itself, wasn’t the real tipping point though.
There was a time where I first discovered the Vault 7 leaks of CIA hacking tools and development. The amount of exploits they had on basically every single embedded device was just crazy, and coming from a background of a bit of reverse engineering, I think this is really would took my eye.
Cybersecurity At The Lowest Level
As mentioned herein, exploiting devices is pretty cool, but how would I prevent that from happening to me? Naturally, interest in actually securing these devices arose. I participate a bit in CyberPatriot and some other CTF competitions, so I think this would suit my skillset perfectly. I’m sure there’s somewhere in there to fit hardware programming with VHDL or Verilog, or maybe some RISC-V development in processing (unrelated, but still “at the lowest level”).
Self-Assessment
Category | Score (0.0 - 1.0) | Note |
---|---|---|
Github! | 1.0 | Overview of learning Github was good from a purely learning standpoint. Could work on how it was described, however. |
Platformer… | 0.9 | This took quite a bit of work as the de facto project manager and I happened to manage a lot with this project. My only grievance is how the game turned out |
Applying those skills… | 1.0 | I’m actually quite proud of taking the initiative here and trying to some of my own projects out side of class. From the retrospective standpoint, I guess more could be said in regards to reflection |
Lessons | 0.9 | I’m quite proud of my classes and methods lesson. But again, I think more could be said |
Rust? | 0.9 | Not really directly related to CSSE, but I think it’s important to cite the more important things I learned. More on this in the “future” section |
8 blogs mentioned above | 1.0 | All 8 blogs done… I had actually done them all before during the weeks of development and had to add a few after. Likewise, a few of the blogs are combined and integral to the development blogs, so I saw no need to rewrite them |
Organizing all of this in your blog | 1.0 | Everything organized in categories |
Latest Game Feature | 1.9 | I’d say it was an ok game feature. Could use some more improvements (like platforms as orignally planned, or updating the attack logic) |
Latest Game Feature blog write-up | 1.0 | Bit of my retrospective regarding this feature and cool diagram to show how the entire codebase connects |
N@tM feedback from your demo | 0.9 | Got a bit of feedback and reflected on it. Working on some of those improvements now, actually |
Retrospective & future planning | 1.0 | I’ve thought a bit about what I want to do… |
Total | 9.3 | 10 |
Category | Score (0.0 - 1.0) | Note |
---|---|---|
Programming Proficiency | 0.90 | Strong in syntax and problem-solving but need to improve efficiency |
Debugging Skills | 0.91 | Most of the time was spent on debugging, so I’d say I’ve gotten proficient in the context of this course. |
Code Readability | 0.90 | I’d say the code is pretty well structured, and I take time to get the formats right. Comments should probably be more concise (avoid CDC) |
Version Control (Git) | 0.91 | Acted as the main project manager and maintainer for the platformer project (managing PRs, forks, branches, merges, conflicts, etc.) |
Collaboration | 0.91 | Spent quite a bit of time helping other people whenever they came to me with bugs in all segments of the toolchain (VSCode itself, code, deployment, etc.) |
Time Management | 0.90 | Tried to get consistent commits in, and seems it worked out |
Documentation | 0.90 | Sepnt a bit of time writing documentation for the code and other content (issues, blogs, etc.) on the Github + site regarding code. |