A Word of Caution (2024)
This was a very old draft post I polished and published for the completeness sake. It is interesting to see what I think was a good projects to do 10 years ago. (Added 2024-10-01)
It is great to have some plan, right? Over next few years, I planed to challenge my skills by various independent projects, which I will list here in no particular order. Some of these projects are very hard, yes, and I am not even sure if I can complete them all (some may very well over my skill), but all of them will be a very good challenge.
Game Development
- OpenTTD-like game – I don’t know about other, but while OpenTTD itself is already very good, I find it lack a lot of things that is essential if you aim for realistic gameplay. Mainly, the scale isn’t realistic at all. (C++ or Java project, 3D Graphics)
- Harvest Moon Fan Game – Okay, it is actually just farming simulation game. For computer nonetheless. The closest game to what I have in mind is probably Stardew Valley. (C++/Emscripten project, 3D Graphics, Sounds)
2024 Status
In 2017, I contributed a feature called “Scheduled Dispatch” to OpenTTD JGR Patch Pack. I got the idea and did the initial implementation. Once people realized how to use it, it has been a hit and has matured a lot. I cannot really claim credit beyond coming up with the initial idea and initial implementation.
I have several drafts and plans for the farming simulation game, but I don’t know when I will be able to find time to actually do it.
Web-based Game
- TypingMania – okay, this is already probably done, but I am migrating it to either Canvas or WebGL. (Canvas/WebGL/Web Audio fundamental)
- osu!/DJMax/O2Jam-like game – but with dynamically generated beatmap using Javascript Web Audio API (WebGL/WebAudio intermediate)
- ASCII-art based game – probably Airport game or some silly RPG like CandyBox/CookieClicker. (DOM?)
2024 Status
TypingMania was rewritten in 2020, but still with DOM, as it is easier to deal with HiDPI than using Canvas/WebGL and I want crisp text for the game.
Programming
- Lite IDE – basic IDE written from scratch. Aimed at beginner. But this may as well evolve into sophisticated editors, who knows? (node-webkit/HTML5/nw-gyp)
- Heavy IDE – no need to say more (Java/IntelliJ Platform)
- Perhaps some compiler? (Assembly among other things)
2024 Status
Seems silly to do any of those things when VSCode is available now. Back then there were still a battle between Atom and Sublime Text.
Web Platform
- irccloud-like clone – because IRC is freaking important. And it doesn’t look hard. (Javascript, perhaps Node.js)
- BitTorrent tracker – again, this look interesting (Node.js, perhaps)
- Otaku-culture based
- Manga reader – look easy enough to learn AngularJS (Javascript/AngularJS)
- Javascript Subtitle Renderer – not probably really related only to otaku-culture though (Javascript/Canvas)
- Streaming system – Again, not probably related to just otaku-culture. (C++/x264/ffmpeg)
- Online Programming System (all-in-one system) (C++/Javascript/low-level/GUI/etc)
- ACM-like
- Online Judge System
- Learning System – Basic: Khan Academy CS/CodeAcademy; Advanced: Specialised Topics
- Online evaluation/Online IDE
2024 Status
- IRC is dead. Long live IRC. It’s discord now.
- I no longer really use BitTorrent so…
- Manga reader: I forgot I did HTML version of this before. But now I just use CBZ app. Way easier. Also, AngularJS is dead.
- JS Subtitle Renderer: Still interesting from a technical point of view. But I no longer really do subtitling as a hobby, and there are several implementation of web ASS subtitle renderer.
- Streaming system: why bother now?
- Online Programming System: still on my roadmap, but the low-level is kinda all using
isolate
now.
Productivity
- Avisynth+ – well, I am actually already doing this. (Assembly/C++/etc.)
- Avs-based Video NLE GUI – one that doesn’t suck. When I do editing, I actually find that a lot of things are easier done with script, and vice versa. So Avisynth-based editor should be ideal. (C++/GUI/Video)
- Audio Program – might or might not do, whether I can find other application I am satisfied with before (C++/GUI/Media)
- Image Manipulation – because it looks interesting after doing video processing (C++/GUI/Image Processing)
2024 Status
I no longer really dabble with video processing and Avisynth+ is dead. Other app kinda has decent free/OSS app now.
Yes, that’s a lot. Yes, I doubt I will complete them all. But it is always good to have roadmaps for yourselves, especially if you are young and still learning. If you look closely at what I plan to write these applications in, you can see the patterns:
- Javascript: It is undeniable now that Javascript will not ever die. It is standard of web client-side programming, and that’s unlikely to change anytime in foreseeable future.
- Node.js: While I am still not sure if this will actually get mainstream like Python, the technology and innovation itself is outstanding. The only thing I find lacking in Node.js is probably Threading. IMO, its only competitor are JVM-based languages.
- C++: Ultimate language. You can do everything possible in this language. I personally find well-written C++ the most elegant code of them all.
- Image/Audio/Video processing: These are actually quite math heavy topics, but if done correctly I find result really rewarding.
Of course, everything combined ultimately land to “Online Programming System”.
Let see how many I can finish. Bet welcomed (but won’t be honored).