Imagine Dragons

I don’t post my projects here because documenting electrical stuff is a pain. I’d have to take photos, and upload those photos to the Internet, and… wait no that’s it. Maybe it’s not that hard, I am just supremely lazy. For the first time in a very long time, however, I built a complete, working, software project that is not under one of the increasing number of IP agreements that the things I write these days tend to be. That means I have a reason to guilt myself into writing a blog post for the first time this year except for the one claiming my new website will be done soon… whoops.

The project generates dragon fractals. If you don’t know what those are, I could explain them but that’s hard and linking a video is easy. https://www.youtube.com/watch?v=EdyociU35u8. Go watch that.

For reasons that are entirely beyond me, I wrote this in Rust. Do I know Rust? No. If you for some reason want to see it, the code is all here: https://github.com/Treeaza/dragon-rider. Don’t question the name, it seemed funny at the time.

The most obvious question about this is, of course, why? I wish I knew. I was bored in class and drawing fractals in a notebook and had the classic programmer thought process of “hey, instead of spending an hour doing this I could spend four hours automating it,” and now we’re here I guess. It makes some nice looking fractals at least. They can be generated to arbitrary depth, either with square or rounded corners.

I figured I’d have more to say about this project and apparently I don’t. C’est la vie.

The Obligatory 2020 Topic

Well that was another five months I suppose, funny how these things happen. I’ve found myself with a sudden abundance of free time recently, so it seemed like a good time to make up for almost half a year of not updating this. I haven’t done much in that time, so this is going to be short. I finished my third academic term of electrical engineering, and my second work term, and that’s about it. Exciting.

Most of my free time these days is wasted playing Counter Strike is spent working electrical projects, primarily PCB designs for my Hyperloop team. I’ve also been playing around with generating analog video on an STM32F303 Nucleo, with… mixed results. Turns out analog video is really clever and kind of annoying, relying on a lot of very fast timings that mean you actually have to write efficient code. Turns out that’s not something I’m practiced in. I once wrote a platformer that didn’t run at a fixed tick rate and relied on the time it took to process each frame’s physics to slow things down to a playable speed, and my code was inefficient enough that it kinda worked. Well, at least it worked on my computer, and I didn’t catch my mistake until other people who weren’t using ancient laptops tried to run it and reported that it was unplayable.

So, I don’t have much to talk about with respect to programming or electronics today. I could do another thousand words about Mojang but no one wants that besides me. There is an obvious topic given the current situation but I am resistant to discussing it given that every other person on earth seems to be focused on it exclusively to the point of exhaustion. Actually the point of exhaustion was two months ago, we’re just running on sheer spite now I suppose. I guess I shouldn’t be upset about people focusing on something like this given that it is important, but I have become bitter and crotchety in my old age. The point is this is my acknowledgement that there is a massive global event currently ongoing, enough said.

The Shape of Things that Came

My blog posts are less consistent than C.G.P. Grey’s upload schedule. In my defense though he does that full time and I do this because… reasons? I’m not really sure why, I just like writing my thoughts down somewhere I guess.

It has been some time since I last wrote, which is for once in the last year and a half due to laziness as opposed to a lack of time. I spent the summer living in Ottawa on my first engineering work term, which consisted mainly of me working, eating and sleeping for four months, except for the week I flew to California to race a hyperloop pod at SpaceX somehow. Since then I’ve been back in Newfoundland completing my third term of electrical engineering, a.k.a. the one where they actually start teaching you stuff. Also the term where every course is ordinary differential equations or complex numbers suddenly. Yay!

The title of this post was “Why I Don’t Want to be a Software Developer Anymore,” alluding to what my topic was before I went and re-read my last thousand words on the subject and realized I’d already said everything that needs to be said. I was going to say that I had realized the reason I didn’t want to be a software developer was that the only software I really wanted to work on pre-2014 Minecraft and that was obviously not going to happen (what with it not being pre-2014 anymore). It turns out that I had that figured out in early 2018 and somehow forgot it between then and now.

I’ve been feeling even more nostalgic than normal lately, and that period of is usually what I am nostalgic for. It’s strange, my life has improved since then in almost every way I can think of, and I have no reason to miss being an awkward teenager who stayed in their room ninety percent of the time and idolized video game developers. The conclusion I’ve reached is that at some point, despite my best efforts to the contrary, I grew up a bit, and I hate that.

In the middle of my final year of high school I had the surprisingly astute idea to write myself a letter about who I am, because I realized that in time I would change and have a hard time remembering what it was like to be my younger self. Looking back at it now I was shockingly right, and I find it challenging to connect with the person who wrote it. This surprises me because I have no memory of the change between then and now, but I can see that it happened. The worst part of growing up, I have discovered, is that you don’t realize that it happened until it is too late, and then there’s not real way to go back. That, and you work out that adults are boring for a reason.

So here I am, feeling like I changed who I was at some point, which leaves me quite unsure who I am. I still like programming things and building things so I suppose I will keep doing that for the time being. Maybe I should write more, we will see.

Vita Continuat

Well then. Some time passed there, I think. I’ll be honest, it’s been a blur for the last seven months. Last September I began my first term of an engineering degree, I don’t feel like things have really stopped moving since. It turns out university is time consuming and exhausting (who would have thought?) and I wouldn’t go back to high school if you payed me.

Anyways, I don’t think I’ve done game development ever at all since starting my degree, and while I’d love to get back to it I don’t have that much time still. Even over the summer I’m set to be on a co-op work placement for engineering, so I don’t know when I’ll manage. What I think I’d like to do though, so I can at least write something here, is make this blog more general purpose. I’ve started doing some small electrical engineering projects, and other non-game related programming, and I’m going to write about that instead. (Or not, this may be the only post for another half-year or more, but I’m hopeful). I should be able to put something together soon about some past and ongoing projects, but for now that’s where I am; I spend eight hours a day in school, then go home and think about school until I fall asleep, and wake up to come back to school. Oh well, c’est la vie.

The Last One

It’s summer. I am profoundly unproductive in summer. Added to that this year is the fact that this is my last summer vacation, possibly ever. A week from now I will be a few days into my first term of an engineering degree at Memorial University of Newfoundland, and that program doesn’t get summers off. And once that degree is done I’ll be working as an engineer, meaning these last two months are the longest apparent stretch of time I will be consecutively free for… well… as long as I can see at least. When you add all that up, it means I do even less than I normally would in my free time and feel quite justified in it. Next week I have to do more calculus, today I can relax. And tomorrow. And yesterday. Eventually I will make something, but that can wait. There’s too much nothing that needs to get done first, and I’m running out of time in which to do it.

Streaks

This post exists because I haven’t missed a month yet, since 0x16D, and I wasn’t planning to start. Then I realized I had 23 hours to avoid breaking that streak and threw this together. Good luck, this might turn out incomprehensible.

As I have written at extreme length before, I have a lack of focus bordering on… well I might just be in a league of my own there. Remember my Hoplites? Yeah I hardly do either. I made some combat mechanics. They were the best I’ve ever written by far, which means they’re almost good enough to be acceptable. Then I tried writing some basic enemy AI to test it. That’s was… not as good, let’s say. So I started making another little project, that (as all my “little projects” do) is taking way too long and going through multiple revisions.

You may hear more later.

Oslo Disorder

Originally this was a post about how I spent a week making some very  basic shadow shaders. Then I took a few more weeks and actually built game stuff instead, so now it’s not that. What I have managed to make is a simple hoplite-looking fellow who draws his spear back and then thrusts it forwards, damaging enemies. That’s most of what I wanted to have done in a week, and it only took about a month, so I’m well ahead of schedule on this project so far. I also learned that the Greek military is, to this day, called the “Hellenic Armed Forces,” which I find way more amusing than anyone should.

On another note, I’m writing this the evening before my last day of high school. This is supposed to be where I talk about game development, but I thought the end of an institution that has dominated my life for the past 13 years was important enough to warrant a mention here. I’m… surprisingly emotionally affected by it, although I didn’t expect to feel anything except jubilation at this point so that really shouldn’t be surprising. For the past decade I would have happily given my left kidney to only have one more day of school ever, and now I find myself wishing it went on just a little longer. Not another year, certainly. Maybe not even another month. Just a week or two more. I’ve been wishing time away for 13 years (and rightly so I think, no one needs 6 years of the same English course), and now that it’s so suddenly over I would like a little of it back.

On the other hand I start engineering in the fall, which I am way more excited for than I am sad about leaving school, so the net emotion here is positive. And I’m sure I’ll get over the whole school thing. Probably not by tomorrow evening though. I hated it for over a decade, but it’s still weird to see it go. I guess that’s Stockholm Syndrome.

Hoplites I Guess

I’ve managed once a month so far, and wasn’t about to stop.

The whole “focus” thing really goes out the window fairly often for me. Things come up (turns out living a life makes it hard to program games sometimes), and I’m easily discouraged by building anything complex, but everything I try to make is. I’m trying something else now: Building around a core mechanic. The games I’ve been trying to make in the last few months are management-y strategy-y things, mainly because that’s what I play. I’ve spent an embarrassing number of hours playing EU4, CK2, Civilization 4 and 5 and (even more so) Aurora4x and Dwarf Fortress. As it turns out, those are quite time consuming and challenging to make. The problem I have building anything similar is that there are too many interlocking systems that all need to exist before it really becomes a game: EU4 isn’t about combat or diplomacy or trade or religion or politics specifically, but remove any of those systems and the game will feel incomplete.

The new idea is to make one mechanic, one basic motion, that feels really good to do. I’m thinking a spear thrust. There’s something very visceral about it, and I think I can pull it off decently well. Once I’ve got that, I’ll try to make a game around it. Starting with something that is fun to do on its own seems like a better way to begin than saying “I’m building a space commercial empire simulator, and we’ll need combat and trading and promotions and corporate structure and factions and diplomacy before it will feel good.” Every once in a while I remember the episode of Extra Credits that encourages building a “minimum viable product,” meaning the simplest game you can build that is still the game you’re building – a three-week prototype. I’m making that now. Wish me luck.

Dead Gadget

So writing is a good way to feel productive while avoiding actually being productive I’ve found. I should be programming. It’s late though, and my brain is wound up, and that combination tends to make writing functional code incredibly difficult, so I’m here instead.

I began learning to program around age 11 or 12 I think. There are two clear starting points that I can remember for this, and I’ve never worked out which one came earlier. One is that I came up with an *absolutely brilliant* (read: Reddit but literally designed so you couldn’t not argue) idea for a website and went to the library and got a book from 2000 on HTML. And then I thought I was set. (That book tried to teach me Perl, but that’s a rant for another day). The other is that for Christmas (probably around 2011) a relative gave me issue #24 of Make: Magazine. I didn’t learn much from it, but the next summer I saw a special summer issue of Make with a bunch of projects for kids in it, and bought it. There were some really cool things in it, and also a lot of references to Arduino, something I couldn’t work out how to pronounce. I looked it up and started watching a tutorial where someone was controlling a servo with a potentiometer, and I was hooked. I bought a starter kit online and then proceeded to do almost nothing with Arduinos for the next 5 years, but I was on the programming train now.

Whichever of these is truly my start in programming (I can’t work out the timeline in my head properly, but it seems to me like the HTML must have come first), from there I learned some C++ and then watched the lectures from Stanford’s CS106A with Mehran Sahami, and that was the first time I saw Java. As I covered last time, I don’t like Java much anymore, but it was the first language I ever really got into. I was making some kind of mining game in it, following a tutorial series showing how to make something like Minicraft – a Ludum Dare entry developed by the one and only Notch, sort of super light weight Minecraft (the importance of which has gotten to the point that it is now recognized as a word by my spell check, unlike Mehran Sahami’s name).

That’s the other main ingredient in this story: Minecraft. Again, I can’t make this timeline work out, but at some point around the other two events a friend of mine showed me Minecraft Pocket Edition, and I was amazed. This was around 2011 or 2012, so Minecraft was already a major thing, but I had never heard of it. I went home and started watching videos, then bought the game, and played it way too much for a couple of years.

Minecraft was huge for me mainly because of the culture around it. I probably spent more time watching videos of the game than playing it myself, and for good reason. The things other people have created with it are captivating. The most important effect the game had on me though was that it made me want to be a game developer. For a few years, that was what I planned to do after high school (the beginning of which was still years off for me at the time, thankfully). I got the movie Minecraft: The Story of Mojang and watched it several times over, and that just reinforced the dream in my mind of being a game developer. This looked like so much fun, starting or working for a company like this. A year or two passed, I got (marginally) better at programming, and still all I wanted was to work for a company like Mojang, or even better to work for Mojang. Being a part of this world was all that I could see, all that I wished for.

And then in September of 2014 Mojang was sold to Microsoft, and I was very confused. The whole point of this had seemed to me to be avoiding companies like that and staying small. That, and the founders were leaving. I had ended up idolizing these people, this company, this idea, and now I didn’t see why. My mind began to change. I began to realize that I didn’t want to spend my entire adult life sitting in front of a screen and programming. Programming was a hobby to me, something to do for fun, I didn’t want it to be my job. That, and the game industry I had wanted to work in would be 15 years gone by the time I was ready for it. The world that Minecraft began in in 2009, and where I had begun learning to program in 2011 was not the one I would enter after university, off in 2020-whatever. I wanted to live in a world in the future that was already gone.

So I changed my plan. I discovered the space industry and returned to engineering, the field I had wanted to go into since I was four. And now I’m nearly there, starting my engineering degree this fall. But for those few years, I had seen a different future. Every once in a while I go back and watch the videos that used to get me so excited, about Mojang and indie game development and programming, and I miss that. The idealism of it (there’s a weird thought, I had idealistic views about software development), just the pure ideas of it, had been what I wanted in my future. Sometimes I wonder if I had been born a decade earlier if I would be in that industry now? Today though, I had a different question. Where is Mojang these days?

I follow Notch on Twitter (always an… interesting experience) so I know roughly where he ended up post-Mojang. But what about the company itself? I know Minecraft is still getting regular updates (and at some point became the second-best selling game ever, after Tetris), so they’re clearly doing something. I checked their website, and its last update was two years ago. I began looking around and found out that Scrolls, the game Mojang had (in part at least) been founded to make, had its servers shut down a few weeks ago, and hasn’t been updated since 2015. Cobalt, the game they published for a smaller studio, is out and that’s about all there is to say about it. So what is Mojang doing?

From everything I can find, it seems like they might just be maintaining Minecraft full time now. That makes me… sad I think? Nostalgic at least, for the time when they seemed like the innovative, awesome future that I wanted to be part of. I’m not going to start blaming Microsoft for this, or anyone (I would like to assign blame for some of the things to come out of Minecraft, but that’s for another time). That’s just what happened. It still makes me sad though. Mojang had meant something to me, their future had especially, and now we’re in the future and they’ve disappeared from it.

There is no real moral to this story or anything. I just wrote it because… well… I don’t know. Almost no one reads these anyways, so it’s a good place to put my thoughts at times, when I’m not going on about not doing any work. I often end up thinking about how time passes and feeling nostalgic, probably a lot more than I should considering I’m only 17. I keep thinking of ways to end this essay, but none of them work. I want to say that I’m worried that by the time I can see the world it will have changed, but that’s a bit obvious. I was never going to work for Mojang, I’m a decade too young for that at least. This is getting rambly so I think I’ll just cut it off here and say oh well. For a few years I wanted to be a game developer, then I stopped, and now when I look back at those years I’m nostalgic for the future I saw, and a bit scared about what future I’m going to end up in now, without its rosy tint.

Falling out of Love

For several years I refused to work in anything but Java. I’m not sure why anymore, although it was probably largely due to the fact that the alternatives presented to me were C++, which looks like Java if you made it more confusing for no reason, and Python. I won’t get in to my thoughts on Python, but there’s definitely a rant coming at some point about it. Then I started using Unity because writing rendering code is hard, and that meant switching to either C# or JavaScript. JS is accidentally Turing-complete in 6 characters, enough said. Thankfully for me, C# is incredibly similar to Java, with a bunch of small changes that really irritated me at first. Things like the purer enumeration types, “bool” instead of “boolean,” array initialization and a few other things. Over several years I got used to these differences, and now coming back to Java everything seems wrong. Where are my properties? Why would enums be anything more than a list of values? Why not have delegates? Why can I only put one class in a file? Why the f**k are strings immutable?

In short, I have discovered I am no longer in love with Java. The reason I bring this up is I had an idea for a “small” game a week ago and started building it in Java because that felt easier. It’s not. But I’ve started now so I might as well keep going. There won’t be much information about it for a while but I’m taking a few weeks to try and prototype this thing, because that feels nearly achievable, and then I’ll have a thing. That I made. That would be nice. The last time I “finished” a game was Ludum Dare 32. LD41 is this month so that was a while ago.