Categories
Uncategorized

Complexs and Complexity, Or Why Granny needs a 4096 to do her taxes

Image Generated by Wifu diffusion prompt was 1girl, fairy, in wheelchair, flying, shrine, looking at viewer, night, watercolor

If you’re at all fan of this blog you will know that I use all sorts of retro computing and ultramodern technologies., To achieve a computing environment that is retro futuristic in style and in substance. For example my desktop environment most closely resembles 2007 era Linux. My voice control system  is the latest and greatest  ai assisted kit. That the open source and charityware  community has to offer. Combined with a terminal mode word processor from 1998. What most people do not understand however is the rationale behind these eclectic and some might say eccentric computing decisions. This is not just some weird  and appalling hobby of mine, except in the most accidental of senses. I use technology in this way because  it is the best technology that meets my needs as an autistic programmer. Without  making me dependent on the Disability Industrial Complex.

Getting a complex

Most people even the technically inclined, operate under a misconception about assistive technology. They think it’s a solved problem with readily available solutions that are cheap and easy. When I reveal the people that I use Linux and open source software to achieve my accessibility  nirvana.  Two reactions are common the first is ” that’s so cool how can I make my own”. The other is to insist that I am just making work for myself. Such people think should get a  Mac, or try some big brand windows accessibility software. Which they insist would be better then my hodgepodge solution.

I’ve even been fired from jobs and booted from college  courses due to my  due to my technical choices. Which employers and professors  assumed were at fault for  The challenges I encountered with their disability accommodation and accessibility situations.  Nothing could be further from the truth however.  Accessible computing is not a solved problem it is not cheap, nor easy.  The software and tools or held hostage by an industry more interested in making large sales to institutional users. For the sake of legal compliance. As opposed actually serving the needs of disabled people.

I was offered grants at the beginning of my college career to get a full technology assessment done. And to have software purchased. This brand new software quickly broke down. and it proved impossible to maintain particularly with college and work deadlines.

A shocking discovery

What I quickly discovered  was that assistive technology exists in what’s called a captive market. The users must use it so companies can charge any amount of money they want. Worse yet the companies don’t price or market their software to individuals, or families. They market usually toward government agencies or schools and institutions. As an example one of the cheapest products for helping people with dyslexia use a computer is TextHelp Read and Write Gold. This is given out free sometimes if your institution contract with the company. And you are officially diagnosed with A Qualifying Condition. Otherwise this piece of software runs you $213 annually or about $550 for a three year annual subscription.

 Good luck if you have a more complex disability such as low vision and dyslexia  or cortical visual impairments. That software comes from completely different company and can easily cost a half a grand. And the disabled person themselves better have the hardware on which to run it. As most government or charitable agencies no longer offer money towards the cost of a computer because of “Previous Fraud”.

<Iggy>
Yes you read that Right folks, when the state funded, Disability programs get defrauded… Even once it often comes at the cost of the entire program. In New York State for instance you used to be able to get a new computer ever 3-5 years or so. Until parents of children receiving services were caught selling their children’s equipment on eBay. And most charities that provided this service no longer do for similar reasons allegedly

  Persons with disabilities  can often require a high end gaming tower just to get basic work done.

This can sometimes cost upwards of $10,000  for a multiply disabled person to get the equipment and software that they may need  to live life to its fullest.  and we’re only talking initial investment, not ongoing maintenance or upgrade costs. is it any wonder that people are still using their Classic Mac based accessibility software originally issued to them in the nineties.

The Complex and Me

 We in the disability activism community call these interlocking systems of oppression The Disability Industrial Complex.  The acronym is intentional. I realized this dynamic at the age of seventeen, and I knew if I ever wanted to work as a programmer ever in my life I would have to fight to overcome it. that is to overcome the ableism not the disability.

Originally I had grand visions of becoming the definitive open source programmer working in this space. I wanted to dunk the DIC, to write an Free Software Solution  to every common disability need, to found a nonprofit that would not only do this work but also educate the next generation of disabled programmers to do the work our own selves.

  As It Turns Out college with disability is hell on earth, and when you add mental illness to that it becomes an almost insurmountable challenge filled with pain  the likes of which I would not wish on my worst enemy. Not Only did I fail to accomplish any of my grand vision. it was a struggle to meet my own daily needs. But after years of toiling away in relative obscurity I can finally say that with the help of the Linux Community. Mission One meeting my own needs has mostly been accomplished. The remainder of this  post will be dedicated to how I achieved, my current build.  As well as giving pointers on how you can achieve your Accessibility Isekai.

Me Explained

I Will start with the description of my disability, as I see it and then move on to the problems she imposes, (Yes my disability has gender, get over it). Then I will move to how I solved each problem with freely available software on Linux. So strap in folks this is going to be a long one.

My Official Diagnosis has always been a matter of some debate. Every Clinician Seems to Agree that I have some form of cerebral palsy, but as to which form and how severe it is there is no consensus. Some Clinicians also believe that I have some form of autism, and or ADHD. However I am sure that even if there were unanimity among the experts a mere diagnostic label wouldn’t tell you much. I will attempt to convey how I experience the world.

The easiest way I can think of to describe my experience of the world is to make in analogy to early computer generated movies or three dimensional games. I have trouble moving nearly all my limbs and appendages.moving my eyes is particularly difficult so imagine me as a low polygon count Buzz Lightyear.  With someone drunk in the motion capture suit.  laugh all you want but this is genuinely the closest I’ve ever come to describing what life is actually like. add to this the usual sensory differences that you see with autism.

<Iggy>
I had a particular problem with florescent lights
when I was younger. I have phases of selective eating worse
than any toddler you’ve ever experienced. To the point where can go
weeks eating just chicken nuggets.

 

I have no peripheral vision, and blind spots in the lower part of my eyes. The last thing I would note is that I have trouble translating thoughts into movements.

An example

  At this point I think an example of how all this comes together would be helpful for the reader.

Right Now  even though I can’t see anything below my nose without moving my head I can feel that there is a pokemon plushy on the floor right next to my foot.  If I were to shift my foot over and put a slight bit of pressure on whatever stuffed animal it is I would be able to tell you precisely which sensation in my feet is just that good.

In order to bend over and pick it up it would take me about ten seconds just to think about how my body needs to move in order to accomplish that simple task. Another seven seconds to initiate the so called “Motor Plan”. And a whole 4.5 to complete the movement, and then the toy is only in my hand. There Needs to Be and entirely new motor planning and reaction cycle  to get Sylvian to a safe place. Did I Mention that I had ADHD as well.

<Iggy>
In Fact it took three tries while narrating this process

simultaneously to get Sylvian from the floor to the top of the

computer tower.

 This describes my disability in practical terms, but what challenges does it impose while using a computer?

Computing while Disabled

I Am glad you asked.  The first challenge this imposes Is with reading text onscreen. The usual black text on a white background just does not have a high enough contrast ratio for me to have any comfort in using it.   in other words I was a dark mode aficionado about fifteen years before that was fashionable. While dark mode helps higher contrast ratios are better, I generally prefer reading at a 6.4:1 ratio or better.  For reference to achieve an AAA  rating on the Web Content Accessibility Guidelines Version 2.1  specifies that 7:1 ratio between body text and background is required.

<Iggy>
For those of you who have smart enough rear ends to realize that black text on a white background is a solid 21 on the contrast calculator. You’re right congratulations, however the pure luminance of the white background makes everything else fuzzy a dark mode has the same contrast ratio but everything appears sharper.

Eyes Off

The other problem I have is eye  fatigue if I read stuff on computer screen without looking away for too long my eyes start to feel like they’re burned into their sockets and I start getting migraine  like headaches that no painkiller will fix this is why every so often I turn away from the screen and just use voice control, or rest my eyes in some other way.

This also makes reading quite slow a  neurotypical human being can read at something approaching three hundred words a minute I am lucky if I get to go half that speed, the last time I had it professionally measured I topped out it around one hundred and twenty. I think I have improved since then because my reading software as  you’ll see in a minute has an incidental feature that is kind of therapeutic for that condition, but I’m not paying for the measure again.  That’s only half the battle as stated above my eyes fatigue rather quickly so the frequent breaks I need to take slow it down even further.

Speeding things up

For this reason some sort of text speech system has always been required for me to use a computer, or even a book effectively.  I have used nearly every text to speech synthesis product on the market from high end products such as Read and Write Gold, and Kurtzweil Reader too low end freeware projects such as ReadPlease 2003 and DocTalker. Ironically the low end projects do a better job.

This text to speech system was naturally the first thing I looked for on Linux. In the my early days, (around 2005 or so) there was KDE utility called K-speak.  Which replicated the feature set of a low end text to speech freeware program on Linux.   I switched to  Linux full time as soon as I had this figured out and a video card that was capable of running Compiz Fusion  with all its accessibility features turned on.

Then the trouble started, because the APIs that software relied on had been changed in 2007 without any consideration for backwards compatibility and when i upgraded past Ubuntu Fiesty, speech synthesizer stopped working.

<Iggy>
k-speak was a QT3 application that relied on dcop to fetch text selections and oss audio for its main output.

  

I eventually managed through the use of an old Windows ME machine I had lying  around at the time to cobble together shell script that replicated the functions of the missing program.  It is this shell script or more accurately its great grandson  that I still use to this day for  orchestrating my speech synthesis needs. To this day there is no better accessibility tool for low vision users than Compiz Fusion.

Practical Details

Weston and Gnome 3 are getting there, but Compiz has this feature where you can invert the color pallet of a window for me this minimizes eye fatigue and strain which no known Wayland compositor implements. I have tried on multiple occasions to write one myself, but the project has always failed for one reason or another. If any expert in Wayland is reading this post I would welcome a voice chat for a Wayland 101 tutorial.

As I have alluded to you but not mentioned explicitly minimizing eye fatigue and strain is critical to a successful computational experience. So some form of text speech system is a must have, unfortunately  while there are many text to speech backends on Linux and unix  in general. svox,festival,mimic3,espeak and more, and while we have a good screen reader for blind and ultra low vision people in Orca. We lack a robust system to use text speech to help with reading for people with what are called “Print Related Disabilities” in the disability industrial complex.

Print Related Disabilities

The needs of these users are completely different then say a blind person. Where a blind or low vision person  the whole screen read to them, a person with PRD may only need selected parts of the screen read aloud,  or  only require different screen fonts, or high contrast modes. Or anything in between. I use a hybrid of high contrast and selective screen reading.  so far as I’m aware my own program  VSSS, is the only program which orchestrates a speech synthesizer for the purpose of assisting with Print Related Disabilities on Linux.  However it is a polyglot program, that has evolved over ten years of constant use to meet my specific needs.

<Iggy>
I had another program designed for more general audience,
which I created back in 2010. but the special project grant through
my university ended in the fall of 2011. And I had to lay it
aside. I have always wanted to rewrite this particular program the
one for the general audience, using my vastly improved experience.
With both programming and accessibility, but due to my poor
financial circumstances I would need about three thousand dollars
in grant money to make the project feasible. I know that sounds
mercenary for an open source developer. But this is not something
I can do with my spare time on ten year old equipment. I want to
give this project the time and attention it deserves, and that
requires money. But that’s enough of that tangent.

VSSS then is a speech orchestration system  for my specific print related disability. But what does it do specifically well to quote from the source.

A brief code snipit

VOX=”Callie”

rate=190

PIPE_COLOR=”1;33;45m”

export PIPE_COLOR

audio_bckend=”padsp”

spkedit=”pluma”

PATH=/home/matt/pkg/bin:$PATH

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/matt/pkg/lib64

speak_bckend() {

   if [ -f /tmp/vsss.lock ]

   then

       echo “Speech output is currently in use”

       return 0

   else

       touch /tmp/vsss.lock

   fi

   cat $1 | ./emojifilter.py > $1.new

   cat $1.new > $1

   $audio_bckend swift -n $VOX -p “speech/rate=$rate” -f $1 -m text -t |  ./pcg

   rm /tmp/vsss.lock

   return 1

}

VSSS Explained

Now this requires some explanation this function takes a file name as a parameter the file name could theoretically be anything on the system. But the file is most often generated by DBUS  service which we will get to in a minute then it takes the file through a complicated shell pipeline beginning with the so called emoji filter. Which is really misnamed because it’s a generalized preprocessor which also does regular expression replaces. And ending with the invocation of the swift which is a proprietary speech synthesizer originally meant for telephony applications. Which outputs the audio and simultaneously prints the output of the so called normalization process to standard out which then goes to a program called pcg. Which stands for pretty color graphics.  and is just there to make the normalization output easier to read onscreen. The final output looks something like this

I can’t give you an audio file of how it sounds due to copyright restrictions. But here’s a YouTube video of Cepstral Callie, saying something. There are a few other bells and whistles that allow me to jump around in the document, edit the document before it is read. And as I said there is a whole preprocessor  emojis with their text descriptions, and does standard regular expression replacements for various things.  This is the first component of my accessibility system.

MasterText

The next component which I wrote myself is called MasterText. This requires a little bit of context before I explain what it does. In 2020-2021  I was accepted into graduate school for Information Technology Management. At Empire State College, our state universities remote learning college.

While the disability services there were far from the worst I’d ever seen. It was basically a torture test for my disability. Not helped by the fact that due to how grants worked. I didn’t get the money for my textbooks until six weeks into the semester.  

I eventually had to drop out. Both during and after I contemplated ways to augment my accessibility system to cope with the workload.

Out of this came MasterText, which quite simply replaces the  API which fetches text from the screen into the reader. So that every piece of text that is run through the reader also ends up in  persistent database. Which is both full text searchable and content addressable.

Bestowing Superpowers on myself

Every piece of text has a unique address which can be referenced if I need to read it again. And I can search through anything I’ve read since 2019. It also has a web interface which has some features of a wiki. Meaning I can annotate texts, cross reference them and generally do any shenanigans which I feel are necessary. When researching a topic or writing  a paper and so forth. If I had thought of this idea before I had entered grad school  I would have my masters by now.

This tool  allows me to use my auditory memory, which is one of my most advanced skills. As a very finely  honed tool in any sort of writing endeavor.

BlueProxy

The final tool that I coded for myself is a more  recent addition, and simply leverages Mozilla’s Readability API. To simplify the contents of websites so that the speech system produces more coherent output. I could always do this in browser. But having it on  as a web proxy and API frees me to use simpler browsers such as otter, midori  and others. And also will eventually lead to integrations with other tools. That I am currently working on, so stay tuned as they say.

The Rest

On to parts of the system that I didn’t write myself. As I stated in the beginning of the article I use Compiz Fusion with the Mate desktop, to provide missing accessibility features in X11. A terminal based word processor  Wordperfect for Linux about which I’ve written previously. And I have recently replaced my  dictation and voice control system, which used a windows XP based virtual machine and several horrible kludges. With the much more functional, and elegant Talon Voice Control System. Which has made life so much easier in the past few  weeks.

Conclusion

Now if the disability I described, sounds something like you. and you want to set up a similar system. I would recommend starting with the long term support release of Ubuntu Mate. Though I am a Fedora user and proud of it. The release model of fedora can make it susceptible to sudden and dramatic changes, which the user has to work around. For example recently during the transition to pipewire the fedora devs removed the backward compatibility shim that allowed OSS  binaries to run as pulseaudio clients which completely broke my entire text to speech system. They did this even though there was no reason to remove such a component as pipewire, implements the same API as pulseaudio. And so the shim is also compatible with pipewire. I had to find  a way. To reinstate that missing feature all without the ability to read.

Suffice to say fedora is an adventure and if you’re just starting out building your own accessible computer system without the disability industrial complex. I recommend starting with something stable, even though new features are slower to get to you.

If you want to get VSSS or MasterText running shoot me at DM  over on tilde.chat,  or an email I am matt -at- piusbird dot spce.  I would be very interested in  what sort of documentation would be needed for a new user to start using the system.

Finally if you know where I can get grant money to pursue first building a speech system for print disabled users, and then secondarily making a  distribution derivative, that more tightly integrates some of these accessibility components. And makes them easier to install and use. I would welcome your  Feedback as well


Categories
Uncategorized

New Year New Proxy

AI Image Prompt: the legend of zelda breath of the wild, 1girl, purple hair, laptop computers, happiness

BlueProxy Git

This was not a project I hoped to be announcing today. I was hoping to announce the start of my solo RPG adventuring platform. I spent my November and December fighting the mental health system. So I had to scale back my more ambitious projects. Nevertheless I managed to create something that I’ve always wanted to create. To close out 2022 and began 2023 in the right way.

This project is what I call an accessibility proxy. An accessibility proxy is a website which takes the contents of another website of the user’s choice and rebuilds the visual elements to be more usable by people with print related disabilities. Print related disability is an umbrella term covering anything from blindness to dyslexia and much else in between. Basically anything which affects a person’s ability to read standard text can be classified as print related disability.

Technical Overview

Netsurf showing the landing page for my proxy program. It Welcomes you and then asks for a url and user agent.

I grew frustrated with not being able to read things on the Internet. So I had a “hold my beer” moment over new years. I ended up coding the entire thing in 72 hours or less. It hasn’t hit the forges yet but you can find it on my personal Git server.

The heavy lifting in this piece of code is done by a fork of a piece of software called “miniwebproxy” by openBSD’s Ted Unangst.

This works fine for now, but I eventually hope to replace it with an engine based on Mozilla’s Readability, which can handle even more sophisticated modern websites. I added selectible User Agent support, and Header Sanitization.

The next release will see support for converting to plaintext. The final feature of note in the first release is the web frontend is completely JavaScript free, and it was designed to work with older or underpowered browsers e.g. Dillo, and NetSurf. It might even work with Netscape 2.0 but I haven’t tested this as yet. Note that I don’t plan on running a public instance of this as this piece of software has shall we say a tendency to bypass paywalls, and make “Website DRM” magically disappear. My instance is hiding behind certificate-based authentication. So as not to get blocked. However I have open sourced the project as usual so that if you want to start your own instance you can.

The final proxy render

Bugs of note:

CloudFlare tends to be a pain in the ass when using exotic user agents. Thus a standard Firefox user agent is provided. I will add more normalization features soon. The Dockerfile doesn’t seem to want to build on Oracle cloud Free Tier and I have no idea why. It correctly builds everywhere else I’ve tried.

Happy reading and enjoy if you have any feature suggestions pull requests etc. my inbox is always open.

Categories
Uncategorized

September’s Children

burn it to the ground

Twitter is imploding in case you hadn’t heard. Losing a million dollars a week in advertiser funding. Corporations such as Eli Lily will likely have a multimillion dollar claim against TWTR. For causing them to loose stock valuation through negligence.

Twitter’s cultural, political and market relevance is in it’s twilight. not a moment too soon. Twitter was always a very well managed, and sinisterly marketed bad value proposition. As all Surveillance/Choke Point Capitalism is for its users. Elon Musk’s missteps in the past few weeks have only exposed this to the wider market. It is my prayer that Facebook and all the other overvalued Social Media companies go down in flames.

ActivityPub Explained

What seems to rising in it’s place is not the alt right Trumpian spaces such as Truth.Social, Parler or Gab, as many predicted. Rather it’s the network of sites which speak the ActivityPub protocol. Mastodon, Pleroma, PixelFed, PeerTube and all the rest.

For non techies in my audience, ActivityPub is hard to explain. If you think of your regular social media as say Barns and Noble, or Amazon i suppose. Then Mastodon is like your local library. Superficially they both distribute books. Your library is run by the government or a local non profit for the benefit of the community. Any person or group can start an ActivityPub Server. And they can all talk to each other. For example my Mastodon (like Twitter) account is @piusbird, and my friend Vantablack is @vantablack. Despite being on different sites we can see content from each other, at mention each other and boost (retweet) and star (like), each others posts. There are Corporate run Servers of course. The majority are run by digital community groups or individuals.

Organizing for a Better Internet

These groups are not yet as organize as your traditional civic organizations or non profits but that’ll come in time. Point is that this non profit loose association of individuals and groups, running on consensus principles. Operates a social network that had close to a million active users before the Twitter implosion, and has been growing by nearly half a million users a week since. Most people don’t think such a thing is even possible, yet it’s happening.

Many Mastodon/ActivityPub oldtimers think this sudden rise in popularity is a bad thing. The network was built by queer, disabled, people of color and other gender and sexual minorities.

Specifically because TWTR was unsafe for us. Many in fact are comparing it to Eternal September. Which is a term that Technology Historians use to describe the aftermath of AOL and other Online Services connected to the Open Internet.

The Open Internet

You see before 1993 when congress declared the internet open to anyone.

Being Online and being on the Internet were two distinct and separate concepts the Internet was strictly a defense and university, thing only. There were services like AOL and CompuServe. Which provided News, Stocks, Message Boards, and sometimes Chat and Games. As well as locally run BBSes. But the profit margins on these things, were always incredibly thin.

The potential user base was small. Then 1993 came and the internet became open. Suddenly these small online services had a way to reach a global audience. And all was good for awhile. The eternal September may have disrupted the culture of university elites.

September was good actually

Let’s face it someone like me would never have been allowed on the pre 1993 internet. Let’s start with the fact that my rights to be included in society at all weren’t secured until nearly a year after my birth.

Most states were still actively institutionalizing people with my level of need until the Supreme Court intervened in 1999. and i had to be homeschooled because my rights to education weren’t fully secured legally until two thousand and effing nine.

Because of Eternal September I grew up on an internet where we had Forums and IRC and MUDs, and Blogs and mailing lists. Decentralized and Federated was the internet of my childhood and teen years. And literally dozens or hundreds of other sites, projects and communities besides. A place where you could go to find yourself, try on new identities, and find community even if you were excluded and marginalized away from keyboard. In my youth I rode Dragons in my spare time. Had friends and contacts from around the world, and was a valued member of several communities. Even though i was extremely social phobic away from keyboard.

The Fire Nation Attacks

Then sometime in 2014 it all seemed to just die First it was PernMUSH died, then several forums that were formative. Then most of my non technical IRC hangouts burned one by one.

Facebook groups and Slack and Twitter took their place but it no longer felt the same. And let’s not forget the online games which paid no attention to accessibility issues at all.

I had to play this character marnold, Who was kinda me, but shoved into an itchy suit, told not to do anything weird or controversial least the mythical `future employer` see it. I had lost the space where i could be myself, and so i began to wither and die inside, this was not helped by misdiagnosed mental illness.

But in hindsight the destruction of most of the community spaces that were holding me anchored was the shatter point that, made my world explode. What Followed was three years of hell that only ended when i returned to Church.

And why was this done? Well it was sold as a way to include everyone in the New Great Conversation so that everyone not just elite `techies` like me could have such experiences.

Corporate Feudalism

In reality the big social media corporations were just trying to milk us for advertising dollars. Everyone who has eyes can now see why taking control of the internet away from the hobbyists and the Anarchists was a bad idea. Everything from recent US Elections to the ongoing genocides in Myanmar have Facebook’s dirty blue fingerprints all over it, and rather then helping pull down censorship, and oppression in places like China Western Companies like Cisco and Apple have betrayed the values that allowed them to exist in the first place for a few extra dollars in shareholders pockets. For a long time I was not hopeful that the post 2014 state of things could ever be changed.

Rebirth

But in 2020 shortly after a life changing diagnosis. I discovered tilde.town and ActivityPub, and Treehouse, and all the rest. A new world being built upon the ashes of the old, and it was as if I was reborn.

I effectively was. Pius was born and he is a character who is much closer to the real Matt then my `real life persona` ever was. Through this community I’ve learned that living with a disability doesn’t have to be constant struggle and joyless drama.

That the key to my best life lay not in some mythical future employment. Rather in discovering the things that give me joy and pursuing those when possible. And over the past two weeks i’ve watched in gleeful awe as Twitter collapses and person after person discovers the joy of these communities.

Sure there’s bound to be some trouble ahead. Keeping toxic waste out of our home will be difficult. But if even one person who is where i was in 2014 or even the first half of 2020 has discovered Mastodon or Misskey or whatever and their lives have been made better because of it. I say it’s all worth it. If one person makes a connection to a marginalized group and thereby is prevented from going down the right wing rabbit hole as some of my former friends did, then it’s all worth it. In other words if this is the New Eternal September, then it’s a very good dream, may it never end. But wake me up when it does.

Pius

Post illustrated with AI art, thanks to Xe for letting me play with her bot, and lucidiot for beta reading. What isn’t AI Art is wikimedia commons or memes

Categories
Uncategorized

An AMA of Sorts

I’ve had a bad day creatively, but I made a promise to myself I would make something every Saturday. No matter how bad it was. This is cheating a bit, but here are answers to ten questions. My current cast of Characters will take turns asking them.

<Mr Troll>
This is just an excuse to test out the Creature Engine code isn’t it?

Sure you bet it is. Only I thought I’d give the subscribers more content this go around.

<Vita>
Creature Engine, what’s that.

It’s an experimental WordPress plugin, for Conversational writing with Characters. In the style of Xe . It will of course be open source eventually, but right now the PHP is kind of horrifying. And it depends on a Freeium plugin that i don’t like very much so I’m holding back on publication for now. It won’t come out for real before the middle of 2023.

<Icey>
Cool. Now enough with the technical stuff. What’s your favorite Anime?

Code Geass the 2006-07 series, Not the Movie remakes. Although Resurrection was good. I also am a fan of everything CLAMP ever made.

<Icey>
Have you seen INSERT TV SHOW here it’s really good you should watch it

I am generally slow at consuming TV, I think it’s an ADHD thing. So the answer is likely no.

<Pius>
What about movies then

Those are different provided I watch them in theaters/with someone else in the room. My favorites are in order of release. The Cain Mutiny, Anatomy of a Murderer, Superman Red Son, and The Deer King

<Chyghorth >
What Religion/Denomination are you and why?

I’m a Progressive Roman Catholic, which means I am Christian. Why because I have found. That the Catholic Expression of God is the one closest to my experience. It’s not a perfect fit, by any means. For example i find the Vatican’s approach to LGBT issues to be barbaric at best. But a God who made the human race for the joy, and love of creation . Who is constantly present to their people through many means is a story I really think is just about as close to the truth as we, are likely to get on such matters.

< RoboTux>
Favorite Programing Language

Python all the way. I’m also excited about Rust, but i don’t get to use it nearly as much as I would like

<Vita>
Please describe your creative process?

It’s still evolving and I wrote at length about it on facebook in a post i cannot find anymore. So here it goes again…

I tend to think that 50% of Creativity is just getting your butt in the chair, consistently, and in a distraction free way. Which is not easy. I try to give myself at least 1 hour of solid creative time a day usually late night or early morning before sunrise.

The other 50% consists of 20% Idea farming, and 30% execution.

Idea farming is basically systematically coming up with ideas, and then writing them down. An idea is worth nothing if you don’t put it somewhere permanent. You get ideas by asking yourself Questions. Such as

What if America (USA) had a monarchy?

What if we Teraformed Europa?

As a result of the Trinity Nuclear Tests Magic was discovered in 1945. What happens next.

These questions sometimes, have answers that will be immedatly obvious, sometimes require research. Sometimes they result in more questions. I have codenames for the whole thing. For example the Codewords Alas Victoria. Points to one of my variations on the American Monarchy idea. So if i run across it in one of my notebooks or whatever. I know it’s research or drabbles related to that project.

I’m still in the process of centralizing all my notes and stuff

But back to idea farming I generally do this in the pool at YMCA. For various reasons I can’t use devices going to or coming home from the Y and it’s a 20 minute drive each way. So i figure if the idea survives the two hour journey from the pool to my notes. It’s an idea worth exploring

Video and Music ideas work similarly

Execution is just shaping the raw idea into a form i like, how i do that is complicated, and is a post in itself.

<Chyghorth>
What’s the hardest part of your creative process and what is easy?

That’s a two for one but ok.

Easiest part is coming up with ideas. I have like dozens when in the pool, and a few bonus ones when not. Hardest part is finding distraction free time to execute. Because of my ADHD, I need like several hours, and staying focused on one idea is hard. I haven’t been able to video edit in awhile because of this.

<Icey>
What’s your favorite part of creating things

I’ll admit to being a bit vein here, but when 100 or 3000 people see my work. And it brings them joy, or makes them think. I feel like on that basis alone I’ve made the world a better place.

So That’s ten questions about me, dear reader, I hope you learned as much in the reading as I did Writing it.

TTFN

Matt/Pius and the Creature Crew

Categories
Uncategorized

Storming Hogwarts

Hogwarts is Under New Management

Stepping on a Landmine

I recently mentioned on Discord that I was going to the 20th Anniversary Theatrical Re Release of the Harry Potter films. The response was swift, and overwhelmingly negative.

You see for pandemic related reasons, I tend to frequent Discord Servers with a much younger than me. Not kids, but 18-25 year old, or thereabouts. Suffice to say 34 qualifies you for an `Ancient One` role which I wear with pride.

Also for self discovery reasons I tend to hang out in queer spaces online.

As you might expect in this demographic Harry Potter has a much different image than it does among those who grew up with it. For those of you that have been living under a rock, and there are a few who still don’t know.

Harry Potter’s author has in recent years used her platform to spread anti Transgender propaganda. And in many minds the whole series of books has become tainted by association. This is not a post about that.

Plenty of metaphorical ink has been spilled on that subject by much more talented authors talented authors than I.

A hero falls

Among younger queer people The Wizarding World is far from the place of happy childhood memories, far from a place of self discovery and compassion. Harry Potter is just another space in which rejection lurks behind every corner and open hostility is tolerated and encouraged.

Many of my friends were shocked and confused as to why I still supported such a vile women, many assumed I didn’t know about JKR’s recent activities, and one even tried to break the news to me gently, and as I said were quite shocked when I still saw the movie. Which brings me finally to the point of this post.

False Idols

Part of growing up is realizing that most of your heros will have feet of clay. This is because our capitalist society idolizes success, all the while totally disregarding the fact that success in the market is mostly a function of luck.

As a result most of our so called heros suffer from a total dearth of Heroic Virtue. Yet for all the modern hero’s faults, it pays to keep in mind that a hero’s function is not to be admired for their supposed virtues. Rather to inspire virtues in you. Heros fall, Triumphs and Values endure, this is as it should be.

What Harry Potter Means to Me

If I were to cut Harry Potter out of my life completely, many of my accomplishments would be irrevocably tainted. I was a disabled kid with a reading disability, who was told that audiobooks didn’t count as `reading` who was given slop years behind his actual intelligence level in an effort to `teach me to read`, when the problem was not knowledge but rather the pain involved with reading.

No one believed me about either issue until i successfully read the third Harry Potter, with my eyes. Before that I had given up all hope of ever reading, and more importantly getting the adults around me to believe me. That struggle taught me I was capable and more importantly showed the so called experts a thing or two. We had no fights about audiobooks after that.

Equally I would have let the memory of surviving my first depressive episode be tainted. I was only able to live through that because I wanted to see the end of a FanFiction. And Every single time I’d think of suicide. It would be like no, go read Potter. I must’ve read the books, like ten times over three months, and Oh god I can’t even tell you how many fanfics i read over those months.

I could mention more incidents throughout my life in which these books proved pivotal, but you dear reader get the point. Harry Potter is important to me on a deep, almost spiritual level in ways that few other books are. Only The Dragonriders of Pern series comes close to matching it, and only the Bible exceeds it in importance. What I came to realize was.

The Book Belongs to The Reader

What makes these books special is not the author. I’ll bet J.K Rowling doesn’t care about a half blind, disabled, bisexual man from the middle of nowhere Upstate New York. But this is the magic of literature, once the author has done her bit she no longer matters. The triumphs I made while reading these texts belong to me, not JKR.

Would they have been possible without these works? Do I therefore owe the author something?

Examining Capitalist Heroism Narratives

Well let’s examine that shall we. The Traditional Capitalist driven Hero’s Narrative, around Rowling goes something like this. Before Harry Potter, children literature was a bunch of hacky moralizing tripe, and Megabooks schlock, with no redeeming qualities at all. Only the genius Joanne saw this as a problem and single handedly revived children’s fantasy, with the help of her editors at Bloomsburry. The only ones to recognize her genius.

I’ll admit to a bit of ironic intensification for effect, but look at any pre transphobia biography of the women in question and you will see this kind of gushing portrait.

Any quick look at the facts of the matter quickly reveals how wrong our Capitalist Hero’s Narrative actually is. Before we get to just how wrong it is, I have to make a quick digression into how old school publishing works. When an author creates a novel or whatever they own it, from the moment they hit save on the word processor, or it comes out the manual typewriter or whatever.

Publishing Industry Digression

As soon as it’s out of your head and in something you own it for basically ever.

Publishers have to buy what are called publication rights from the author. They do this by pay a certain percentage of sales to the author for basically ever this is called royalties. The author will want to get paid up front for their hard work, right away however.

So there is a system known as advancing. Where the Publishing company pays the author an up front sum, and the author doesn’t get her royalty payments, until the total sales of the book are greater than the advance amount. So in effect the advance is the publishing company betting on how successful the book will be in the market, So we must ask ourselves how much did Bloomsburry initially bet on Genius Joanne.

1,500 British Pounds Sterling or about 3,000 in 2022 dollars plus or minus 100 dollars either way. Seems a bit low doesn’t it. Heck the commonly quoted figures (see Biography.com’s entry on JK Rowling) lists the Scottish Arts Council, a branch of the Scottish Government as contributing an 8,000 pound grant.

Art is Socialist

Yes you read that right folks. Socialism made more of an initial investment in JKR than did the free market.

Furthermore I looked into so called `copycats` of Harry Potter released around the time of the first three Potter books, the good ones that I remember, by Authors like Garth Nix, Avi, Philip Pullmen, and T.A. Baron. Among others. Of the dozen or so I sampled at least four were released contemporaneously with or before Harry Potter and the Sorcerer’s Stone. Which would render them not copycats but parallel creations.

I can almost hear the supporters of Capitalist Heroism yelling, that she won in the market doesn’t that make her special. Well no, it just makes her one of hundreds of artists around the world who saw a need for high quality fantasy literature for children in the early to mid 90s, and proceeded to make an attempt at filling it. The Market didn’t believe in her all that much.

What made Rowling, what gave her the power she now has. Are the fans who believed in her initially.

Art is an inherently Socialist Endeavor, the artist is nothing without their fans, and the fans wouldn’t be in community together without the artist. It has always been thus, ever since the first storyteller made something up to entertain his buddies around the campfire. The capitalist system was somewhat crudely grafted on some 200 years ago. Unfortunately that Capitalist System, awards and entrenches the power of authors and artists. So that it’s incredibly hard to for the people that gave it to take it away again.

I do not support Transphobia in any way, shape, or form. Transgender people have a neurological difference, just as valid as any form of Palsy or Autism among many others. Facts don’t care about your feelings m’kay.

Storm the Gates

Using a full on Cancel on JKR in this instance, would give her even more power. Every fan defines what the art means to them. For me Harry Potter will always be Triumph over the odds and Hope amidst the darkness. Do I wish we lived in the time line where T.A. Baron had caught fire instead, yes I do. But we don’t live in that world. To let JKR’s bigotry taint that gives her the power to erase my achievements. This is something I will not do.

Rather I will continue to enjoy the Harry Potter books as a radical act of defiance. I will recommend Queer and Trans positive fanfiction like Stephen Ratliff’s Ginger Snaps, or Kaleidoscopic Grangers. Buy my cosplay props from independent Etsy sellers from now on, and I probably won’t go to the 25th Anniversary Theatrical Re-Release. I would encourage everyone to do the same. Sorry Joanne you’re not a genius, and you are far from a hero. We can’t take your platform away. But I’m keeping Hogwarts. Morte de Author! Viva Revolution!

Categories
Uncategorized

Terminal Strange Love


Or, How I learned to stop worrying, and learned to love the kludge

Introduction: An Unlikely Wordsmith

The objective reality of the situation seems to disprove my self assessment. And in spite of my lack of self confidence in this field, I do enjoy slinging words about.

Me

Everyone tells me, that I am a good writer. Well nearly everyone. My sixth grade English teacher was an absolute witch bent on destroying the self esteem of impressionable 12 year olds, and doesn’t count. And there was that low grade on the GED, but we can put that down to a bad day. Point is I have a 90 average on all English/Creative Writing assignments in my college years. More importantly I have been published in print and online dozens of times over the years, beginning when I was 9 years old.

Although I consider myself a two bit hack with no voice, and a style which would make your average third grade teacher scream in agony. The objective reality of the situation seems to disprove my self assessment. And in spite of my lack of self confidence in this field, I do enjoy slinging words about.

Striving

However there is a problem. My neurodivergency and disability make writing one of the hardest tasks I regularly undertake. It is both physically and mentally exhausting to attempt to write even a simple three page academic essay. Mentally because I have ADHD, and thus a lack of working memory, and high distractibility. And the Cerebral Palsy makes both eye muscle strain and hand, and finger pain an issue.

To be clear this applies to all computer interactions to some degree or other. These problems take on there most severe forms when I attempt to write. Also games like Minecraft are nearly impossible for me to enjoy. But that is a different blog post entirely.

This has been a persistent and annoying problem throughout my life. And various Teachers/Occupational Therapists/Technologists etc, have tried dozens of solutions through the years. From forcing me to do as much writing as possible in hopes that the problem would go away eventually.

To various software solutions such as Don Johnson’s CoWriter to Dragon Naturally Speaking, and many others. As you might expect the exposure method was almost torture, and the software solutions have had mixed effect.

Here’s a hint though in my last two years of university I had to get a grant to pay an actual human being to type my papers which I either recorded to MP3, or dictated live. This problem has limited my writing ambitions quite severely. Needless to say there are no grants for Game of Thrones/Harry Potter FanFiction authors, and writing that kind of thing with Dragon is nearly impossible. So I have continued the search for a usable writing tool set and work flow, which works for me. After many years and hundreds of attempts I think I may have found my best solution yet.

In the remainder of this post I will outline the Engineering steps I took to arrive at this set up. To aide other disabled people in their pursuit of appropriate assistive technology.

Learning From Failure

The first step in any engineering task, weather it be building a technological system or a bridge, is to identify why what you currently have isn’t working. In some cases this may seem obvious. You need a new bridge because the old one fell down, for example. But the important question is why did your old bridge fall down? Or in our case Why have nearly all of the attempts to solve my writing issue eventually failed? My answer to this question is two fold. First the attempts by so called `Professional Experts` to solve this problem, were too narrow in scope. For example the Teachers who assigned the exposure exercise were seeing my distractability as a function of immaturity, and weren’t necessarily taking neurological, or physical factors into account.

Likewise the PT/OT people were only thinking of muscle weakness. They weren’t looking at how black text on a white screen, might not be as high contrast as needed to make eye strain less likely over time. I’m not sure if a vision expert ever commented on this issue. But the point is each expert was limited to seeing only the aspect of the problem which happened to coincide with their own field of expertise.

In a lot of ways the worst offenders here were the `Technology People` were even worse. With two exceptions they never worked with me directly, and only applied pre defined solutions to surface level problems.

To be clear I’m not trying to denigrate any of the people who tried their best throughout the years. I am simply pointing out that none of them had as full a view of the problem as my 24 years of experience writing has afforded me.

Defining the Problem

This is an important lesson for all disabled persons. You are the expert on You. Don’t be afraid to assert this. So what is this writing problem I speak of exactly. Eventually I broke it down into three parts.

A. Hand and eye pain
B. Distractability.
C. Speed of production.

These three aspects are mutually self reinforcing. For example it’s hard to stay focused on the piece at hand when your hands are throbbing. And this slows things down which leads to more opportunity for distraction, said distraction slows things down yet again and pretty soon your only three words in to 5000 word term paper, and you’re five hours from deadline.

Typical solutions

The typical solution has focused on reducing or eliminating, my pain through solutions like word prediction and voice recognition.

As evidenced by this post that approach has had a profoundly mixed record of success. However in my latest stab at the problem I decided to attack the Distractability angle first.

For the simple reason that I have a lot of stuff to write in the next six months and I reason that if I can keep the words I wish to write in my head and get at least a standard page,(about 250-300 words) done on one project per day. Then by April I will several thousand more words than I do currently and will have met most if not all of the deadlines both self imposed, and otherwise. And in the process of finding a solution to the ADHD issues.

I think i may have found a system that addresses all three legs of the triangle at once. In fact i would go so far as to call it almost perfect. At least in my testing so far. However in order to get this far I had to define precisely what a viable solution would look like. In software engineering terms we call the definition of success Acceptance Criteria.

The key to success is basically defining what success looks like before you start.

My Acceptance Criteria

For me a successful system has several properties. We begin by defining what I call the environmental characteristics of the system. What hardware or software will this run on? How will it interact with the cloud? So on and so forth First and foremost it must be able to run on freely available, open source UNIX operating systems. I have used Linux and FreeBSD almost exclusively for the past 20 years of my life. I won’t go into the economic and ethical reasons for this. As you my primary audience probably knows all of these chapter and verse. Second and repeatedly any solution must be able to run on low-end hardware.

My newest computer was built in the year 2014, one would think this wouldn’t be a problem for word processing even heavyweight stuff. However outsiders are often surprised at how resource intensive assistive technology systems can be.

Thirdly any successful system should be able to function with minimal to zero cloud computing infrastructure. This is a critical point almost as critical as the first two.

A short rant about modern software

Modern voice recognition software that transmits all spoken audio from your computer to the cloud service which sends back the text. This has several advantages for the average consumer. It eliminates were severely curtails the often laborious process of training the voice recognizer on an individual voice, and consequently dramatically increases both speed and accuracy of recognition. For a serious writer who is disabled however this seeming advantage turns into a disadvantage.

Because the voice recognizer isn’t trained on an individual voice the customization of local voice-recognition is lost. I said before writing fan fiction of a Game of Thrones or Harry Potter is nearly impossible with commercial voice recognition software. In recent versions 12 and above this is true.

But older versions will work just fine provided you’re willing to put in the training time.

But I digress point is all system critical components such as voice recognition spell check, and grammar and stylistic suggestions must be able to run disconnected from the Internet.

Non-critical features like file synchronization may use the cloud. However I decided that if this occurred I should own the infrastructure or leave town infrastructure portability for these features.

The Open Source Puzzle

Notice what I didn’t place in the environmental criteria section. I have made no mention of the system being composed of open-source software. While this would be my preference,

I also know enough about the open source accessibility ecosystem to realize that placing this requirement on myself would be self sabotaging. Projects that benefit people with less common disabilities rarely get the developer time they deserve. In addition of this there are often patents concern with open-source implementation of the common accessibility systems.

So I am fine with running things in Virtual Machines or under an emulation layer such as Wine. So long as the system requirements are low enough to make that efficient. In practice this means obtaining software from the Internet Archive, off of eBay or from other sources. Now that we have define our environmental criteria and component selection model we can move on to what accessibility properties the system must have.

Accessibility Features

Under accessibility properties I first want a system that minimizes distraction. This is a broad and nebulous statement so let’s see if we can narrow it down. To me a distraction if anything that triggers my ADHD, to the extent that I forget what I’m writing. This can be a variety of different things from the squiggly lines that modern word processors place under words and phrases to inform you about spelling and grammar errors, animations and other such modern user interface glop. Generally anything that draws my eyes away from the words I am writing is a bad thing.

Also among the key features of a successful writing system is the ability to use a high contrast or yellow on blue color scheme to minimize eyestrain.

But perhaps what I consider to be the most critical feature of this system is the ability to display a document on screen in a magnified view without affecting the fonts and styles of the finished document.

If you’ve ever had to deal with a teacher who would only give a their essay lengths as a page count and then accuse you of cheating when you wrote it in Comic Sans 14. Or worse yet had to hand in a formal report to your boss with the aforesaid infamous font set you will know how critical a feature this is.

There are a few other design criteria which I used when pulling together this new system of mine. But I will not bore the reader with all of the major design decisions I made in the course of the project.

I hope that this section has given you a flavor of what designing a system is like.

The key to success is basically defining what success looks like before you start.

Implementation Details

Now that we have defined what success looks like I can tell you all about the system I came up with. Which as I have the best iteration of the writing system to date. That is if you believe my productivity metrics for this week. 5000 words written in four days. This easily beats the previous iteration of my writing system which can only allow me to produce 1500-2000 words in that same time span.

A 250% increase in productivity seems pretty good to me.

Solutions like PanDoc and markdown, do not work for me on larger projects. Anything over 500 words and I spend more time fiddling with the markdown than actually writing. I have also found spell check and grammar correction to be a pain when writing and markdown or similar solutions.

There is one feature I like about writing and markdown however. You can write in a terminal-based editor such as vim or nano. Which pretty much gives you the freedom to edit the document using any monospace font and size that you wish to use. And no one reading the finished product will know that you were writing in Comic Sans Code with ligatures. Which as stated above, is a key success criteria. So we have a feature that we know we like and also a shortcoming that is possibly a showstopper.

Now we must ask the question are there similar technologies with this feature available that lack the undesired behavior.

Retro Futurism

This is where terminal word processors came to mind. For those unfamiliar with computer history, terminal word processors existed in an era from about 1979 to 1994 when the computers mostly lacked the graphical capabilities that we take for granted today. In those days most of the graphical capabilities were located in the printer. Terminal word processors provided an easy way of controlling a printer’s graphical capabilities for the average user.

The idea was on the screen would not be exactly what would appear on the page but an approximation of it; which was designed to let you predict with some accuracy what the printer would do. Without necessarily forcing to edit the document in the way it would appear on the page. I knew about this long abandoned branch of the tech tree of course.

There are science fiction and fantasy authors, including no less an authority then George R.R. Martin who swear by WordStar, and all the best lawyers I know will praise him WordPerfect to the skies and back. However until recently these steps needed to get a terminal word processor working on a modern system were so insane and wonky, that I just didn’t bother.

Almost Perfect

And that was before one took into account the fact that I need voice-recognition sport on larger projects. Which implicitly means being able to interchange documents with a semi-modern platform.

Enter Tavis Ormandy who managed through a feat of digital archaeology to dig up the last WordPerfect for UNIX terminal release version 8.0.076 built for Red Hat version 6 released in 1998. He then proceeded to reverse engineer and patch the binaries so they would work on modern systems. As soon as I saw this come across my feed I knew I had to at least try rebuilding the writing system around this hidden gem. Two weeks later I had success.

WordPerfect configuration

Through a lot of trial and error I discovered that best way to use WordPerfect was through an xterm, with a monospace font and 18 points.

With the foreground color set to yellow and the background color set to Navy as shown in the images. This minimizes eye fatigue as much as is possible. Meaning I am more accurate when it comes to missing words and things like that Rather than directly print to a postscript file as Tavis shows in his example, but rather I use printer-driver-cups-pdf. With WordPerfect’s GhostScript driver to produce pdf files of documents.

The TL:DR version of which goes something like. The potential of technology for the disabled will only be realized when, we stop kow towing to an industrial complex which doesn’t know us, and is only interested in the money they can get out of us

The Last Piece

This still leaves one problem however. I need voice recognition projects longer than 1000 or so words, after the 1000 word mark I start having trouble holding large chunks of the piece in my head, and remembering where I am going with any given point. When you add motor planning keystrokes.

My little ADHD brain quickly becomes overwhelmed. But how does that work you might ask. Sure it’s easy to set up a low end XP VM, install Dragon 9 (the last good version in my opinion) and go to town. XP even has High Contrast built in. WordPerfect for UNIX however still saves it’s documents in the 30 year old, WordPerfect 5.2 format. The code for the Unix/Linux version was forked off of 5.2 and never had a rebase before it was abandoned.

Ordinarily this wouldn’t be a problem. Because LibreOffice is awesome. It can not only open but save in the 5.2 format. But as I mentioned for voice recognition we are using a Windows XP VM. Even if i could get LibreOffice to work on XP, it wouldn’t work with Dragon’s voice recognition because LO uses Java APIs to draw it’s windows, instead of the native Win32 controls. Which have special accessibility methods which Dragon, and other a11y software uses to do it’s thing.

Support for LibreOffice exists in a Dragon version 10 service update. But I don’t have 10. So this project was about to hit a brick wall. When I remembered that WordPerfect is still shipped to this day. Might there be a Windows XP version of it, and might it work with Dragon I wondered, and might it be able to save in 5.2 format? Turns out that Yes indeed was the answer to all these questions.

In fact i do not know how WordPerfect lost so much market share X3 is better than office 2003 in so many ways it’s not even funny.

The Final Product

So the final setup involves a 30 year old word processor, running on the latest Fedora, which is also running a VM of a 21 year old operating system , which is in turn running a 16 year old descendant of the 30 year old word processor, and a 14 year old proprietary voice recognition software. The whole setup is in turn replicated to all my machines via my NextCloud Server, And the documents exist on a virtual network drive inside VirtualBox.

To ensure the latest updates to all documents propagate across to my laptop automatically. And Everything is backed up securely.

Some might say this is hilariously over complicated, but I was willing to jump through a lot more hoops to get that 250% productivity boost. In fact you’re looking at the smoke test of this system right now.

The TL:DR version of which goes something like. The potential of technology for the disabled will only be realized when, we stop kow towing to an industrial complex which doesn’t know us, and is only interested in the money they can get out of us. Also don’t give up on your dreams, Hack The system!

Happy almost NaNoWriMo everyone. I

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

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.