Cinnamon Smalls · 3mo

How did you learnt to code? What motivated you?

Ok, so it's gonna be really long and weird.

So I started from Ruby, my father suggested me either a website or a book - I honestly don't remember. It was probably in russian, and I'm not sure it's even online anymore. I was in like 5th grade, so probably around 12yo. ± a few years, I don't remember exactly

Then at some point (also in middle school) I got into WarCraft 3 mapping. It had a scripting language called JASS, with a few community extensions like vJASS which hacked together stuff like basic OOP. I don't want to know how terrible it was inside, but it was my first contact with OOP and that was what made it click for me ^^

It's worth mentioning that we did not have CS classes at all in school. I eventually changed schools (not only for that reason, also e.g. bullies etc), but the new one actually had very decent classes. And well, when it started programming, I had enough experience that it was a complete non-issue. Instead, I was browsing through the available API (it was pascal and I don't remember what library) and found that you can move terminal caret and apply colors. Then everything clicked and I tried to make a game out of that :3

I did. It was a simple bomberman clone, and in fact I still have it. I will show screenshots of this and other projects on fedi ^^

But it was janky. Terminals are slow, and it was VTE in (it was 9th grade, so 2012) and it was not fast. While I eventually found ways to optimize "graphics" output so it doesn't flicker, that was later. So I learned SDL and converted that game to actual graphics ^^ (well, "graphics" - I can't draw at all, so it was the symbols I used but converted to images)

Using that knowledge I tried to do a few more things. At the time I had a hyperfixation on Minecraft, as one does, so I tried to make a procedural terrain generator. It was fairly janky, but it worked.

Then later I got into modding Minecraft, and needed to learn Java and a bit of LWJGL for that. Ofc I also used that to make games :3 Well, I had to learn to use LWJGL properly for that, in Minecraft I didn't need to touch it all that much. And I also needed to learn OpenGL, tho uhh, it was GL 1.x, with fixed pipeline/immediate drawing. Which - tbh, it was probably for the best, I still think it's much easier to learn than modern GL - that can be overwhelming with the amount of setup you need to do.

So I did a bunch of small projects to learn things - usually I was picking a simple game concept/genre and trying to reimplement it. I learned a lot in process, and it was very very fun ^^

I also got my first Android phone at around this time, so tried to make apps for it. I disliked all available music players, so I wrote my own - tho I didn't finish or publish it, and it doesn't build anymore. The current Android version at the time was 4.4, and I was unable to get Android Studio to build it :( So I don't have any screenshots or anything, even tho I do still have the code.

Also my school tried to get me into competitive coding multiple times, but I never liked that nor was particularly good at it.

Since I was also using Linux I was occasionally modifying stuff I used to fix personal itches. For example, I made a Unity (the Ubuntu thing) mod that was moving the menu button back onto the top panel because I really disliked the new design (still dislike it, really, it breaks the whole model IMO).

(I am fairly vocal that I don't want to spend time tweaking my system nowadays, that's because I already did lots of that while I was a teen and got sick of it :3)

Then I joined uni and didn't really have time for programming anymore. I abandoned all of my Minecraft mods (to be fair, they were also deep in feature creep territory, rebasing them for new versions was hell and I was really getting tired of that, so that was my lesson about avoiding feature creep...) and game development. Well, I still did a few games as uni projects because ofc I did :3

In uni I learned C, but it was pretty crushing in general and eventually I couldn't continue and abruptly left it in 2017.

During the break I really needed to recover, and I discovered gnome-games a bit earlier, so I was using it extensively, and naturally got into developing it as well, fixing personal itches. I also got into general GNOME stuff, starting from Epiphany iirc. Then it kinda escalated and here I am :3

Then I started my second time in uni, and it was a lot more fun than the first time. I actually used uni a lot to learn GObject. I remember I did one assignment as an introspected C library + GUI in either Vala, Python or JS (I don't remember which, I was using all three for different assignments :3) just for fun.

I still liked doing flashy game dev stuff, but didn't get to do it a lot anymore. There were exceptions, like I made a basic Zelda dungeon clone with a map editor for an OOP assignment, because I mean OOP was second nature to me at this point and I just wanted to do something fun ^^

Writing report for that thing wasn't as fun tho - the idea was that you have like maybe 10 classes and I had over an hundred :neocat_google_shocked:

Despite the fun stuff I eventually burned out and left again at the beginning of 2020 (uni really isn't compatible with how my brain works :/). By that time I was heavily involved in GNOME, and well, I'm still here ^^

So yeah, my background was mostly game development. ^^ And now I'm doing UIs, so fairly far off but also I really really love visual stuff and making good-looking things, so I guess in that sense it's a continuation of that.

Lemme know (on fedi) if you want me to show screenshots of some of the mentioned projects :3

Retrospring uses Markdown for formatting

*italic text* for italic text

**bold text** for bold text

[link](https://example.com) for link