I am tired of it
Probably not what you think dw.
Sorry for not posting last week, even if nobody reads this lmao.
Last sunday I was peacefully starting the development of my latest “project”: Kill the queen. Remember this post, where I talk about this game I was going to make? Well, you probably know where this went.
If you don’t, 5 words: I abandoned yet another project.
iusearchbtw :: ~/Projects » ls -lah archives
total 669M
beryll.zip cardinal.zip cocoa.zip conversible.zip glint.zip
noble.zip pico86.zip pine.zip psychics.zip textual.zip
through_the_swamp.zip titanium.zip trout.zip vanadium.zip Zap.zip
Yes, my device name is iusearchbtw, sorry for that.
I imagine someone will still ask “What’s that?” even if this blog is literally a programming blog, but well, I’ll be inclusive. Basically, that’s the folder where I store all my abandoned projects.
Instead of just rm -rfing them, I zip them and store them there. So, 669MB of abandoned projects across 18 project archives. By the way, these are not all projects I abandoned, just the ones I archived.
This is a worrying thing, like really. In 2 years I abandoned more than 18 projects, while a casual developer in that time frame would probably finish that quantity projects.
The reason. #
This HAS to stop. And I know how to stop it, fortunately.
I always abandon (let’s hope I can finally say abandoned) projects because either:
- The project was too ambitious.
- Bad planning.
- No motivation.
- Bad idea.
The most common ones are no motivation and bad planning, although I have to say I have a rush of motivation at the start and then it starts horribly (bad planning) and I lose it all.
And, being honest, I hate abandoning projects a lot.
It might seem counterintuitive: like, if I hate it so much, then why do I still abandon so many projects? And, I will answer with a simple: Because its impossible not to.
When I abandon a project, I do it because my motivation drops to dead 0.
The solution #
Well, obviously, revolution: the only solution.
SOAD aside, there is a very simple solution: plan it properly, instead of just thinking about a vage and stupid idea and trying to instantly execute it perfectly, actually follow a process, do my research and, most importantly, make an actually good idea.
The idea. #
Remember that list of archives? Well, if you don’t, then don’t worry, its a bit pointless memorizing a list of zip files with names that you don’t understand.
Well, from that list, 5 archives were programming languages (these are the ones I archived, there are more):
Fun fact: my dumb ass wrote “where” instead of “were” initially in the last phrase, read the phrase 4 times and still didn’t notice I wrote “where” lol.
- Cocoa: It was so short I honestly don’t remember it’s original purpose lol.
- Glint: Small scripting language made in Lua.
- Noble: Java-like language without it’s inmense complexity made in C.
- Titanium: I vagely remember it was a language similar to C or Zig made in Zig.
- Vanadium: The longest lasting one (still stopped not even half the way), a “revolutionary” language prioritizing “robustness” and “safety” (all bullshit tbh).
See a pattern? No? Well, obviously the pattern is that there is no pattern.
I always tried to make something different from the other prior language projects.
By the way, there will be some programming language terms like lexer or parser, if you don’t know what they are, don’t worry, you just need to know that:
- A lexer is the most simple step which separates code into “tokens”
- The parser basically converts plain text into a tree full of nodes.
If we look into development you can see some obvious patterns (although I am the only person that actually knows how development of these went, so don’t think you were going to find them lmao):
- Scope creep (terrible one). Like, I tried to make whole specs/documentations of the languages before even having a lexer made.
- Over engineering for everything. A clear example is how I handled parsers: never got farther than that, always abandoned while I was making the parser (I hate parsers RAHHHH), as I always wanted to make helpers and types beforehand, instead of drafting a quick but working parser and later refactoring like a normal developer.
- Bad design.
- Bloat (dependencies).
- Choosing languages I don’t know enough about to make a whole language.
So, if you learn about your errors, and I had lots of errors across 5 (probably 6, I remember a shell language that I didn’t archive) iterations, so I guess I learned enough.
The project. #
“Finally, the yapping stops! This guy should really shut up a bit, am I right?”
You, probably.
So, I am making a programming language. WAIT, don’t throw tomatoes, I am NOT abandoning this on, I learned from the past.
Rules are:
- NO ABANDONING! Sorry, but in Nykenik, co. (ficticious company don’t sue me pretty please) we adopted the euphemism “rethink” to replace the horrible word “ab*ndon”. This project doesn’t just “e*d” with a “motivation l*ss”, it will be rethought, refactored or redesigned.
- I will manage my time so I don’t work all day on it, while also dedicating enough time. Yes, this is a rule, because these are rules for myself, and I am the owner of the blog B).
- One devlog per week minimum.
- Keep it in one repository without a website until I have v1.0 (or when I feel it’s good enough to get it’s own website and other expansions). Might seem a useless rule, but it’s necessary for me.
- Keep a roadmap with only superficial milestones (for example “Complete lexical analysis” [lexer and parser], “Complete compiler/interpreter”, etc.)
Some info (not sharing a lot because I changed and scope creep and over promising are terminally prohibited in this project.):
- I will upload it to my brother’s Forgejo because I hate AI and don’t want it to train on my code, so no GitHub.
- I will probably make it in C, and if that doesn’t work then let’s see what I do.
- As I didn’t post last week, next two days (Friday 5/12 and Saturday 6/12) will be dedicated to research and design, and Sunday I will share what I did as a devlog in it’s own project section.
- I don’t have a name right now, I have to think about it. The name will be revealed in sunday’s devlog.
Let’s hope this goes well.
By the way, if you are a reader (proably the only one), please show proof that you are alive, like, an email to my mail (nykenik24@proton.me) saying “hi you blog is cool :)”/“hi your blog is bad haha” (preferrably the first one, please) is enough.