Florian Beijers

Because everybody needs a spot on the web these days

Honestly, a lot. Also not all that much. It’s complicated. I’ve had a chance to grow up over the last 4–5 years. I’ve been places, worked on various projects, developed new interests. What hasn’t changed is my overall stance on accessibility, on teaching it forward and on calling em how I see em where blatant disregard or lack of care is concerned. On that note:

Medium: really, folks?

Before I get into it, please note that this is a free copy of an article on Medium. Some of the rest of the article won't make sense without that context.

A number of years ago, I wrote an article stating that Medium was not viable as a platform for me to write on, due to their stance, or lack thereof, on accessibility. That, I’m sorry to say, hasn’t changed all that much. My biggest complaint, the lack of alt text on the platform, has been somewhat mitigated. At least, it’s possible to add alt text now, which is one of the reasons I’m able to justify to myself to even write on this platform. The editor is pretty much as inaccessible as it’s always been, with very limited hotkey support, a lot of mouse-only operations, piles and piles of unlabeled buttons which could be fixed with literally ten seconds of work, the list goes on. Case and point: it took me five minutes to even put in this second heading, and it’s not of the correct hierarchical level. But then, given Medium only allows for 2 heading levels, I guess the point is mostly moot. Does Medium care about accessibility? Quite honestly I doubt it. It’s hard to say; this kind of neglect is often a matter of upper management not seeing the need, the room etc. to accommodate about a seventh of the world’s population. The developers themselves are far more often far more willing to put in the work, they’re often just not allowed to spend time on it. Make of that what you will. So why still write on it? Quite simply, so people can find it. I can’t get around the fact that Medium is huge. It comes up on search engine result pages, it is apparently important enough for people to become premium members just to read articles on it. Having said that, Medium will NEVER be the only place any article of mine shows up. I am on here so I can have my content available to those who need it. I may even paywall my articles on here so I can earn a small amount of money from them, but there will always be a link to a free version in order to not lock out potential readers. TLDR: I’ll be on here. I won’t have to like it, though. ;)

My older articles: accurate still?

For the most part, yes. What follows is an itemized list of things I can remember having mentioned over those couple articles, and their current status: * Jetbrains’ IDEs have gotten a little bit better, but they’re still a pain to use with screen readers. * I think I may have mentioned Slack and Discord in the past. Those are definitely a lot better than they used to be. * Mac OS, in my opinion at least, still lags behind Windows where the maturity of its accessibility offerings is concerned. Things have improved, but in my opinion not improved enough to be one’s main workhorse for anything but music creation, where it does shine in certain ways. * I’m on a Lenovo now! :P Some things have changed even throughout the time I wrote my articles, most notably the accessibility improvements in FreeCodeCamp, Codecademy and VS Code. Those are definite victories for accessibility. There have also been some serious groanworthy slips though. Looking at you, Notion.

What about yours truly?

Honestly I’ve been all over the place. I was lead coder on a text-based game for a while, consulted on a boatload of projects as an accessibility auditor/advocate, kept up ye olde programming, the works. Two relatively new things is that I’m a Twitch streamer now, I go by Zersiax, and that I’ve developed a serious appreciation and interest for cybersecurity. On that note, more posts surrounding those topics will no doubt feature in the coming time. Streams largely cover accessibility in gaming, game development and overall ways to work around inaccessible content in certain types of games, as well as the occasional coding or hacking stream. Cybersecurity might be anything from capture the flag writeups to accessibility reviews of tools, courses, etc. These are severely undercovered fields, and I’d like to try to do my part. With that though, this article has reached its end.

Hello, reader. I ask you, can you see me? Do you know of me? I can't see you. I know of you, though. I live among you, flicker in and out of your existence like a fluorescent light on the Fritz. I'm at the edge of your awareness, yanked into being from time to time by an errant thought, a sentence on a page, a sound byte. Some of you even catch a true glimpse of us. The community beyond the bubble, the segregated, the ones you had forgotten about and soon will again. Do you know who I am, yet?

I work

I'm a fully blind individual who has worked several jobs. Let's run down the list:

I was a telemarketer

One of those annoying ones that try to sell you stuff. I came down your phone line trying to sell you energy contracts, or phone plans. Or well... I did that for a few days. After that, I was relegated to a simpler script, that just had me asking if a particular piece of mail had come in that day. Why? Because the software to run through the call scripts was not built with accessibility in mind. Initially, I couldn't even do the simple script. it required custom-written screen reader scripts in order to make the software on my work computer behave. people had forgotten to keep me in mind when writing the software. My reminder came too late; the software was already finished and could no longer be altered. This simple script was all I could get it to do reliably. And I'm sure I've since been forgotten about again. Several ghosts may have come and gone since I left, all running into the same barrier. Is it any wonder they feel like they need psychics to speak to us? Nobody tends to hear us otherwise...

I'm a Programmer

These days, more as a hobby than a profession, but I still consider myself a programmer by trade. I worked several jobs in this field. I worked on various backends, various websites. I worked for companies who all figured I could make them money, as long as I didn't cost them any. I was in a state of Quantum Remembrance: People gave me enough to be able to work for them, but not enough to make their tools workable by those like me. This wasn't our demographic, not our target audience. I could work on that if I had time to spare, or in my spare time. Or not at all. Time to spare as a blind programmer doesn't exist. Things, particularly when working for a company with heaps of different projects, take a bit longer to onboard. More than anything else though, I was busy reminding folks I exist. Tools my colleagues used were not accessible. Tools I used myself became inaccessible.

“We have a new UI, isn't it great?” 'No... it's not. You forgot I exist again...”

A blind programmer working both as a freelancer as well as a corporate wage slave plays a perpetual game of Russian roulette. It's like a plumber working with explosive tools; time bombs with an unknown amount of time on the timer. Wake up one day, your tools have all blown up and there's no way to get them back. Scrounge around for new tools, all while trying to meet your quota, make your appointments. Just like politicians lording over the slums they will never visit, developers writing websites, web apps, dev tools, productivity software toss their creations over the fence thinking they're doing the best they can for everyone. They do... they just forgot I exist... Until I, or someone like me, reminds them. A flicker of an ethereal presence, a ghostly whisper, easily ignored, easily squashed by reasonings of science, of business.

“You must be mistaken... ghosts wouldn't use our products... would they?”

I'm a Shaman

A shaman, in some versions of the title, acts like a bridge between the realm of the living and the realm of the dead. I currently work as an accessibility manager for a QA firm. I guess I am a shamanager. I teach the rituals needed to commune with the ghosts within the outskirts of our reality, but even more so, I act as a reminder of those outskirts. I, after all, am myself one of these ghosts.

Quick check... do you still remember me?

I get to build bridges, I get to bring the outskirts into the spotlight as it were. I work with a willing group of people who want to see through the barrier. And yet, I need to make sure I'm not forgotten, or all my teachings will similarly be forgotten when they are needed most. Not on purpose, of course, just... slipped the mind. Nobody means to, of course...

Can you still hear me, dear reader?

I Am

Outside of work, one is free. That is the idea, right? Work-life balance. Work stops when you clock out for the day. The work of a ghost never ends, though. For a ghost, life is work. You go to your job, where you work, then you go home, where you work. You work, for to leisure in a world where a system is not built for ghosts is to disappear into obscurity. Until you owe money. People seem to suddenly remember you exist when you owe money. It's interesting how that works. When you owe money, reality tips over, because you suddenly end up in a reality where every ghost is thought to have their own shaman to bridge the gaps. A ghost can't always hold a pen, or use one, or read a form. The powers that be who sent the form will ask such unfortunate ghosts to employ their shaman to help them, expecting the poor, unsuspecting ectoplasmic entity to divulge all their personal ghastly secrets to this individual. Let me divulge one of those mystical workings though: a lot of ghosts haunt alone. No shaman in sight. You forgot we existed again, didn't you?

ESP?

How did we get here? That, my dear reader, is a story spanning many ages, many decisions and many mistakes. But we did get here. Most mainstream media is not ghost-proof. Most video games, memes, websites, physical spaces, get-togethers, communities and events exclude one type of ghost or another, often knowingly so. A lot of communication methods are not inclusive to a lot of different types of ghosts. Different communities the world is rather not reminded of too often; pray tell it might ruin the Elysium we are meant to believe we've built in our post-enlightened state. Slowly, agonizingly, agonizingly slowly, it appears we as a collective species are starting to develop some ESP. Extrasensory preception. The ability to look outside one's bubble to see what's happening outside the sand dune our collective heads have been stuffed down for most our existences. Is it enough? Will the 2020s, the 2030s, the 2040s be the decade where we decide to let our ghosts be humans again? Where the segregated communities can have their culture without being entirely excluded from the overall collective consciousness the many enjoy? Where ghosts play, watch, discuss and consume the same content, at the same time the non-ghosts do? Or will we remain as we are? Formless spectres, at times drawn into clarity by an errant thought, or word, or sound byte? For the moment, I thrive in my little ghostly existence. I browbeat when I need to browbeat, and I work around the obstacles unknowing, unsuspecting ghostists place on my path. I'd certainly not mind a bit more than a ghost of a chance though. Nice as luck can be, it does tend to run out at times.

What say you, dear reader? Do you still remember me? Will you, 10 minutes from now? ..w abo.. ...orrow? Wh.................???

Intro

To most, choosing an operating system to work in is a voluntary choice, at least for their hobby projects. To some, me included, that isn't quite a luxury we can afford. Varing levels of accessibility, as well as screenreader maturity and the breathing room to run damage control if something suddenly becomes inaccessible or collapses in some other way make Windows 10 the most expedient and effective operating system for most people who are trying to be productive in tech, be it as a developer, data scientist or cybersecurity professional. Unfortunately, where development dependencies, tools and applications are concerned, especially these days, Windows is often a second-class citizen. If there are bugs, they will usually happen on the Windows side of things, often with hard to diagnose problems as a result. Enter WSL2, essentially a lightweight virtual machine that allows for the use of tools written for Linux within a Windows environment. This opens up a whole bunch of doors that we previously needed to set up a complicated virtual machine strategy for. In this article, I'll go over setting up a PHP/Laravel environment on WSL2, running on Windows 10.

Set up WSL2

The easiest way to set up WSL2 is to follow the official wsl2 setup guide. No accessibility gotchas should be encountered here in most cases. There are some reports about AMD users getting an odd prompt when enabling HyperV, I will edit this post if I encounter this myself and add remediation steps if any are required.

Now, we are in 2021, so we are doing this the spiffy way. WSL2, VS Code, Docker, the works.

Set up Docker to work with WSL2

I could wax poetic about this process, but there really isn't all that much to say. First, Install Docker and subsequently make sure you set it up correctly with WSL2. Why Docker? Ehh ...it's the thing to do these days, it normalizes development dependencies like database versions and a tool we get to a little bit later really, really likes it. Ok, onwards! :)

Set up PHP, composer, tweaks

First, let's make sure we have all the PHP modules we might need down the line installed, Pick and choose from this apt invocation:

sudo apt-get update
sudo apt install unzip php php-cli php-fpm php-json php-intl php-common php-mysql php-zip php-gd php-mbstring php-curl php-xml php-pear php-bcmath -yqq

The flags essentially make it so apt doesn't bother us while setting all that up, this shouldn't take super long but at least this way you can do something else while it's happening.

Now next, we need to install composer, the PHP package manager. A nifty little oneliner:

curl -sS https://getcomposer.org/installer | php \
            && sudo mv composer.phar /usr/local/bin/ \
            && sudo ln -s /usr/local/bin/composer.phar /usr/local/bin/composer

Quick little aside, you ideally want to stay within the Linux filesystem while doing wsl2 stuff. The mounted folder where your windows user folder is is significantly slower within WSL2, so doing a quick cd ~so you can operate from within your Linux home folder is probably worth it. Next, in order to prepare for Laravel Valet, which is normally mac only but was ported to Linux, we need to make a small change in /etc/resolv.conf. Add:

[network]
generateResolvConf=false

These lines may already be there, just commented out. If so, have them not be commented out anymore. ;)

Laravel Valet, Takeout, all the good stuff

First, let's install the Linux port of Valet and the takeout docker container manager using composer:

composer global require cpriego/valet-linux tightenco/takeout

Composer does not automatically add its global bin folder to the PATH variable, so let's do that so we can run commands in there without having to go to the directory every time. Add this to ~/.bashrc:

export PATH=~/.config/composer/vendor/bin:$PATH

And then run a simple “source ~/.bashrc” to load in the changes.

Next, run valet install to set up the valet tool. Valet messes with our /etc/resolv.conf , thee file we edited just now, turning it into a symlink. We don't want this, as that will make WSL reinitialize it on every restart. So:

sudo unlink /etc/resolv.conf
sudo cp /opt/valet-linux/valet-dns /etc/resolv.conf

On searching around a little, it seems we also need to add a file to preempt any odd DNS bugs. Here goes:

touch /opt/valet-linux/dns-servers
sudo nano /opt/valet-linux/dns-servers

Just adding “nameserver 1.1.1.1” without the quotes in there should be enough. That is the Cloudflare DNS which is pretty speedy, you can also use 8.8.8.8 for the Google DNS, for example. Ok! We're going places! Now, we can start things off with:

valet start
sudo service php7.4-fpm start 

The second command is a failsafe; sometimes valet start on ubuntu doesn't seem to start that service properly. Now, cd to the folder where your laravel projects will live, say ...~/projects/php, and run valet park.

Next, we need to enable the database. I prefer Postgresql, but there's a handful that takeout currently supports. There's two ways to do this; running “takeout enable” gives a menu you can arrow through, but given Windows screenreaders haven't figured out console highlight tracking yet, you'll probably want to provide the service name yourself, e.g. “takeout enable postgresql”. Follow the instructions and postgres will run on 127.0.0.1 for projects to use.

Setting up DNS resolution to the WSL2 instance

A cool thing about Valet is that it autoconfigures new projects to be reachable on the *.test domain invocation, routing those to localhost. Except ...WSL2's localhost isn't our localhost. We can add entries for individual sites to C:/Windows/System32/drivers/etc/hosts to route hosts to 127.0.0.1 individually, or we can use the .localhost top-level domain. To my knowledge, only Chrome currently supports this. If you want to go that route:

valet domain localhost

Installing Laravel

We can install Laravel in several ways, here's a few.

Using Docker and Laravel Sail

Given we already have docker set up, we can use a relatively new addition to the Laravel ecosystem, Laravel Sail. to do this, run the following, where the bit after the TLD is the name of the folder for the project:

curl -s https://laravel.build/helloWorld | bash

This will do a whole bunch of docker magic, after which your application will be accessible on projectname.localhost from chrome. You can read more about Laravel Sail here.

Using Composer

We have composer installed and ready to go, so an alternate way of doing this is by using our already existing infrastructure:

composer global require laravel/installer
laravel new <project name>

Conclusion

From here, the existing docs can take over. VS Code is a topic in itself, and will probably merit its own post at some point. Using the various extensions it provides, you can work within the WSL2 container, set up your PHP tools on the WSL2 site in order to get linting and static checking support etc. That's enough out of me for now.

Intro

This year, I have committed to learning more about cybersecurity. This has always been an interest of mine but I never could find the time and resources to properly level up on this particular topic. I do now, and it's been a lot of fun so far.

Read more...