Doctacosa

🪶 I'm a real blog! Maybe? 🤔 Thoughts by Stéphane, often in English, parfois en français!

A recurring theme in my thoughts is all about communities and promotion: how to stay in touch with as many people as possible? Where to have an online presence in order to be visible and help the community thrive? The answer isn't always easy.

I commented on some of this earlier this year, on the topic of my personal visibility. The same applies to the online presence of the Creeper's Lab: where should we be? We're currently established on about a half-dozen social networks. These were picked either because they have a potential Minecraft player base, or because they're simple enough to publish content on and engage people.

In a parallel path, the latest issue of the Creeper's Lab newsletter (subscribe now!) included some of my thoughts on chat options. We've got a healthy chat environment thanks to the tight integration between in-game chat, Discord and IRC. These are the places where our players hang out, so it makes sense to have them all talk to each other.

That's what we have right now. The main challenge here is that it's possible I have blind spots and completely miss some fertile grounds to push on. On the social media front, Tumblr lost in popularity compared to 10 years ago, while TikTok had a huge rise. As chat systems go, IRC continues an apparent slow decline while Discord keeps moving upward. At least, that's my perception of it. Am I missing something that people aren't telling me, something I didn't encounter by pure luck, or not? Hard to say, sometimes!

There's also the flipside of this: something that I pay attention to yet few care about. With all the hubbub from Twitter lately, I've been keeping an eye on the global discussion about alternatives. A recurring one has been Mastodon, which I've been curious about for a while. I could join that, maybe get ambitious and run my own instance of it, see if anybody tags along. But then, it's far more likely than half of you reading this are thinking “wth is a mastodon?” Sorting this out is part of the challenge I have!

#social_media

– Doctacosa

A challenge for me with any project is to determine its MVP, making it ready for release. But what even is a MVP?

No, in this case it doesn't stand for Most Valuable Player. When it comes to project building, it means Minimum Viable Product. That is, what's the minimum functionality that needs to be included in order to make a first release. The central idea is that it's good to receive feedback, so getting something out there as soon as possible lets the community (or potential customers) tell you what they want next.

For example, if I wanted to release a new Minecraft server plugin, I might not need to include everything and the kitchen sink early on. A basic version, that includes all the core functionality, can be distributed online. Later on, extra features such as configuration files, optional modes and so on can be added. Maybe I would also get feedback on things I didn't even think of, helping to guide the development process!

It's tempting to want to release the perfect website, plugin or tool right away, but it can take a considerable amount of time to get there. By the time that everything is 100% ready, maybe people will have lost interest, or a competitor showed up, or you've built something that people just don't care about. This has happened to me several times already, and that's where starting with a more minimalist option can be interesting.

This doesn't mean that this MVP can be full of bugs! Some incomplete features might be okay, or the occasional glitch happening, especially for something labelled as a beta release. Still, having something unstable can be a turn off and lead people to believe your new toy is best avoided, so finding a proper balance is key.

#projects

– Doctacosa

Once in a while, I'll mention my TODO list. It's where I list what I want to do, note possible ideas, keep track of the status of my ongoing projects, and more. Where does this beast actually live, though?

The truth is, it's not regrouped in a single location. As things stand right now, I'm using three main tools to keep track of all these elements. But why three?

The main one that I've mentioned before is OneNote. It's designed to do just that: write down notes and sort them out as you go. The way the application is structured works well for me: you have several notebooks (I have a Development one), broken down into sections (Interordi, IOBoard, Creeper's Lab, ...), which are in turn broken down into pages (Priorities, Future updates, Ideas, History, etc.). Each page is a freeform text page, with formatting support, so I can write things however I want. I usually make generous use of bullet points that get divided into subsections. Having text pages lets me see a lot of items at once, and I like having a global overview. Bonus, OneNote is available for basically every platform ever and synchronizes easily, so I'm not tied to any device.

Another one that I've been relying on is Visual Studio Code with a few additional plugins. My main coding software also happens to make an interesting note keeping system. The way things are displayed ends up somewhat similar to OneNote, but there's a reason why I use this: to easily share with others. My development notes for the Creeper's Lab are there, in Markdown format, which I can then easily copy and send elsewhere. I use this method to share the information with the staff, so they have an idea what I'm working on. The pages are pushed online, where a simple viewer allows casual browsing. Fun fact: this Markdown viewer is open source and available on my GitHub account!

Part of this family of tools is Microsoft To Do, another app that's available on multiple platforms. While I've tried using it as a replacement to OneNote, it didn't quite work for me: like others, you can choose to sort your notes across multiple projects and sections, but the individual tasks have to be entered one-by-one in their own fields. This means I can't see as many elements at a glance and I can't easily move an entire section somewhere else like I would with a text document. However, I found a use for it: tasks with a deadline. I have self-repeating tasks with notifications for the daily servers list voting, the monthly Kenorland rotation, the newsletter preparation, and more. This way, I don't need to remember when something is due. Likewise, I had a note today to remind me to write this post!

While this set has been working well enough for me for quite a while now, I'm never 100% happy with what I have, as there are always small details I wished worked differently. Who knows, maybe I'll find something more to my liking in the future!

#tools #software

– Doctacosa

I took a day trip yesterday which involved about four hours total of train travel. Not one to let a good time block like this go to waste, I decided to work some more on an upcoming project of mine. A catch is that I often need to look up extra information online, while I would be cut-off from most everything there. While, yes, there is on-board wifi, it's best not to rely on that. Having a limited mobile plan, I didn't want to use my phone as a hotspot. So, offline it was!

I made sure I had all the files I would need pre-downloaded before starting, then configured my tablet with my usual development tools. The smaller device (plus attached keyboard) is light enough to carry around all day, yet has the ability to do everything I need it to.

Surface Go tablet

Since I wouldn't have a live connection, I decided to focus my work on making the system more reliable. This specific project needs to read data from external sources once in a while, but what happens if these sources are temporarily offline? This was a perfect opportunity to test it for real! I found several weird behaviors and outright bugs that I was able to correct, so that by the time this goes live, unusual scenarios like bad connections will already be handled properly.

One small problem: I ran out of battery before going home! I'm not sure what happened, since it's supposed to last longer than this, but maybe I didn't configure something right. That will be something to review... or bring the charger along!

#tools #hardware

– Doctacosa

You might know that I updated the Creeper's Lab network to Minecraft 1.19 right around the start of the month. What you probably don't know, however, is that I wasn't even home at the time! So, how did that go?

A few years ago, I described my hardware setup. From that selection, I do the vast majority of my work on my desktop computer. Rebuilt back in 2019, it still offers a very solid performance and allows me to run multiple programs at once. When I do Minecraft updates, I'll frequently run one or two servers and two clients of the game, plus my dev tools, plus the usual suspects like email, browser and so on. Having the raw power to handle all this together definitely helps.

I knew I was going to be away for a few days, so I prepared myself by packing the best alternative. I brought my laptop along, plus two Surface Go tablets as I've since acquired a second one, used. The laptop is rather old now, getting close to seven years of use, so it's not as fast as it could be. That's where the tablets come in: I use them as extra screens, with keyboard and mouse being shared among them. Since they're their own computers, though, I run some non-critical programs on them: notes, Discord, browser for references, etc. This frees up the laptop to run the game server and client, giving it a chance at keeping up with the testing I throw at it!

Laptop and two tablets

While this doesn't beat my home setup, it definitely does what I need it to. I've also spent a few actual work days using this very setup, and it went better than I expected. Here's to mobility!

#tools #hardware

– Doctacosa

When I was about 15, I got the idea that I wanted to make my own JRPG, inspired by the Dragon Quest and Final Fantasy series. While that didn't really happen (yet?), I did some research on various needed bits and started planning based on that.

One key element of a JRPG is its player progression system. You know the classic: defeat enemies, gain experience, level up and all that! Part of that early planning was figuring out how to make a progression curve that wasn't linear: if you defeat tougher enemies, you want to gain more experience points, and higher levels should require more experience to progress. Based on this, I came up with the formulas pictured above, which return the HP and MP of a player at any given level (“NV”), plus the amount of experience at which this level starts.

RPG formulas, on paper

How is this relevant to today? While that game hasn't materialized, the math was sound, and I've kept it aside for later. The same formulas, sometimes with tuned values, have been reused since then in various places. The latest example is none other than the player level stat that was recently added to the Creeper's Lab profiles! Each stat has a set amount of XP assigned to it, everything is added up for a player, then the level formula assigns a level to that player! At the time of writing, I have 570,512 XP, which translates to level 415.

The same pattern has come up multiple times in my life: I get an idea, I'm not sure what to do with it, I shelve it for possibly later, then it gets reused or integrated within something else down the line! If you take something away from this, I suggest not to trash things that seem pointless: they can still have value!

#creepers_lab #projects

– Doctacosa

I've mentioned before that some of my code, most notably several of my custom Minecraft plugins, are now available on GitHub. When I work, I usually save my work in various bites, each containing a feature or specific change. These are called commits and let you track your changes in a project, and possibly review / cancel them if problems arise. These can be as simple as changing the color of an item to adding a whole new feature. Having individual changes logged can be very valuable.

Each GitHub profile includes an activity chart showing the numbers of commits done each day for the past year. The darker the color, the more commits were done in that day. Here's what mine looks like as of this posting:

Git activity chart, take 1

Nice! But it's also woefully incomplete, because it only includes my code that's available on GitHub! Several other projects, such as the websites, the CL Companion, private plugins and more won't show on this chart.

As such, I set out to create my own visualisation tool, able to read all commits across all projects instead of only the ones publicly available. Here's what I came up with:

Git activity chart, take 2

That's a lot more colored dots, isn't it? This makes it a much more accurate indicator of how many times I push a feature or change each day. After some polishing, I'm planning to add this somewhere on the main Interordi site, likely in my portfolio.

“But Doc, I don't care about your commits chart!” Maybe not, and that's fine. :–) Showing my full range of commits was one goal, creating that chart type was another. Once completed, I plan to integrate such activity charts in multiple places. There's a limited version of it already available in your Creeper's Lab player profile; for now, it only includes the past year worth of playtime data. The idea is to give it more power by allowing you to browse back in time, up to the day you joined! The extra flexibility will make it even more valuable as a display tool.

#charts #profiles #projects

– Doctacosa

Whenever I'm developing a project, or come up with a new idea, I'll often mention that I'll add it to my TODO list. That's an often-growing list of things that I want to get done at some point, but it can be daunting to look at. About two years ago, I was introduced to a different concept: the anti-TODO list.

The anti-TODO list concept, described in this blog post, is simple: once you get something done that you meant to take care of, anything notable, write it down. That's it. It turns into a sort of daily activity log, listing what happened. The point isn't to keep track of past activity, though: it's to get the satisfaction of marking your progress.

I find it especially effective to fight against that sinking feeling on some days that “I didn't get anything done today”, even though that's not true. Some ideas can take days, weeks or even months to see through, but it can be subdivided in multiple parts. Some times, it can be as simple as “Research if X is doable”, “Read on Y”, “Adjust the colors on the prototype for Z”. I also note down things I've been meaning to do for a few days that take time, like “Bake cookies” or “Sort emails”. I usually end up with two or three notes per day; there's always something. Always. Some days are more productive than others, of course, but being able to write these few things helps to give me the feeling that I'm ever moving forward, and I find it motivating. I want to have items to write down at the end of the day!

This is something that I picked up relatively early during the work-from-home-because-pandemic era. While it was suggested within a work context, I found it to be a better match for the ongoing projects I always have at home. Without the ongoing beat of a daily commute, it also served as a way to mark the passing days.

  • Opens notebook, adds a note for today: “Post on Patreon”.

#progress #todo

– Doctacosa

One element I've been reflecting on lately is on a recurring theme: promotion. But rather than Creeper's Lab, or Interordi, how about myself?

Not that I'm looking at become a dreaded influencer, this is more about having an online presence that's not necessarily tied to a specific project, beyond having the Interordi frontpage, that is.

One idea I had was to run a blog to post my musings. It's entirely possible that this would fall in the “good idea, wrong time” trap, though, and would have been a better pick 15 years ago. It's not like I write a lot, but I have some thoughts I like to spell out once in a while. As a starting point, I could always build an archive from past posts I've made on forums, Tumblr and the like. This way, I would have some content from day one.

Another option would be to be more active on one or two social networks. Which one I'm not sure; I used to be more active on Tumblr, but that fell off a cliff. I have no interest on photos and videos, so definitely not TikTok or Instagram. Maybe it could be Twitter, as I like how short-form it is, and you can choose what to engage on. Plus, I already monitor the Creeper's Lab feed on there, so I'm at least familiar with it. Maybe you have a feeling on one that could be a good match for me?

And then one other key question: in which language? French or English? You reading this are more familiar with my english-language content, obviously, but I use both day-to-day. I'm not keen on having both languages repeating themselves on the same channels, that sounds too official-government-like. Separate channels could be an idea, but that's nearly double the work and not as spontaneous.

I haven't made any decision on this yet, still musing...

#branding #interordi #personal

– Doctacosa

As you might have seen in the Creeper's Lab news this weekend, I released three more plugins to the public: kicks and bans management, Race Away and Grindatron. I first distributed five plugins last summer, which I wrote about in this space. I explained how an extra layer of polish was necessary before others could really use these tools properly, but you might be wondering what type of work that involves. Let's take a look!

A first important step is to ensure that the plugins can run on their own. It might seem simple, but some of these need me to do manual corrections once in a while, or handle some tasks by working directly on the database's records to complete them. This isn't something I want others to have to handle, so I usually need to complete and automate some processes. The bonus of doing this is that I no longer need to do these steps by mistake afterwards, so that's a win-win scenario!

On a similar topic of automation, the initial setup is important: something that I added when necessary is for each plugin to automatically create its database tables and/or configuration files when it first runs, so that everything is ready to go. I didn't include this step on the first versions I used on the Creeper's Lab because I didn't know what would be needed, plus needs grew over time!

Something important that many developers don't like to do is documentation. “Why should I be writing text when I could be writing code?”, many seem to think. In this case, it's important as any other server owners wanting to use these plugins need to know how to set them up and use them! A full documentation involves what each plugin does, how to install it, setting permissions, any in-game commands available, and possibly more. This gives people the feeling they can trust the thing to do what it's meant to, and hopefully reduces the amount of questions I have to deal with.

Another element is the branding: how to name them, and what logo to give them. I usually prefer a descriptive name so you can get a vague idea of each plugin's purpose from the start, with the IO prefix for Interordi. For example, the plugin used to synchronize player inventories across multiple servers is named IOSync. A logo isn't strictly required, of course, but it adds a way to quickly identify something and make it stand out. I developed a basic visual identity for all my server tools, so you can tell they're from the same family!

These are the main steps! Most of that work only needs to be done once, and I usually do it close to release. This way, I know exactly what's necessary and don't need multiple do-overs.

#gamedev #projects

– Doctacosa