Skip to content

Latest commit

 

History

History
26 lines (19 loc) · 10.1 KB

index.md

File metadata and controls

26 lines (19 loc) · 10.1 KB

Hello! Welcome to my website.

My blog is here: https://1f604.blogspot.com/.

Here are some programs I have written or helped to write that I think are useful:

  • SimpleBlogPage which is an extension for mediawiki, based on BlogPage. I wrote this because when I first tried to use BlogPage it was so buggy that the home page couldn't load due to a misspelling of the cache variable (cahce). So I thought "if I have to fix bugs in it then why not add/remove features whilst I'm at it". I think this is possibly the most useful thing I've written so far since I use it almost daily.
  • sedit which is an automatically encrypting text editor, using pynacl. It does not have ECC as of yet. I still think this is really cool and useful software and I use it from time to time, but I understand why some people who are used to emacs or vim might not like it due to lack of text editing features. Originally it was supposed to store passwords but now I just write whatever I feel like in it.
  • tutorials. Currently only has one tutorial that nobody seems to care about. I liked the idea of making something like antichamber except with different types of puzzles. Never got around to actually making it though. The main reason I'm not working on such a game is because I don't have any great ideas for puzzles that would be really engaging. Like I can just imagine a kid playing my game and going "this is boring, I want to play minecraft" or something like that. Doesn't seem like a good use of my time if I spend ages making a game that nobody wants to play. Also, the thing that I learned from this (edge detection) turned out to be pretty useless for real life.
  • zc. This game is kind of like the old games you used to see on flash games websites. I can't find any of them anymore. But basically the cities are like those cells or planets you had in these older games and they automatically increase your numbers over time and then you select them and click somewhere to send your army. But the cool thing about this game is that it has shortest-path pathfinding and waypoint queues. Right now, it's a bit too clicky to be fun - I thought of adding a clicks-per-second limit to it, or maybe some kind of resource that you spend with clicks. Anyways, I gave up on its development because I don't think this kind of game is going to be very fun. The linear nature of it, for example the inability to just camp your army wherever, or build buildings, research technology etc. Just doesn't scratch the strategy itch for me. I mean I can understand why I made it. At the time I played games like Warlight and Conqueror! a lot. But Conqueror is actually a lot deeper than Risk, because you have city and (rudimentary) supply line management. In Conqueror! you can click on a city and select whether you want it to produce soldiers or farms or money or castle or something. Nowadays I feel like any strategy game that has fewer features than Starcraft or Total Annihilation is just not fun enough to bother with.
  • basic_game. I wanted to make a multiplayer game in golang to get more familiar with the language. I had a lot of different plans for this game. Initially I wanted this game to be like surviv.io except more like a MORPG. Like some multiplayer permanent world MOBA Diablo with gun battles. I actually really enjoyed playing starve.io and devast.io for a while but starve.io just lacked too many features and the griefing in devast.io finally got to me (e.g in devast.io griefers would just build walls around you and the walls are super cheap and ridiculously strong so you'd just be stuck inside forever). Any public multiplayer game is going to have griefing and I hate to design my game around minimizing the impact of griefers. Originally I was going to make a more intuitive version of Don't Starve Together (it's actually impossible to play DST without reading the wiki, like some of the crock pot recipes are so ridiculous that it reminds me of NetHack). The idea of a survival game still appeals to me but I know that once you "beat" a survival game it's not fun anymore. For me, the fun part of devast.io and DST is gathering resources and progressing up the tech tree. Obviously once you reach the end of the tech tree there's no point in playing anymore, but it's fun while it lasts. Whereas the fun part of surviv.io was grinding for rare weapons. But once you've found the rarest weapon (the AWM) there's no excitement in playing anymore. I still think that a game that combines the most appealing features of survival games (basebuilding and tech tree progression) with the most appealing features of MMORPGs (grinding for rare loot) could work. I might still develop it more but I don't feel any great desire to play this kind of game currently.
  • bolgefuck. I wrote this for fun. Actually was inspired by my theory of computation class. Also wanted to practice C++. Also, malbolge was "solved" so I decided to make something harder just for fun.
  • personal-projects. A whole bunch of older stuff I wrote. Some of the scripts took me weeks to write. The Earley parser for example took me 2 weeks of research and debugging. I wrote it to learn about compilers (actually I started doing the CS262 course on Udacity and it had a bit on Earley parsing so I thought why not just write it myself) and now I have absolutely no idea how it works. I remember I got asked "so how does the Earley parser work?" in a job interview and I just couldn't answer at all. So, not a great time investment. Actually probably had negative impact on my life.
  • UnemploymentSimulator. Another thing I wrote as a joke. I can't remember why I wrote this now. I probably thought it would be funny or something. Now I think it's kinda lame.
  • isabelle-hoare-partial. My (failed) attempt to learn some formal verification stuff. The main reason I wanted to learn this stuff was to prove that my algorithms were correct. I did a course half of which was formal verification and we learned Hoare logic and I thought it was a great idea - "why don't we just prove all our algorithms with preconditions and postconditions and loop invariants??" and then I actually tried doing it and "oh, this is why". I will probably go back to it (maybe Why3 or something fairly practical) because I really really want to prove that my algorithms are correct but now I'm a lot more leery of it.
  • ltt. This was an automatic time tracking application I modified to suit my needs. At the time I wanted something like ManicTime but that software has a lot of features that I think would be pretty annoying to replicate in Linux. Anyways, the reason I was interested in this kind of software was to make myself more productive. But I've found that the use of such software didn't really make me more productive. I'd still waste time, and then later I'd look back and see exactly how I wasted my time but it doesn't stop me from wasting time again. So, kind of useless, except maybe for recordkeeping purposes.
  • sbg. This was my static blog page generator. I had a blog at one point but deleted it for various reasons (content wasn't great, nobody was reading it - or at least I didn't know how many people actually read it due to lack of analytics, and nobody could comment on it etc). I now use blogger since it has analytics and commenting. I might pick this up again in future - or not, depending on whether if I encounter a use case for it.
  • xkcdpwd. I wrote this to generate passwords securely. Nowadays I don't use this anymore, but I still think the analysis I did on it is useful introductory reading. It's still a useful tool, just that it does the same job done by 100 other tools that also do other useful stuff. Sometimes I wonder why we still use passwords in an age where public key encryption is ubiquitous.

Overall I'd say most of these are kind of a waste of time and that my time would have been better spent grinding Leetcode instead of writing useless programs. Like the tutorial I wrote on Antichamber graphics for example, I spent ages on that and my time would have almost certainly been better spent grinding Leetcode instead of making that tutorial. But not all of it was a waste of time. For example I learned a lot of useful and interesting things whilst doing the research for basic_game. And I'm actually using SimpleBlogPage and sedit. And people have told me that they found some of the Python scripts that I wrote useful. So I'd say writing programs can be useful in 2 ways: projects where I learn about stuff, like basic_game, and projects where I make useful stuff, like SimpleBlogPage and sedit.

I'd say the projects that were really a waste of time were stuff like the Earley parser which was a learning project but I didn't learn anything from it, and nobody seems to be using it, and probably negatively affected my chances for employment. Or the "tools" projects like ltt which were supposed to be useful but ended up being pretty useless and I didn't learn anything from it either. And also the "joke" projects like UnemploymentSimulator and bolgefuck which didn't really teach me anything and weren't useful tools either. If I was to go back in time I'd probably spend more time doing MOOCs and grinding leetcode and less time writing my own software that nobody seems to care about and don't really help me in any way.

It was still kind of surprising that I didn't learn anything useful from writing the Earley parser though, like a lot of programmers say "if you really sweat blood writing a program then you really remember it / learn things" - well I sweat blood on that Earley parser for like 2 weeks (maybe more) and I don't remember anything about it nor did it teach me anything except that that argument is wrong.