May: 10
Steam Community Marketplace
Section titled “Steam Community Marketplace”-
03:13PM
Did a bit more research and it seems that there is a 10% developer fee that comes with item transactions. I think it be a better move to implement some “Soulbound” items in our game that then get traded via the steam community marketplace? The goal here would be to avoid having to deal with micro transactions directly in-game, kinda having a bit of an exclusive market. As I think more about it, hmm, one could argue that it be the OSRS Party hat system, where we have limited one time drops?
Local Redis Streams
Section titled “Local Redis Streams”-
03:18PM
As the websockets get messages, we need to store them locally in the clients database and this would be a basic long poll. Before I get a chance to build that out, I see some micro optimizations that I can do within the main thread to help move things along. My goal would be to a
tools.ts
that holds a bunch of minor utility functions to make things easier in the long run. Here is the current bridge:
// * Bridgeexport function bridgeWsToDb( ws: Remote<WSInstance>, db: Remote<LocalStorageAPI>) { const handler = proxy(async (buf: ArrayBuffer) => { const key = `ws:${Date.now()}`; await db.storeWsMessage(key, buf); });
ws.onMessage(transfer(handler, [0]));}
This could be further optimized by not having the await and moving it all into a fire and forgot style. We are already transferring the ArrayBuffer from the websocket worker to the database worker, so this micro optimization would be to make that bridge as fast as possible. Ideally, we would want a way for the websocket shared worker to talk directly to the db worker but shared workers can not talk to each other. Thus having the main thread act as a “master” would be the solution for now.
Bitwise Ops
Section titled “Bitwise Ops”-
03:55PM
Going to update the
data.ts
to include the bitwise multi-flag operations. I was hoping that we could have this done via protos but that will have to be for another future rewrite. This is the codeblock that I will place for the multi-flags.
export const MultiMessageKind = { RGET: MessageKind.REDIS | MessageKind.GET, RSET: MessageKind.REDIS | MessageKind.SET, RDEL: MessageKind.REDIS | MessageKind.DEL, XADD: MessageKind.REDIS | MessageKind.STREAM | MessageKind.ADD, XREAD: MessageKind.REDIS | MessageKind.STREAM | MessageKind.READ, WATCH: MessageKind.REDIS | MessageKind.HEARTBEAT | MessageKind.READ | MessageKind.INFO, UNWATCH: MessageKind.REDIS | MessageKind.HEARTBEAT | MessageKind.DEL | MessageKind.INFO, PUBLISH: MessageKind.REDIS | MessageKind.MESSAGE | MessageKind.ACTION, SUBSCRIBE: MessageKind.REDIS | MessageKind.MESSAGE | MessageKind.READ,} as const;
Initially, this would be just in the .d.ts
files but I plan to move the whole shared worker eco-system out and into the laser npm package.
This means in the future , we can have a single bundled javascript file that would hold all our shared workers and packaged into a window.kbve
that we can use in any framework.
Unity DevSession
Section titled “Unity DevSession”-
08:00PM
Making great moves! Okay, we are trying to figure out a basic way of placing items onto the map, I think we made some solid progress with it as well. The goals would be to get some minor bugs out of the way, place the new map and generation for it and finally do the Steam integration. With all of that out of the way, we can get a demo up and running for people to wishlist and play.
TailWindCSS
I am thinking of adding a bunch of the different tailwindcss code fragments into our javascript
page, this way it will be easier for me to reference them.
However one of the issues that I want to resolve is rendering the tailwindcss, so that it would be easier to see.
The question then becomes, how would we go about rendering the tailwindcss and displaying the same html/tailwindcss code?
We can go ahead and add a library called html-react-parser
which should help us render the tailwindcss code.
El Portal
The best way to start the day off is with some fresh El Portal!
Tools
I decided to move a couple tools out of the /tools/
folder and into their own respective areas.
The jukebox is back inside of /music/
and webmaster tool is moved over to /webmaster/
.
Webmaster
I decided to dump a decent amount of information that is related to general SEO/Webmaster stuff into one large mdx file. The goal will be to aim at updating or adding 3 mdx files each week, eventually I will place bounties for someone to help improve them.
The webmaster documentation is not 100% complete but I did add a decent amount of information , tables and general examples.
-
10:00am - SSS - Shiitake, Shower and shave and out the door! My last official day in India and its giving me the feels. I am going to miss this place for the time being, the society, the flow and the memories. I suppose I will not miss the random cow dung, monkeys throwing dung and the historic slums but the light and darkness create a vibrant eco-system that I can only define as karma.
-
12:00pm - Going through the general updates for the website, I can not seem to get a basic or static result from the pagespeed tests, they keep throwing me into a random loop of scores. Sometimes I am hitting high 90s and then several sessions later, I am hitting low 60s? I can not tell if its Google or Ezoic (which is displaying Google ads?) or Cloudflare or something that I messed up within my UI/UX. The best course of action might be to just disable everything and then slowly add back content that helps with the flow. Okay lets remove the splash and the general advertisement above the fold! Maybe that might help with the flow of the website and the content.
-
1:00pm - I removed the splash page, the floating buttons and added aria-labels to the footer buttons. I am going to go through the code base for the main page again and see if I can remove anything else that I will not need for the time being. I will have to update the Oracle component as well and have all the images load at an extremely lazy method, as they are taking a bunch of resources and data up that we do not need to offer. I suppose we could just remove all of the background images for the specific listing and place more gradient style backgrounds with slow loading images upon the hover? We could also swap the idea of a light/dark mode with a slim and heavy mode? Where the website loads with a simple bases and then if they press the heavy, it then takes them to the app. The concept we are going for might be to keep the astro layout as simple and fast as possible! With the visual aesthetics and heavy performance inside of the flutter application.
-
1:30pm - Upgrading Astro to 2.4.4, Appwrite’s Pink library to 0.0.6 RC-12. and the Astro sitemap to 1.3.1. While I am able to upgrade the components and the general website, the cache for the website does not seem to update. I will have to create a new action within Github to clear the Ezoic cache. I could have the cache get cleared via n8n or through AppWrite but I feel like having it done via Github actions would make the most sense. The idea being that we want to put the least amount of stress on our own private systems and offload as much and as many tasks to 3rd party tools and/or applications. The trade off is worth it in the long term, as we expand our collection of websites, we can make sure that the scaling will not hold back our system.
-
2:00pm - I am trying the cache system again from Ezoic and it seems to be a bit more annoying than I remember. Furthermore, I am having a bit of a tough time clearing the cache, so I will have to look further into how they are handling it. Upon doing some more deep diving, it looks like there might be a conflict with Cloudflare’s cache settings and those by Ezoic. We could have a situation where there is a double cache going on, which might make it a bit more painful for the website to be a bit more
live
, as updates might take upwards of 48 hours to dispatch. One solution would be to have some of the more active pages be limited in the cache to just under one hour? Maybe even disable all cache for news and the front page? If we put back up the chat and forum, we could also look into disabling that? These are some thoughts I will go over while I walk around the city before departing. The good news is that there are no issues within flutter, which makes sense because its just a monolithic javascript file aka dart.js that loads everything. -
2:30pm - A great read on how Unsplash handles their backend stack! I love how they organized themselves into a small but productive team, something that I think a lot of startups should take note of. You do not need a massive team to get the job done, just a strong and core collective with simple mission and structure. Granted the initial look at their infrastructure map might seem a bit perplexing but its really simple at the heart. You have an extremely large data set of images and then make it fast enough for the whole world through caching and optimization. I like their take on the newer technological stacks and honestly sometimes it just might not be worth the energy at the time. Why switch your whole database from Postgres to some random new database to only save 10% of speed while breaking all your tools!? It would make more sense to focus the time on growing your business and then going back to re-tool down the line or outsourcing it to battle-proven operations.
-
Ah! Got a new amazing… high, ugh low?… score of 58 on PageSpeed! I guess it might be time to ask the Ezoic team what the fish is going on.
-
6:00pm - We were able to figure it out! It was a Google advertisement issue that caused multiple issues then stack on top of each other. Actually it was worse but we wont throw them under the bus, because they will never care and honestly its just a shitty and sand thing overall.
Silence is the sleep that nourishes wisdom. — Francis Bacon
- Get onto a plane.
- Tom Hanking around the Terminal.