Doctacosa

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

Launching a blog in 2024, what a silly idea.

Or is it?

For me, it's a statement: I want to own my little corner of the Internet, as I've always done. It's not so much about running a successful blog as it is about having my own writing place, out of the control of any of the big platforms. It also provides me with a convenient location to link my thoughts on any other site or chat platform.

This blog is new, but there are already dozens of older posts. This is because I've imported the content I've written previously in other places, making sure that it survives the whims of Big Tech™. Check out some of my most commonly used tags to find something that could interest you.

I'll be writing with no set schedule, most often about technology, my thoughts, the progression of my projects or anything else I feel like.

This blog gets posted on the Fediverse as @doctacosa@blog.interordi.com, if you want to follow it. Replies are not displayed here at the moment; to interact, you might want to get in touch with me directly! You can also follow my posts through the RSS feed.

For more, see the pages linked above!

#blog #personal #projects #introduction

– Doctacosa

Sign up to some online service, pick a username, password... and an avatar.

I had been using the same one for several years, and I wanted to change it for something cleaner. But what could it be? I'm not a fan of having my own face there and I didn't want something generic like a travel picture. Maybe a shadowed profile? Or some personal item?

After some thinking, I decided to embrace the gamer that I am and keep the Minecraft head I had been using for some time now. After all, I modeled that skin after my actual head! I changed its perspective with an angle that feels more natural, added detailing like the glasses that aren't glued to the face, and muted the background to create something less look-at-me.

Here's the before (2017) and the after (2024)!

Avatar change

Sci-fi fans who look hard enough might notice a small reference I put in the background. Do you see it?

I also took this opportunity to pick a new color to flag personal items, such as calendar appointments. Whenever I mention this, people are quick to point out the Interordi red as an option, but I see this as the “product” color, what I offer. What I wanted was a “me” color, separate from this. Red is already used, green is identified with the Creeper's Lab, I like orange but I wasn't feeling it... Eventually, I settled on teal. I like teal. And it goes well with a lot of things.

I took this opportunity to regroup all these colors I use on a single page, as a quick reference. The next time I need to set a color somewhere, I won't need to open each site's source code to look for it – I've got a convenient reference right there!

#branding #personal

– Doctacosa

As you know, I'm often rotating between multiple projects. Some need maintenance, others are in the spotlight, while priorities can suddenly change. I'm usually good at shifting from one thing to the other, but sometimes, it doesn't go as well as I'd like.

Part of the work I've been doing lately involves an overhaul of the player profiles. The first step is to improve the current code structure and make it more flexible. A good chunk of the display is made using JavaScript, with the Vue library. I've adopted Vue as it handles smoothly several things I want to do while it can be easily reused in various places. It already powers part of the current profiles, while the Creeper's Lab Companion and the Interordi Accounts section are all done with it. It works well. My problem is, I never really mastered it.

This means that I often have to look up how to do things that should be simple. Let's say I need to use the variable “players”. Depending on where I want to use it, I need to write it as “this.players”, or “players”. Sometimes, both are even accepted! It's a small thing, but I'm constantly tripping over which to use, which leads to bugs creeping into the code all the time. How to bind variables between objects is also a thing I often have to review.

Practice makes perfect, of course! The catch is, I'm not there yet. What I would probably need to do is spend several continuous weeks working with Vue, until it becomes second nature, then I wouldn't need to constantly look up the documentation and double-check my own work.

#development #projects

– Doctacosa

One idea I had in mind in January last year was to try different things, or build up some prototypes, just to satisfy my curiosity. One year later, I can say mission accomplished! But what did I do, after all? Let's look back.

In January, I experimented with self-hosting various tools in a low-maintenance format. I ended up adopting YunoHost to handle some tools like my news feeds, project tracking, online visits counter and more. Since installing it, it's been very easy to use without requiring me to waste time just trying to keep it running, so I consider this a pretty big win.

In February, I wanted to experiment with the Fediverse in some way or another. I compared some of the various platforms and ended up adopting Misskey, hosted on the YunoHost from January. It's now open to the public and running smoothly, but the updates to it haven't followed as expected – I might need to look at an alternative since it's now several months and a major version out of date.

Mars saw me putting a focus on push notifications. Now that iOS 16.1 supports them for web apps, I wanted to exploit them to reach as many people as possible. That's now live in the Creeper's Lab Companion for all platforms, giving people an opportunity to stay updated on the latest news if they want to. This work will be reused for Osmium later.

April was a time of experimentation about chat alternatives. Discord is working well for us, but I don't want to grow too attached to a platform I don't control, so I did some experiments with XMPP and Matrix. These didn't go too far due to various technical and software limits. I'll have to revisit this.

May was dedicated to spring cleaning on the Creeper's Lab. Nothing extraordinary happened; instead, I used the opportunity to smooth out some rough edges and improve the automation of some components. Shiny new things are good, keeping what you already have is even better!

Part of June went into building a prototype for a news reader, as I was looking to develop an alternative to simply following sources on social media. I ended up shelving the project after discovering that existing tools like Inoreader already do pretty much everything I had in mind.

July went into studying tools integrating (but not requiring!) Discord. Unlike the chat search from April, this was all about building different methods to access the same things, like a tighter forum integration. I polished an existing prototype while drafting some other concepts. Part of this is still on the drawing board.

August is when I decided to put an extra effort on improving my online presence. I finally figured out a simple web address that's all about me (interordi.com/stephane) while making an effort on my visibility on some social media platforms. I still have a lot more to do on this – I offer various tools and online communities, but people need to know they exist... and that I'm behind them!

An exception happened in September, where I used my available time to play catch-up on various things. I was feeling rather overwhelmed at the time, so rather than spread myself too thin by playing with something new, I focused on getting back in control of everything happening at the time.

October was basically split in half, as I was on vacations during the first half. The second had all my energy going into the launch of Osmium, which finally happened after so many efforts!

November is when I decided to make a push to add new achievements to the Creeper's Lab. This had been planned for a long time, I finally had all the building blocks together, so it was time to assemble them. This was a big hit with the community, proving that the effort was worth it!

Closing the year in December, I've looked at replacing the JavaScript library I use for pie charts, line graphs and the like. The one I was relying on was getting old and difficult to use. I ended up adopting Chart.js as a modern alternative that's much more flexible. It's not integrated on any visible page yet, but I've been preparing its integration in several places.

And that's it for a year! Some of these took time to do, others happened across a single Saturday or two, but forcing myself to have a different target every month ensured I wasn't just doing standard dev work. This gave me an opening to do a few things that I was already thinking about but never had the opportunity to make happen. I'm considering doing something similar this year, if only to see if some of my ideas are worth pursuing or not!

#projects #personal #recap

– Doctacosa

You might have seen this already: Osmium went live a bit over two weeks ago!

This new project's goal is to allow gamers who play on multiple platforms (PC, consoles and so on) to view all their gaming progress, including achievements, trophies and statistics, in a single place. The current version supports three of these platforms: Creeper's Lab, GOG and Steam. While this might seem limited at first, this is only the beginning: I've investigated about a dozen platform so far and I've run tests with several of them to check their viability. I'm planning to take this far!

My initial efforts after the launch went into stabilizing the imports and making sure that accounts were working properly. While this system is new, it relies on the same Interordi Accounts that people already have for their Creeper's Lab whitelist, Interordi forums and more, so making sure that everything works together nicely was key. And with some of these accounts now going back 20 years, it can be interesting at times.

The next steps will focus on improving the data loading speeds, filtering and adding more viewing options. Then, as I invite more and more people to join, ensure that everything runs smoothly as new platforms get added!

My Patreon page's overall campaign has always been to help support my various ongoing projects, although the focus (and why most joined!) has obviously been on the Creeper's Lab. When it gets introduced, the premium access to Osmium will be given to my highest Patreon backers as a thank you. More to come on this later!

#osmium #patreon #projects

– Doctacosa

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