Clorith https://clorith.net/ In some starsystems, I go by Marius Mon, 23 Sep 2024 21:51:00 +0000 en-US hourly 1 https://clorith.net/wp-content/uploads/2018/10/icon-150x150.png Clorith https://clorith.net/ 32 32 So, I had cancer https://clorith.net/2024/09/so-i-had-cancer/ https://clorith.net/2024/09/so-i-had-cancer/#comments Mon, 23 Sep 2024 21:16:04 +0000 https://clorith.net/?p=1916 Direct, straight to the point, while moving on and keeping it lighthearted!
And if you’re on any of the same Slack instances as me, this is why I’ve had that sick emoji for the last 9 months.

This is not a blog post any more, it’s a novel, I will only apologize slightly.

Why didn’t I just say anything earlier? Well, I told some people, I lost track of who I did and didn’t tell… And to be perfectly honest, I didn’t want anyone to worry. I didn’t tell my own family until a few weeks before I got my final diagnosis.

Trigger warnings and forewords

I’ll include some details on what type and such, this blog post may be a bit long, it may also be a bit graphical in terminology, or may be triggering to those who have gone through, or have loved ones going through similar situations. I feel with you, and hopefully if you wish to read it all, it will give you some insights into how things can flip around really fast, but that in the end the professionals know what they are doing and together with them you’ll figure things out, no matter what the final outcome may lead towards. And also that men are idiots and need to be better at seeing doctors.

One of the media elements used in this post depicts needles, I just wanted to be mindful of those who do not like those as well (I am with you, but I also feel like it demonstrates some of what has been involved in a very particular way)

Diagnosis

So with that in place, let’s get a bit serious (but also a bit lighthearted at times still!), at the beginning of October of 2023 I was told I had cancer, although the actual diagnosis was not given until December 20th of the same year (because there are processes and checks and balances you need to go through, they don’t want to start you on cancer treatment if they do not need to).

They caught it all extremely early, thanks to an unnatural level of pain I had started experiencing. As a man, you’re told the tale of checking your testicles and looking for lumps, much like a woman is told to get mammograms and other more intimate tests I honestly do not know the name of. Turns out, you may not always have a lump, but you can have ridiculous levels of pain.

I initially thought I’d done something silly, like sitting down stupidly (as you grow older, the likelihood of that happening increases substantially 😅), but when the pain did not go away for multiple weeks, some days so bad I could not stand upright, I finally decided to see a doctor.

I had some back and forth with them about what the cause could be, I didn’t agree with them, and thankfully the owner of the clinic insisted on sending me to the emergency room as it sounded like it may be a form of testicular torsion.

Be thankful you’re not the one they rush to the front of the line

Once there, and after quite a bit of waiting (I once heard someone say, and I’ve kept it with me in every hospital or doctors situation since, as I find it to be incredibly grounding; “be thankful you’re not the one they rush to the front of the line”), and a quick ultrasonic scan, and I mean quick, the tech barely put it to the painful area before stating with absolute certainty what the cause was, I was given the initial diagnosis.

They followed it up over a few months with regular ultrasonic checks, and then a couple of CT scans for good measure, to see if things changed, if cells grew unnaturally or in weird places.

The first treatment

When they got the definitive answer, things suddenly happened fast for a while, I was given surgery 2 weeks later (the first week of January), after which they grew specimens to find out about type and aggressiveness, once they had the results, I was automatically transferred to Haukeland University Hospital, one of the leading cancer hospitals in the world. That sounds more serious than it is, it’s just procedure to transfer cancer patients there depending on the type, to lessen the workload on an otherwise strained national health service.

I had a somewhat aggressive variant, which meant it had already in that short period of time, spread to lymph-nodes around one of my kidneys. (ironically, the same kidney that gave me a kidney stone 2 years ago, I think that particular part of my body has a vendetta, I also had a few smaller ones as a side effect of some of my medication during treatment, yaaaaay).

Spreading means surgery wasn’t enough, and I had to prepare for chemo. This is the part I’ve been uncertain about how to share, because this is what many people associate with cancer, and it is the most obvious sign that you are being treated for it.

And despite that, I wasn’t worried about chemo. In many ways, chemo is easier for men, not that men are tougher than women, but because the side effects of most types of chemo is the aforementioned loss of hair, and it is more socially acceptable for a man to be bald than a woman. Strange take on it, I know, but here we are.

Chemotherapy

Treatment consisted of 3 treatment rounds, each treatment is 3 weeks, quick math, that means just a quick 9 weeks, no problem, we can do this!

When getting chemo, there are various ways you can get the treatment, I was fairly healthy, and could move about on my own, it was caught early, so I got policlinical treatment, meaning I would walk in to the hospital from my hotel in the morning, check that my IV was still good and usable, then they’d start.

I was fascinated to learn that they custom make every patients chemo, based on height, weight, and type. Obviously the bigger you are, the more you get.

In my case, I was to be given three different solutions, on day 1, 5, and 15 of each treatment cycle, you start off with a small bag, the one most people react poorly to, and also from what I’ve gathered, the one you don’t want to have leaking anywhere because it’s bad stuff. Then the remaining two which were combined into one to reduce the daily treatment time.

Things didn’t quite go as planned.

On the very first day, I was a little bit nervous, I don’t like hospitals, blood pressure and pulse was up from the environment. Policlinic was full, so I was being so lucky as to get treatment at cancer ward, this meant I got to lie in a bed and relax, sounded really nice to be fair.

After doing some breathing exercises that I often use before bed to try and calm down (thanks, Headspace!), I got my blood pressure and pulse down to a level where protocol dictated I was allowed to start treatment.

First you get the saline solution, need to have a decent amount of fluids running at all times, as you need to flush the dead cells and the poison out of your body. They then started me on the first bag, the bad one, things were going fine, surprisingly fine, chemo didn’t seem that bad at all. The administering nurses were just chatting around, we were getting on great, honestly it was a very relaxed atmosphere, especially after that first dose was done with.

Then came the 2nd one, the mix, they start the pump, oh yeah, it’s a pump, not a drip, although the setup is the same, there’s a machine in between that makes sure the right amount goes in and all of that, also very fascinating, I got quite familiar with the machines, which ones had a temper, and how to work them if they decided to act up while I was out eating, in the bathroom, things like that.

Back to the chemo though, as soon as the pump display lit up the number 40 (20?), I immediately felt like I couldn’t breathe, I thought my throat was backed up by the need to be sick (I had heard many people on chemo get bad reactions and vomit), but it also felt like someone was sitting on my chest and I couldn’t catch my breath, even though I was getting air.

Why is 40 (20?) important?

This is the amount of fluid left in the tube between the pump and your body, that means that when they zero it out before adding a new fluid to your system, it takes that much before the new material affects you. This essentially means that my body reacted as instantly as can be measured to that particular chemo mixture.

I say “40 (20?)”, because I must admit, it’s been a few months, and I do not recall the exact measurement between the two.

But holy heck did the nurses spring to, the machine was stopped, and the reaction stopped near instantly, and the reaction kit brought out, and steroids administered, in less than a minute, we were back to nothing, but I had to postpone my day 1 treatment, and stay overnight in the hospital for observation, and they also needed to find out what had happened.

A new plan is hatched

As the next day rolled around, the doctors came by to check up on me again. Oh yeah, they do that, although not all the time, the nurses and supporting staff are who truly run a hospital, and I love them all to bits. During longer treatment, you start recognizing them and knowing them by name, it is almost like seeing old friends again when you return, it’s an odd sensation, and you have a slight feeling of loss when you are done and they’re not part of your daily routine any more.

But back to the chemo, the doctor had consulted senior specialists (again, world leading hospital, very lucky!), and my reaction seemed to be to the chemo called cisplatin, one of the two in the combination pack.

They had adjusted my treatment procedure to account for this, and they felt quite confident it was the root cause. They had a plan for what they needed to do to stop my body reacting, more pre-medication.

I forgot to mention the pre-medication, you take some pills to avoid side effects such as vomiting, and also flu-like symptoms from the smaller but stronger bag they start off with.

My new setup involves anti-sick drugs, another one I do not recall the name or purpose of but which allegedly would make me very drowsy, and a good dose of steroids to combat the drowsyness. I recall a nurse at one point being surprised at the levels of medication given to me, as the steroids were usually limited to 12 units in a 24 hour period when hospitalized, and I was given 20 units within a 5 minute window.

Funnily enough, the steroids made me sleepy, I slept through most of my treatments, but would, for the most part, get up to go eat, but towards the end of the week I was so dead tired, and the nurses kindly brought me food in the treatment room. My treatment time was now 8-9 hours per day of sitting in a chair having poison pumped into my veins.

First chance for some recovery

First week was over, my parents picked me up by car and drove me home, 4.5 hours one way, they were shocked at the state I was in, I was so knocked out by the medication that I could not have been sent on public transport as had been the plan of our patient transport authority (I later got my doctor to sign off on me always needing to be accompanied, so we could get at least a little bit of the travel cost reimbursed, but me and that travel authority… we are not friends).

Once home, I had a week of really not doing much, I was tired a most of the time, my parents and me would have dinner together every day after they got off work, this both helped me have someone check in on me, but also ensured I got food in me and I didn’t just sleep the day away. I think my ability to eat on a fixed schedule helped me appear somewhat well off throughout my treatment.

Without food, you have nothing to regenerate your body with, and although I lost my sense of taste, and some tastes and textures made me feel sickly, I still ate even if I ate less. What tasted something, what made me feel unwell, it changed from week to week as cells tried to regenerate, or were broken down further by continued treatment.

Again though, it’s fascinating how the body works, and what you can do to it and still recover.

The first real scare

the week passed, day 15 came, I had my chemo booster, and then I waited again. I do not remember if it was Friday or Saturday night that week, I was to return to Bergen where the hospital was that same Sunday, I had an incident.

As I had just gone to bed, I had just looked at my phone as I often do when I get into bed, I like to check the news, and then I read a little in my book, my arm locked up, my hand cramped, I lost my phone, and my entire body decided I had to roll over to the left. I had no control.

I can remember my thoughts.

“Oh no, this isn’t right” as the cramp hit.

“I’m alone, and I am dieing” as I rolled over and felt my consciousness fade.

I woke up 2 hours later, I know this because I had my phone still, I knew the time I had looked up the news. My tongue was swollen, I had bit it quite hard it would seem. I had soiled my self (really not holding anything back here).

I was confused, and worried. I had a shower, I called the hospital, who told me to call A&E, who told m,e to stop by and they’d have a look. (I would later get a personal apology from the Bergen hospital, as they did not properly assess the severity since they were so far away, but they should have sent an ambulance at once).

My father picked me up in the middle of the night and drove to A&E with me, where they ran me through some tests, said all seemed fine with me, and then said they’d send me to the emergency room as they could do other tests.

I left the doctors office, I started walking down the hallway with my father in front of me, and my arm shot out in front of me, it locked in place, I can swear I said “oh no”, but I don’t think I uttered a word as my body was not mine to control. I cramped up, and I tipped forward, I was not there when I hit the ground.

I next woke up inside a CT machine, same procedure as last time I had again bit my tongue more, the whole shebang. I was lucid, I could answer questions while in the machine, but I do not remember leaving the room, the next memory I have is at the neurological ward of the local hospital.

I had just gone through two seizures in a few hours, I was tired, my brain was not where it should be. My parents were both here by now, had been told preliminary findings by the doctor, information I did learn until today, 6 months later, maybe that was for the better, we may never know. They first thought I had developed a large brain tumor. I can not imagine how terrified my parents must have been at that point.

I did not know what was happening, other than my body suddenly stopping to work at this time, I remember needing to use the toilet really bad, and a nurse leading me, I remember it being a successful trip, my bed was in the hallway, only a few meters from the bathrooms, on my way back, it happened again, I could have sworn my arm went out to protect form the fall, my mother says I covered my face, I guess my brain and my body wasn’t communicating that well, but it’s again fascinating how the body protects it self in such a way.

I don’t remember hitting the wall on my way down, but I next woke up in the MRI machine, again perfectly lucid when I woke up, but this time with a small bandage on my head, and a couple of stitches I was told.

Some answers at least

The MRI and CT combined now gave a much clearer picture of what was happening. I had suffered two brain bleeds, likely from my two falls, and I had blood clots in my brain. Take note of that plural “s” there for the blood clots, I did not pick up on that, I thought I only had one until today when I had my checkup. They were causing epileptic seizures.

The cause of the blood clotting was unknown, was it the cancer, the chemo, a combination of them, or just really bad luck that I was predisposed to them and they hit just now? They now feel confident in saying it was the combination of the chemo and the cancer causing them, but at the time we had more questions than answers.

The scans also showed a growth in my sinuses, just to add to the fun. This meant I needed a spinal tap to look for infection, I was also on seizure medication now, and blood thinners. The blood thinners had to be administered morning and evening via injections in my stomach (or other fatty areas of the body).

A solitary soda bottle on a table, containing spent needles, with caps covering the needle point
The roughly 200 needles administered by home nurses to me before I was moved over to pill form after chemo

I’ve never liked needles. Over the course of my treatment, I grew to really fear the needles, that spinal tap probably didn’t help much at all. My blood pressure went up, and I got started on medication to keep it low as well, as I was transported back to Bergen to continue my cancer treatment.

When I came back there for round 2, they first needed to check up on that sinus growth, they did not feel comfortable breaking down my immune system further without knowing what it was, as they had experienced fungal growths hiding like that in the past.

I appreciate their caution, but it meant I was scheduled for surgery a few days later. Again, fascinating stuff, the vein finder the anesthesiologist used on me at that time was a mini x-ray with a tablet that showed everything in real time, including as he stuck the needle in, and he could see that it entered my vein, and that it was secured proper. I look away when they stick the needles in, but I had to peek at the tech, I couldn’t help my self.

The procedure was fascinating as well, they went in through the nose, everything was done through the nose, there’s no external scarring or anything, it’s all internal, I wish I knew more about these things at times. I of course was not awake for any of this, but they were happy to tell me more, I also had one of my new nurse friends with me who was a sponge to new knowledge and loved learning everything new from every possible aspects of the hospital.

We were now ready for round two. I had been very unlucky so far, reacting to treatment, the sudden onset of the seizures and the need for injections multiple times a day, so I was now admitted to hospital for each treatment period. This meant I had a lovely room, I got all my meals there, and it just felt much safer than having to move my self between the hospital hotel and hospital every day.

I discovered that my shoulder had taken a few bad hits in the falls. Sneezing would move it around, it would not fully leave the socket, but it was bad enough that they had to sedate me for the pain at least once that I remember with “the good stuff”. My post-treatment papers show that they recommend physical therapy after cancer treatment is over and tumors are confirmed gone. And to do everything possible to avoid the need for surgery to restore the shoulder, but I was also given a fast track ticket to get surgery if it slipped again. I started physical therapy a month ago.

The “boring” bits

The story gets a bit boring now, boring is good in these situations.

The weeks pass, I get a fancy 24 hour blood pressure monitor at one point, the graphs are fascinating as they show how everything spikes from the time the home nurses may show up (oh yeah, I was given help to do my injections even while at home, I can not express how grateful I am to those wonderful people, and how above and beyond I feel like they went to make me comfortable and to make the process as smooth as possible for me), and until they leave.

A graph showing my blood pressure and pulse over a 24 hours period
A graph showing my blood pressure and pulse over a 24 hours period
The blood pressure graph explained

I’m a larger man, good blood pressure for me is 130 over, 80-85 under, or 130/85 if you prefer.

As the graph shows, I was elevated a bit while at the hospital getting it fitted on, I got home and relaxed on the couch with a movie (the first Avengers at this point), as you can see it dip down into the greens.

The spike in pulse (the pulse is a bit high at 90, but it was a stressful period of my life) at 20 and 08 were my doorbell ringing as the nurses arrived to give me my injections. The morning one is lower, as I had a lower base, and also wasn’t 100% awake that day as they came earlier than usual 😂

Fast forward a few weeks, and after 10 weeks, I am now properly home. I’ve now been through all my chemo, I am completely worn out, my parents are living with me in my tiny apartment so that I’m no left alone, one on a couch, one on the floor, me in the bed, it’s a weird situation. They had just sold their house to move into an apartment of their own that wasn’t ready quite yet so yeah…

I’m tired a lot at the time, I sleep most days, I try to get up and walk around the building at least once a day, and I have my fixed meal times still. No food has any taste any more, and I am terrified of catching even the slightest cold (I have no immune system now).

A few more weeks pass, I do followup blood tests, my immune system is returning really fast, they remark on how fast I am recovering. This is a good thing! I am still tired a lot though, small things wear me out. Going from the car into the pharmacy to pick up my medications and back leave me needing a nap.

This improves over time, but now the other late onset side effects of chemo show up.
Tinitus, that constant peep in your ears.
Neuropathy, that tingling sensation you get in your limbs when they “fall asleep”.

That’s now there near constantly, but it’s hard to describe and make people understand just what is going on. I can’t quite feel my fingers or feet properly. My balance is impacted as I’m not always sure when I’ve placed my foot on the ground, I trip a bit in stairs and such, some times harder than others. My fingers I don’t know when I’m holding down keys on my keyboard so I end up having to remove a lot of characters quite often. Cold feels burning, but heat I don’t notice much of at all (picking up ice cubes suck, trying to check if food is hot can get you burnt). The texture of certain things trigger my nerve system in strange ways, like touching paper makes me physically drop things, the “sawing” of cutting with a dinner knife makes me lose power in my hand.

I lack precision use of my right hand. I can’t currently write by hand, I tried building some Lego but I started trembling, and the trembling was the same type as when I had my seizures, so I had to stop fast. Building Lego takes time now. Training it back up and hoping it’ll work proper in the future.

Last week the numbness dissipated a bit, and was replaced with extreme itchiness along nerve paths in my arms and legs. The itching is now gone, and we’re back to the numbness, and some joint pain in my fingers. These are all expected long term effects of chemo. They say it may take up to 2 years to know if it’s permanent, but I’m keeping positive that the shifting between effects means it’s not something permanent, fingers crossed. The neuropathy increases in effect as evening comes around when the body prepares you for sleep, which means I feel everything and nothing, and it keeps me up most of the night.

One thing i do need to keep tabs on going forward: I may have a rare blood mutation which means I show tumor markers in my blood while being perfectly healthy, they are actively watching for this during each checkup I have now though. This may also have been a false positive caused by the liver ejecting them into the blood when stressed by some of my medication at one point.

I’ve left out a lot of things, I am convinced of that. I lost my hair, didn’t really bother me much. I lost my beard, bothered me a bit more, the beard went first, which sucked.

But all in all, what truly impacted me was the seizures. I described earlier on the thoughts I remember having in the moment, those are still with me, I do not feel OK thinking about them. I’ve been worried about picking up more work, as i fear added mental load would trigger new seizures. The nights before something i know is going to be hard, I have had nightmares. Before returning to work at a lower percentage, before big hospital checkups, the night before my brothers wedding. I saw my self in 3rd person in all of those scenarios, helplessly standing and watching, unable to do anything.

That got a bit too real there, I think that’s enough.

Going forward

Through it all though, I’ve had friends check i non my daily, online of course, because that is where most of the mare, spread around the world. I’ve had work check in, sending me text messages letting me know they’re thinking of me and hoping I take all the time i need to recover. I got a lovely bouquet and hand written letter from my colleagues. The bouquet was Lego flowers, they know I love my Lego ❤

A bouquet of flowers on a table, the flowers are made of Lego pieces.
The Lego bouquet given to me by my colleagues

As of this writing, I’m back 40% at work, hoping to ramp that up over the next month or so, as I still get tired and need to relax in between sessions, but I am extremely grateful for how work is reacting to this, and how my colleagues are keeping an eye out, as they all know I miss work, and will do too much if not kept in check.

Oh and the featured image on this post? That’s our family heritage site on my mothers side, it was my last trip there right after getting the diagnosis, and I look forward to going back soon.

]]>
https://clorith.net/2024/09/so-i-had-cancer/feed/ 2
How I commit to WordPress https://clorith.net/2024/09/how-i-commit-to-wordpress/ https://clorith.net/2024/09/how-i-commit-to-wordpress/#comments Mon, 23 Sep 2024 17:32:22 +0000 https://clorith.net/?p=1907 Spurring a round of activity on how various core committers of the WordPress open source project work through code committing, I felt compelled to also jump on the train, as I felt like my process diverged a bit. I unfortunately did not have the opportunity to join in during WordCamp US this year, where this first came up, but there’s always next year!

One of the biggest differences, I suspect, is that there’s very few committers who use Windows such as I, instead of a unix platform.

I wonder if these differences come from ingrained habits, based on where in the cycle of tooling one gets invited to these hallowed halls?

I did slightly consider naming this post “How I contribute to WordPress as a committer”, because although this is my process when committing, I commit much less than many others, but I provide feedback and opinions much more frequently. Feedback and opinions are important, they’re a great way to contribute when they bring value and move things forward… but I digress, this is to share the process we go through so that others may take what feels comfortable and right to them and maybe find a friend they can ask or improve on alongside, so let’s focus on that for now!

Code editors

As you may also notice, many other wonderful people have shown off their command-line skills in pulling down changes and applying them. I’ve become too attached to my IDE at this point in time, and find it much more convenient to my workflow to use it’s “apply patch” feature, along with other quality of life buttons and menu items, where I can take a .patch file (from Git or SVN!) and apply it to my local copy of the WordPress repository, that means you won’t see a lot of command examples in this post, but more about my process).

This also ensures it is applied to a separate “patch” branch automatically, so I can go back to the base project without any changes without much hassle.

I personally use PhpStorm, and although it is a paid product, and I have a paid license for work, they also have a very generous open source maintainer license which I use for my personal machine and open source project work. This paragraph left intentionally without links, this isn’t to promote IDEs one way or the other, although in theory that is what I just did, but it also would not make sense to say I lean on my IDE without saying what i use that i find convenient.

Dev environments

I swear by the built in docker environment, it allows me to quickly build up or tear down a test site, or just start fresh to make sure nothing else is interfering with what I am testing or writing.

Code I write

I’ll have a fork of the WordPress/WordPress-develop repository on my personal GitHub account, it should be noted that I regularly destroy this and re-fork, just to make sure nothing unintentional snuck in.

Any code I write an intend to make patches for, I will commit to this fork, and open a pull request for, this gives me peace of mind that all the tests are running and working like they should, without needing to dedicate processing power locally to running the tests (depending on which device you are on, this could suddenly take a lot of time if it is under performing).

Code I review

If the code is written by someone else, I will generally apply the patch locally to spot the obvious things such as code formating and the likes, if the code wasn’t submitted via a pull request, but directly on trac, I will assess if the change will impact any tests.

Leaning on my IDE again, I am given all the tools I need to observe what files are modified by a patch in a quick overview, as well as the ability to make visual diffs for whole files, making it easier to look at context of a diff as well.

If the changes will impact tests in any way, I continue on by pushing the contributors changes to my GitHub fork so that the test runners can do their thing again.

If they won’t (for example string changes, documentation changes, anything like that), then reviewing it directly, giving feedback as needed, and then moving on to the commit stage is what I do.

Code I commit

Once code is written, it’s ready for commit, we get to the easy, but always exciting, part.

I try to avoid stopping a contribution based on minor things, code style issues that I can easily adjust from a small patch I’ll just fix before committing.

Writing the commit message is probably the most time consuming part of the commit procedure. I have a bookmark labeled “Commit Messages” which I always consult when doing a commit and it’s been more than a day or two since the last one; both because I worry I’ll forget something, and because routines may change over time, and doing so is a good habit to help keep it fresh for every commit.

Commits are done to SVN, until this point, we have not touched SVN in my process. SVN is for code that is ready, it is the source of truth, and as such is left alone until it needs changing.

I have a separate directory, and a separate project in my IDE for the SVN repository, this lets me safely keep them as separate as possible, and I don’t have to worry about mixing credentials or remembering commands because of the different version control systems living in the same house.

I use the apply patch button in my IDE, do a final look at the diff window to see that it applied like it should, and then I commit.

And if I have the pull request tests already, I can skip this final step: Sit and wait anxiously as you hope the tests pass and you don’t have to do a follow-up commit.


For historical reference, and because we all make mistakes and learn from them; my very first commit was followed by a fix commit roughly 8 hours later (when I woke up), as I had suddenly realized while in bed, that what I committed could have an unintentional behavior causing a warning as well.

I include that, because I think an important part of being a committer is knowing that it’s human to make a mistake in the process, we all make them, and it isn’t the end of the world, no matter how big the software is.


Once everything is done, I go back to GitHub and close any pull request i opened for the issue, and delete the branches on my personal fork to keep things neat and tidy.

This sounds like a lot of steps, but it’s quite fast when it’s the workflow you’re used to and comfortable with.

]]>
https://clorith.net/2024/09/how-i-commit-to-wordpress/feed/ 1
Certifications in the WordPress ecosystems are not necessarily a good idea https://clorith.net/2022/12/certifications-in-the-wordpress-ecosystems-are-not-necessarily-a-good-idea/ https://clorith.net/2022/12/certifications-in-the-wordpress-ecosystems-are-not-necessarily-a-good-idea/#respond Fri, 16 Dec 2022 22:30:39 +0000 https://clorith.net/?p=1844 The topic of certification has popped up a few times in the WordPress ecosystem (I remember the first time I took part in a discussion about it, during the WordPress Community Summit at the inaugural WordCamp US), and it’s got both its strong opponents, and proponents.

I’d say I am quite firm in my stance that I believe it to be a bad idea within WordPress, it comes with a lot of administrative overhead, and creates a socioeconomic divide which may be viewed as detrimental to the continued adoption from a developer side of things, at least, and possibly others as well.

Socioeconomic requirements

Let’s start with one of the heavy hitters, because this will be a recurring element.

The time needed to get certified comes with a cost. Having the benefit of both time, and money, to set aside to do certifications is a privilege, and one that not everyone has.

It could be argued that certification could or should be free, but this would in turn undermine the value of a certification, because it’s “available to all” (we have a bit of a catch-22 on our hands). The reason certifications are often quite costly is because the value of them lies in the perceived exclusivity, and “guarantees” that come with it. You’ll put aside the time, you’ll do the work, you’ll pass, because it’s expensive and you don’t want to fail it. If anyone can do it for free, fail until they get it all right, then where’s the value, they stumbled their way into the “high ranks”.

Socioeconomic impact

I’d be remiss if I did not pull out the potential benefit of such a scenario as well. With certification comes value, and with value comes money. If I spend money to get certified, I would want that back, and more, to cover both the investment, and to make the investment worthwhile.

This may improve the situation for some, but not if such a certification process is free, we’re then back to the catch that anyone can do it, so why pay someone extra for it. Much like many freelance services today, someone will undercut your pricing, with the same level of perceived expertise as you.

Value over time

Another aspect that must be weighted, is that a certificate is only as valuable as its relevance. A great example here is Cisco, anyone can set up one of their routers, but anyone doing more than home setups (most folks looking to get a Cisco setup would be doing much more) would want to have someone with relevant certifications on hand.

Cisco certification must be, at a minimum. renewed yearly, and they are costly; They have modules depending on what you will be doing, some modules may need multiple renewals in a year, as they tie to firmware releases or new product lines.

Of course, a certificate could be non-expiring, but then where’s the value in it? What was relevant 10, 5 or even 1 year ago isn’t likely to have the same value today, especially in such a rapidly evolving technological world as we have today.

When last someone I know had to renew their Cisco certification, for a single module, they had to go away for a full week of courses before they were allowed to take the exam; and then had one shot at the exam. This meant cost of travel, food and lodgings, on top of the course cost and exam/certification fee.

In a WordPress world, of 3 releases per year, you’d want a certified hire to be relevant, and have the certification for the latest release, likely also previous releases depending on how they were issued.

This means, with quite a bit of presumption on my side here, someone would then need to set aside time (and money) for 3 certifications a year at a minimum. That’s a hefty investment for many. (We obviously don’t know what a certification system would look like, so take my numbers from the air with a grain of salt, please).

Now, it’s not uncommon for such certification to be covered by an employer, so let’s cover that as well. Quick note that how employers and certification authorities do this may vary, so I’ll just cover potential cases here.

If an employer was to cover an employees certification, then they’d first need to hire this individual. Would companies be willing to hire someone without any existing certificates if they existed, and they wished to be seen as professionals among their competitors, how would they juggle certified vs non-certified employee assignments onto projects (more of a management puzzle that last one, but it has some relevance)?

Another aspect is that many places will tie you down through deals for such cost coverings. If work covers you certification costs, you need to bind your self contractually to that employer for X amount of time; OR the certification may not even be in your name, but rather in your employers name, meaning you can’t take it with you if you get an offer somewhere (the latter depending on what the certification authority pushes, of course).

Certification authorities

Since I’ve touched on the authority of certificates, let’s jump into that as well, shall we?

A certification authority needs to not only device how to certify someone, but must also always be on hand to validate a certification. It also needs to be officiated in some manner, I’ve previously thrown out that without any official status, a certificate is as worthless as a W3Schools HTML diploma.

What this means is that for a WordPress certificate to hold any real value, it needs to be issued by WordPress.org and the WordPress Foundation, or an official subsidiary of the foundation.

This means additional full-time staff. Any business working with certified contractors or employees expect a level of professionalism that volunteers can not, and should not be expected to provide. Those seeking such safety-nets need to be able to reach out, say “does X have certificate Y”, and get a prompt response, and being safe in knowing their inquiry was reviewed, and responded to by someone who will be held accountable if this is not correct.

Accountability

Oh yeah, accountability, that’s a big one. Part of what you are getting when someone is certified, is the assurance that this individual has been thoroughly vetted, know their stuff, and the certifying authority are providing guarantees of this.

Mind you, this may not be monetary guarantees or such, but as soon as certified folk make mistakes, it undermines the certification authorities seal of approval, and thus affecting anyone else with that same certifications. If the authority of such certificates is WordPress, that quickly (and likely incorrectly) translates into “WordPress does not have good developers/designers/etc”, hurting both WordPress as a project and brand, but also WordPress community members attractiveness as hires outside our little bubble.

To counteract such potentials, the certification would then need to be excessively rigorous, pulling us back to the previous topic of socioeconomic availability.

In closing

These same criteria may apply to a lot of FOSS projects I believe, even if my personal experiences have deep ties to the WordPress community.

I will note that not all certification is bad, far from it. Some is even necessary and valuable. Take for example the UK’s ICO certification, where a national body can certify that a business lives up to data protection standards. This gives your clients peace of mind that you’ve done your due diligence, and the nations official accreditation body has vetted it as being compliant. As a client, you can see what their requirements are, and what to expect.

But what are the minimum requirements for being good with WordPress? And is it right to diminish someones chances at work and self-worth because they do not have the time or money to put aside to pursue a digital badge of approval?

There’s probably other aspects that should be mentioned, but I’d much rather have open conversations about this, let’s figure out what is best for everyone, together!

]]>
https://clorith.net/2022/12/certifications-in-the-wordpress-ecosystems-are-not-necessarily-a-good-idea/feed/ 0
WP Support Hub https://clorith.net/2022/11/wp-support-hub/ https://clorith.net/2022/11/wp-support-hub/#comments Fri, 11 Nov 2022 21:27:27 +0000 https://clorith.net/?p=1825 Over the past year, I’ve been thinking of ways to improve how companies, agencies, and open source developers in general tackle support on WordPress.org, and over the past few months, I’ve been building something to improve just that.

The problem

WordPress.org is a community, and support is provided both by those who publish plugins and themes there, but also by the broader userbase. This makes it very important to provide a hybrid solution that allows the forums to remain community driven forums, but still provide extenders flexibility beyond what a forum can provide.

This kind of flexibility would be things like gathering private information, leaving notes for their colleagues, proper filtering to discover topics that still need support (WordPress.org has a few custom views here, but far from the flexibility that one needs).

And of course, well-oiled machinery need some data to also ensure they have the right people on at the right time.

These are for the most part elements that do not lend them selves naturally to a forum-focused endeavour.

The solution (hopefully)

A dashboard showing multiple actionable events. First a list of topics, with their titles and when they were created, that are about to be automatically closed by WordPress.org for being old. Following this are three banners depicting 1 unresolved request in the past 24 hours, 55 stale requests, and 288 requests that are abandoned and unlikely to ever be resolved.
An organization and their actionable support requests, at a glance.

So with this knowledge in mind, and a decent understanding of the WordPress.org ecosystem in general, I set out to build a solution to this, I had a few key criteria in mind:

  • WordPress.org is free, the data this system builds on is freely available, so users should also have access to it for free (more on that later).
  • It should bridge the gap between commercial ticket needs, and community needs, by presenting everything in a ticket-fashion, but interacting in a forum way under the hood.
  • It should foster my own belief that good support comes from treating each other as individuals having a conversation and finding a solution together

And that’s how I came up with my new support platform; WP Support Hub; A one stop place to monitor, sort, interact with, and analyze, your support needs.

Technical approaches

As many of those wanting to build tools for, or aimed at, WordPress.org will know, there are not a lot of opportunities for integrations, that means that the entire setup is a combination of clever scraping mechanics, triggering in various fashions and at various times.

By default, all scraping interactions are done in a way that would let WordPress.org’s caches roll at full capacity, think “anonymous user reading a topic they found from a search result”, which they check up on every so often (the older the topic, the longer they wait before they check if someone has posted a new reply, up until they are automatically closed by the forums, and there’s no longer a need to look for new updates).

There are some notable exceptions to this though, for example the forums offer a field labeled “The site I need help with”, which is only available to signed in users, or if there’s a need to get all historic data for a plugin or theme, where an anonymous user is limited to just the first 50 pages of topics (that’s 50 pages, times 30 topics per page, so still a lot, but some of y’all have been around for many years, and have amassed hundreds of pages… I apologize to the WordPress.org systems team in advance 🙏). These two scenarios introduce a very interesting hurdle, and means you need a logged in session to both look at the topic to fetch the page URL, but also to be able to paginate beyond page 50.

To do this as elegantly as possible, I chose to perform anonymous scraping initially, if I detect that there’s no URL stored in the system for a topic, but the topic has one, an authenticated session is instead triggered to fetch that page.

The same happens for paginated results, I create a new authenticated request to fetch the link to all the topics on a page, followed by anonymously checking each of those topics, and once that range of 30 has been checked, the system will check the next page for topics. Of course once it knows what topics exist, it’ll stop as soon as it recognizes a topic (this is thanks to the forums listing topics chronologically, and not by last reply, which was a change introduced in the migration to bbPress 2.x).

In keeping it free

As I mentioned, the data is free, I am freely using WordPress.org to populate the service with crucial data, so it should be freely available to users. This is great, but there’s obviously an operational cost involved in this as well, so some of the features that require more processing on my end are locked behind a subscription.

I will, however, pledge here and now, that if the service generates revenue, that a percentage of that will be given back to the foundation for resources used.

What this means is that anyone can sign up for free, they will get asked if they would like to join the WordPress.org Organization, alongside their own desired organization (they can of course decline this, but I wish to encourage others to help support the plugins and themes developed by the WordPress community), but some functionality won’t be visible to them at all.

So what did I lock down?

I’ve tried to approach this in a way where any feature crucial to providing reliable support is always free to all, this means you can monitor as many plugins or themes as you’d like (take note that the Terms of Service dictates you should only be adding your own plugins or themes, if not your account may be terminated, because that’s a lot of unnecessary additional processing 💸), filtering of incoming tickets (yes, I called forum topics for tickets in the system to cater to a more professional market), requesting private details and notes.

I even included one piece of statistical reporting too; The ability to get a report of who has been responding to users and helping them out in your plugins or themes, to help you identify your ambassadors, and maybe even future hires.

But what do those that pay get, if the important base features are there already? I’m glad you asked! I am in part hoping that those with the means to pay for services, see the value both in what they get for free, what is provided to the community, but also in the features that are locked behind that paywall;

  • Review monitoring (watch for new reviews to respond to, but also see historical data when a review has been updated, and see in which direction a review change is taking you)
  • Slack notifications (don’t rely on RSS feed or email subscriptions, get notified via a Slack Webhook)
  • The ability to import historical data (by default, only the 30 latest topics, and any new ones created after this, are added to the system when a new plugin or theme is added for monitoring)
  • The ability to increase the frequency in which checks for new requests are performed within a given window (great if you are planning a release, and want to stay on top of things)
  • The ability to invite other users to your organization (got a support team? Awesome, invite them all!)
  • And more stats;
    • View ticket trends for ticket resolutions
    • Monitor how long you usually need to resolve a request
    • Monitor which days, and times of days, see more or less requests being created (or maybe even check how the dates surrounding a release got affected)

What more?

Well, time will tell. Those who know me know that support is one of my passions, and anything that will help companies, or volunteers, provide better support is on the table moving forward, obviously this is something I am doing on my own time, and its operation relies a fair bit on users taking advantage of the paid portion of my service to cover the cost of operation, and potential expansion into further tools as part of it going forward.

Hopefully this little blog post does a better job at explaining the concept than my attempt at a landing-page on the actual service it self 😅

But yeah, go check it out https://wp-support-hub.com – Made with ❤ for all the wonderful people doing WordPress support.

]]>
https://clorith.net/2022/11/wp-support-hub/feed/ 1
The need for feature removals in the Health Check plugin https://clorith.net/2022/02/the-need-for-feature-removals-in-the-health-check-plugin/ https://clorith.net/2022/02/the-need-for-feature-removals-in-the-health-check-plugin/#comments Sun, 27 Feb 2022 17:23:44 +0000 https://clorith.net/?p=1797 I’ve been maintaining the Health Check plugin since 2017, its origins as a core plugin, and then as a community plugin focused on support, having been its primary uses.

I’m not going to stop maintaining it, but over the two years, it’s stagnated a bit, after its inclusion in core, keeping up with maintaining it became a chore, and not the labor of love that it started out as.

That’s changing 💪!

The plugins history

The Health Check plugin was originally created to provide some simple compatibility checks for PHP and MySQL versions before the release of WordPress 3.2, and then to check for support for the utf8mb4 SQL support later on, but has since been dormant.

The plugin was then adopted in 2017 (wow, it’s been a while, hasn’t it?) as a direct result of core ticket #39165, and a desire to provide debug information that end users can present to those providing support, but it not being the best fit for core at the time.

Alongside this debug information, various checks to identify common configuration errors on a website were introduced, still keeping the original essence of the first plugin in place.

At the end of 2017, the Troubleshooting Mode was also introduced, allowing less technical users, without knowledge of, or access to, staging and local development environments for testing, the ability to do the usual troubleshooting steps of disabling all plugins and using a default theme, without affecting regular site visitors.

Fast forward to 2019, and the Site Health checks, and Debug Information features from the plugin were introduced to core, as part of a larger Site Health component push, alongside things like ServeHappy (the endeavor to push users to upgrade their PHP versions).

The problem that needs solving

The major problem that needs solving at this point is the maintenance of backwards compatibility, and feature parity between WordPress core and the plugin.

The initial dream was that new Site Health features would land in the plugin first, to be tested out on the (at this time) more than 300 000 users it has to gauge the effectiveness of new tests, and value of new debug information.

Unfortunately, with a project as large as WordPress, this becomes difficult, and fragmentation is bound to happen, and I felt burnt out trying to think of ways to tackle the moving of tests back and forth in a reliable manner, especially as things landed in core directly for various reasons.

The various solutions considered

It should be noted that the following considerations were made back when the amount of WordPress 4.9 installations were much larger than they are today, and there’s been a noticeable shift of users moving up in versions over the past year or longer.

So many options for fixing this disconnect passes through your head, and they all have their pros and cons. I’m a huge fan of maintaining backwards compatibility, the user shouldn’t lose features just because something changed elsewhere.

Keeping back-compat files

The “simplest” fix, but this had one major drawback, you still need to maintain these files, not just with regards to PHP version changes, but if a security concern is discovered in these files, you need to address that. The Site Health Checks and Debug Information were massive elements

That’s a lot of code to maintain for no real gain.

Just delete the files

The second option, is of course to just remove the functionality that now exists in WordPress core.

Also viable, to make this an un-jarring experience to the user, the minimum WordPress version for the plugin would then also need to be raised to at least 5.2, it is at the time of writing set to 4.0 or newer (that’s a big jump).

The final decision

In the end, the need to reduce unnecessary complexity won, but “back-compat” is still important, but in a different coat.

I chose to create a Site Health “core module polyfill” for sites running WordPress versions earlier than 5.2 (when the feature was added to core), but with stripped and/or removed functionality.

The most complex part to maintain was always the Site Health check, these are going away. When a user visits the Site Health menu item, they will be presented with the following screen:

Site Health screen showing a notice urging them to update WordPress

The Debug information is being maintained, as it is in the plugin before the release of version 1.5.0, the reason for this is that users may wish to update, but need to verify that their platform supports the newer versions of WordPress, or its plugins.

By doing it this way, users are not left confused as features go away, they are presented with a clear path to regain features, and an explanation of why things have changed. Both of these are equally important for making sure users are not left confused and frustrated.

Could this have been solved by just retiring the plugin and making a new one focused entirely on the troubleshooting aspects?

Oh absolutely, but over the years, the Health Check plugin has grown to be a recognized name in support circles to point users to for troubleshooting, and asking all those providers to change their routines, changing their documentation, getting new resources to show how it’s all connected? I don’t personally think that’s responsible either.

What the future brings

With moving to using core for checks directly, the plugin is able to make use of filters to dynamically add new checks which may not fit the core narrative, but still are beneficial to a large enough portion of users/support providers, instead of relying on matching back and forth between a plugin and core.

It also makes the entire plugin more maintainable, re-igniting that original passion for improving the various tools it offers, and wowee do I have plans for tools I want to add, and enhancements to the troubleshooting mode, but they’ve all been blocked by this frustration with the state of the original features.

]]>
https://clorith.net/2022/02/the-need-for-feature-removals-in-the-health-check-plugin/feed/ 2