It's... that time of the year again. Time to tear something a new asshole.

No I'd prefer not to have to do this either, but here we are.

Introduction

To catch anyone who either has little interest in video games or somehow has been living under a rock up to speed, here's the quick tale of the Epic Games Store and how it came to be.

Epic Games launches the Battle Royale mode for their game Fortnite.

Fortnite proves to be highly popular, quickly causing a craze that is on a comparable level to games as Minecraft.

Fortnite was made available to consumers on the Epic Game Store, therefore meaning a large influx in their userbase.

Epic Games proceeds to open up their storefront for interested developers, offering an 88% cut, no licensing fees for games made in their engine, the Unreal Engine and a guaranteed minimum amount of sales.

The issue

When I first heard of the Epic Games Store, I was... curious. I had kinda dodged past most of the Fortnite stuff by the simple reasoning of having zero interest in a battle royale title, but I had heard of it's very large userbase.

In fact, when I first heard of the storefront, I was positive towards it. Steam as a platform takes a pretty severe cut from developers and is kinda stuck on it's lazy ass, due to having a near monopoly chokehold on the PC games market.

However... while Steam is absolutely worthy of criticism, the Epic Games Store is even more so. Let's dig right in shall we?

Feature-barren

The thing is... in the summary I just gave, EGS wasn't really “created”. It was already around for a while, and games like Unreal Tournament 4 and the Save The Wold version of Fortnite were in fact sold on it. A small commodity of games, all produced by Epic.

Then when they opened up their storefront, there... was a bit of a disparity to say the least.

The Epic Games Store is as it stands, clearly an unsuitable game store for the load it tries to handle. There is no shopping cart, there is no search functionality and a number of other commodities any basic storefront that's intended to sell more than 20 products should have.

To put it somewhat fairer towards Epic, they do have a Trello board for expanding their featureset, but even then, there seems to be a massive issue in what they deem a “basic” commodity, with the shopping cart being put on the 6 months “backburner”, and the majority of nearby features more being geared to selling more products rather than improving the User Experience.

Strange downloading incident

This is a purely personal one. To put it mildly... the way Epic Games downloads stuff to your computer is TERRIBLE. Unless you have an SSD, the entirety of your download is gonna be chokeholded by how fast your hard drive is. This is because Epic Games has opted to locally verify each chunk before downloading the next one. This is a terrible system.

I once had a 180mb update for Fortnite, that took me over three hours to install.

Okay, these are the minor things. Now... let's talk about some big fish.

One Year Exclusivity

The first issue with games sold on the Epic Games Store is that if they are a launching title on the EGS, they will be locked to the platform for at least one full year, before they can be sold on other platforms such as Steam.

This is... a minor issue for me. Perphaps this might be a surprise, but this is purely a choice Epic Games has opted to make. What is less acceptable is the way this seems to have permeated within the game development community.

AAA titles

Much already has been said about Metro Exodus utter bizarre launch, with the game moving no less than a week before release date to the Epic Games Store, after preorders already had been made for the title. While Deep Silver did promise to “honor Steam preorders”, this was the first major AAA title to be announced for the platform that would receive permanent exclusivity to the platform.

This as a result has started what appears to be a worrying pattern for games on the Epic Games Store, with notably Ubisoft announcing the movement for The Division 2 to the storefront after, again, it already had been announced on Steam.

In fact, Ubisoft seems to be moving over to the Epic Games Store almost exclusively, having made a partnership with them, specifically citing the larger cut as their reasoning for moving.

As far as stuff goes, and particularly with how comparatively feature barren EGS is to Steam, this is money grubbing to the highest degree and is merely another attempt by AAA companies to keep churning out higher records to their shareholders.

Indies

Oh boy, I'm gonna end up in a minefield here. Let's preface this with one very important thing: If you are a fully independent indie title and you publish on the Epic Games Store, I have no problems with you. Whatsoever. The deal EGS offers is very appealing, especially if you're someone who is strapped for cash.

What is less acceptable is if you are crowdfunding the project.

Specifically, Epic appears to be targeting game developers on the crowdfunding site “Fig”, which notably when compared to Kickstarter or Indiegogo offers backers a part of a games revenue, provided they back enough.

Notably, the first insight we got into this behavior was with Phoenix Point, a game made by the original creator of XCOM, which took a deal with EGS after it already had been announced on Steam and GOG.

While Phoenix Point did offer refunds through Fig, the Community Manager for Phoenix Point went on record to say this:

They also notably held an AMA session on Reddit about the move, which proved to be a complete mistake, as people kept lading shit onto them.

On a similar fashion, the game Outer Wilds also went Epic Exclusive after being backed through Fig, which incidentally was the reason I started considering this blogpost.

Here's the deal though. If you are accepting money from a crowd to make a game, you are tightrope dancing. If you manage to succesfully anger this crowd, you can risk seriously losing any and all positive publicity you might ever have had and cause your sales to forever torpedo as you and your game studio will now forever be known as “the game studio who did that super bad thing x”.

For a really good example of this, look at The Odd Gentleman, who have been accused in the past of taking the million funded for Hiveswap and using it instead to produce the remake of Kings Quest, only leaving a bugged tech demo for Hiveswap.

Cutting a deal with Epic is in this case, for all intents and purposes a bad deal.

Anti-Consumer practices

So all criticism we just talked about mostly lands itself on the game developers end. Now I'm gonna take a look with you all to see how Epic treats you, the consumer!

Tim Sweeney: Professional asshole

Revenue share

If Steam committed to a permanent 88% revenue share for all developers and publishers without major strings attached, Epic would hastily organize a retreat from exclusives (while honoring our partner commitments) and consider putting our own games on Steam.

This is what we call an empty threat. In order to properly understand why there is such a massive disparity between EGS and Steams cuts, we need to specifically look at what parts EGS and Steam take their cuts and what these cuts pay for.

Basic presumed costs on both platforms:

CDN upkeep and client maintenance.

Staff payments

What the cut for Epic is used for:

Pay for basic costs.

What the cut for Steam is used for:

Pay for basic costs.

Pay for key activation.

Pay for gift cards.

Pay for additional CDN features such as Achievements, Guides and Community Forums.

Pay for transaction fees.

Steam takes no cuts for key activation (and generation), a fact which has been known for a while. It is entirely possible to buy a game on the platform Steam without ever giving Valve money by directly buying a key from the developer or from a store they partnered with (ie. Humble Bundle).

Gift cards are more interesting. While none of what I'm about to say applies to digital gift cards, physical gift cards are interesting subjects to talk about, and this is why.

When you buy a gift card from a store, let's for example say a 15$ card for the Nintendo eShop, Nintendo actually loses money. This is because in order to make stores buy gift cards, these cards are undersold from their actual value. So for example, Nintendo only gets 10$ from the 15$ gift card and the store turns over a 5$ profit.

In order to be able to properly keep this income, Nintendo instead takes this 5$ loss of theirs as a part of the developers cut, but it ensures it's thinned out over the several hundreds of publishers it has on it's store, making the industry standard 30% cut a reasonable one.

Finally, transaction fees. This is a somewhat unverified claim, as I have never bought games from the EGS directly, but apparently, if the payment provider you are using includes transaction fees, EGS dumps them on the consumer to pay.

This is in notable contrast to Steam and really, nearly every other platform with a shred of decency, which eat the transaction fees as a part of the cost and instead heightens their developers cut.

It's because Epic doesn't do what Steam does that they're able to shave off so much from their own cut.

Tim Sweeney stating that if “Steam would commit to an 88% revenue share we would stop exclusives” is a bold-faced lie and is simply a catchy statement intended to get people to shit on Steam some more and love Epic better, but really falls apart when you get down to what these revenue shares are used for.

On a similar kind, the Discord Store, a platform which has received... less luck than EGS although seemingly no shortage of good indies (seriously, I click that tab sometimes on accident and all I see pop up are indie tites that I already own on Steam and know are good), gives out a 90% revenue share and also doesn't do this stuff.

At least they don't tie their games to a 1 year exclusivity deal.

Misunderstanding Linux

Linux always has been sort of a black sheep when it comes to gaming, even more so than Apple. While most modern games typically can expect to see releases on Apple and Windows, Linux always has been treated like a third horse.

This however has been changing over the years, as notably, Steam has been doing their best to improve support for it, initially by releasing the ill-fated SteamOS, but more recently in a much more successful manner with “proton”, a version of wine specifically optimized to run video games (henceforth when using wine, assume I also mean proton).

Now... let's look at what Tim Sweeney thinks of Linux.

Installing Linux is sort of the equivalent of moving to Canada when one doesn’t like US political trends.
Nope, we’ve got to fight for the freedoms we have today, where we have them today.

This... is a basic failure to understand what Linux is. Linux isn't the equivalent of “moving to Canada because you hate US politics”. This analogy just fails to work on such a basic level that I can't even find a similarly intended analogy for it.

That said, let's quickly note a few things about why this statement matters:

Epic has bought up Easy Anti-Cheat. Easy Anti-Cheat notably was initially looking to support Linux and is currently the only thing holding back the ability to play Fortnite perfectly under wine. Under Epics management, EAC was told to stop Linux development.

The Epic client does not support Linux.

Especially that last one is relevant here. Steam is available on all major platforms, the sole exception being ARM devices (citing specifically incompatibility with the various kinds of ARM architectures out there), whereas Epic is... only available on macOS and Windows, including somehow future plans to compete with the Google Play Store on Android of all things.

To put it mildly, this alone should be something to make you wary of EGS.

No user reviews

And as the final cherry on top of the shitcake: The Epic Games Store has no user reviews. While an implementation is currently on the roadmap, the company has gone on record to state that “developers will be able to disable user reviews on their product”.

This... is a ridiculously bad concept. It's one thing to not have user reviews. I'd argue it's not a good thing to have, but that's at best me complaining.

Letting developers pick if they want user reviews on or not? That's just gonna be a recipe for disaster. Especially for modern day AAA games which have a habit of introducing anti-consumer features (such as micro-transactions, lootboxes and/or rebalancing the game to be pay2win) post-launch, user reviews are invaluable to picking apart if a game is worth your time, even moreso compared to regular outlets which are being milked like cows by AAA publishers to churn out reviews for the unpatched products so that people looking to buy these games later will end up getting mislead and misinformed.

This just gives full power to these AAA publishers to silence this stuff.

The supposed argument in favor of this is that it permits a protection against review bombing, an action in which a mob of users start leaving negative reviews on a game (this is also known as brigading), usually due to one or two direct issues with the game, rather than the merits of the full game itself.

While review bombs are indeed an issue, there are ways to counteract them without necessarily removing user reviews. An easy way to counteract a review bomb is to expand the review section to include recent reviews only. In fact, in order to counteract review bombing, this is exactly what Steam did, as well as introducing a graph that will help signify if a game had a long streak of review bombing.

Conclusion

Epic Games Store is... not a remotely good storefront. The store is barren, the benefits for developers are steeped in negative PR controversies and it's CEO and the platform are notoriously anti-consumer.

This is without going into claims that hold less basis and which I held off from making because I cannot be assured of their value or strength.

And want to know perphaps the saddest part? Epic has already won. It's status as a market leader thanks to Fortnite means that it'll be able to maintain it's cheap cuts, the fact that it's not putting a lot of effort into improving it's storefront also means they don't have to drive up the cuts. Small indies will see Epics deal as nothing but favorable, while big AAA titles will simply go to whatever gets them more money like bees to honey.

The only possible solution at this point will be if the negative PR towards EGS ends up reaching the breaking point at which devs will not be willing to tank the blow to their trust that associating themselves with the EGS is starting to mean and signify.

With recently the topic of “why don't kid shows have more LGBTQ+ characters” being suddenly relevant again (a cursory google search can't find any particular source on this, anyone who knows, please tell me), I kinda feel like sharing some experiences of my own.

Me and who I am

If you're reading this and somehow aren't aware of who I am, my name is Valentijn “noirscape” V. I live in the Netherlands and am a bisexual male. In my spare time I'm a programmer and I have a love for console homebrew, as the rest of this blog should indicate.

However... I just want to note, that up until very recently, I denied the possiblity that I could even be anywhere on the LGBTQ+ spectrum as anything but potentially aromantic. And... if there's any specific reason for this, it's to do with the subject of today's post.

Modern society

I'm extraordinarily lucky. I'm born in the Netherlands, which has excellent LGBTQ+ rights. Discrimination on sexuality is explicitly forbidden by law, discrimination on gender expression was also recently added to the list, and barring our most extreme christian right wing party (not the alt-right parties, go figure there!) the idea of scrapping gay marriage or criminalizing it is not even considered an idea.

When said party's leader signed the Nashville declaration, it was basically a national decry. There's occasional gaffes by some personalities, but most of these seem to be born from ignorance rather than outright malice.

Personally, my parents have said that they're “okay with whatever I want to be”. That said... I'm not out to them yet. They don't know I operate this blog and I hope that it doesn't really end up in their face, but... if they do see it, I greet you like anyone else here and hope you kind of understand why I'm not out of the closet so to speak and why I'll end up being it if you do see it.

The stereotype

Note: I'm about to describe a stereotype. A stereotype is more or less what a large group of people describes as traits belonging to a certain group of people. Wether these are accurate or not, is another question. Most stereotypes are more or less grounded in a basis of truth, but some aren't. If you do express these attributes, that's your choice and it's not my place to tell you who you should be and who you want to be and this isn't a request for you to change. It's more of a plea to any reporters, newscasters, writers or any other creator. Anyway, on with the blog.

So... the big thing. It basically starts with what the modern day “gay dude” is like. It also technically all applies to lesbians and trans people, but for now my focus is specifically on “gay dudes”.

Specifically, this is how gay men are represented in modern media:

Flamboyant.

Hypersexual. Specifically, pride parades focusing on the BDSM boats, every picture of an explicitly gay dude that garners attention being a picture of him shirtless and usually ripped and so on and so forth.

“Bright”. Bright, happy colors. Rainbows. Everything. The pride flag is a rainbow for goodness sake, but the way the stereotype represents it is ranging in anywhere from hair color to the general color of their clothes.

In your face and obnoxious.

I have several issues with this entire stereotype, because basically uh... none of this really applies to me at all.

My youth

I think the first time I heard about the concept of lesbian and gay people when I was... 6 I think? That's about the time your fellow primary school kids start forming crushes on one another and the books I ended up reading started covering the idea of a crush too. Sure, it's not much, but hey. Now of course, as a 6 year old kid, you're gonna have some questions and I distinctively recall one of those questions being “can a boy love another boy”. Parents said yes, and I asked a couple more questions (ie. can a girl love another girl) and they kind of gave me the terms for what this meant and asked me if I was ok with it.

I'm the kind of dude that mostly operates on a “you do you” kind of way, so my answer was yes, I'm ok with it.

This is apparently in a modern day situation scarring your child and means CPS should be called on you as a parent if I understand the Christian conservative rethoric properly, but that's besides the point.

So I basically started growing up and as I grew up, the books I read mostly covered straight dudes having love with a girl and so on. As for myself, aside from some three month long “I'm totally in love” when I was 5 (which suprise suprise suddenly ended when I changed primary school, which means it probably didn't mean much to young me at the time), I never really formed a crush on anyone.

I did become slowly more or less aware of the aforementioned stereotype. I eventually learned of the concept of a “pride parade” and... the media footage shown for these pride parades covered these in what I can only describe as the most unappealing light ever. People being loud, flamboyant and in your face basically. It's not that I had an issue with gay people, but young me managed to associate that imagery (and I've always been a pretty closed-off person unless I know you) to gay people and I basically managed to end up with the “Your dad” mentality (a term coined by PhilosophyTube) of gay people; which is “not in my face, but be as gay as you want when I'm not looking”.

Yeah, nowadays that's kinda homophobic to say, but what gives, that's the conclusion young me drew at the time.

Trans people I'm not sure when I learned about them. I think it was when watching a crime show on ID Network (14-15 year old me) and one of the covered cases was a kid who was killed for being trans. My mom asked me if I were ok with dating a girl who then would reveal “yeah i once was a boy” (the vice versa wasn't really an idea I considered at the time and my mom knew that), to which the answer from yours truly was “as long as I know beforehand that they're trans, sure thing”.

Ironically I ended up with a better starting out perspective on trans people than on gay people.

These stereotypes persisted up until I was 16, and up until then, I refused to even entertain the notion that I might be anywhere on the LGBTQ+ spectrum. Now here's when things get interesting. You see, when I became 16, two things happened. First, I got a job. Second, I started getting much more involved in the Homebrew scene than I had previously been. These two experiences basically shifted my views on gay people almost completely.

Let's start with the Homebrew scene since it happened first. As it happens, the homebrew scene is filled with quite a bit of LGBTQ+ folks. Or uh... used to be. Nowadays it's mostly, but not entirely, overran with angry young teenagers again who take the recent shift in politics as the perfect excuse to be a massive bigot, which has driven quite a number of people away from the scene. (If you feel offended by what I just said, that's probably a sign you're a part of this problem, even if you're not a teenager.)

And like I said, I became more active and I started making friends. As it happened, quite a number of those friends ended up being gay or lesbian and uh... that really shifted my view. Because I'll be frank: the Homebrew scene doesn't really match the stereotype. At all. Most of the people I know are just... people, like you and me. They wake up in the morning, they go to work or school, they go home, they eat, they express their hobbies and when it's late they might have a wank.

Secondly, my work. This is specifically related to an ex-colleague of mine who I basically ended up having a striking chat with. Then I learned she was gay. She just brought it up in casual conversation and shrugged it off as no big deal and also explained to me that those pride parades only focus on a couple of specific boats which happen to contain the full-leather suited BDSM people.

To say that these experiences combined were an eye opener for me is an underestimation and that previous belief was basically half-turned onto it's head.

I still despise displays of public affection like overly drawn out makeout sessions, but I have no issues with a hug or holding hands. That doesn't matter if you're gay or straight, I just believe makeout sessions shouldn't occur in fucking public, we have bathrooms and other more private areas for those. Again, even if you're bloody straight, find a private spot okay? They're not hard to find, most restaurants have a bathroom nowadays or find a park bench or something.

I also dislike pride parades, but no mostly for the same reason I dislike other public gatherings: they're loud, noisy and generally a nuisance. Again, this isn't anything specific against the LGBTQ+ crowd and if you go to one, please don't feel like you should stop or anything. If that's what you want to do, all on you. I just hate public gatherings like that. Same for a music festival.

Then add in about a year of casually thinking things over and then you suddenly reach the conclusion that uh... dudes and dicks can be kinda hot too. :p

Why I'm not out the closet

Three reasons:

The stereotype I just described. Basically, my parents would accept me, but they highly believe the stereotype and would try to fit me in it while I am nothing like that at all. I'm the fucking guy that ideally would wear a black coat in the fucking summer, my favorite pasttime is locking myself in my room and waste time on my computer or hone my programming skills. I'm not an outgoing person and probably never will be. I just like tits and dicks equally.

My dad believes bi people should just pick a side and not “feed on both sides of the aisle”. Here's a hint dad. Sometimes someone just finds both hot.

To elaborate on this one a bit more; He also believes that I won't know for sure until I “have a boyfriend or a girlfriend and have had sex”. Except I know kind of exactly what gets my gears grinding and makes my insides happy. It just happens that that can occur regardless of the object in question having an electrical outlet or a power plug so to speak (yes yes, genitalia aren't neccesarily your gender, this is a metaphor m'kay).

“People who are LGBTQ+ figure this out when they're 12”. Mostly again perpetuated by my dad although my mom believes in it too. I hope my previous experience can kind of explain why a kid might just end up repressing these feelings.

The takeaway

I don't know how many people share my experience here. I know it's a unique one and... maybe I'm the only one. I don't know. But I do believe that due to the fact that I felt like this, there is an issue with the stereotype.

The origins obviously come from the original LGBTQ+ movement. To try and set itself off and gather attention to force them to be accepted, the movement opted to go for bright colors to draw attention and the obnoxious part is thanks to what well... any movement is really. They're obnoxious because they are a movement. If you're not trying to shift gears, you can hardly call yourself a movement.
The hypersexualized part seems to have been an overresponse to pedophile allegations to try and push the movement as far away from kids as possible.

And I'd like to stress. If you do believe that bright colors or the hypersexualization or hell, the in your face obnoxiousness that the media loves to focus on are indeed your thing... do it. I don't resent you. I don't even resent the people who originally did it, it had a purpose back then.

I resent the modern media that continues to portray people like this. The media that as a result ingrained an idea in 8-16 year old me of gay people that was pretty bloody dated and one that didn't fall until I was 16. Hell, an idea of gay people that made me refuse to even consider my sexuality as anything other than straight.

And if you are a creator of content or a newscaster or a reporter or whomever... please. If you are gonna report on gay folks. Could you also try and report on the “not so in your face” people. I know you're getting better at it. When that recent gaffe with the football commentator who said that “gay people should just come out of the closet, I don't do that”, the person the news asked for comment wasn't the same group that gets highlighted on the pride parades.

All I ask is... could you do that more? I know people that go to pride parades aren't all BDSM gearing leather-clad fetishists or shirtless muscular dudes now. But not because of your reports. A pride parade is effectively an idea of “we exist and we should keep existing” for the LGBTQ+ movement and by portraying the idea like that... you associate very negative imagery for young people that are or were like me. Because to many young kids, a news report on a pride parade is gonna be their first exposure if they don't have friends with gay parents or a friend who is gay.

Hell, learning that some media personalities I really like are LGBTQ+ and for the most part don't fit the movement helped me a lot to reshape this view after those initial two experiences.

My message

Be who you are. Be who you want to be. Honestly, it's not my life, it's yours. If it makes you happy and you're not treading on other peoples safety, do it.

To quote an image I once saw: Be gay. Do crime.

But if I could add to that... don't be afraid. What the media shows you people are like isn't neccesarily what they're like. Don't feel like just because what they're showing is what people are neccesarily like. I just want to say this to you specifically.

So... “Be yourself. Don't not... consider(?)”.

End notes

I usually don't talk about myself and who I am in public like this. But... I felt like writing this. It's a bit of a derivation from my usual ramblings about other people and how bad or good their behavior is or a close examination of why something is good or sucks, but I felt like putting this out. That's all I have to say on the matter.

Thoughts about writing a discord logbot.

These are just some thoughts. I have some plans but no guarantees I'll put any of these into actual action!

So uh... I have kind of a paranoia problem. I don't like having conversations I saw previously hidden from me or be made permanently inaccessible. I get that in some cases it might be needed, but for the most part, this is more of an irritation than it's an improvement as it makes it more difficult to get a coherent chain of events if someone opts to remove them.

One of the platforms I use the most is Discord. It's basically IRC without the dated hassle that IRC has become. Discord also boasts a lot of very good moderation tools, including bans and kicks and all the usual. The issue comes with the fact that it permits administrative members on a guild to remove messages. This fact has been used for censorship of certain discussions (by removing large swathes of them), and as a result makes it very annoying to figure out a discussion if the admins decided to remove a message (and additionally makes it very difficult to see if a user was misbehaving and removed their own messages, which users can do).

To this end, I've forked a logbot for Discord called panopticon about 10 months ago. It's a very good logbot, but it currently has a couple of shortcomings.

With the original maintainer of panopticon (ihaveahax) releasing the source code for a new version of Panopticon to the public, I'm currently considering writing my own logbot. I've attempted to work with Panopticon-2 itself, but I am unable to get it to function in the way I desire properly and my fork is mostly indicative of stuff I've run into that wasn't logged after I wanted to log it.

So this post will hold some thoughts about my experiences with logging this and what I would improve upon writing one from scratch. This is not indicative of me starting a project just yet, but I want to kind of get an idea of where I stand and what I prioritize in a logbot.

Problem 1: What library

This is an interesting subject of discussion. The discord API has a wrapper in a lot of languages. The original panopticon was written in discord async, but I patched it with a couple of minor changes to work on the rewrite version.

That said, those were at it's core still patches. They were simple hacks made to have it work on rewrite, not a core rewrite that attempts to make maximum use of d.py's rewrites functionality.

Secondly, it's clear that this bot was adjusted while I was still learning discord.py and how to best use it and it shows as the quality of the code varies wildly and the dev branch has undergone several major changes and rewrites.

That said, I'd totally stick with discord.py when writing another logger.

Problem 2: What storage medium

That covers the language for the bot. Now let's consider the storage medium. The original panopticon used simple textfiles and simply appended to the files when new messages and events came in.

This system was already getting pushed to it's limit with my own changes and brings with it various other changes, all of which I had made various attempts at fixing but always fell flat because it's such a major PITA.

But, let's talk quickly about the advantages of this method:

Messages are easily accessible, logs are always realtime and you can simply cat them from your server or set up an h5ai and access them on the web.

It's extremely easily readable

Now let's go over the disadvantages:

No clean method of programatically getting the messages back into a piece of software. I've written attempts, mostly awful regex to attempt to properly do this.

No easy method to properly store discord Embeds.

Edits are disjointed from the message, indicated with an E.

Server nicknames aren't properly shown.

Other events on the server are disjointedly logged.

The obvious alternative would be to put it in a database. Something which panopticon-2 took to heart, as it uses a PostgreSQL database to which it directly talks.

That said... this is hardly an easy or acceptable solution. PostgreSQL is annoying to set up like every other database and it's incredibly difficult to do quick tests on the data given PostgreSQL doesn't have something I can install like PHPAdmin. Retrieving messages is a similar PITA because SQL is an incredibly annoying language.

This is more of a general criticism of SQL than a criticism of Postgres specifically, although the lack of an easy interface is a direct criticism I have towards it.

So... what should we try to use instead?

I personally would still stick with a database. That said, databases don't translate well to objects at all. Unless we had a library to specifically convert an actual object to a database table and relations and all those things.

Introduce, SQLAlchemy, one of the easiest to use SQL ORM tools. It's so easy that it made storing data in a database actually maintainable and not a massive headache of writing a data layer that directly executes SQL. SQLAlchemy removes the SQL part of writing said data layer and makes it easily accessible through OOP methods.

Mapping things is incredibly easy. Hell, look at this example of a simple SQL ORM for a starboard. It's super clean and easy to use. All you would have to do is map the values you want to store to the objects and SQLAlchemy helps handle the annoying writing of SQL. Actually doing things with the ORM is just as painless.

This comes in combination with the fact that SQLAlchemy by design is DMS agnostic. I can put it in an SQLite database if I want to do it lowscale or just for local testing, MySQL if I want to do it in production and PostgreSQL if I want to do it in big-scale production. All I need to give is the proper connection settings and it'll take it from there.

Problem 3: Viewing the data

For the original panopticon, I touched this already in problem 2. Panopticon-2 currently doesn't have a solution for it (outside of a couple of optional views and postgres functions), so I'm free to imagine this on my own.

I would personally make this a web interface, not unlike what Discord already provides. There are various HTML snippets and templates out there that can aptly fake Discords UI and writing a Flask implementation shouldn't be too difficult when using SQLAlchemy as you can share the ORM models.

This application would roughly have the following endpoints and ideas:

The main endpoint will not be directly locked or have any authorization attached. Anyone who can get to it is able to read it. While this sounds horrible on paper, in reality, I'd put the password protection if it was needed for any endpoints behind a simple HTTP authing mechanism through nginxs reverse proxy system. Apache probably has similar features.

API endpoints. These endpoints would be all of the endpoints described below but exposed and returned as JSON.

Logging Accounts endpoint. A specific feature of my fork was the ability to log on multiple accounts. This was done by adding a configuration option and ensuring that all logged data was put in directories that were identified based on the logging account. This method I would like to persist, but I would also like the ability for this to be non-identifying of the used account to prevent people from finding out what account is the logging selfbot if users opt to log through a selfbot. Perphaps an avatar/image option for each account and a default if none are used? In addition, the ability for a “single account” mode that forgoes this mode and instantly redirects to the first logging account should be an option.

Then, for each logging account, I'd add the following endpoints:

Searching endpoint. Global searching would probably be a bad idea and of little use, so I'm not gonna do that, but having the ability to search things per-guild should be possible. Syntax should be similar to discords own. SQLAlchemy has a filter function that looks promising for retrieving data, so perphaps using that could be handy.

Guilds endpoint. Merely a list of all guilds that are logged and links to the channels endpoint for each guild.

Individual guild details endpoint. (API wise, this one would go under the previous one, but web-wise splitting these up is wiser). Should list owners, previous names and IDs. Logging guild icons might be useful as these aren't often subject to change.

Channels endpoint. See the guilds endpoint. Lists and links channels that a message has been logged into. Perphaps also show hidden channels and what can be retrieved from those?

Individual channel endpoint. A list of dates that have been logged at and links to go to.

Channel details endpoint. (API wise, this one would go under the previous one, but web-wise splitting these up is wiser). Would list details like topic changes, pinned messages, old names and so on.

Message list endpoint. Should list all messages in a channel on a certain date, including edits and the IDs. Images should at least be linked to (storing them locally I'd say is infeasible, but providing links to the ones on discord should be a possibility).

User account endpoint. Lists an individual user in the database. This should have their current avatar, their username (and previous usernames), creation date and their ID. Logging Nitro or Hypesquad status is not really needed or possible to maintain cross-account abilities. Should also list role history, nicknames and joins and leaves per server (perhaps on a sub-endpoint).

DMs and DM groups endpoint. Just a list of links to Individual channel end points for these situations.

This is by no means an easy Web UI, and what is currently logged in any incarnation of panopticon would need to be severly increased to maintain this level of logging, but all these things should be passively obtainable thanks to Discord.pys own caching, so rate limits should not be an issue.

Problem 4: Importing existing data.

Importing existing messages and guild data always has been a bit of a hacked thing in my fork of panopticon. Initially it would cache all channel messages before writing them to a file, which ran the risk of running out memory if the amount of messages exceeded the required amount. In addition, it would have to be logged in a separate directory, as the log folders could not be properly merged.

SQLAlchemy would resolve this, as discord uniquely identifies everything with an ID, and if the ID for a message already exists in the database, it can just be skipped over.

Problem 5: Writing this bloody thing.

Yeah, this is a huge project. I'm not even sure if I can undertake it. I might though. Panopticon itself was an incredible logger, but panopticon-2 doesn't really fit my needs nor can I nicely modify it and my own fork is reaching the limit of maintainability due to my own incompetence when I made the fork.

That said, I do want to try and provide this project. I'm not sure if it gets anywhere or if I'll be able to fully implement all this, but I think it'd be really cool if I were able to.

So um... yeah. Those are my thoughts on writing a new and uh bigger, discord logbot.

Let's... talk about the Switch scene again. Yeah, great topic I know. Always so friendly and non-drama filled. That was a lie. The Switch scene is a dumpster fire of two groups at this point, one of which being notoriously more irritating than the other, so let's dig in.

This isn't gonna be another post shitting on Team Xecuter, I promise. But like how fresh turds attract flies, Team Xecuter is involved in this story.

So let's talk about this guy. Blawar, full name Blake Warner (to anyone asking –> this is public knowledge on his GitHub) is a developer in the Switch homebrew scene. If that were the end of it, we wouldn't be here, so let's examine his portofolio.

DZ

We're gonna start by talking about DZ... uh I mean Tinfoil, uh I mean SX Installer uh... what is the correct name here? Blawar would have me insist that Tinfoil is the correct name. So much so, that he claims to have a trademark on it.

Lets talk about what a trademark is and what it entails.

—
As you should be aware by now, IANAL, this ain't legal advice, speak to a lawyer for serious legal advice.

Let's say you're Coca Cola. You have made the most famous diet coke in the country, you're the company that popularized Santa Claus's general concept in modern society, in short; you're kind of a big deal. Your name means something to people. If someone sees Coca Cola, they'll recognize that as belonging to you and they expect some form of quality from it.

Then a different company starts selling their own diet coke. And they too call it Coca Cola. Now, while they don't use your logos directly (since those are protected by copyright), it's still marketed as a Coca Cola product. You obviously don't want this, as this ends up causing confusion. In order to help you protect this from occuring, we invented this thing called “Trademark rights”.

A Trademark is the right to a specific word or word group in a certain context. ie. i'm lovin' it is trademarked to MacDonalds for use in the catering industry. No other restaurant can put i'm lovin' it in their marketing or advertise them as such without MacDonalds's active approval.

This can lead to odd situations (the word Edge got copyrighted by EA (for Mirrors Edge), which caused the game Edge to find itself in legal trouble, or the word Candy by King (Candy Crush Saga)), but in general, a trademark serves a purpose to prevent impersonation.

Now we get to the fucky parts of the law. First, in order to be able to enforce a trademark, you must register it. While all companies have innate trademark rights on their branding, in order to be able to enforce it, you need to register it at a trademark office. Registration fees for a trademark vary between statewide and nationwide, but registering a trademark is important to be able to enforce it.

Secondly, you need to actively maintain a trademark once you have it. If you don't maintain your trademark rights, you will lose your right to that trademark, as the trademark will be deemed to have fallen into common use to describe a group of products or brands.
—

Got all that? Good. Now, let's see if blawar has done what needs to be able to enforce a trademark, which is registering it. Luckily for us, the Trademark Electronic Search System is public! So, bear with me as we enter the word “tinfoil” into it.

Go to Basic Word Mark Search, select only “Live” trademarks (dead trademarks cannot be enforced without renewing them, in which case they become alive) and enter tinfoil in the search box.

I personally got two results! Unfortunately, one seems to be for a clothing store named Tinfoil Hats and the other is for a sunglasses store.

Hrmm... something tells me that neither of these is what this “Tinfoil” offers in functionality, so I doubt either is registered by blawar.

So why does blawar pretend he has an iron grip on the name Tinfoil and gets to dictate who can use it?

Now, a lot of that previous part was showing off, but let's drop the act for now. Blawars “Tinfoil” was originally named DZ. DZ is a NSP installer for the Nintendo Switch. It's been ripe with drama from the start, hence why it's impossible to find any GBATemp discussion thread for it, as the original thread got locked and either deleted or hidden from the public.

There are roughly two major issues in general with DZ, the first being that it is closed source. Now, this is appealing (unfortunately) to the niche, since there's an overwhelming majority of people that don't really care if what they're using is open source or not... but let me explain my motivations for why this is important before you villify me.

Homebrew as it is, always for the most part has been open source. This is for good reason, as you're basically running code that hasn't been authorized by the console manufacturer on your device. Just like on Windows, any program you run with full permissions will have the ability to seriously mess with your personal data. This is why it's important, especially on Homebrew, which should always be assumed to run on a degree of permissions that risk messing with personal data, to have all Homebrew be open source.

I won't go as far to say that all Homebrew should be FOSS, but the GNU GPL is one of the best open source licenses out there.

This argument won't appeal to the masses though, so let me bring up the other argument... allegations of code theft.

If you go to the Tinfoil GitHub repo, you might notice something odd in the Credits section. “Ideas from Adubbz”. Well, that's a tad... odd to say the least. Ideas means Adubbz has apparently inspired blawar or something?

So let me connect these dots for you again. The original title installer for the Nintendo Switch is also called Tinfoil (hence why I from now on will call blawars program DZ). Tinfoil is made by, you guessed it, Adubbz. Adubbz originally had the intention of permanently working on Tinfoil, but lost interest after a fork of his work called dOPUS was made with no interest of backporting the changes into Tinfoil. Call Adubbz petty or not, thats beyond the point.

What blawar is doing here is intentionally avoiding directly having to credit Adubbz for his work on Tinfoil. This seems a bit odd, as the original Tinfoil is under the MIT, which means he's only disadvantaging himself by saying he didn't use parts of Tinfoil in DZ (fwiw, he likely did, but more on that later).

Anyway, Adubbz then handed over Tinfoil to XorTroll, who initially started working on it... up until blawar renamed DZ to “Tinfoil” and claimed he had a trademark on the name.

As we previously established, blawar has no registered trademark on the name Tinfoil for this situation, so he basically has no enforceable rights on this claim. Yet he did pressure XorTroll enough to force a change to the name of Tinfoil to Goldleaf.

Still with me? Let me quickly list the current state of affairs:

Adubbz made the original Tinfoil.

Blawar made a title installer called DZ.

Adubbz loses interest in working on Tinfoil, officially hands codebase over to XorTroll.

Blawar renames DZ to Tinfoil.

Blawar proceeds to force XorTroll to rename his project to Goldleaf, claiming effectively non-existent trademark rights on the name Tinfoil.

Now pardon my language, but this is a tad fucked don't you think?

No sweat though, it gets worse.

Team Xecuter

We're gonna involve another asshole group into the discussion. Say hello to everyones favorite turdstain, Team Xecuter. Let's skip past their behavior for the most part and let me explain what they have to do with blawar here.

See, blawar has sold DZ to Team Xecuter. Team Xecuter of course readily accepted (this is public enough knowledge and neither blawar or Team Xecuter denies this.)

This project is called SX Installer, and aside from being able to launch XCIs and Homebrew, the only noticeably different feature at launch was the ability to launch any RetroArch core. That might seem odd, but becomes less odd when you also know that Team Xecuter had been trying to bribe m4xw. This is their way of giving m4xw the middle finger. It technically doesn't violate licenses, but it's still very obvious what the intent is.

Unfortunately, this did cause m4xw to shed some more... detailed light on the matters. I'll leave those posts to speak for themselves, lest I misinterpret anything from there, but those are the current crux of allegations that DZ steals code.

Let's move on to the next program in his portofolio.

incognito

Released only a few days ago, Incognito claims to let you wipe your console identifying data from the PRODINFO partition (PRODINFO is a partition that contains critical data for the Switch to function, including your certificate for connecting to Nintendos servers).

First, this is bad because it'll result in users being stuck with the wiped PRODINFO, should they ever lose their backup. Which speaking as someone who has some experience helping people in the scene, this is much more common than you think.

Secondly... wait what's this?

a) So your switch can go online without worrying about a ban or using random dogdy DNS servers that are also likely to get you banned.

How oddly specific. This is a very thinly veiled attack against the popular 90DNS DNS servers that block all Nintendo servers (one he later confirmed in the thread).

The “likely to get you banned” claim refers to a couple of unsubstantiated claims of users who say they got banned while 90DNS was on, but upon further investigation accidentally connected without it being configured properly or their ISP hijacking the connection.

I don't see much need to elaborate here, let's continue.

Lithium

The latest in this little shitstorm of bad homebrew, Lithium is... wait is this fucking DZ again?

Claiming to be a “simpler” version of DZ, Lithium is a program I can only see two discernible benefits for creating.

Getting a new GBATemp thread after DZs was unceremoniously hidden or removed.

The chance to dunk on Goldleaf.

- If you are looking for Goldleaf, this is Goldleaf's safer and way more extended evolution.
If you are a current Goldleaf user, you need Lithium!

If the attack on 90DNS was thinly veiled, this is it's obvious variant. This is an outright attack, and many people, including me, called his bluff.

Other facts

Wanting to enter his entire project in the GBATemp homebrew bounty, arguing about the rules. This netted him zero votes in the actual bounty.

Claiming GBATemp is “fake news” after nobody voted for him in the aforementioned bounty and called the entire thing a sham.

Planning on donating the money he could've won from the bounty to the Trump Foundation, basing it on the fact that another entrant had a political statement in it too. Said political statement was a pride flag.

Conclusion

Once again, the homebrew scene has found itself someone utterly vile to idolize. At least blawar isn't a pedophile or a harasser. At least, he isn't to my knowledge. So that's a net improvement I suppose.