Doctacosa

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

This summer, I covered how I dealt with a surge of traffic caused by posting on the Fediverse. While it solved that specific issue, it turned out I wasn't quite done.

The list of online players was now cached; that is, read separately then stored locally instead of being read each time. A simple, elegant solution that led the display to be delayed by a minute at most. I had designed something specific for this, and all was good... for a while.

Some of the monthly challenges also involve reading data from the servers. For example, this month's Race Away challenge shows the top position of all our runners. This is again read directly from the game servers and is susceptible to cause the same overload issue as the global list of players.

This time, I chose to take a different approach. I've written a generic function that accepts any data source to save it locally. This reusable element is easy to integrate anywhere, allowing me to cover anything that could use it. I've since updated the list of online players to rely on this, lowering the load on the web server.

A positive side-effect of this new method is that the information is cached then displayed, no matter what. If the remote server becomes unavailable for any reason, it will keep displaying the older information until the problem is fixed instead of offering a blank box. This is also useful when I'm working on something offline, like developing software on a train with no Internet connection: as long as I've read the information once, it will keep on working just fine, letting me run tests easily!

#webdev #website

– Doctacosa

Many of you will know that I tend to have multiple projects going in parallel. Some time back, I explained how I keep track of the tasks I have planned. One thing I feel like I'm still missing is a way to keep an eye on the overall vision.

There are only so many hours in a day, so I tend to rotate between projects, either taking care of what's needed first, or whatever strikes my fancy at the moment. For example, a Minecraft game update will definitely need some work and takes priority. Last month, I had to update my Android apps to stay compliant with Google's store policies, so that had a deadline attached. Beyond that, it's whatever I feel would be the most useful and/or the most interesting at the moment.

To try to stay on track, I'd just check the main TODO list and the various items inside. That grew to be too much, though. Since most items now have several targets and ideas listed under them, the display gets too busy just to glance at everything at once.

Something I played with was using post-it notes on the side of my desk to only list the main ongoing projects, as a sort of main TODO: add a note when planning something, remove it when done, so it would be a constantly changing board. It worked for a bit, then reality set in where some projets move slower than I want to while other get put on hold, so the display is more static than I wanted.

I'm planning to try something new, by drafting a document that only lists the big picture instead of drilling down into the details. I'll check in later to tell you how this went!

#tools #projects #planning

– Doctacosa

A topic that's been recurring lately is how to have useful references, of any type.

At the Creeper's Lab, the starting point has obviously been the main website itself. Beyond that, though, there was a demand for something that others could easily contribute to, which is why we dedicated a discussion forum focused on this. The resources forum is still in use today. Any staff member is free to post there, each topic being about something different, creating a structure that's simple enough to browse and link to.

Later on came the wiki, using a format that many are familiar with thanks to Wikipedia and other well-known sources. Not only does it offer more flexibility than the forums do, it's explicitly designed for this, with tools that are more user-friendly. Even better, anyone with an Interordi Account can simply login and start editing. You see something that's missing, or obviously wrong? Login, edit, save, done! The wiki's search has also been integrated in other places, like in-game with the /wiki command, making it simple to interact with.

One thing that many will agree on, and readily criticize, is that Discord is NOT a good alternative. Several communities have migrated to it over the years, and while it's great for casual conversation and planning things with other people, it's far from ideal for documentation or information. For one, you can't access any of it through a search engine like Google – it has to be found within Discord itself. This search is limited to what features they offer, lacking the ability to do things like search for exact words. There's also the lack of an index or directory to let you see what's available. Sure, you can use Discord's forums feature – but then, why not just use regular forums, that you can access from anywhere and is open to others not already in the server?

Unfortunately, the trend in some communities is not looking good. Information wants to be free!

#information

– Doctacosa

Sometimes you keep things optimized and under control, and sometimes you don't.

An issue I noticed a few months ago is that, whenever I made a news post, the main website and everything hosted on it (Creeper's Lab, Interordi and so on) would stop responding for several minutes. Obviously, having the website become unavailable right as I tell people there's news is not a good thing. Yet, it took me quite a while to understand what was going on.

Back in February, I decided to step into the Fediverse by launching a Misskey server. Soon after, I added an account for the Creeper's Lab, where the news would be automatically posted. You can find this one at @CreepersLab@social.interordi.com. I didn't realize it at the time, but I had planted the seed of the problem right then.

The way that Misskey, Mastodon and the wider Fediverse work is through a series of independent, interconnected servers that exchange messages with each other. While I made my news post locally, it would get sent and published on all other connected servers. Each one, in turn, checks the address of the news post to load some information about it: title, key image, summary and so on.

As the connections grew, so did the number of requests on the site. These all happen very quickly after a post. My latest one triggered 373 different servers to request information within a few minutes. Most read the news article itself, plus the key visual. Some also scanned for additional metadata from the website, or even checked its front page. But surely the website can handle 373 visitors at the same time?

Well, yes... or so I thought. One small element on the website is the list of currently online players, displayed on the sidebar. What I didn't realize at the time is that the list of players was loaded anew for each new visitor. This means that the website asked the games server to return the list of players, each time. All this additional data exchange was the source of the slowdown.

Once I realized this, the fix was simple: set a script that would load the players every minute and save the result locally. With this in place, no external call was required, no database connection to establish, just a very small text file to load and display. It instantly solved the issue, with my latest announcements having no negative effects on the availability of the website!

#social_media #projects #fediverse

– Doctacosa

Back in 2019, I covered the hardware I work with most of the time. My lineup has remained the same since, with the addition of a second tablet as the first one developed a problem with its touch screen. The weak point of the ensemble by now is the laptop, since it's getting closer to being 8 years old, so I started casually looking at my options. I wanted something maybe a bit smaller, ideally (but probably not) with a numpad, multiple ports and upgradeable hardware. I like the ThinkPad line, so this seemed like a good starting point.

Then I got an idea and went in the complete opposite direction with a locked down device with only two USB ports and no possible upgrades.

Oh, and it's a Macbook.

Macbook on a table

This is definitely something different for me, as I usually run Windows on all my devices and I'm comfortable in that environment. What I tend to work on is either web-related technologies, or Java-based software, which can run on about any platform, so being on a Macbook isn't really a limitation.

Still, this explanation is missing a detail: why a Mac?

The answer is fairly simple: I need a MacOS-based device if I want to develop anything for MacOS, iOS or iPadOS. As a starting point, I'd like to get a version of the Creeper's Lab Companion available on Apple's App Store in the coming weeks. This will be followed by something else I've been working on, aiming to cast a net as wide as possible.

If I need a Windows device on the move, my Surface Go is surprisingly capable as long as I don't push it too much. This will be my alternative as the older ThinkPad goes into semi-retirement.

#tools #hardware

– Doctacosa

I've been doing some work on the system for Interordi Accounts lately. As you might or might not know, it's using IOBoard, my forums platform, for some of its processing. It's where the actual data is stored and loaded, so it's rather central to several things I'm working on.

The forums system is one that's dear to me, as I've been developing and improving it for close to 20 years now. While it hasn't been super popular lately, it had its moments, plus it keeps playing a critical role with its handling of accounts. With this proximity, it's tempting for me to want to spend more time on it. Of course, I can only do so much in a day, so I need to make some choices.

Do I want to spend more time on something like this? Sure! But would it be the best use of my efforts? Probably not, since it's not as popular as other elements like the Minecraft servers and has less room for growth. Choices can be difficult at times, but I need to respect some priorities to get the best results possible... and not get sidetracked too much!

This doesn't only apply to the forums, of course, but they're a good example. I could write the same about some of my Minecraft plugins, too. They're active, maintained and all that, just not as developed as I picture them. Maybe their turn will come someday!

#projects

– Doctacosa

Something has happened a few days ago that's gone unnoticed by the majority here: with the recent release of the Mega Man Battle Network Legacy Collection, the Mega Man website I run, Dr. Cossack's Lab, had a major increase in traffic. I expected the maps section to be popular, but not this much!

Simply put, the traffic on the website increased by a factor of 50. That's not 50%, it's 50 times. Yes, that's a lot of people! Thankfully, I have plenty of spare capacity on the website, and the site structure itself is light, so it can handle a sudden burst of traffic without causing slowdowns. That's a good thing, too, because other pages such as the main site of the Creeper's Lab are hosted there too!

It's also important to be able to handle an increase of players in-game. The network currently has a global limit of 50, the lobby and Laurasia accept 30, with the other servers being at 20. Could they handle more? Yes, but it would probably lag, and that's no fun. Laurasia has pushed the 30 simultaneous players before, and we could feel the impact yet it remained playable. Having sane limits helps with this.

Setting realistic limits also helps to curb some attacks. Some tools let people login multiple player bodies at once in a game server, which someone once tried to do in the lobby. Since the lobby has a limit of 30, though, the wave stopped there. A higher limit could look more inviting (“wow, there can be a thousand players at once here!”), but in this case, it could have led the server to crash. Nothing happened, in the end: all accounts got disconnected, a swift IP ban was added, and we never heard from it again.

Keeping structures simple can also help to deal with an unexpected increase in visitors: the simpler the web page, or the fewer plugins a game server runs, the better they can handle many people using the same resources. I prefer not to overengineer anything, as it makes things easier to maintain and growing pains fewer to deal with!

For now, we have plenty of capacity to spare. If you see someone new around, say hello and invite them to stay, we can handle it!

– Doctacosa

Following up on my post from earlier this month, I decided to move forward with a permanent presence on the Fediverse by setting up my own Misskey instance at https://social.interordi.com/ . This one is the real deal; feel free to check it out if you're interested!

If you have little to no idea what this is, I've prepared a short starting guide that's now available online. In even shorter form, this is a social media platform that no one person controls: multiple servers talk to each other to form a strong network. Post, read, follow!

You can check my profile here, register from the front page or follow me from your current profile with @Doctacosa@social.interordi.com.

This is also another place where people will be able to follow Interordi news as they come. The Creeper's Lab already gets automated news posts on its profile, offering yet another option to people who might not be active in-game but want to stay in touch with us.

In installing this, I'm following the same core guideline that led me to run my own Minecraft servers: this is something that I have some amount of control over and that I'm hosting myself. This way, I don't have to worry about someone else getting tired of maintaining it and pulling the plug unexpectedly, or some billionaire tossing caution out of the window and destabilising the entire platform.

#social_media #fediverse

– Doctacosa

Trying to follow (or lead!) online trends can be a challenge, as I've written about before. One of the big aspects of this is choosing a platform (or many) and making the best use of it all. To better get an idea on my options were, I decided to look closer into Mastodon and other Fediverse services.

Now, many of you might be thinking “what the heck is a Mastodon?” Yes, it's an animal, it's also a band, but I'm not writing about either of these. Mastodon is a federated, decentralized microblogging service. Beyond the jargon, it means that you can write short-ish messages, publish them online and let others comment and react. Since it's decentralized, anyone can run their own servers and people are free to join the ones they like. There is no single entity like Twitter Inc. that owns the platform. Still, the multiple servers all talk to each other, so you don't need to join the same place as others.

After looking around, I've setup a Misskey instance for a trial run. It can communicate with other services like Mastodon smoothly, so you only need to join anywhere to get in touch with people. Easy! I'll be using this to test further and see what integrations I can do.

The goal here is to have a place that anyone can join and chat on, plus I gain a convenient spot to automatically post news on. Bonus, since this is linked to other online services, people can follow updates from whenever they like!

Note that this setup is temporary. If I move forward with this, it will be on a new install at a different address, so nothing will be kept.

If you want to give it a look:

To follow someone, you search for them. If we're both on the same server, you can just search for @doctacosa and follow. If you're already somewhere else, you can find my test account by searching for @doctacosa@misskey.interordi.com . Alternatively, I have an account already established at @doctacosa@social.vivaldi.net . Careful, the first @ is important too!

If you have any interest into this, check it out and let me know what you think!

#social_media #fediverse

– Doctacosa

For many reasons, I'm not a big fan of doing strict planning for an upcoming year. The fact that I'm handling these projects part-time plays a big part into this: since I only have so many hours available, I need to make some tough choices at times. Plus, I don't control everything! As an example, some Minecraft updates can be more complicated to handle and those are released on Mojang's schedule. Still, after the holidays rush, I find myself in a planning mood, so here are some things I'm hoping to focus on in the upcoming months!

Something I want to make more of an effort on is to test out different technologies and build up more prototypes. It's a way to feed the curiosity beast, plus it lets me get a clearer picture on what is and isn't possible. Sometimes, these come in useful later. For example, the procedure to link Interordi Accounts with Discord that went live last week is based off a prototype I built over two years ago!

I've made an effort over time to make more of my projects and code available to other developers and server owners, especially my Minecraft plugins, and I want to do more of this. Some elements are simple to release since they stand alone, others are more complex since they're tied to Interordi internals. That Discord integration opened up a door, though: since I introduced a new bot to make it work, I can move the Interordi-specific features there and keep the chat bot itself dedicated to its own tasks. This way, I keep one while the other can be reused elsewhere!

Online communities are often at the center of my thoughts, as I've covered before. I still don't really know what I want to do there, but I've been actively doing research on the various options that are available out there, both on chat and social media. If you have any suggestions, I'd love to hear from you!

In the middle of all the regular maintenance and upkeep, I've been developing a new thing that's getting closer to being unveiled. While I'm not going into specifics yet, I have high hopes for this one!

And this is just the expected – I didn't plan for the second half of 2022 to be as busy as it got, there's all the stuff I have no control over, plus I want to jump at opportunities that might present themselves, so none of the above is on the strict schedule. I'm aware of some of what I want to do, so I'm keeping at it... while still letting myself unwind with a game or book once in a while. :–)

#2023 #planning #personal #recap

– Doctacosa