Doctacosa

projects

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

This blog

Its author

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

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

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

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

Now, before you assume the wrong thing, this isn't a yearly recap! This post is a follow-up to various tidbits I've mentioned at some point in the past year. I think follow-ups are underrated: it's nice sometimes to have a small update to confirm (or infirm!) something from before.

Back in August, I mentioned working with my tablet during a train ride. One issue I faced is that the battery barely lasted over three hours, while I was expecting much more. I'm happy to report that I've done better since, with about eight hours of usage without recharge. I'm not sure if I had a stray process wasting energy in the background before, but I'm glad to see it's now matching my expectations!

In May, I described the activity chart I was working on. It's now live at the top of my portfolio, highlighting when I have been active on some of my key projects. I also added the ability to check back on previous years. While that history is incomplete, I think it's neat to see how I have been busier in some time periods more than others! Notably, we see an uptick after I decided to publish some of my code for all to see, on GitHub.

A month before, in April, I wrote about my anti-TODO list. It's basically a daily note taking of the things I've done, which I've found to be a good way to reassure myself that progress does indeed happen (almost!) every day. It turns out that the notebook format I use has enough space for two years of notes, almost to the day: I started my current one on 1 January 2021, and I'll run out of room in about four days!

March was when I mentioned working on my online visibility, and which social networks I could be more active on. Reading my thoughts on Twitter is funny in retrospect, especially with how... unstable the platform has been lately! I still haven't really decided anything on this topic, as nothing feels natural. One does need to go out of their comfort zone once in a while, though.

More happened, of course, but I especially like how these all had something worth writing about!

#projects #personal #recap

– 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