A Shared Experience Differently OR Please Take Care of Yourself

A shared experience differently

The past couple months have been strange and exciting and filled with uncertainty. I think that’s probably true for everyone across the globe.
That’s part of why it’s exciting, in a way; there are very few times where we can really say an experience is global. That everyone is experiencing this thing. Though there’s still definitely variations, it’s all related.

That said, I’m once again reminded that everyone experiences things in their own way, through their own lenses, and with their own background.

I’ve known a number of people who responded to the “we all have to stay home for an indefinite period” with a “well that’s what I wanted to do anyway”. I’m kind of one of them. To me, staying home all the time is a luxury.
But even those of us that want to be home all the time aren’t necessarily happy with having to do it all the time. Or alone. I miss having my friends over for video games, and I’m constantly thankful for my wife, as we all still need human contact.

On the opposite end of the spectrum there are people who never wanted to be home this long, and are really not happy about the alone part; people who get their energy and motivation from being surrounded by others. They feed on social interaction. Those people are, understandably, having a very hard time with the current situation.

I also see another axis; one which describes how much you worry about the global crisis and things you can do nothing about. On one end, you have people who are not especially stressed about the virus, on the other, people who worry about it constantly.
For some of the people who seem surprisingly relaxed about a global crisis, it’s simply how they are. Some aren’t directly affected, and some just have the philosophy of “I can control only myself”. Majority of them will still do what they have to and take precautions and distance from their loved ones for the sake of their loved ones. They just don’t spend a lot of time worried.
Then there are people who worry. Some are simply wired to be worried about the situation, and to work out possible scenarios. There’s nothing wrong with these people; it’s valuable for society to have people who work that way; but they are not having a good time right now.
And that’s just a couple of the axes of the spectrum of experiences people are having about this global event. There are plenty more, especially considering socio-economic situations.

I find myself perfectly happy with being at home, well satisfied with having my wife nearby and online connections to friends, and not terribly worried about the virus itself. I’ll do what I can and it’s a big deal, but my philosophy tends towards “spending mental energy on it won’t make it better”.
Of course, I’m very lucky. My job is one I can do over the internet, which works just fine for me, and I’m not worried about my financial situation. I also live in a country that has taken reasonable precautions and has very reliable public healthcare.

Even with all that, I’ve started to notice interesting things about my mental state.

Where I’m at Right now

I work part-time as the Chief Technical Officer of a VR game development startup. I’m still having a blast doing that, and consider myself very lucky to be doing that. I spend the rest of my time building up what I guess many people would call a “side hustle”. I love that, too.
But I’ve noticed that my work hours since the world shutdown have gotten kind of crazy. At first I didn’t think much of it, as I was trying to get certain things done by deadlines, but after a while I’ve noticed that the hours didn’t really go down after those things were done.

And I’m reminded of when one of my colleagues from years ago called me a work-aholic.

I laughed at the time, as, at the time, I thought I was fairly lazy. I kept weird hours, I showed up for work later than most everyone (there weren’t strict hours), and I had plenty of free-time.

But looking back later, I realized he was probably right. I did long hours there and my free-time activities were usually more work. I spent ridiculous amounts of time working on Mystcraft, I was part of two different arts societies, and streamed and interacted with people on a 6 hour time difference, to name a few things.

And lately, again, all of my time has been working. I work at Critical Charm, I work on my own projects, I’m developing and learning art skills, and I’m learning how to play piano. I squeeze in a little bit of playing video games.

This is how I function -it’s kind of my normal- but I’m still at risk of burning myself out. I’ve worked weekends the past few weekends. It was fun, but… it was still energy expended, and I’ve not recovered energy in a while.
And right now I’m not sure how to do that.

I keep thinking about how everything must be useful. Even writing this, part of me is thinking about how to make it useful to me. “Can it advance my hypothetical future career?”
And by Jove I hope it IS useful, but not to me. I hope it’s useful to someone else who needs to hear this:
You aren’t alone, we’re all struggling in our own way, your way is perfectly valid, and you don’t have to come out of this with a side business, a six pack, or a new skill. You just have to come out of this.
When we say “take care of yourself” it’s not just “don’t catch the virus” it’s also “remember to bathe, get enough rest, sleep well, and let your brain do happy, relaxing things.”
If one of those happy, relaxing things is staring at a wall for six hours, go ahead. We all need brain downtime.

Yes, Isaac Newton came up with a bunch of stuff during his quarantine in the 1600’s, but he was also a student at Cambridge self-isolating on his family farm with plenty of resources at his disposal. If you are stuck at home and not sure how you will pay for food in 3 months it’s hardly a fitting comparison.
Most people during that time just worked hard to survive. And it took Newton 7 years to actually take what he’d figured out and be able to formalize and explain it. Another 30 before it was actually published.
So if you notice something neat you want to spend time on, you’re even with Newton. If, in 10 to 20 years, you publish a novel you started during the pandemic you’re doing better.

For myself, I’m going to try to get more sleep and I’m going to push some of my side stuff back a bit.

Take your time. That might be one of the few things many people really have more of right now. Don’t worry about using it, just enjoy it.

Trello Boards Changes

(This post was written some time in August but never made it to “Published” for some reason. Here it is now. :P)

While playing with Trello, I realized that archived lists are not viewable unless returned to the board. I tried playing with archiving the cards independently, but that just gives you a list of all archived cards… not so useful.

Since I’d like to leave an archive of what was completed when and make it publicly viewable, I tried to find some solution to this. The best I could find/come up with is to use two boards; one for upcoming and one for completed. Thus the Mystcraft Trello board will stay about as it has been in terms of roadmap, but now a new board exists to show the releases.

I think the process for this will be roughly the same, where I move completed tasks to a list as I do them, but now I’ll move that whole list to another board when I release it.

Should be a functional system, if I can remember to do it. 😛

Let me know what you think of this process!

That Felt Good (Mystcraft

I just pushed the first Mystcraft build since November, and it felt really cathartic. 😀

I must admit, I was a little worried about whether I’d remember how to do anything, particularly with the Gradle build system. Turns out, I don’t seem to have forgotten any of it. Which is good, because lots of it has forgotten itself.

For starters, I had to set my dev environment up on my new desktop PC. Fortunately, I remember all of the setup commands (probably through having to run them so much in the past) and had this up and running in little to no time. I also have the old setup running on the older computer beside me, so I can reference it easy for the really specific values and things (Eclipse run configurations, anyone?).
Then I went and did a bit of debugging and fixing. The longest challenge was finding the fastest way to check a srgname these days. Still MCP bot, so I had to install an IRC client (this computer is REALLY new).
I made my fix and went to build… and it failed on trying to pull the LookingGlass API from the maven. A little investigating revealed that my maven repo server was just gone. I spoke with Nick over at ReasonantHost and he’s already getting me fixed up with a new one. Thanks guys!
Regardless, I was still out a maven repo, so I just manually bypassed that and ‘viola!’, I have a shiny new build.

It wasn’t easy, and that’s what made it feel so good. It wasn’t really hard, either, which probably helped.

Now, the build itself is fairly minimal; I just made a single change to try and deal with an error I’ve only ever seen once. The idea was that it was a reasonably straightforward issue that I could tackle directly and push a build for. My goal was and remains to get back into modding at a reasonably slow pace. Leaping in head first is fun, but I don’t want to fry myself again so soon after returning.

So here’s to the return of Mystcraft and LookingGlass.

EDIT: Whoops! Missed my usual end text:
Mystcraft is available from CurseForge.

Mystcraft Changelog

The Dawn of the Fifth Day

OK, I know it’s been a lot more than five days. And, no, you weren’t holding Helm’s Deep during this time (which is probably for the best).
Just let me have my Gandalf moment, OK?

It’s been a while. This post is to serve as a recap and explanation as to why. It’s also the announcement of my return, I suppose.

About a year ago (Jan of last year) I was in a bit of a predicament; my residence permit to live in Finland was to expire as February ended. Since I didn’t want this to happen, I needed a source of income to apply for a new permit.
At this time I had been trying to start a PhD for some time. I had managed to find some potential supervisors, but funding was much more scarce. It never pulled through.
So, as February rolled around I basically entered panic mode. Bailing on getting a PhD position, I simply tried for any research or teaching position I could get. Fortunately, this tactic worked much better, as someone who recognized my name called me up wanting me to build cool things for him. I counted myself very lucky.
so, for the past year (Feb to Feb) I was working as a researcher on an interesting augmented reality project based out of Padova Italy. The work was interesting, the people were fun, and I learned a lot. I don’t think I could have asked for more given the circumstances.

Some of the more attentive folks might be able to correlate March with a sudden boost to my modding time and productivity. Essentially, I suddenly had the time and comfort to enable me to be more creative. Unfortunately it didn’t last. Come August I was informed that my contract would not be renewed when it expired in Feb. This coupled with the project needing to finish soon and the theatre group I’m in starting it’s latest production (in Sept; performed last week) pretty much killed all that time and desire to work on my personal projects.
And that’s when the big gap started.

I managed a few sporadic fixes and updates since, but I honestly had some difficulty wanting to work on anything due to the stress I was already under. I will honestly tell you that making a mod as big as Mystcraft is stressful not for the work doing it, but for dealing with the community around it. I didn’t want to interact with that source of stress, and so I distanced myself from all of it.

Leap forward to January of this year. I, once again, found myself with an expiring residence permit. I’d been doing the same as the previous round, trying to start my PhD, but the climate for that is even worse now than before.
And so I bailed on academia and went looking for a job at a game company.

In the end, come late Jan/early Feb, I secured a contract with Mindfield Games here in Finland, and I could not be happier. It has been so much fun and is exactly the kind of work I love doing and am well suited for. The peopel I’m working with are awesome as well.

Thus ends the Workplace Saga. At least for the foreseeable future, as this contract is indefinite. 😀

However, February and March ended up a very busy time for me. Between the new job and the theatre production (which I’d now been upgraded to both a main character and the producer for) I simply didn’t have any real free time. (One thing to another, my life is.)
The shows (Terry Pratchett’s Guards! Guards! adapted by Stephen Briggs) occurred last week. I spent Easter weekend recovering.

And now I’m back to being able to do fun stuff.

There’s a small hill of things I’ve been putting off that I’ll be working through (including setting up/finishing building a computer I got over Christmas) but I’m looking forward to getting back into the groove of Mystcraft and LookingGlass. It’ll be slow for a while, but I’m on my way back.


Hey, XComp, where’d you go?

(This post is very “personal life” oriented. Steer clear if you don’t care.)
I’ve been staying pretty quiet about my hiatus. It wasn’t planned (or I’d have given warning) and has lasted much longer than I’d have liked.

The reasons are pretty mundane. I’m not dying (any faster than usual; at least such that I can tell). I’m not sick. I’m not even getting married or something significant like that (I’d probably have mentioned that if I were).

I’m just working full time on a project (for work at the Uni) that has been in crunch mode since about August. Keeps one busy.
At the same time, my motivation has been a little upended. This has to do partially with work as well, but the reverse direction.

About August (what is it with August this year?), I was informed that at the end of my current contract I cannot be guaranteed funding. This isn’t the problem most people would expect for me. While, ya, not being paid is problematic, I could try to get money from other sources (I could mod more and depend on Patreon again). The problem for me is residence permit. In order for me to get a permit to live in Finland I need to have an income. Thus, no funding means I can’t get a residence permit beyond my current contract.
I don’t think I need to say that the possibility of being kicked out of the country one considers home is a bit stressful.

Thus I’ve been looking for other ways to stay here in Finland. The first looks were how to stay in academia, but I’ve largely given up on that. There isn’t any money in the universities here and most of them are in a recruiting freeze because of it. At this point I’m trying to get a job “in the real world/industry.” It’s made a little more complex by wanting to stay in Finland.

I have some time, still, before “Volcano Day,” but it’s still stressful to the point of deterring me from working on Mystcraft.

I just felt that you all deserved to know why Mystcraft stopped updating around August and where I’ve been. Thank you to everyone and I hope I can be back on playing around with Mystcraft fairly soon.

What are packs? (Baby, don’t hurt me…)

The younger of you may not get that reference.
Those that do may not appreciate it. 😛

Something that comes up really often for me is modpacks. Part of this is that Mystcraft is constantly inundated with modpack requests, but also because I interact with the community on this point. I enjoy providing tools and options to people building interesting packs.
So this post about modpacks will be to modders, not pack creators.

I think of modpacks as something akin to a remix. Taking things which already exist and arranging them to make something new. This is what I think a good modpack should be these days.*
Now, this squarely sets me as one of the modders who wants to build my mod(s) such as to allow easy remixing. Thus I provide lots of configs and options and IMC tools and try to make things as adaptive and adjustable as possible. I realize not all modders see things this way, and that some don’t want to allow for that level of customization. That’s really up to them. However, I would implore everyone to consider it.
You don’t have to make it as easy as a config option -IMC mechanics work well for modpack creators-, but allowing for mechanics to be added, tweaked, and disabled permits pack creators to produce even more creative things.

Some thoughts to consider:
You never can control how a user uses any software you write. Ever. Ultimately, how a user wishes to use what you have created is up to them.
If you are creating a mod, you are doing precisely this to someone else’s mechanics; you are modifying and extending the base game. Disallowing others to do that to what you have created is your right, but it is when we build on others’ work that the most interesting things occur. Letting others build on your work can lead to exciting things. Sometimes those contributions can be integrated into your work, and that saves you a lot of work!
Enabling remixing and control over how things work at any level helps build a stronger (,better, and more friendly) community. I know that the MC community is often… well, not as great as we’d like. The trick is to insulate yourself with the better of them (and ignore the rest). This helps with that.

Just my two cents on the topic. I use mods to produce the game I want to play. I like when those mods are balanced and interact well with each other, but sometimes they don’t do that out of the box.
Providing the tools and options to fix that balance to your community (not necessarily to average users, but to some level of the community) allows others to do that balance work for you and strengthens your community.


*There are the two cases of packs outside this. Packs for smallish communities, which I think should be private, and packs for media content creators, which I allow to be public so that streamers and YouTubers can let their audience play along.

Using Trello

I’ve been experimenting with using Trello for Mystcraft for a little while now. Thus far, I’ve found it a good way it organize my TODOs, and definitely an improvement from my flat text sheets.

For those who haven’t seen it, Trello is a neat little web app for project management. It supports the creation of lists in which you create “cards” detailing different tasks (or “stories”) which need to be completed. It is modeled on the Kanban paradigm.

I’m still on the fence about the best way for me to manage the lists, though. I tried the “standard” arrangement and set my lists up in a Kanban-like system, moving the cards between lists depending on what I’m currently doing and what I won’t be doing for a little while.
However, I’m thinking about arranging the lists as release arcs, breaking up the lists into individual releases as I hit them. The main idea behind this is to get better relationships between the cards. Currently you can just link to the cards, but there’s not really a dependency system.

It’s possible, I think, to try and put all the things which would depend on a task inside the same card, but since I like to have pretty small tasks this results in not wanting to have large cards. I also like to detail things pretty well, and it’s hard to detail the checklist elements on a card. Now if there were sub-cards….

If anyone has any thoughts on this (particularly anyone who has used Trello) I’d love to hear them. I actually have been thinking of making the Mystcraft Trello board publicly accessible and opening it up for comments and things, so let me know if you are interested in that as well.

Why the Profiling Exists (A quick history)

Sometime back (I can’t even place when) I was playing on FC2 and some stuff happened. I had a nice little house on the beach near the giant wand recharging tower, if you want to try and place it.
The event in question was incited by cpw, who created a Mystcraft age. This age had diamond ore tendrils.
While we were merrily collecting as many diamonds as we could carry in a world falling apart around us, cpw remarked, “So, XComp, how broken is your mod?”
I responded, “I’ll fix it.” I must have been channeling my inner Bill Cosby (Soaryn will get that joke).

At the time, instability was estimated by the symbols that did the generation using formulas provided by the modifiers they were using. This was really hard to balance in any kind of logical way and came with a large set of issues like the prediction being possibly wrong in either direction. I couldn’t simply make diamonds cause more instability, either, as that’d make the other issues worse.

Instead, I came up with a system for profiling the world as it really was, not how it might be. I built the age profiling system. This is not the baseline profiling system, which I’ll call baselining from now on (I’ll try, anyway).
The age profiling system is pretty nifty, but difficult to explain to people who don’t know code, so I’ll try it with a Minecraft imagery metaphore.
Imagine you have a world with a bunch of chunks in it. Normally we can’t see the chunks, but we know they are these 16×16 areas that load and unload and generate when needed.
Now, imagine all of those chunks slightly transparent. As if we’d made them holograms.
Now overlap them on top of each other.

It’d look a little weird, perhaps, but we’d quickly be able to see areas which were usually stone, or usually air, or might have trees. If we did this with thousands of chunks, we’d be able to see what range of blocks the diamond blocks usually show up in.

Mystcraft’s profiling system basically does that. It goes through every chunk we generate and checks each block in it, mapping it to our single transparency. It actually counts the number of times this relative cell was a solid block, or an ore block, or water, or whatever else we want to count.
This allows Mystcraft to say, “You know, this world has a lot more diamond than normal…” and the produce instability because of it, in a nice, logical way that’s actually pretty easy to balance.

The catch was, “what’s normal?”
About a week later I started playing on Forgecraft again. This was actually the beginning of the last time I played on FC2, I think. The one where we used the configs from the DW20 pack…
Turns out, someone had played with the vanilla ore distribution. Since Mystcraft was comparing the profiling data to vanilla’s normal ore distribution, it wound up making all ages on the server unstable. No one had bothered to test this in advance, so the DW20 pack users were all complaining they couldn’t get stable ages…

And so, I was tasked with fixing this too.
Now, because the profiling data was pretty complicated (and for a few other reasons besides) I determined to simply establish what was normal for the save and use that. Thus the baselining was born.
The baselining usues the profiling system, but it is actually more than that. What it does is it generates an extra dimension in the background; a pure dimension which we can determine is “stable.”
As the dimension generates, it gets profiled, same as any other Mystcraft age. We can then use this data to do the comparisons for “this world has a lot more diamond than normal” without worrying about the mod loadout and configs.

And then, there were more problems.
The baselining was actually pretty slow at first. I made a valiant effort and improved lots of things and had it running really smoothly for the most part, but I still got complaints. Apparently my four year old laptop still outpaces the standard hardware… Cool, I guess.
At this point the baselining runs pretty fast, so long as mods play nicely. Many mods that do generation don’t seem to understand how generation should work, and so they do things which make generation take many times longer than it should, but it still sorta seems to work.

It’s not enough. The top complaint I hear is “why does it happen for every world?!”
The two main reasons for this were that it made it possible to do the baselining in the background while you played and that some mods actually allow you to change the ore distributions per save…

I gave up and tried something new. Something experimental and something I don’t even like: I moved the profiling to happen when you start the game.
I’ll be clear on this: I hate this idea.

I’ve liked it even less since I released it. This system is different enough that it confuses too many mods. There is a crash on game start with bspkrsCore (he’s aware of the issue and accepted the fault) and sometimes the progress bar just doesn’t move. This means no chunks are generating. I have no idea why that is. Some mod is doing something, but that’s nothing to go on.

And now that’s the issue: the wait; it runs when things change; the conflicts with other mods.

Apologies if my tone comes across as irritated, but I’m tired; really tired; of this issue. Mystcraft was more fun when I could make it about the lore and not have to try and balance the darn thing.

With that explained, I’m currently trying to get feedback on how to move forward with it. I’ve made a topic on the Mystcraft Forums about this, and I welcome your input.

Version Control

For a long time I’ve used Bazaar as my version control system. I’m sure that people have lots of opinions on this, but let me present why I chose this:

  • I wanted to be able to put empty folders in the repo.
  • I particularly liked the automatic rename detection in Bazaar. It does better than most other VC systems in that regard.
  • It was simple to use.
  • It’s fast.

There were probably other reasons, but those are the main ones in terms of practical reasons.
However, the main reason I chose it was I didn’t want to choose the other options.

The other options I considered were, of course, Git and Mercurial.
I didn’t want to choose one because I didn’t want to be seen as taking a side. Amongst a number of people you’ll find some interesting arguments over which one is better. I always find “my tool is better” arguments to be rather silly, so I opted out of them by opting for a different tool entirely.

Let’s discuss them a bit, before I get to my main point.

I’ve read a post about how Git is MacGyver and Mercurial is James Bond. I found the analogy quite apt (especially since they are both prone to making things go boom, so it’s fair).
Particularly, Git is complex; everything has it’s own tool or command and it’s a ridiculous Swiss army knife of gizmos which you pretty much have to be an expert to work with consistently. However, if you CAN work with it well then it’s really powerful.
Mercurial, on the other hand, takes a more monolithic approach; it’s got some nice gadgets for when you really need the laser watch, but it doesn’t expect you to use the laser watch on a daily basis. Instead, it gives you the core set of tools which will generally keep things running smoothly. It’s slick, fast, and likes its drinks simple.

This is as it should be, really. This is how they were designed.
Git was designed by an expert for experts. The expert in question didn’t think much of non-experts, so he didn’t care that it was complex.
Mercurial was designed to be fast and smooth. Nailed it. Mostly, anyway.

Bazaar… is just kind of there. I’m not sure what their main motivation was for creating it, but maybe Canonical just wanted their own version control system. Microsoft made one too, so it’s not unprecedented, but at least Bazaar works.

At any rate, back when I was choosing a version control system to graduate to (from SVN… *shudders*), I did my research… and while I found the above analogy good, I was completely disillusioned with either Git or Mercurial due to all the online arguments. I chose Bazaar.
By most comparisons, the three are nearly identical for basic use. They diff, they branch, they are distributed, and they are pretty much the same speed for most operations.

Now, years later, I’ve used both Bazaar and Git first hand. I have some new opinions on the matter.

This past week I was in Italy for a code camp with my colleagues (from various countries), and it turned out I was the Git expert. I found this funny, because I know Git from working on Forge.
However, I was also pushed into the role of fixing the repos and getting everyone working happily on their branches. This included some interesting and serious stuff that I hadn’t had a lot of practice with. I knew how to do it, roughly, but I’d not done it everyday for a week before.
I’m now pretty confident that I AM a Git expert…

And I like Git, suddenly.

Previously, when working on Forge changes, I’d always find Git slightly painful. It worked, but, in terms of version control systems, it’s the most likely to break. Or do something weird. Or eat stuff. Or produce nasal daemons (look that one up; you won’t be disappointed).

So, now I’m considering moving my personal repos from Bazaar to Git. The biggest thing is I’ve taken to certain features such as the branching mechanics of Git (especially the visualization and rebasing). The visualization features actually make it really rewarding (to me) to make branches. I know, I’m weird, but what can one do?

However, one of my original gripes with Git still exists: You cannot put an empty folder into the repo. This is because Git has no concept of file hierarchy; the names of the files include the hierarchy implicitly. This means renaming a folder actually is renaming all of its contained files individually. There are tricks to force a folder into the repo, but it requires creating dummy files, which is against my rules for repos, and it still doesn’t solve the renaming.
Git’s concept of a file is also a bit different, as Git considers changes, not snapshots or files or folders. This is where the limitation comes from. I admit that the tradeoff is pretty worth it for the underlying mechanics, though.

Some of my projects are going to need to migrate anyway, so I’ll do those and see how that goes. Bazaar includes systems for conversion to and from other version control systems, so that’ll make it easy. Now that I think about it, that option was one of my original reasons for selecting it.

Long post for something most people won’t care to read about, but I hope you enjoyed it. Let me know what you think! 🙂