Categories
Uncategorized

What have we lost?

Video for this post

A modern day idol of mine Xe Iaso recently, wrote a post on the end of Heroku Free Tier. In which she stated that, this service was vital for her getting the career that she has. It struck me that in order for what she says to be true, which I assume it is she must be at least five to ten years younger then me. She says she’s watched as doorway after doorway into tech has been firmly shut and locked. That is truer than I think she knows. I wanted to expand upon this idea a little.

In My Day

Back when I cut my teeth in tech, free hosting with PHP, and MySql was plentiful and ad supported. If you wanted more you could always install Linux on an old Pentium II, do some port forwarding and dynamic dns magic and by god you had a website. Or if you were not inclined to Linux you could run any of the myriad of WAMP stacks in a box such as EasyPHP. If you were truly desperate, there were services like geocities. Which gave you a little less but it got your foot in the door.

The entire concept of free compute power was not something that existed back in 2004. Learning Unix or DNS or PHP was hard. But and this is the key difference. Everyone starting out had to learn the same skills. When we all got our first jobs those skills were what the interviewers looked for. Point is every middle class white kid started from the same level. This state of affairs endured for about a decade. However, things began to change in 2012.

It started with Linux distros slowly dropping support for older hardware. To the point where today you need x86_64v2, introduced in 2013 to even boot in some popular distros today. The problem with this is, that the useful life of a machine is now way beyond ten years. Such thinking only considers the paying customer, and not the poor kid just trying to find a start

Now

Some residential ISPs now no longer allow port forwarding either. And even if these two states of affairs were corrected. Modern web technology is now so tied up with “The Cloud”, that it would be of limited utility anyway. Is there even a path for anyone to learn how a website is really built these days? I have no idea.

I never thought i would be saying this but Thank God for Oracle Free Tier, and fly.io. For however long they endure.

Only 25% of the problem

But the problem of resources is only half, or less of the issue I see today. We are now so abstracted, and hyper specialized that it is hard to know just what constitutes, “General Tech skills”. I think a few examples would be illustrative here.

Docker now dominates the world, back in 2012 when it started out I was fundamentally a distribution package maintainer. Even in my professional life and freelance work I did things like build packages for legacy software on Ubuntu 12.04. 2012 era docker was ill suited to that workload so i ignored it. Even though i understand what Docker does and how to use it. I think it’s overkill for the projects I have now. Because of this recruiters looking for Docker or k8s experience, pass me by. So nearly every recruiter these days passes me by. This is only the tip of the iceberg.

Do i specialize in Go, Python or Rust these days? They seem to be mutually exclusive in the minds of many an HR department or Recruiting firm. If I had to define a course of study to intentionally take a green as grass teenager, from newbie to pro along the lines of what i had in my childhood. I doubt i could figure one out, without also irrevocably shaping that teenager’s future career prospects. But the iceberg goes still deeper.

Story Time

Have you ever heard of linktree? I won’t link it here because I am fundamentally opposed to their entire existence. What they give you is essentially a place to put links to all your social media apps. So you can give that URL to all your friends and followers. So they can follow you everywhere. If your saying “There’s a platform for lists of hyperlinks”. The answer More than one.

The reason i know about this is one of my younger friends suggested i get one, because the number of things I am doing these days is only growing. While the concept itself was sound. I wanted to host it on my own domain. I looked for a self hosted version. But the popular one involved github-actions visual studio code and a bunch of other overkill that made my brain melt into my shoes. I wanted to write it in Markdown. Compile it to html, scp that to my site and have done with it. So I wrote a Makefile. It wasn’t till i looked at the output when it wasn’t styling correctly. That i saw it was just an unordered list of anchor tags. No different from my first hand coded website of 20 years ago.

So what did I do? i fired up nano and made an unordered list of anchor tags warped that in a div for easier styling. Did some quick css et viola

When i showed this to the younger friend who had instigated these shenanigans. Far from being impressed, she said “Your doing MySpace S*t, why not go with something easier”. She was genuinely confused when i explained that html was still how all websites work.

The Lost Tools of Learning

The moral of the story is that the early internet services sort of forced you to learn how the internet itself worked in order to fully express yourself.

You had to know about things like html, file paths, midi, and a whole host of other things to even begin to have a cool geocites site. That is no longer true these days. Now platforms take pains to hide the inner workings from the user as much as possible. Some even going so far as to lock people in to their own templating system. When the bother to support user styles at all.

I remember remarking on this aspect to a friend of mine when Facebook opened up. She accused me of being a tech elitist. Maybe i was back then. But now i think that having at least a basic understanding of these fundamentals, is a key on ramp into Tech itself. With platforms taking pains to hide the inner works of the web from everybody. It’s a wonder that anybody finds their way in the door these days.

So what do you think? Has capitalism destroyed the potential of this technology as we once knew it? Let me know in the usual places

Pius

Categories
Uncategorized

April-August Status update

Hello All:

It’s me your pal Matt, but lately everyone online has started calling me Pius for reasons. And I’ve decided I like it a lot. This change in name is really the biggest thing that has happened to me over the past month. Now i Need to be careful to not introduce myself as Pius in breadspace. Which is weird. Anyway enough with my pointless musings. On with the show.

YouTube/Video Stuff

For those wondering yes I’m alive. Yes I’m doing stuff, the YouTube channel has been stuck in semi perpetual video editing hell since April. I’m going to discard all the content from months ago as a bad job, and start recording again. Either on Thursday afternoon or Sunday afternoon. I’m not through script writing and stuff. Two blog posts are forthcoming one on Tuesday, and one next week. I might end up turning the one about AI Artwork into a video On to what’s new and notable in my world.

New Things

I have plenty of projects in the pipeline. I have managed to get only one in a publishable state

My Ubuntu PPA has been reactivated and contains my fork of the official Debian Minetest packages for use in server deployments. I am working on contributing my changes back upstream. But this is slow going. I run Fedora, as my daily driver, In fact that’s worth an article by itself “Developing Debian Packages on Fedora” or something. Dangit I always end up with more ideas whenever i sit down and write these status update things. More projects is not what i intend at all. Putting that tangent aside, This is the only technical project that I deem good enough to publish.

Fiction

I have posted one fiction thing Technomancer 2190. A GURPS Solo role playing adventure using my highly adapted version of David Pullver’s Technomancer. The prompt that started it all was.

When Magic returned to Earth we thought it would welcome in a new era of peace, and harmony. What fools we were. All we got was more exploitation and oppression. So we fought the military industrial complex of the world againsts a small rag tag group of fugitive Mageborn. With none of the training the Complex affords to it’s slaves. 200 years later we won. But is it a new day, or just the begining of a new cycle of violence. Only time will tell.

My Blog is on the Fedi

Yes I wrote this post mostly to see if it would propagate correctly 😀

Speaking of Time

I’ve gotta go let the cable guy in to fix the Internet

Stay Whelmed

Matt/Pius

Categories
Uncategorized

More 90s Web Programing Abominations

In our last adventure we got SlowCGI working under Ubuntu. That was great. But one must wonder Why? Well I did it because I wanted to learn how to make web applications in pure C. Both to swat up on my rusty skills in C, and for no other reason than I want to learn the skill. You see about 10 years ago I interned at a mid sized enterprise cloud provider with roots going back to the late 90s. During which they produced some of the first web applications for the Federal and State Governments. They were all done in pure ANSI C89. Why Because none of the web technologies of those days think Perl, and PHP 2.0, ColdFusion. Could work at the scale required, this was common in the early days, from what I gather. Yahoo Stores for example was written in LISP for example.

A bucket list item

My mind was blown when one of my supervisors showed me the contents of their old CVS repos. And it’s been on my programing bucket list to learn how to do webapps the old fashioned way. Thus my port of SlowCGI to make it possible. And recently i’ve completed my first dynamic web toy in C. It’s here source is here. Output example here

Notes on CGI in C

These are my notes on the pitfalls of it. First off you really want CFLAGS set to -Wall -Werror when doing this sort of thing because the compiler will allow you to do some pretty stupid stuff that will result in segfaults otherwise. But that’s true of almost every C program i find. For those not in the know -Wall -Werror is a mode in modern C compilers which will warn you about code that is potentially problematic. And then treat those warnings as compiler errors. Think of it like training wheels for the C compiler. Granted not all warnings are valid, especially in older code. But for those returning to C after 10 years it’s a god send

I didn’t have this turned on my first try. So I spent an good two hours trying to figure out why segfaults? They were happening despite my use of only safe string functions and very early on in the program. With -Wall -Werror enabled I found out my strings weren’t being initialized properly, because of C’s order of operations.

This needs a better method of parsing form data. I use a rather bone headed method, that while safe from a memory access perspective. It can’t decode spaces in the form data for example.

We also really need some sort of template engine, Editing Strings in a C file, every time the html needs to change sucks

Conclusion

I hope someone gets something out of my silly little hobby project.

Till next time Embrace the Joy of Linux everybody

Categories
Uncategorized

Let’s Create a 90s Web Programing Abomination Using Modern Technology

I make no secret of the fact I hate modern Web Development stacks. It doesn’t matter what language or framework it is. I hate it all equally, I hate PHP even more. Flask sucks less then all the others. But it still sucks. Granted I still use modern web tools, money, and food dull the pain slightly. As does the opportunity to abuse sqlite in ways it’s designers would find horrifying.

Why do I hate modern web stuff so much you might ask. Easy too much boilerplate, and deployment is a nightmare. The programs I want to expose to the web are usually silly little one offs. Most of what i want to do web doesn’t even merit a database connection. Let alone a full model view controller stack, containers, an ingress controller uWSGI and all the other goop, that one simply must have.

Once Upon a Time

It used to be simple to write web applications here’s an example

#include <stdlib.h>
#include <stdio.h>
     
    int
    main(void)
    {
     
    	puts("Status: 200 OK\r");
    	puts("Content-Type: text/html\r");
    	puts("\r");
    	puts("Goodbye Cruel World!");
    	return(EXIT_SUCCESS);
    }


Ok What’s going on here. Well It’s easy m’kay. A web program was just a normal program which prints out http headers followed by a blank line, followed by whatever generated content you wanted. HTTP info was stored in well documented environment variables, and the program had to return a success code on exit. To use just compile, upload and presto. No docker or proxy passing required. This was called the Common Gateway Interface, and it was the backbone of dynamic content on the web for 15+ years. Heck Most modern web stacks just build or elaborate on this simple protocol

Why did things change?

Scalability, Security, and so forth. CGI as originally implemented spawned a separate process for each request sent to the server. Which could bog down busy sites quite easily. On the security side. Well I won’t go into it here but this article is quite nice if you want to look into it yourself.

But as I said above I hate the modern web, Most of it is overkill for the stuff i do. I know the security risks involved in using classic methods, and scalability concerns for the sites hosted here is a problem I’d love to have. So the question then becomes

How to get Classic CGI working on a modern webserver, by which I mean Nginx

<Troll> Why not Just switch to Apache CGI works great over there

I’m not switching back to Apache because I don’t like the memory hogging tendencies or the configuration file format is just bad m’kay.

<Troll> What is Nginx, I thought everyone used Apache

Nginx is a webserver sorta like Apache. In fact it is currently the most deployed webserver on the internet, it surpassed Apache in that role in about 2016 as I recall. Here’s the latest survey data I could find.

Webserver data

Nginx is much faster, and much less of a resource hog than Apache. But for present purposes there’s a problem Nginx has no ability to serve dynamic content on it’s own. Meaning no cgi support, no php support no nothing. What Nginx can do is pass http requests to so called application servers sitting behind it. Either through a protocol called FastCGI/WSGI, or a plain old reverse proxy. When it gets a result, it does some quick header rewriting and displays that to the user. This saves resources, has security benefits and also allows you to scale and load balance application, should you become the next Facespace or something. All this is great, and most people love it like 80% of the time the other 20% being used to curse out the inevitable 502 Bad Gateway Errors which you will get if you try to do some of the more advanced Nginx tricks.

From this description it should seem obvious what we have to do. Find an application server for use with Nginx that runs old style CGIs. Configure it, and profit.

Sort of like this

location ~ ^/(~|u/)(?<user>[\w-]+)(?<user_uri>/.*)?$ {
          alias /home/$user/public_html$user_uri;
          disable_symlinks if_not_owner;
          autoindex on;
          
          location ~ (\.cgi|\.py|\.sh|\.pl|\.lua|\/cgi-bin)$ {
             gzip off; 
             include fastcgi_params; 
             fastcgi_pass unix:/run/slowcgi.sock; 
             fastcgi_param SCRIPT_FILENAME $request_filename;
          }
          
        }

Enter SlowCGI

From my configuration snippet above You’d think this would be simple, but it turns out until about whenever this post goes up it wasn’t. There’s not much reliable documentation on how to do it, and what exists is either old, or very distro specific. So I decided to work this out on my own with a little help from IRC as usual thanks xwindows.

So our first hurdle is as mentioned the application server piece. Turns out there are two appservers that allow you to run legacy CGI applications. One is known as fcgiwrap, and one is called SlowCGI

Both have problems as it turns out fcgiwrap is nearly unsupported, and after two hours of fiddling I couldn’t get it to work on Ubuntu 20.04. Although it works great under Fedora so there’s that. :P.

SlowCGI is actively supported by the folks at OpenBSD, but is alas an openBSD exclusive application. So to make it work i needed yo port it to Linux. Which turned out to be trivial, heck most of the work was already done WAY back in 2018.

I just needed to sync the code with upstream and make a few changes to Makefiles systemd units and so forth.

It’s over on sourcehut

The most painful part of the port was figuring out the Ubuntu/Debian used LDLIBS instead of LDFLAGS. Which took about an hour of googling to figure out.

The last bit was making the systemd unit file work on Ubuntu, and configuring Nginx to use it. Which you can see above

Closing Thoughts

Be careful with this legacy CGIs have security implications beyond just Shellshock. In the default configuration anything which the webserver has permission to read/write can also be read/written by the CGI program.

Also worth noting is the fact that SlowCGI is less tolerant of badly coded scripts. Be sure to send at least a Content-Type header, and the all important blank line at the end of headers, or you’ll get the dreaded 502 error, with only cryptic messages in the log to guide you.

If i ever follow up this post I will include information about how to use BubbleWrap to mitigate some of the security concerns.

Meanwhile Embrace the Joy of Linux everybody

/Matt

Categories
Uncategorized

Status Update January-Febuary 2022

I hear it be the fashion among young, hip open source professionals to post status updates on their blogs, every month. So I thought I’d try it for myself.

Accessibility Work

The main thrust of my a11y work this month has been to get my rather obscure custom reader program vsss into a state where other people who are not me can use it. You can download the patched version from both Github and SourceHut now. The documentation still needs work and i’ll be getting there shortly. So Watch out for that in coming weeks.

I created a new mailing list called disabled-linuxing for peer support of users with unconventional assistive tech needs. Go subscribe I hate talking to myself in public.

I’ve also been testing the latest distro releases well Debian, and Fedora at any rate for compatibility with the good olde MATE+Compiz accessibility setup that I’ve used since 2009, and results have been. Let’s call it mixed. Look for that document in the coming days.

Lastly I’m working on a document on how to upgrade from Fedora 33 to a release using pipewire. In the case you are still dependent on a Software Speech Synthesizer named after a bird.

Mental Health Outreach

I completed my first foray into this by posting about my experience with depression or bipolar depression in a technical setting. I am unsure how to follow it up without trauma dumping on my audience. Any Ideas hit me up in the usual places,

New Project

I started another new project this month. I know i should finish MasterText. But it’s just not gelling for me at the moment so I decided to put it aside and work on something else for a bit. Over in my staging area you’ll find rabbitears an IRC client module for python.

Finding Home?

I’ve wanted to find a Linux distro to contribute to again, but things just won’t come together on that front. I’ve looked at Fedora, and Alpine and all the community there is lovely, but i just don’t see what i’d do there anymore. Anyone know of any small upstreams that could use a neurodivergent developer with a little bit of rust on the skillset.

Other Writing

Other than the above mentioned writings. I have a couple of church projects still ongoing, and my semi-annual attempt at fiction.

Thanks!

Thanks to all the people who have been so supportive as I get my feet back under me in the open source/tech world. Couldn’t be doing any of this without the tildeverse and associated communities . Love all you lovely people.

Categories
Uncategorized

In the Bleak Midwinter

Content Warning: Mental Health topics

Today’s post begins with a sobering image

This image depicts my desktop as I see it every day. On the left side we see a git log indicating that I haven't done anything on my project mastertext in more than a year. And in the right monitor we see the bog standard Fedora 33 Wallpaper. Which indicates that my version of Linux is End of Life

The reason why this seemingly inoffensive screenshot is sobering, requires some context to tease out. First those who are hyper-observant may have noticed I’m running an EOL version of Fedora. Which is not something I would normally allow. And second you may have noticed if you both read and understood the left window, that I haven’t touched a project of mine called MasterText in over a year. And a careful scan of all my public activity logs would reveal that I did almost nothing from August until Three weeks ago.

You may think that a hyperbolic statement. I did manage to get an administrative withdrawal from Graduate School after all. And I haven’t starved. And I have dragged myself to church a few times here and there So in one sense you’d be almost right. But the near halting of all my online life, not going to church. letting maintenance tasks slip. All for a period of three to five months. These my friends are what we call warning signs. You may ask warning signs of what, exactly?

Depression that’s what

I don’t know if I’ve said this in a publicly visible space yet, but around 18 months ago I was diagnosed with Bipolar I disorder. Now I know very little of the public perception of the illness. But here’s what I can tell you from my limited experience so far. And beware for I am tired of linear writing

The Storm

Christina Rossetti‘s most famous poem In the Bleak Midwinter begins thusly

In the bleak midwinter, frosty wind made moan,
Earth stood hard as iron, water like a stone;
Snow had fallen, snow on snow, snow on snow,
In the bleak midwinter, long ago.

This is an ultimately joyful poem about the Incarnation of Jesus Christ. Indeed the starkness of the scene starts taking it’s climb upward in the very next verse. But in Bipolar’s Depression phase you never get the lift your mind is just sort of stuck, in the bleak midwinter. You are alone with the frosty wind.

Sometimes the wind is so bitter and cruel that you feel it almost immediately. And it sends you scurrying to the safety of your support system, almost immedatly.. Those are the good ones paradoxical as it may seem. What I live in fear of are those times when the mental winter is just below freezing.

In those days one may not appreciate the danger until it is too late. For although the wind starts as a gentle breeze, over time it can seep into every exposed crack in your mental armor, stealing your breath, chilling your mind. Even causing bone deep physical pain. Until it becomes a struggle just to survive. And all you can think about is when the next McDonalds run is going to happen. All the while your relationships crumble, your opportunities wither. And the guilt of things undone, becomes it’s own howl in the wind. Finally your in so **much** gods be damned pain that you either reach out or go into mania which is it’s own special hell, or else destroy yourself.

Such is life

I don’t know who I am anymore
Not once in life have I been real
But I never felt this close before
I’ve been looking in your window
I’ve been dressing in your clothes
I’ve been walking dead, watching you
Long enough to know I can’t go on

Flyleaf This Close

Always Winter and Never Christmas. This is my experience of depression. Or as close as I can realistically come in 300 or so words. The twist with bipolar is that the very medications that can save you from this hell, are capable of rocketing you into a manic psychosis. And at least in my case depression can strike at any time. For any reason or no reason at all. Therapy has helped somewhat. As has getting the right mix of meds, but that took nearly a year of trial and error.

But the absolute worst thing about bipolar is that when the springtime of the mind does finally happen. You can’t trust it because you always have to be on guard against that rocket into mania.

So how does one deal with this seemingly endless cycle of depression. How does one even begin to recover and build a meaningful Well again I can only speak for myself. And the advice I have isn’t easy in fact this is the hardest thing I’ve ever done. Hell even writing about it has preoccupied me for most of two days.

Hope

There’s a song that’s inside my soul
It’s the one that I’ve tried to write over and over again
I’m awake in the infinite cold
But you sing to me over and over again

Switchfoot/Mandy Moore Only Hope

This may seem a simple or even childish answer to a soul crushing phenomenon of depression, but i assure you hope in the face of the winter of the mind and heart is anything but simple. Our society says that hope is some sort of emotion, like happiness. Something you’re only supposed to feel when there is a rational basis to believe things will get better. This is not the hope I’m talking about such hope is a cheap and somewhat frivolous thing. And when you’re in the midst of depression there is little if any of that sort of thing around.

What I’m trying to get at here is the sort of hope that is a positive act of the will. Hope is something you do, not something you feel. Am I saying you can beat back mental illness on willpower. Hell No I myself need a custom four drug cocktail, and an hour of talk therapy every week to keep my head above water.

What I am saying is that in order for treatment to work, and recovery to happen. You have to want it, and invest in it. You have to have a reason to persist. Through the roiling stomachs, the revolving door of therapists, the medications and combinations that backfire. It sucks, so you’ve got to have a reason to do it.

Even more important than the hope that guides you through the winter. Is what gets you back on the horse, and replanting your garden when winter finally ends.

I’m not saying lie to yourself about your situation either. I am saying find a reason to live. Even if that reason is just the next McDonald’s run, you can find a better reason when your McChickens’ are consumed.

My Hope

Sirach 2:1-11

You may now be asking what my hope is centered in. Well the first part of that is easy. My religion gives me hope. I’m Roman Catholic of the Latin Rite. My religion tells me that each and every human being is made in the image, and likeness of God. And thus we are all of infinite worth and value just for existing. No if’s, and’s or special exemptions for queer people about it. Religion is not everyone’s cup of tea so that’s all I’ll say on that for now.

The second part is harder to explain but is also values based. You see I am an unabashed techno-optimist, at times bordering on a techno-utopian. Which means that I believe that Science and Technology, when guided by a proper concern for Justice, can and will lead to a brighter future for everyone.

Knowing that there are Communities of like-minded people doing their best to make the world better despite capitalist opposition . And having played a bit part in some of it. Really gives me hope I wouldn’t otherwise have.

One has to be careful about this framing though. For it can easily lead to guilt when in winter. It can easily become “I’m so pathetic and weak I’m letting down God and my people.” This is where that Therapy comes in handy

So What does Recovery Look Like

Well if we take the image i posted at the beginning, and reframe our thinking about it slightly. A couple of new facts emerge.

  1. That git repository originates from sr.ht and not github. I’ve been meaning to move for over a year now and finally did it.
  2. The EOL Fedora thing is because I tried it on another computer and it didn’t work. See this sites post of the 17th
  3. A careful reading of my public logs for the past three weeks will reveal I’ve done all sorts of things.
  4. Private logs look even better
  5. I’m enjoying music again
  6. I can watch Anime again
  7. I can enter a church without feeling overwhelmed by guilt

This is what recovery looks for me at least. That is to say my executive functioning and creative drive return. As well as my enjoyment of things that bring me joy. It’ll be different for everyone. And I would caution you dear reader not to measure your own recovery by how much you are able to be productive. That road leads straight back to depression and winter. For me at least winter has ended time to replant.

Be kind to yourself

Thanks

Thanks To Joe, bx, vantablack, Anton, fsan, and anyone i forgot to mention for help and encouragement with this one.

Categories
Uncategorized

Prioritizing Freedoms

Bless me readers for I have sinned, it has been approximately 2 weeks since my last confession.  What brings me in today is concerns over several sins I am committing against software freedom. Not to mention good taste.  For you see dear reader amongst other things I am guilty of writing this very blog post on a Windows XP machine. With Microsoft Office 2003. Thank God it is virtualized nowadays and doesn’t have an independent Internet connection. 

I am also guilty of virtualizing this machine in a virtualbox. Using Gmail as my e-mail client. Depending on 15 year old binary blobs in a supposedly open source accessibility system and numerous other infractions that would make my erstwhile cohorts in Debian roll their eyes and frown in disapproval.  And I can’t imagine the Fedora community would be entirely approving if I were to ask.  What is worse dear reader is you can’t offer me absolution because I don’t intend to stop committing these infractions until better solutions present themselves.

Why

Why you may ask? Well let’s take just one example the first one I gave.  Why would an ethical open-source professional, use such things?  Well it’s about the other piece of non-free software I rely on.

As a disabled user I rely on dictation software in order to write.  Not in all situations.  I can usually write code, shorter e-mails, commit messages etc. without having to resort to voice to text software. But by the end of the day, my hands are just too tired to do it.  And there is no current free software solution to the dictation problem,. Not one which does not involve Google Cloud Platform in some fashion or other.

Which Freedom

So what am I to do in this situation? I respect software freedom as the foundational principle on which all modern techno ethics is built.  I have made sacrifices of time, talent and treasure meager though they have been. To build a world in which the digital revolution reaches all people.  I recognize that not practicing what I preach creates problems.  That freedom has its costs. My life would be immeasurably easier if I just gave up and installed Windows, for a while at least.

But again I come to a problem. Am I to sacrifice my freedom to write in order to respect software freedom. Am I to sacrifice my freedom to read. Purely because of Digital Restrictions Management and software freedom again. 

We are talking here about basic life of the mind stuff. Three years ago I had to report the Library of Congress to the Software Freedom Conservancy for violating the GPL. Yes you read that right! The people who enforce copyright were potentially violating copyright to produce reading devices for the blind and physically handicapped.

Software freedom Ethics would dictate I should stop using this device. At least until the GPL violations are resolved. If I did that i would loose access to hundreds of books which are only available on that device

Do I give up my intellectual freedom in favor of software freedom?  That doesn’t seem like freedom to me, that seems a prison of my own making

We act as if Software Freedom were the be-all and end-all of techno ethics.  We make the software and if the users choose not to use it that’s their personal responsibility they should know what they’re giving up.

Does the Fault lie with me 

So am I a bad activist for choosing to prioritize my own intellectual freedom over `the cause`? I don’t think so I think the cause has flaws. Unless you are in the privileged position to be able to choose free software you will inevitably defaced with these trade-offs. 

Whether that’s the life of the mind or communicating with your COVID stricken relatives  The analysis of privilege and all that is not for me to do.  Although it is worth noting that I haven’t seen much of it in our community lately except around codes of conduct and suchlike.  So I’m wondering if it’s a flaw in me am I reading the wrong sources?  Or is it the community failing to consider the techno-ethical discussion in the context of broader social justice principles?

Harm Reduction

My answer to this question is a tentative, both. If anyone knows of anything shoot me a comment or a Mastodon or something. So what are we who are without the privilege to do. Well the approach I’ve settled on is harm reduction. I use the XP VM because it’s set up in such a way as to not send all my works in progress to the cloud. And I only use it for the first pass. I take the raw output and shape it into the final post here on a self hosted WordPress.

Some may criticize my approach as ultimately self serving. I can’t even live up to my own standards at times. Witness GMail. YouTuber Tom Scott once remarked that Everyone draws the ethical line just under what they are doing. But I wish to strive for better, so should we all.

Categories
Uncategorized

Accessibility On Linux Part 1: Introducing vsss

Hello everyone and welcome back to another edition of Piusbird attempts to build his portfolio.  Also known as somebody please hire me please; I’m competent I swear.  In a previous post I said I would outline how my custom screen reader worked, and more importantly how to get it working in a non-me context. Well ladies and gentlemen the time has come.  Here’s a quick primer on the Very Simple Speech Service.

Design Explained

  Upon cloning the code from git you might be tempted to question my sanity.  It is after all a polyglot program composed of one D-Bus-based micro-demon, a large and seemingly complicated shell script and an optional screen handling routine written in C..  But I promise you this Goldberg-esque madness was all rationally designed.

The Method To My Madness

I needed a speech system that could be deployed on any Linux or UNIX system with X11. Which depended only on those things which I could commonly find on the systems I was using at the time.  With minimal if any required additional package installations and especially no additional python module installations at all. Thus it is written mostly in bash. The second design constraint that dictated I write most of this in shell script was it needed to be adaptable to any environment that I came across as I had no guarantee of root access to any system.  Thus it is possible by simply changing a couple of variables to do without the Python micro service or the fancy screen handling stuff.

The last design challenge which made my odd choice of language reasonable was I only had 12 hours to get the first version out the door. As I remember it had something to do with finals week of 2013  

This means that the version on GitHub is specifically configured for my setup and what we will be doing in the remainder of this post is adapting it to yours or attempting to at least.

Before we get started in earnest I should mention that when I say X11 I really do mean X11.  Logically there is no reason why it shouldn’t work on Wayland. I get odd warnings from weird places when I have tried it and since I see no reason to use Wayland yet I have not looked into it further.

To The Code

I mentioned earlier that my code was highly adaptable for any environment. And while that is true there is one hard and fast dependency. This is of course a software speech synthesizer. It can be any one you’d like, however festival or espeak-ng are commonly installed by most distributions. The remainder of this guide assumes we will be using espeak. Simply because that’s what I have in the VM I’m testing this with.

The first file you’ll need to modify is called vsss.conf.in which looks like.

vsss.conf.in

VOX="Callie" 
audio_bckend="padsp" 
rate=200
spkedit="pluma" 
QT_SELECT=4; 
export QT_SELECT

PIPE_COLOR="1;33;44m"
export PIPE_COLOR
speak_bckend() {

    if [ -f /tmp/vsss.lock ]
    then
	echo "Speech output is currently in use"
	return 0
    else
	touch /tmp/vsss.lock
    fi
    $audio_bckend swift -n $VOX -p "speech/rate=$rate" -f $1 -m text -t | colorize-pipe 
    rm /tmp/vsss.lock
    return 1

}

This File has one and only one job. To define the speak_bckend function and any supporting variables, or other functions it may need. This function is what actually does the speech synthesis, and takes one parameter. A file name which contains the text to be spoken. In my setup this function depends heavily on Cepstral Swift, and it’s quirks. Let’s change it to make it use espeak.

# Espeak Version 
rate=200
spkedit="nano" 
speak_bckend() {

    if [ -f /tmp/vsss.lock ]
    then
	echo "Speech output is currently in use"
	return 0
    else
	touch /tmp/vsss.lock
    fi
    espeak -f $1 -s $rate
    rm /tmp/vsss.lock
    return 1

}

Note a couple of things here. First it is best practice to implement a lockfile mechanism, before allowing the speech synthesizer to execute. Unless your a fan of symphonic chaos of course. Also note i set the speech rate to 200 words per minute. To those unpracticed with text to speech this can seem almost incomprehensibly fast. But keep in mind this is actually 100 words a minute slower than your average adult reading with their eyeballs. If your having trouble understanding the computer slow it down to about 165.

I’ve committed the espeak config file to github so you should be able to just copy it over top of mine, and done. And please note I’m always open to merging pull requests for more back ends.

Rarer Modifications

The next two modifications I will show only apply if you don’t have QT or dbus installed. In this case you will need to comment out line 9 of vsss,

And finally change line 20 in vsss_cmd.sh to fetch your primary clipboard without using my dbus service something like

xsel -b  

Should work fine

Ready, Set Go!

Assuming everything went according to plan and you are running the latest git, from Friday 28th January 2022. You should now be able to run ./vsss and be greeted with something like

Very Simple Speech Shell
Version 0.3.4+test
>>>


Conclusion

I hope this was enough to get the prospective user of my very odd reading software through the process of setting it up/ The last post in the series will cover actually using it to get work done.

Categories
Uncategorized

On Accessibility for Linux Part 0 Computing while Disabled

Note a version of this post first appeared in my Mastodon Feed yesterday. This is an extended version with more detail. And is post one of my attempt at the #100DaysToOffload challenge

The Issue

I use a custom built screen reader-ish program to well read stuff on the computer.  Although screen reader is a bit of a misnomer. It’ really more of a mutant hybrid between a screen reader, and a program meant to aide dislexics. I call it vsss you can download it from my github 

I will make a post on how to get it working in a non me sort of context later possibly tomrrow. In the meantime I’ll say you need to rewrite vsss.conf.in for your system. So far as I’m aware Cepstral Swift is the only speech engine that supports the hooks needed for the fancy on screen graphics

When i upgraded to #Fedora 35 on Thursday it stopped working. Not a problem in my code. I checked. Here’s what went down, and why i’m so mad. Basically you have three options for text to speech on linux. First Espeak, Second Svox, (android tts) Third proprietary software synthesizer. And yes i know about the CMU stuff and hardware options. But for various reasons those aren’t viable in my case

For various reasons i’ve used option 3 for the better part of 15 years now. And changing my computer voice now would be a huge adjustment. So the dirty little secret of most non-free speech synthesizers is they treat Linux/Unix as a third class platform. i.e most of the decently priced ones are still using OSS apis in 2021This hasn’t been a problem as pulseaudio has this nice LD_PRELOAD shim, that turns OSS apps into regular pulse clients.

You wouldn’t think this would be a big deal for pipewire either; it is backward compatible with pulseaudio clients after all. Turns out it’s not. But it turns out that for some reason that was not documented anywhere i could find #Fedora dropped the shim for it in a recent update.

Breaking Changes Strike Again

All the Changelog really says is that OSS, among other things is no longer supported. Without explaining why.  I suspect it’s because almost no one uses OSS APIs anymore. ALSA has been around for 19 years now, and pulseaudio for ten. But I’m stuck with a binary blob compiled in 2012. Which from the tiny bit reverse engineering. I had to do for this project last saw major code changes, in 2007.

A Convoluted and painful Journey

There is no technical reason why legacy OSS apps can’t use the padsp shim to connect to a pipewire server. In fact I have this working. But in order to get it working I had to.

  • Figure out that padsp had been removed from Fedora’s pulseaudio package
  • Attempt to revert the change in the source rpm.– Watch that fail spectacularly
  • Fish through upstream git to determine for a bit, reading the source code of the missing component determine that yes my theory was technically sound
  • Uninstall Fedora’s pulseaudio, try replacing that with upstream git build.
  • Watch as my entire sound system explodes.
  • Revert that
  • Recompile pulseaudio again this time installing it under /opt — play games with the linker so only the programs that actually need the replacement pulseaudio libs can see them
  • IT WORKS

All this with diminished functionality in the reading software i depend on. All told this took 2 days 4 hrs and 21 minutes to figure out.

The Takeaway

Moral of the story. An seemingly inconsequential change to you. May have catastrophic effect, on users with disabilities.

I was literally fired from my first job out of college four months in because of a Computer Accessibility issue I was unable to solve in a timely fashion. Recently I had to drop out of Graduate School for similar reasons.

FOSS has always had the potential to be the great equalizer bringing the digital revolution to the most marginalized and all that uplifting blah blah blah from my youth. And in my case it worked out I was able to totally replace a piece of software which ranges in price from $700 to $10,000 depending on vendor, feature set and so forth. With what is lets face it a radioactive shell script horror. From Ken Thomson’s nightmares.

I was able to free myself from the lifetime of constant hardware and software upgrade costs that are often imposed on neurodivergent folks. In order to do basic things like read and write. Which is good, I doubt I would’ve completed college successfully without it.

But to a disabled person without my skillset the whole movement is a dead letter. Heck even if I was able to replicate my setup for someone. It is fragile as we have seen. We need to get better as a community at not breaking user space as Torvalds might say.

Preemptive Troll Management

Now one might reasonably say “Why are you using Fedora if you need a stable platform”, To which I say why should my disability exclude me from the latest and greatest, Pipewire can do amazing stuff and I was genuinely excited about it. If not for this seemingly random and unnecessary dropping of an essential tool for me, i would be quite happily playing with wireplumber and things if that nature.

Categories
Uncategorized

Technoethics Part I Introduction:

  A few months ago, I posted a rant on Facebook complaining about the advertisements of one of my favorite companies. The company is called Canonical. And they make a product called Ubuntu. Ubuntu’s Cringe-worthy advertising is an unimportant point in this discussion. Through Facebook, I came to realize something rather alarming.  That my friends, both young and old, were unaware of my commitment to  Living my Digital Life following With purpose. Following the values of solidarity, subsidiarity, and community. This was startling enough that a few of the public and private comments received also indicated many people were unaware even of the concept of Technoethics. 

  Despite the tireless advocacy of thousands of people, including myself for the past 32 years, few people not associated with the computer industry are even aware that technoethics is a thing. And my experience in the corporate world has shown but even among those aware of Linux and the free software movement, some who are even longtime Linux users themselves are not completely aware of the moral and ethical commitments that a large and influential minority of Linux users bear. The consequences of this go far beyond disrespect and inadvertent impoliteness. With the world unaware of techno ethics as a broader principle, it will become increasingly hard for those of us who practice it to do so in a sustainable way—and thus jeopardizing the ability of everyone to fight for a world built on solidarity, subsidiarity, and community In the century to come. 

   I was unable to find a basic primer on techno ethics written for a lay audience or  What follows is my attempt to fill this Gap. 

 What is Technoethics

Technoethics is the application of general ethical principles to our technological choices. But more specifically it refers to the prioritization of morality over convenience in our technological choices. 

  Whether you know it or not you have probably already practiced techno ethics in your everyday life.  For example, some parents May opt for cloth diapers over disposable for the environmental benefits, or equally other parents in a different situation might opt for disposable Over cloth to conserve scarce Water Resources. This is a common first encounter with the subject of Techno Ethics.  and within the everyday consumer space, there are thousands of such decisions to be made. Organic food, non-animal-tested cosmetics, Packaging minimization, or buying local.  all are, in one sense,If Technoethical choices. In each instance, the consumer exercises her  Power of Choice after thinking critically About the cost and benefits of a particular technology such as factory farming or e-commerce,And for instance and chooses consciously not based on a metric of economic or convenience factors but instead on a social or moral Factor. That is techno ethics in a nutshell.

  However, when the nerd(s) in your life speak of Technoethics they probably mean to apply this intentional consumption to the technological services and devices which we take for granted, things such as laptop computers, Facebook, and smartphones. Or to even more esoteric things such as farm tractor firmware, e-waste, Or planned obsolescence increasing the digital divide.  we apply formal ethical principles,  critical thinking, and intentional consumerism to our digital lives as well as our lives away from the keyboard.

Why should I care?

 Until the global pandemic, most people could get away not caring. After all, if Facebook did something that distressed you, all you had to do was to not use Facebook. Who cared what obscure video conferencing solution you used to communicate with friends and workmates. if you even use video conferencing at all, but the global pandemic has given us all virtual lives, and simultaneously has merged them with our physical lives. What once was a niche Hobby, or futuristic gimmick from the likes of Star Trek is now very much mainstream. and this is so self-evident as to not require argumentation.

  Therefore anyone with a commitment to Justice in the physical world who has benefited from high technology in any way these last six months should care about Justice in the virtual world. And there is quite a lot of Injustice in the virtual world with which to be concerned.

 The digital divide has cut the urban poor off at the knees in regards to access to services for example. Improper recycling has left certain parts of Africa as a Dumping Ground for unwanted Electronics, and in turn, has fueled the growth of fraud schemes which extract millions of dollars from first-world consumers. 

 And let’s not forget the titans of the industry Facebook, and Twitter who through the careless application of artificial intelligence, and `innovative`  business models have arguably Contributed more to political polarization than anything else.

 The good news is that unlike most social problems the individual can do a lot on his or her own to affect Justice in the digital realm. All that most people are missing is the proper education and will.  I can hear you objecting now. Of course, you have the education to avoid fake news on Facebook all the time it’s easy to spot or maybe you do your best To use DuckDuckGo when possible or maybe you don’t even own a social media account whatsoever seeing no point in it. all these things are good in themselves 

Why do you use Zoom?!

   Really why do you? Don’t say it’s because it’s convenient or it’s free. Microsoft teams, Google Meetings, Discord,  and Jitsi-Meet are all just as free just as easy to use. just as convenient.

  Here’s an even better question: Who owns Zoom? Why are they giving away a service which is quite costly?  What plans do they have to derive Revenue from the Millions of people meeting on their platforms?  What is Zoom’s privacy policy?  Can anyone else watch you without you knowing?  I don’t have the answer to any of these questions off the top of my head, I’m betting you do not either. but it just goes to show how readily we all adopt new technologies without Giving any thought whatsoever to the implications or Consequences.  I am guilty of this particular sin too. When the pandemic hit I was so happy to see some of my friends’ old and new video conferencing for the first time that I didn’t care what system they used. I just wanted to be with them.

I  threw away All of the lessons I have learned over the past 12 years. All of my professional skepticism. All of my critical thinking in the desperation to be with people even virtually.  and what’s more, I knew I was doing it. 

  Why are we trusting some of our most private personal interactions with a corporation most of us know nothing about? We don’t do this in other areas of Our Lives. But when it comes to adopting new technology, almost all critical thinking, Almost all consideration of any ethical values we possess goes out the window.

 Did you know in June Zoom Video Communications inc admitted to shutting down the accounts of Chinese human rights activists? And that most of their research and development is located offshore specifically in China leaving them vulnerable to pressure from the autocratic regime. That they are currently developing censorship technology will allow Chinese authorities to stop anyone within their borders from criticizing the communist regime on the zoom platform.  and thus have become complicit. All of this I found out through  10 minutes of research. I can’t imagine what I would find if I were to do it properly.

 I’m not trying to pick on you or Zoom specifically but merely to call out the stark truth most people don’t apply critical thinking and their decisions about how they wish to live their digital lives. we need to do better than that because our digital lives for there is no longer any distinction between Digital Life and life away from the keyboard. I’ll bet for most of you there isn’t even a keyboard anymore.

 And this is the other stark truth many of us do not have the education necessary to apply techno ethics In our day-to-day lives. This is a particular failing Activists like me. The activist will issue book-length reports,  write blog posts containing so much technical jargon that even people with degrees in computer science have trouble reading them.  And in general do very little to expand the  Community beyond the small Ivory Tower which has been painstakingly built over the past 30 years. In short, we have failed quite spectacularly at the teaching function of activism. So over the next few articles, I intend to educate you. We will explore the key issues of Technoethics today starting with surveillance capitalism, moving on to e-waste, the digital divide, and finally ending on software freedom. How the  Brands and products we all love exacerbate all of these problems and what you can do about these issues. Welcome to Technoethics 101.

Creative Commons License
Except where otherwise noted, the content on this site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.