i've been struggling with coding anything recently, and games are a particularly dark spot to me, so this seemingly simple game was what i needed as incentive to try my hand at implementing something again.
the game is made in javascript, only including the mithril.js library to help me deal with UI bullshit but otherwise only uses browser stuff.
it's not particularly accessible though, and it doesn't support "older" browsers.
below are the links to the game itself, its source code, and the mithril.js library.
i've been banging my head for years against the horribly obtuse wall of centralised server management, and in despair produced by the horrible solutions (such as ansible) i ended up saying fuck it and going for NixOS only.
Any server that won't be compatible with it will have to find another way tailored to it.
After weeks of trying to get a multi-VM environment set up in a way that would allow easy testing of setup and teardown combined with ansible (filled with crashes and frustration), i ended up giving up and going for NixOS.
Note that i never tried to manage any NixOS system remotely so this was completely new territory for me.
Still, among the first tools that appeared in results when searching about the topic i found Colmena, a pretty barebones but still intuitive to use stateless NixOS deployment tool.
One of the key aspects i was trying to find was to have something to easily allow me to extract secrets from my vault softwares of choice (something ansible disastrously fails to do) and Colmena is managing it extremely well.
Additionally, the main configuration file (or "playbook" in ansible terms) is as trivial as the usual NixOS configuration system, though i did need some tries before understanding that i needed to include the whole configuration for each system and not a simple subset (which is something that ansible would be better for).
i don't particularly mind to be fair as my systems are pretty uniform and only need a few minor hardware configuration changes which are easily included in the colmena configuration.
Making a small bash script to automate the server OS setup (in case of reinstallation) was pretty easy too and after test it allows me to fully reinstall and redeploy a server in around 10 minutes, with only around 2 minutes of active work on the machine itself.
This was a pretty cool discovery and finally mostly solves my centralised server management issues, so i think i'm gonna stick to it.
my colmena configuration will probably made public once i finish and polish it, in which case this article will be updated and a notice of change article will be published.
people keep telling me to go home.
but i donât understand.
isnât home supposed to be where you feel safe?
isnât home supposed to be a refuge?
if so, then what am i supposed to do when iâm afraid?
when no matter how safe and calm my house is, iâll only feel fear?
if nowhere is safe, then where should i go?
where is my home?
i think that thereâs a certain dissonance in the mental health / neurodiverse community, and i think itâs been contributing harshly to the exclusion of so many members.
itâs about the notion of humanity (or lack thereof) and the stigma around it.
as a strong link is made between being inhuman / non-human and being Bad, weâre commonly facing lots of violence and discrimination from "neurotypical" and "sane" people, but thereâs also a scarily big chunk of our own "global community" pushing us away for being too different, too scary, too "broken".
on one side, thereâs the trap in which many fall while trying to reduce the violence they get, mostly by trying to appease NTs and to change their image, and on the other side thereâs a deeply ingrained notion of "human superiority" in western culture and probably more widely spread (wonât make any assumptions here as iâm not knowledgeable about this enough for now).
this idea brings "humans" to the front, stepping on everything else with little regard, which means everything that doesnât conform to the "human" criteria chart will be seen as lesser, unworthy of respect.
this is how most discriminations work, an imbalance of power linked to oneâs self being used to harm and dominate, use; youâll notice that this pattern and logic isnât only applied between humans, but to all living beings.
trying to appease to the dominant group is, like in any other fights for equality and fairness, useless.
domestication doesnât expose you to less violence, only different forms of it.
the only reason why they have a weaker hand towards more commonly accepted mental-health topics is because of decades, or centuries, of fighting. a fighting that isnât finished. a fight that progressed thanks to our siblingsâ riots.
weâre all fighting for the same thing: equality, fairness, respect. throwing us under the metaphorical bus theyâre driving just because weâre "too weird" will help no one.
in the end, in their eyes, we're both the same.
- someone thatâs crazy and inhuman
What does that mean?
It means that if you try to upload a file to someone's bucket (to which you don't have access to), you will get an access denied error as you'd expect.
This also means that this someone will now have to pay for an upload trial, even though they didn't initiate it.
Let me rephrase that.
You can make someone pay a higher bill by spamming upload requests to their bucket, even without any AWS access credential configured at all.
Targeting the wrong region or targeting no region at all will even worsen this, as it will internally redirect to the right region and bill you for the redirect.
It's been confirmed by AWS support as expected.
I discovered this information reading the medium article below.
This is a good reminder to please stay careful around "cloud" tools or tools with obscure pricing.
"How an empty S3 bucket can make yoour AWS bill explode"
I copied over the lesson points from that medium article in case it goes down.
~notebook: About masks and covid
About masks: tl;dr
02:51
Another room
Clockâs ticking
We know how this night will end
A re-run seen times and times again
Same scene, different room
Unknown shadows, exposed bed
Racing thoughts about a million projects
Paradox of dull emptiness and fiery monologue
Pilled, medicated, drugged
What do those even do, now?
Increase Increase Increase
I only got bills and addictions from that
11 different ones, a myriad of choice
Alprazolam, Prazepam, Diazepam, Lorazepam
âTry them all, youâll see!â
âNot strong enough to sleep? Take this new oneâ
Live the night or die for 14 hours, your choice
Your choice Your choice Your choice
Your choice Your choice Your choice
See? Weâre not forcing you. Doesnât work? Your fault.
âBut youâre too young to need benzosâ
âJust live healthy and youâll be fine!â
Even my scars have wrinkled by now.
i'd like to have a small carry-on tool to check the air quality for me, but i can't really afford a ready-made reliable one.
Knowing that the ENS160 sensor isn't the best option, i still chose to go for it due to its affordable price and because i can still make good use of the provided data.
i was recommended a cheap module bundling an ENS160 sensor and a AHT21 sensor (which is for temperature and humidity readings), so i went ahead and bought one to try it out.
i'm prototyping using an arduino uno, but i will very probably use either a nano or a custom circuit in the first final build.
This is my log noting down my research and progress on it, because damn there isn't a lot of content about it.
The first hurdle i encountered was how to wire this demonic piece.
On the board pins, there's a Vin
pin as well as a 3v3
pin, but absolutely no indication on what voltage the Vin
pin takes.
Since the spec for the ENS160 asks for a bit less than 2v i was feeling extremely frisky at throwing it either of those but both 3v3 and 5v are in the tolerance range for the AHT21 sensor and the electronics clearly show two transistors in a layout that usually resembles a step-down converter so i bit the bullet and threw 5v at the Vin
pin and grounded the GND
pin.
So far, nothing's burning down, so i assume it's correct.
Wiring the SDA
/SCL
pins to my arduino board and running the I2C scanner code provided me with two address matches, so both modules are powered and responsive!
The ENS160 sensor apparently has a deep-sleep mode (which is super cool as far as portable device battery life goes), so i'll try to figure out if the board "implements" it or not (i'm leaning towards INT
being the pin to play around with to put the circuit to sleep, but experiments are needed).
Since i'm getting two I2C addresses (0x38
and 0x53
), i need to figure out which is which to know how to talk to the sensors (or maybe to the whole board at once if it has a middle layer to manage both sensors by itself, but looking at the components i don't see any chip that would provide that functionality, so probably not).
After diving into the datasheet for the ENS160 sensor (which provides its own I2C interface, as expected), i find that the 0x53
address is one of the two I2C addresses the chip is programmed to take, so the 0x38
is very probably for the AHT21.
this kinda threw me a reminder in the face: the tech world and ethics is really not something one can expect to see together.
i hate I2C vocabulary.
i'm going with Adafruit's ENS160 driver library, which provided me with a bunch of pretty complete examples.
Running the first one indeed "works", but since when on its initial power-on the sensor needs a very long time to "calibrate" itself (around an hour), i can't do much more for now.
i'll leave it as-is and take a look at the AHT21 sensor in the meantime.
Searching for AHT21-compatible libraries through the Arduino IDE without knowing more about the sensor, i kept only stumbling on AHT20 libraries, but after a bit of digging i discovered that they're both so close to each other that they're effectively compatible for their "core functionalities".
i chose to go with a fork of Sparkfun's library for this sensor as its code is much simpler and easier to read and possibly maintain (if it comes to this), and it worked right out of the box with the provided example code!
Humidity AHT20 examples
AHT20 acknowledged.
Temperature: 22.17 C Humidity: 47.63% RH
Temperature: 22.14 C Humidity: 47.64% RH
Temperature: 22.16 C Humidity: 47.67% RH
Temperature: 22.14 C Humidity: 47.71% RH
Peeking the library's source code also told me i was right to assume 0x53
for ENS160 as the 0x38
address is being used as a constant for the AHT21 sensor, so everything fits.
OK, now that we've got the basics going with the sensors, it's time to start a real project folder and vendor in all the libs i used in my various sketches.
My end goal is to use bluetooth (if possible, BLE) to more easily and reliably communicate data to my phone, but i know almost nothing about bluetooth and it's not a beast i wanna have fun with just yet.
Instead, i'm gonna go for one of my good old I2C-wired LCD screens (a basic blue backlit 16x2 one).
It's bulky as hell but is super easy to write on and has a really good support, and since i'm already using I2C everywhere and adding the LCD screen will not draw too much even combined with everything, it's a decent place to start in.
Another option i'm keeping for if i get mad at my screen (or for the "closer to final" design) is to add my micro SD card reader board to the mix and log the readings to a SD card.
The only issue this poses is timestamping: either i go for "fuck timestamping" (the easy route but that will make power cycling and later-on data usage awkward) or i need to add a RTC module with its little button battery (the hard route because that's yet another component to deal with in the prototype, and that's more space and power/batteries to account for in the final design).
Though if i go for some form of bluetooth, the current timestamp is definitely an information i can request to my phone (or whatever client device), so i could have a temporary log file being written while the timestamp is being requested, then the log is moved and rotated to the obtained timestamp.
Accounting for the 3 minutes start-up time requested by the ENS160 module i wouldn't even need that temporary log file because i would have more than enough time to request the timestamp, and if i were to not receive it (e.g. if my device were to not find a phone or remote to connect to), i could also simply assume a degraded mode of on-device status reporting without any logging, for example using LEDs to signal the air quality info or using a small LCD or E-ink screen to signal everything.
But anyways, that's for later.
My health isn't the best, and recently it has gone bad enough that i had to resort to self-harm to get through some times.
In a continuous effort to make my environment as safe as i can as well as caring for myself as much as i can, i finally decided to move from my previous tools to a real medical scalpel and blades.
While it does require a bit of initial practice on how to safely handle one, it provides the benefit of a totally safe and easy to deep-clean handle as well as access to sterile, single-use blades, vastly reducing a lot of risks that were and are present in other tools in such a sensitive usage context.
However, my physical disability impairs me in the general usage of scissors (i can use them, but it will be a painfully unpleasant experience), so i cannot use forceps or other pincers to safely install and remove the blades.
In order to fix this issue, the blade installation method i'm going for is... not the safest or most recommended, but compared to my previous context it still is a much-needed upgrade.
However, to remove the blade, i found various "blade removers" online, mostly sold by pharma corpos for a stupidly high price.
Double-checking on thingiverse in the hopes to maybe find a custom-built model did reward me with not one but two different models for size 3 and size 4 handles respectively (i use a size 3 handle); all links to those models will be added below.
A great friend of mine agreed to print two units for me and even mounted them with the right screws, providing me with ready-to-use units right away (and for that, i'm super grateful, shopping for two screws is currently not worth my health), and after an actual in-context use i am more than happy to report that it works wonderfully well and requires little to no physical force or fine movements to be safely used to dispose of a blade.
i'm especially happy that they work so well and with such a simple and sturdy build because i could find absolutely no other 3D-printable plans for alternatives, which means i would've'd to pay full price for a "professional" one.
Remover for size #3 handles & blades (author link)
Remover for size #4 handles & blades (author link)
Their demo video on how the tool is used "naively", showing the ease of use
Author of the two scalpel blade remover designs
i also downloaded them and made them available through the two following links in case the sources were to be taken down somehow.
They are both licensed under different creative commons terms, which will be written on the link.
Remover for size #3 handles & blades (direct file, CC-BY)
Remover for size #4 handles & blades (direct file, CC-BY-NC-ND)
Writing (and archiving) about this nifty tool brings me to consider getting back to publishing a risk reduction section on my notebook, because there's quite a lot that can (and should) be said, and i feel that i'm finally in a place and skill position that allows me to write concrete and actually safe documents.
Especially around 3D-printed tools, there's some stuff to be said (i consider them to be reusable, and there's definitely stuff to write around caring for reusable tools in such contexts), mainly due to the porous nature of the commonly used materials (PLA, PETG, etc) making a serious cleaning much harder than e.g. steel.
Note: i am aware that the fabrication method is the biggest factor on the question of porosity, the previous sentence implies the use of those materials in a layer-by-layer granular / liquid deposit of material, which doesn't provide any reliability on "non-porosity".
My mention of steel is to denote the fact that using steel to make a tool usually requires other techniques which are less prone to those porosity issues if the design is kept as simple as Digitalpunk's removers.
The manufacturing process is as important as the material choice for the bio-cleaning compatibility and sanitary aspects, and "DIY" tools with at-home 3D printing or other affordable manufacturing techniques usually cannot provide any reliability on that regard.
This section would contain a list of the tools i use (or don't use), how i care for them, what is their assessed risk profile, but it would also contain some simple step-by-step self-care protocols that can be followed.
As a note, all those pages and protocols are built from knowledge coming from various places in the medical and bodmod fields, from research papers, from my own training as a licensed piercer, and from the proofreading and co-authoring from multiple nurses i have the chance to be able to regularly work with on the topic.
Flashes of color, waves of green blue red yellow and a million others you couldn't name or even see.
What do they mean? How do they feel? Smell? Taste?
Even the brightest of sounds seem to leave you indifferent, frozen, unable to perceive.
How can you express yourself when there isn't more than a single word in your dictionary of senses?
All that stays is this white, white, white, white, white.
White walls, white floor, white ceiling, white sheets, white lights.
Even the aseptic scent floating in those endless corridors can't seem to hook to anything else than the descriptor "white".
You don't really know if you would consider it all bland.
After all, how would you be able to grade this all when you don't even have a scale?
"How are you doing, today?" asks the doctor, just as he asked yesterday, and the day before, and the day before, and the day before, and the day before, and the day before.
"Empty" would be what he could understand, but by now you already know what's gonna be said instead.