Makiki's Cave of Thoughts

The internet is designed to be decentralized, to have no central authority. It is designed to be the web of many networks communicating with each other. Anyone in theory is able to host their own services, their websites, and connect with others freely... except this is very much not the case. And well, there is quite a few reasons for this, to say the least – but here I want to focus on the one of them – IPv4 address exhaustion.

A short infodump about IPv4 and IPv6.

IPv4, in very simplified terms, is a set of protocols used to essentially handle all the internet flow, with its specification finalized in early 80s. It honestly works fine, except for one issue – the address range.

The creators of the internet standards didn't think the internet will be a big thing, so they've made the address range a 32-bit number – which gives us a bit under 4.3 billion addresses. Furthermore, they allocated these addresses to organizations willy nilly, and suddenly there was a credible threat of exhausting the pool of available addresses.

So, what's the solution? Well, of course, extending the address space, right? And well, yes. That is the solution. And as such, in 1998 the standard for IPv6 was introduced. Main draw? 128 bits of address – ergo, 2^128 (roughly 340 undecillion) possible addresses. Main problem? It needs new hardware pretty much everywhere – and as such, there were steps made to stall the address exhaustion problem. Some steps were societal – some organizations have released their huge IP ranges back to the common pool, and the IANA made the IP allocation policy way harsher to slow down the use of this limited resource. Some were technical, such as the introduction of NAT44 and eventually NAT444, for which I will explain the basic idea a bit later.

Yet this still was not enough – the last block of IPv4 addresses was assigned in 2019, and the IPv6 deployment is more or less nowhere. Of course, there is a question that immediately comes to the mind – why?

Why despite all this time, IPv6 was not widely implemented?

The answer, while maybe not exactly simple, boils down to one thing: the capitalism. Not only there is little capitalistic incentive to roll out IPv6, considering it is a large cost due to requiring new infrastructure, but also keeping IPv4 alive for as long as possible is something that is actually beneficial to the capitalists.

The “benefit” of IPv4 that I am talking about is simple – the aforementioned scarcity and address exhaustion. The estabilished players on the ISP and cloud provider markets have wide enough pools of IPv4 addresses reserved for themselves to still last them for a while. They very treat it as a commodity in similar vein to how landlords and real estate traders treat the land and housing – abusing the scarcity for profit, renting the IPv4 addresses for not insignificiant amount of money.

The scarcity of the IPv4 addresses also makes hosting things on premises – whether for business or for personal stuff – far more difficult than it should be. And the reason for this are NAT44 and NAT444 – the address conservation mechanisms I have mentioned a few paragraphs ago. As simply as I can put it, NAT44 allows multiple devices on the same network to share the same public IP, while NAT444 expands this concept to multiple networks at once. As ingenious of a solution this is, allowing various devices to initiate connections with relative ease – it causes a massive problem when you want someone from outside to connect to your devices. There are ways to work around this, but they are pretty darn technical and in some cases pretty unreliable.

Now, one may ask why I am mentioning difficulties with on premises hosting of various things as something that is advantageous for capitalists. And the answer is simple – it pushes people towards the use of cloud provider services instead of their own hardware and it pushes people towards the corporate social media instead their very own places on the internet. This in turn contributes towards the centralization of the internet within the hands of few big corpos, centralization that allows them to dictate the terms for smaller players and self-hosters and to determine what is even allowed on the internet in the first place.

Capitalism is pain

There is a capitalistic incentive to prolong the life of IPv4 protocols for as long as possible, and little incentive to transition towards IPv6. Not only the big players gain advantage from the issues of IPv4, they also would bear most of the costs of this techonogical transition.

Funnily enough, most of the current networking hardware in use handle both IPv4 and IPv6 just fine. Hell, most likely your computer, your phone, and whatever networking devices you have at your home handle both IPv4 and IPv6 too. The issue is infrastructure – the thing that we common folk have little influence on. It doesn't matter that you can have your own IPv6 address subnet when your ISP doesn't want to implement IPv6 in their own infrastructure. This means for IPv6 to become a proper thing, we have to wait until either the capitalist class decides to be nice or the politicians decide to force the capitalist class to properly implement IPv6. In some countries that forcing factor does show up, in others it seems really unlikely that any politician will even bother – but every host that is migrated to IPv6 is at least some progress towards a freer internet.

Let's just hope that we will be able to see IPv6 dominate over IPv4 within our lifetimes.

At least in the online spaces, it is not a secret that I am aromantic. After all, both on Discord and on Fediverse, I have a very visible aromantic pride flag on my profile picture, and I explicitly write out that I am aro in the short intro about me on my main page. I haven't really went into much detail yet when it comes to this, though – I did say some stuff on some Discord server, but these words are pretty damn ephemeral, and I still were figuring myself out back then even if I knew I was aro. I want my words about this to be more persistent and more well-thought than that. I want these words to be able to help out people who want to figure out themselves and who want to understand more about others.

So... what is aromanticism?

Well... as the name suggests, it is a romantic orientation that is characterized by experiencing little to none romantic attraction. This should not be confused with asexualism, which in turn is experiencing little to none sexual attraction. Yep – romantic attraction and sexual attraction are two different things that do not have to match. You can for example be homoromantic heterosexual, panromantic asexual, and so on. Any combination is possible, even if it might be rare.

When it comes to me, I am aromantic heterosexual. I do get that standard neuron activation when I am looking at hot girls – ergo, I am sexually atracted to them – but I do not really feel something deeper. I do not experience romantic attraction at all.

At this point I would try to explain what romantic attraction is – but that would require me to know how it feels... and since my brain does not know the emotion of romantic love, I have no clue what it is. I tried to ask around when I was still figuring out what aromanticism means for me – but the answers I got were somewhat varied. All I know is that romantic relationship is far more emotionally intense than a platonic one – and I assume it is one of these things that when you feel it you know it. That naturally brings this post to an obvious question...

How did I learn that I was aromantic?

Before I answer this question, I have to say, the timeline of events will be somewhat intentionally vague. Part of this is due to the imperfections of my memory, making summarizing the stuff from last 10 years or so a bit difficult to do so accurately. Part of this is still just my wish to retain reasonable amount of privacy. I do wish to keep my real life and internet identities somewhat separate after all.

Having said this, it is time to begin my story... And I feel the best place to start for me is my high school years.

Back then, I was going by train to school, along with a few acquaintances of mine. One of these folks was a pretty darn cool girl – one that I was vibing with. It soon came to the point where I was considering whether this was love or not. After all, I was a boy, she was a girl, and she was important to me... And yet, I didn't feel any pressure from within myself to get, erm, closer to her.

Eventually, she left for a year for a studen exchange program trip. And then I began to realize things. I wondered whether I am someone broken, since I felt like I was unable to love. I tried to explain to myself that it is my subconscious that was blocking this cause I felt like I have no time for love. After all, I did have to deal with schoolwork, extracurricular stuff, and a bit of burnout on top of that.

Some time later, when I was a bit older, I was randomly browsing through the internet and landed on some LGBT wiki. I don't remember what exactly I was looking for back then, probably some non-binary label that I had no clue what it was back then. As it is the case with wikis, I obviously clicked around through some links... and it was that moment when I first encountered the terms of romantic attraction and aromanticism. I did not pay too much attention to this, though – not at this point, at least.

Fast forward a little bit further, during my university years I was interacting more and more with various queer people – mostly online, but still. I was at the point of my life where I was slowly but surely shedding my ignorance and internalized bigotry. I was more and more understanding of various gender and sexual identities. I was opening my mind towards what makes different people, erm, different from each other. And eventually I've stumbled upon some stuff about aromanticism again – it was something related to Aromantic Awareness Week on Twitter if I recall correctly. This piqued my interest considerably, and I started reading about aromanticism. And from this point onward, the metaphorical gears in my head started turning. A few months later I started calling myself aromantic, even though I still had a lot of doubts about myself at that point. Sure, these doubts weren't anything strong and well-formed, but they were still there.

Eventually, I have posted something about aromanticism on one server. This sparked a discussion on what is aromanticism, what is the aromantic spectrum, and the questions on how am I sure that I am aro. It was, well, difficult for me, considering I still had quite a bit of doubt in myself... doubt that wasn't helped by certain people on this server entering the discussion in bad faith, and me not having enough experience to notice it back then.

As I moved forward in life, I was slowly gaining confidence in me being aromantic. After all, I haven't seen nor felt any evidence to the contary. And finally I reached the point where things got calmer. I (mostly) finished the degree, I had a reasonably solid job, and I left that arguably radioactive Discord server I mentioned above. This gave me a time to think, to collect myself (university was fucking unreasonably stressful), and to focus a bit more on actually understanding myself. However, I didn't get any immediate conclusions back then – I was just stuck at the point of trying to figure out why I know I am aro. I do think that I was still seeking that concrete proof... proof that I couldn't find yet. That would have to wait, until the arguable collapse of Twitter.

Now, why does this event matter for this story? Simple – it was an impulse for me to join the Fediverse. I have chosen the Mastodon instance as my entry point, and slowly began to find more and more people to follow – most of them predictably queer. And reading about various queer experiences there – whether trans, gay, ace, and so on – opened my mind quite a bit. Even if these experiences are completely different to mine, they still showed me that despite all the preconcieved cultural notions, despite all the lies and misinformation coming from multiple angles, the queer experiences are real and valid. And while I was already at the point where I wasn't going to deny others their gender, their orientation – but my resolve about this wasn't yet there, and this has changed. This in turn bolstered my confidence in me being aromantic.

Finally, the last few months over which I was writing this blogpost were calm enough for me to be able to think more deeply about myself. I was able to reflect more on my past. I was able to reflect on my experiences, on my feelings of brokeness – and fully confirmed that I am right about this one thing. I am aromantic.

Pain points

There are still a few pains of me related to me being aromantic – some of them minor, some of them less minor. I've still got to explain this thing to my parents – which will be a bit of an ordeal – but don't worry, it's not because they ain't gonna accept this. It's just cause they might have a bit harder of a time to wrap their heads around this.

I also still struggle a bit with the sense of belonging – I very much do not fit cisheteronormative spaces, but it also doesn't exactly feel I fit into the queer spaces? It is a bit hard to explain to be honest, but it does kinda sometimes feel like aros are getting forgotten or lumped together with aces, despite aromaticism and asexualism being two separate, abeit not mutually exlusive things.

This comes right into my third pain point – the fact that aromanticism is relatively unknown and incomprehensible to most. Romantic love is considered by many as one of the fundamental emotions – making it really fucking hard to imagine world without such an emotion. And aromantics struggle to explain the lack of romantic feelings – because how do you explain lack of something you don't know jackshit about?

The last pain point about this is extremely minor and kinda silly – I ain't gonna be able to write romance like ever. If I would attempt to do so, I would end up writing a deep platonic relationship at best 😅.


It is really hard for me to come up with a suitable conclusion, a suitable ending to this post here. I really hope that this blogpost that I've been working on over the course of the last few months will be helpful to at least one person out there, whether they are aro or not. I will keep bearing the aromantic pride flag in the online spaces to hopefully raise awareness passively – and I will try to do some stuff actively too, whether it is sharing links to materials on aromanticism and so on.

...And speaking of links, if you want to learn more about aromanticism, I have to drop this link in particular:

This is a knowledgebase containing really good information about aromanticism, various flavors of it, aromantic experiences and links to various aro communities.

And if you want to ask specifically me anything about aromanticism... well, you can message me at on Fediverse – or, if you have the connection to me through Discord, you can also ask me there.

Happy Pride Month, everyone.

So, one of the things I have on my bucket list is to create a proper megadungeon for OSR tabletop roleplaying stuff. And I have tried doing so already, but each time I got stuck near the beginning, since I had no clue how to stock the dungeon rooms in a sensible and coherent manner. Like, sure, you could just keep rolling dice, cross-referencing with some table, and just putting the results into the rooms – but that's how you end up with nonsense like a huge, 30 meter long dragon being squished into a tiny 6x6 meter room or absolutely out of place monster and npc placements. Granted, you could be fine with out of place stuff and rationalize them easily for single-use dungeons by noting that an npc or monster is doing something specific there, but a megadungeon is meant to house an entire campaign's worth of adventures. They are meant to live and evolve with each group of players tackling the corridors of your own megadungeon. They are meant to function as an entire world to be explored, just at a smaller scale.

And as such, I have decided to have a different approach instead to what I tried before. Back then, during my previous attempts, I've started with drawing maps, but since I didn't really have any overarching sense of direction, of what I want to do with all these rooms, I had zero idea on how to breathe life into the dungeon. This time, I will start with a more high level idea of what I want to include in the dungeon. I will start with the necessary overarching worldbuilding, instead of jumping headfirst into details.

Of course, from this point onward, spoilers ahead. If you think you might be a player for this megadungeon, you probably want to not read further. That being said, the extra knowledge here shouldn't be that impactful on the gameplay yet, but if you would want to attempt to discover the why the dungeon even exists in the first place, well, you should probably stop reading now.

Starting from the beginning

So, let's start at the first thing for this worldbuilding excercise – why a megadungeon such as this would exist in the first place? Digging out an underground structure is hard[citation needed], especially if you consider that such structure is a living space for various creatures, and well... it is huuuuuge. Not only that, but the deeper you go, the larger the expectation for crazy things to be there – so it can't exactly be just a large natural cave complex.

The idea I have in mind is centered around an artifact left by a long gone god. The artifact isn't really well known, but for simplicity let's call it Chaos Core. During a feud between gods, one of them has decided to set up a contingency plan in case their demise – an object buried deep into the ground that would shape the surroundings and create new followers. While that god no longer has any followers – and as such no longer exists – that Chaos Core still works and shapes its surroundings, even if the area of its effect is limited.

The aura of the Chaos Core has attracted a certain crazed wizard (name and details obviously still pending) to build a tower over its location. The wizard did not know about this divine artifact – their plan was instead to create a place where they could experiment with rare and dangerous magical rocks undisturbed. They dug deep, getting somewhat close to the cave-like structures created by the Chaos Core – but before they could reach it, they have realized the danger of these magical rock is so high, that it has to be sealed. They have created one last vault, and left this world soon after.

Soon after, the upper floors of the dungeon have been expanded and settled by various creatures and animals, connecting them to the nearby caves. The lower floors that housed the laboratory were eventually reached and connected by the Chaos Core's structures. This allowed the energy of the artifact to emanate more freely, and ultimately influence a larger area with its power.

Going back to structure

The worldbuilding done here gives me an actual idea on how the dungeon will have to be structured. There will be essentially three layers of this dungeon, each spanning several floors.

The upper layer will be the living layer – you will have mostly some typical factions there, like kobolds, goblins and orcs, as well as mostly dangerous animals. That being said, thanks to various magical influences of previous denizens, as well as the power of Chaos Core, there can be spots where undead are a thing.

The middle layer is going to be the lab of the wizard, with the vault containing the dangerous magical rock being the main, erm, “attraction” – tho I will slap on the radioactive waste warnings onto that. There will be plenty of golems and machinery there, as well as some undead and really weird arguably living beings.

The lower layer will be dedicated towards the chaos. Expect non-euclidean architecture, and absolutely weird and unhinged shit. If I get down there with creating the megadungeon, I will go crazy here. A bit of noneuclidean stuff will be featured in the previous two layers, like teleports and loops – but here I might get to the point that it would simply be easier for me to not bother with drawing a proper map and instead just mark down the graph structure on the paper or something. Players will get lost. Hell, I will probably get lost as a GM. You could call it a bad game design, but honestly? If you manage to get so deep into the dugneon, if you manage to get both your characters and your player group to hold on for that long – the final challenge should be intense in more ways than just one.

What's next?

Next, I will have to start fleshing out the three layers that I have outlined. I don't want to jump right into the floors themselves just yet for two reasons. First, if I were to go into specific floors right now, I risk these floors to be detached from each other, being essentially separate areas stitched with each other, instead of forming a coherent microworld to explore. I am not saying it is a mistake to duct tape things like this – but I do want that certain degree of coherence. The second reason is the fact that I want to incorporate some structures that span across two or more floors. They are important to faciliate some kind of fast travel, they work wonders with connecting the floors with each other, force players to think in the third dimension, and well... they are just cool as fuck.

With this being said, the plan for the next steps in the megadungeon creation is set. The next blogposts will be about the three layers and the important structures I want to incorporate, as well as some factions and denizens of importance.

The magic system in Heroes of Might and Magic 3 is simple – and yet provides a great amount of depth, even despite the fact that the best spells in the game are obvious, with Town Portal being the literal best spell in the game.

But as there are the strongest spells, there are also the weakest spells – and it does feel like it would be natural for there being the clear worst spell in the game, if there is the clear best one.

Well... time to attempt to delve in and see what awaits us within the worst in the worst!

How do we decide what is the worst spell?

Well, first we need to understand what makes a spell good. There are effectively two criteria one have to take into account: impact and frequency of use. Impact is the raw power of the spell under the typical circumstances you would use it. Frequency is how often this spell can be used in an effective manner.

For example, Town Portal is a spell that has tremendous impact and frequency of use – to the point it is essentially mandatory to have on every single map that allows the use of it. The power comes from converting mana into thousands – or even tens of thousands movement points, which in turn provides a massive tempo boost and map control – and since you always want more tempo, the frequency of use is effectively “as often as you possibly can”.

Slow is an extremely strong spell due to providing you initiative in combat, as well as cutting enemy movement in half – it is not as impactful on the course of the game as the aforementioned Town Portal, and the frequency of use is arguably lower since surprisingly enough in quite a few fights slowing opponents is pointless – but it is still a spell that is used so commonly that some people grew to hate being forced to have it.

Blind is a spell with an arguably higher impact than Slow – it completely stops the unit from moving, making your opponent be forced to skip turns in combat with no option to do anything to stop you from, for example, resurrecting your entire army.

Knowing this, we can infer that the worst spell should be a spell with the lowest impact and frequency of use. If we can find a spell that has absolutely no use, not even an use that is forced by the mapmaker of a hardcore singleplayer map, then our search for the worst spell would be banal.

Does a truly useless spell like this exist?

Well... no. You can find an use for literally any spell in the game, a scenario where it is the thing that gives you the highest chance to win a battle or allows you to get past a puzzle. There is no spell that can't be utilized in any way that gives you an advantage... and yet still, there are spells that are very, very close to being that useless – and I can think of exactly two of these spells. These are Magic Mirror and Disguise.

Why there aren't more candidates?

I am one hundred percent sure that plenty of players would suggest more candidates, such as Misfortune or Summon Boat. The thing is, that all those extra spells you can mention, while they are weak and very situational, actually work correctly – while Magic Mirror and Disguise do not. These two are pretty much just bugged in a way that limits their usefulness far more than their arguably low power level would suggest.

Magic Mirror has a fatal flaw of simply not working against AI. This means this spell only can be used in PvP combats, and by this point in a PvP game you will probably have an Anti-Magic spell – spell that is cheaper, far more consistent, and far more accessible. That being said, there are cases where casting Magic Mirror is the right play, even if they are extremely rare.

Disguise, as far as I know, has two massive flaws. First, as far as I know, it does not affect AI opponents provided you are playing on Hard (130%) difficulty. Second, even in PvP, the duration of this spell is until the start of the first player's turn – which means that if you are playing as blue, you have literally zero use for this spell.

Duel of the worst

As I said earlier, there are two criteria by which spells are comparable to each other – and that is impact and frequency of use. It is easy to see how Magic Mirror is more impactful than Disguise. There is arguably a problem about frequency though – since, depending on the context, you theoretically can gain advantage from Disguise far more often than from Magic Mirror.

Disguise works against AI on Easy (80%) and Normal (100%) difficulties – Magic Mirror never works against AI. Both spells can be utilized versus a player – but Disguise is fully useless when you are the last human player in the turn order.

You can infer from this that the effective frequency of Disguise is higher than the frequency of use of the Magic Mirror... and well you could be right. And yet, I find it hard to justify ever spending these 4 points of mana – or even just 2 if you have the Air Magic skill. If you are playing on low difficulties, the AI manipulation possible with this spell won't ever matter in practice, since you are likely still lacking in fundamanentals anyway. If you are playing in PvP, in many cases the Disguise spell won't deny your opponent any meaningful information. The impact of this spell is so low, that even in the cases where this spell works as intended, the frequency of use is near zero – and I would argue it is at the very best comparable to the frequency of use of Magic Mirror.

So, my conclusion is simple – Disguise is barely the worst spell in the game... tho the word “barely” may not always apply.

Bonus argument: mods

The thing is, the Magic Mirror spell is a spell that is often fixed via the mods. The SoD_SP plugin allows for Magic Mirror to actually work vs AI, and as far as I know HotA mod also fixed this spell. Disguise though is not exactly fortunate enough to get fixed – but even if it were to be fixed, would it matter? A fixed Magic Mirror allows for the clever usage of this spell in singleplayer. A fixed Disguise still does almost nothing.

Can we improve Disguise?

Well... I can't think of any way to make Disguise a solid spell without simultaneously making it incredibly toxic. The idea that came to my mind was to hide the hero from the opponents' vision unless they have a hero nearby... but that would suck ass in practice, encouraging people to just attempt to cheese the fuck out of your opponent or hide your main hero to significiantly reduce the risk of being out in the open.

I am inclined to believe that Disguise is an unsalvageable spell that could simply be removed from the game, and nothing would be lost in practice. It is even easier to delete than any other thing from the game – I am 100% sure that most people wouldn't even notice it missing. It's not Eagle Eye which still has some use for the mapmakers – it is a spell that I would be surprised that anyone unironically cares about.

Disguise is the worst spell in the game, and likely will remain the worst for as long as the Heroes 3 will exist. Is that fine? I'd rather there wouldn't be a clear worst spell like this – but on the larger scale, it doesn't really matter. It is merely just a single tier 2 spell out of many available – and the tier 2 spells aren't exactly the most important ones in the game.

ChatGPT is definitely something very hyped in the techbro sphere, for reasons that tend to fall apart under any degree of scrutiny. For me though, ChatGPT is an anti-tool, and by this I mean that it not only does not fulfill the advertised goal of being essentially an expert in your pocket, but also has a significiant negative impact on humanity as a whole.

OpenAI's own brand of snake oil

If OpenAI's advertisement of their own product was even remotely plausible, it would be a monumentally amazing tool. But ChatGPT does not work as advertised. Period. With the LLM (large language model) approach it will never reach the goal of being a virtual expert in your pocket, no matter how many servers and GPUs you will throw at making it.


What ChatGPT does is essentially equivalent to one thing – an autocomplete function, just at a huge scale. The difference between the autocomplete function that you may use with your phone's keyboard, and ChatGPT come down to just scale. Sure, there are people who are conned in a similar way to how people are conned by cold reading – but that changes nothing in how OpenAI's product works in practice. ChatGPT can only pump out statistically likely tokens – it just has more statistics to use. It does not have any reasoning capability, it does not know if what it says has any basis in reality – all it “sees” are the tokens representing various letters and symbols, and how statistically they fit together.

Because of this, there is no way to implement any automated metric that will check the expected correctness of the information within the output of ChatGPT. The best you can get is a value signifying how sure the statistical model is that this is valid natural language stuff, which is useless for the end users. Why not having such “correctness” value a big deal? Well... it essentially forces you to fact check everything, or risk a potentially fatal mistake. It makes it impossible to responsibly trust the output of the text generator. Due to this it completely fails to fulfill that goal of being “an expert in your pocket”.

Making access to knowledge harder

If the above misleading advertising was all there was to it, I wouldn't call ChatGPT an anti-tool – but the issue is that this product can be effectively used for a few things – things that are not exactly beneficial to humanity as a whole to say the least.

ChatGPT excels when all you need is a plausible sounding text, with no regards to correctness. This in turn means that it is a great tool for generating spam, setting up effective misinformation campaigns, and content milling useless ad-filled stuff. It also makes plagiarism significiantly easier, making it need far less effort to change things up just enough to be not immediately noticeable. All this means that the density of useless information rises dramatically, ergo making finding reaching for the knowledge significiantly harder.

With how much easier poisoning the information and knowledge pool is thanks to the ChatGPT, the damage caused by this product is very much significiant and noticeable – even if you are not using this thing.

But wait... there's more!

The above is in my opinion more than enough to call ChatGPT an antitool. And yet... well, there are other problems with this product, other ways in which it causes damage to the global society.

The creation of ChatGPT is exploitative in nature. The training data had to come from somewhere. Considering the size of the dataset necessary, OpenAI simply scrapped all the textual data they could from the internet, including all the social media content and pirated material. The business model of ChatGPT relies on taking the labor of other people, without consent nor compensation. It's not even a matter of copyright here, as OpenAI does license some of the copyrighted stuff – but the people compensated are not the authors of the works, but instead the capitalists. One could argue that this would be morally fine if they made ChatGPT available for free... but even that line of defense is shattered instantly by the fact that ChatGPT is a commercial product. A commercial product that repackages works of many, many common people.

And then you have the enviromental impact. While it is sadly hard to find any hard data on the power usage of the datacenters required to power ChatGPT – as this kind of information is not exactly something marketing teams want to share. But it is a fact that merely training an LLM model is computationally expensive, burning through a lot of energy. The fact that to add more information to the model you need to retrain the model from the scratch only amplifies the power usage. OpenAI is throwing more and more computational resources into their product, chasing the capitalistic ideal of infinite growth – and as such, the power usage rises even more, while the lack of utility stays the same. The queries to the statistical model themselves are also hilariously expensive – requiring far more resources and energy per query than a search engine.

What's next?

I am sceptical that the current LLM hype is a bubble. After all, corporations love not paying people for their hard work, and ChatGPT – as well as other generative AI models – do allow corpos to exploit the work of others in a far easier way. That being said, I do have hope that ChatGPT will be unsustainably expensive and will run out of the room for capitalistic growth sooner than later – even if that hope is very much limited.

We can still try to avoid some of the harmful effects of ChatGPT by promoting going away from the corporate internet – by making moves to give internet back to people. Encourage people to set up their own websites, encourage people to use RSS feeds, encourage people to use decentralized social media. The less incentive there is to chase the numbers and capitalistic ideals, the less need there is to appease the content algorithms – the more human the internet will be... and I do think that is a good thing to strive for.

So, on a whim of a creativity burst, I have decided to make a yet another go at making an enigmatic puzzle collection. Enigmatic puzzles are puzzles where you aren't given the rules of the puzzle directly – you have to deduce them from the clues provided. One of the most well known puzzle sets like this is Notpron, and it is definitely one of the inspirations for what I want to create, even though I don't like a lot of design decisions there.

My first attempt at making such collection was in form of a static website placed in a private repo on Gitlab – you can check it out here. I think I stopped making this at puzzle number 28, and the furthest I've seen someone get was puzzle 21. I even got some positive feedback – but there were some hardcore roadblocks.

So what were the reasons for me to want to start over? Well, there are a few reasons. The difficulty curve is honestly hard to mantain, the repo is annoying to use because it is hard to keep track of which filename corresponds to which puzzle... and I wanted to put my current VPS and domain name to a fun use. Yes, yes, I should start by setting up my main page, but still.

So, I thought about what I want to implement using the power of my own computing space. And I thought, a cloud save system. And some nicer UI than literally writing the answers into the URL bar.

Why not a client-side approach with js? Well, in this kind of puzzle sets, viewing the source of the website is traditionally considered a fair game. I don't really want people to be directly spoiled with answers just because they thought to use a tool that is normally available to them as per genre convention.

So, I know what I want, time for the technology selection. I took a look at the good old MVC frameworks... and I realized that they are an overkill. They will eat more of the limited server resources of my small VPS than it is necessary. So what do I want to use then? A more lightweight framework? No. I went with the goddamn frameworkless PHP.

”...the fuck you mean frameworkless PHP?”

Well... PHP without Laravel. Or any other backend framework for that matter. Just a basic PHP CGI server and a few modules from the Ubuntu repo so that I can use a database to store the save data and use yaml files to define puzzles with. Literally just this.

I'd like to stress though – if I needed a little bit more stuff or if a threat model I used was even a bit more stringent – using a framework would be a far better option. Here I don't even have a login screen, all you get is a token stored in a cookie that you can import on another device... or even share with friends to solve the stuff in co-op. There is literally zero personal information, zero user data stored in the database, and https provides enough security against man in the middle attacks to make things work. You get your token compromised? The worst thing the attacker can do is to solve puzzles for you. You lose your token? Just solve this stuff again, should be easy enough. The only user input that is touching a database query is the savegame token, meaning that the attack vector for any potential SQL injections or other weird database effects is tiny.

And I'll be honest – I had fun shitting out those PHP scripts. I had fun achieving the effect I wanted in a way reminiscent of web development from 15-20 years ago. Granted, PHP itself is much less of a mess than it was back then, but still. This reminded me of the times when I first touched programming, when things were simpler. When I coded and things were happening. When I didn't care about learning shitton of frameworks and working within projects spanning millions of lines of code. When I didn't know about scrum, kanban, and the corporate perversions of these project management methods. When I just enjoyed doing things.

“Maybe I should try going with frameworkless PHP?”

Most likely not. Frameworks exist for a myriad of reasons, both when it comes to security and efficiency – especially when you are working in a team with someone. Without frameworks you have to do more stuff by hand – and it will be more difficult to mantain a reasonable code structure. Not only that, but frameworks do have a lot of bells and whistles, for example to abstract away the more annoying parts of the development. It also makes session management way easier – and if you aren't experienced, just by using a mature framework and following its tutorial stuff you can avoid a shitton of security issues.

That being said, it may be a fun experience to go back to the basics here, especially for someone who uses like five different frameworks on a daily basis – just make sure to think of a small enough project that doesn't need much to get going.

I will be sharing my new puzzle collection more widely sometime in the future, I do want to make a few more puzzles beforehand though – and preferably test the early game ones on my friend beforehand.

Heroes of Might and Magic 3 is a game that is close to hearts of mine and many other people. The community of this game, while relatively small and niche, is still going strong, even having cash prize pvp tournaments! There are also many in-game improvements thanks to various mods.

That being said, there is one thing that has little support in HoMM3, and is a thing that is sometimes being asked about – that being free for all player vs player gameplay. There are few maps and random map templates that properly try to support this type of play – and well... the mechanics of HoMM3 work against the FFA format being fun, due to several pretty major problems that show up specifically in this one format of play.

Problem 1: The downtime

HoMM3 is a game that already struggles with large downtime between turns. While the competitive community has implemented some ways to mitigate this issue via mods, such as the better turn timer, simultaneous turns and improvements to UI allowing better planning during opponent's turn, it is still an issue that can't really be solved. In the late game, it is impossible to use the simultaneous turns feature, and the turns may last for 20 minutes or more at times even despite the timer limitations. Even at the fastest timers you can often expect players to take several minutes to play out their turn fully due to all the battles with the neutral monsters.

The downtime scales linearily with every player added to the game. For example, if you expect a typical turn to take a modest for this game 10 minutes, in a 1v1 you will typically wait 10 minutes before your turn starts. If you add a third player, this time will increase to 20 minutes, fourth player will increase this to 30, and so on – until you get to 70 minutes with the maximum possible amount of 8 players. Needless to say, nobody wants to wait for an entire hour – if not more – to actually play the game.

Problem 2: The time

The problem with downtime instantly shows the issue with the total time needed to play out a single game in this format. The games in HoMM3 take a loong time – depending on the random map template used, as well as the timer settings, the shortest time you can expect is around 2 hours. Even with the most extreme formats meant to make the gameplay as fast as possible, you can't really go under an hour without severely dumbing down the game and removing any sense of progression.

The time necessary to finish the game also scales linearly with the number of players... well, almost. There is a case to be made that higher playercount will also increase the turncount, even taking into account the possibility of surrendering, which in turn further increases the time required – but also the simultaneous turns reduce the scaling factor sonewhat significiantly.

As for why this increase of time matters, the longer the game, the more difficult it is to set it up – especially when you want to play with a higher playercount. It is way easier for two people to make time for a 4 hour game than for four people to make time for an 8 hour game. A longer game is also more prone to break down due to external factors – whether it is the standard human need to sleep or someone having to go due to an unforseen circumstance, the probability of this happening increases massively with both the playercount and the amount of time spent. And even though you can save, it will be hard for everyone involved to synchronize their free time again to maaaaybe finish the game.

Problem 3: Last Man Standing

Heroes of Might and Magic 3 is – under most circumstances – an elimination game. The victory condition is to eliminate all opponents – and while in 1v1 and singleplayer this doesn't change much, in a FFA scenario things get problematic.

As soon as a player gets eliminated, they are unable to participate in the game anymore. While against random people on the internet it may not be such a huge deal, when playing against friends an early elimination means being excluded from a social activity. And it is not just any social activity – it is a social activity that you have likely set aside an afternoon, if not an entire day to take part in. It is also not that uncommon to end up with losing your army or your main hero early on due to mistake or the need to make a risky play, effectively knocking you out from the game despite not technically losing by the game mechanics.

Problem 4: Negative sum interaction

The previous three problems, while serious, are comparatively small compared to what we have here, since you can still argue them to be acceptable and you can arguably work around them a bit. This one though, well... is harsh, to say the least.

They typical flow of a 1v1 PvP game starts with a early buildup of resources, that will lead to expanding the player's influence and control on the map. Ultimately, the players will meet each other, and will try to take away the map control off their opponent. The game then usually culminates in a final battle, where the full army of each player is pitted against each other, which in turn ends with either one player surrendering the match after loss or an escape and preparation for another final battle... though sometimes you will just catch the opponent unprepared and force them to surrender this way.

Now, the issue here comes down to the fact that the battles between players are an inherent loss of resources for both players. Each battle you take is an inherent loss of resources – but while fighting against neutral units leads to you gaining more resources than you've spent, fighting against players has a different goal in mind. That goal is to make your opponent lose more resources than you.

In a 1v1 game this is a healthy play pattern – it provides a very interesting decision space with various trades you can make to gain an advantage over your opponent despite both of you losing resources. It also allows the game to progress towards its natural end. If you add more players though, this play pattern is undesirable and completely screws over the game's flow, making interacting with other players a losing endeavor. When attacking the other player causes both of you to lose resources, you fall behind every other player in the game. You can decisively destroy another player – but you will likely lose far too much in the process, and in turn be an easy target for other players to pick on. The game's mechanics naturally discourage any form of interaction between players in a free for all gameplay. The only exception is when a player is so far ahead compared to their attack target that they will actually get a net gain from the battle – which in many cases is a result of unbalanced gameplay due to random factors, giving effectively zero chance of a victory to the player on the receiving end of the attack.

Additionally, the interaction between players is often an all-or-nothing thing – to defeat a player, you need to enter that decisive final battle, which is a massive commitment. Without a huge advantage you will incur substantial losses of army – which is a resource that you can't exactly easily regain. To even initiate the conbat, you will also spend the valuable movement points of your main heroes, which in turn slows down your expansion, setting you back compared to the others. All you may or may not get as a reward are experience points and artifacts – that while powerful, may very much not offset the loss, and if the opponent runs away – no artifacts for you. Immediately after the battle your hero will also be vulnerable, with most of their mana being spent.

Problem 5: Toxic play patterns

With more players, certain game mechanics can get abused to create what is commonly understood as undesirable play patterns.

The first of these play patterns is excessive kingmaking. There is nothing preventing a player to send their resources to the other player, giving them a substantial early game boost – there is also nothing preventing them from intentionally crashing their hero with artifacts into a chosen opponent, effectively giving out artifacts for free.

Another problematic play pattern is spiteful play – the player may be reduced to the point that winning the game is impossible, but they can still harass and force other player to respond if not eliminated completely – and complete elimination is not exactly something you have time for in a free for all scenario. In the 1v1 play, the expectation is that someone who is way behind to the point of a guaranteed loss simply surrenders – but in a FFA game this may simply not be the case. The practically defeated but not yet eliminated by game mechanics opponent can still send out weak heroes, forcing a response of someone who has to deal with full powered player – this in turn has a ripple effect further punishing interaction and making the game need even more time to finish.

Now, before someone asks, the potential for diplomatic approaches – setting alliances, painting someone as main threat to gang upon, etc. is 100% fine. Small amount of kingmaking is also fine, but if it can give a very clear advantage over other players, things get very, very iffy.

Can these problems be solved?

I'll be honest – I am not sure these problems can be solved. You can design your map or template around some of these problems, but in practice things will be clunky and will require some artificial rules – that is rules that are not implemented in the game, forcing the players to remember them – to be added.

The first two problems can be handled by designing for short turn timers and structuring the map or template in a way that forces early interaction – similar to Jebus Cross with its iconic desert zone in the middle. The third problem is unsolvable without setting a different victory condition that is more viable than the standard victory condition of elimination – either via an artificial rule, or via setting in the map editor. This could also somewhat work around the fourth problem – but it can easily end up in removing player interaction whatsoever, turning the gameplay into essentially a race. And as for the fifth problem, well, I guess you can add an artificial rule to disallow sending resources to opponents.

You can definitely deal with some of the issues, as evidenced by the MKC's Jebus Outcast, which has a version supporting the free for all format. It is meant for very quick turn timers, reducing the downtime to absolute minimum. Via an artificial rule, it provides an alternative win condition of controlling the center, forcing interaction and ensuring that the game will end in a timely manner – and it does force at least some interaction to happen. It deals away with the spiteful play pattern by limiting each player to a single hero that they are not allowed to rebuy after losing a battle to the player. It has an additional artificial rule disallowing retreating from a battle, ensuring that the winner of the battle will at least recoup losses by getting some artifacts from the opponent. The rest of the interaction between players is also closer towards zero-sum, with stealing army dwellings being an option.

That being said, it still does not deal with the last man standing problem, and at lower levels of play you can easily see early game fuckups ending with the loss of all army that are effectively impossible to recover from in a meaningful manner – or sometimes losing you the game on the spot due to you permanently losing your only hero. Kingmaking, at least in theory, is more significiant here than on more standard templates – gold management is extremely important there to be able to buy out all the necessary units, and crashing your hero to give someone your artifacts is far more impactful – since it also kicks you out from the game, completely shifting the balance of power. And of course, there is still the problem that the limit of having just a single hero isn't something that everyone likes.

To make a more traditional gameplay work, the best way I can think of is the good old fixed map, with a victory condition being capturing the town in the center. To prevent devolving the game into a simple race, one would have to also include intermediate map goals that require going into the enemy territory – for example keymaster tents. Of course, the main issue of this approach is the fact that it is a fixed map, which stiffles the replay value of it compared to a random map template – but in practice, how often will you even get to play a FFA game?


If someone asks me what template I would recommend to play in a 3 player FFA format... I will probably say Kerberos (technically it is made for 3p) or the one hero templates (JO/Duel). I will then follow up on this by recommending some alternatives, like, for example, co-op against AI opponents or playing a different game altogether. For 4 players though, I can also recommend the 2v2 format, which, while it isn't without problems, it does actually work fine. The thing is, with how many problems FFA in H3 has, I do not want to subject unknowing players – especially ones with a little bit of pvp experience – into what is a very unoptimal experience, to say the least. After all, to make FFA in Heroes 3 work well, you have to go against the nature of the game – and when you do so, why not play something else then?