Defaulting to the Cloud

Earlier this month I did a session for Reclaim Edtech’s Open Media Ecosystem series on the open source web radio software Azuracast. I also posted about Azuracast’s web hooks that sent notifications to both Twitter and Mastodon when a live broadcast is happening. It’s been an open source media software kinda month for us at Reclaim, so the bava abides.

On the way to documenting changes made to listen.ds106rad.io, I ending up thinking more broadly about how my approach to hosting personal sites has undergone a major shift. I no longer default to cPanel, rather I am pretty much cloud-first all the way!

Screenshot of ds106radio listen page

The listen.ds106rad.io site now hosted on a micro-Apache server on Reclaim Cloud

Until two weeks ago the domain listen.ds106rad.io was pointing to a catch-all cPanel account, and I setup a subdomain for listen.ds106rad.io which hosted the HTML file with the embedded player and an image or two. As I continue to push as many applications from cPanel into Reclaim Cloud as possible,* I wanted to see how easy it would be to spin up an Apache server environment hosting the webpage. It’s probably overkill, but at 1 cloudlet (128MB RAM and 400MHz CPU) it’s also not too crazy.†

Screenshot of Reclaim Cloud interface with with the listen2ds106radio apache server

The listen2ds106radio apache server in Reclaim Cloud

The process was as easy as installing an Apache container, adding the HTML file and images to /var/www/webroot/ROOT opening up port 80 and 443 in the environment firewall and finally getting an SSL certificate (no load balancer necessary). And it worked cleanly, I want to see if I can start playing with virtualhost configuration to figure out how Apache servers manage mapping domains, but this is pretty awesome. It is the early stages of a server to host all my archived HTML sites over the years (there are many now), and if I am trying to go cPanel-less this year so figuring this out will be crucial.

Once I move a site/app into Reclaim Cloud I often find it easier to run DNS through Cloudflare rather than cPanel. I do this not only because I love the Cloudflare interface, but also because it provides everything from proxied SSL certificates to DDoS protection to load balancing to object storage to a global CDN and that’s just a few of the features.‡ In fact, the migration to the Cloud over the last two years has helped me understand that  Cloudflare could stand-in for large swathes of what cPanel does currently.

Screenshot of Cloudflare's DNS interface

Cloudflare’s DNS interface is so beautiful!

In fact, take the case of ds106radio. The main application Azuracast is hosted in a Docker container on Reclaim Cloud; the DNS runs through Cloudflare; the transactional email through Mailgun, and we’re currently setting up S3 storage for hosting backups and  recordings of live broadcasts. The more I play in Reclaim Cloud, the more I begin to understand how the future of Reclaim Hosting could look. While long overdue for my slow brain, it’s still exciting to start finally seeing the outlines of the future.

Reclaim Cloud Add-ons

Reclaim Cloud Add-ons can be thought of as packages of functionality from cPanel on an app-by-app basis

The various pieces, i.e.server (Reclaim Cloud), DNS (Cloudflare), email (Mailgun), and storage (S3), are currently distributed across various services given each does their own bit best—what’s more rather than the kitchen sink approach of cPanel, you can have addons for specific features that you can choose to activate (and pay for) on any givenenvironment as needed. So also should have the ability to manage email, DNS, or storage settings as Addons for any given server environment in Reclaim Cloud, and then go one step further and integrate them to make it possible to select which tool you will use for DNS management, storage, transactional email, etc. (this could also be cPanel, but no longer assumed and defaulted to).

So, for example, you want to install Azuracast on Reclaim Cloud, and then manage the DNS through a Cloudflare addon. After that you can setup email through a Mailgun addon, and then choose whatever S3 provider you use to integrate storage—that’s another addon. All of these pieces are managed using Addons, and keeping them linked to a specific environment helps you remember what service you used for which server/application.

I think a hosting company at this moment—not unlike an edtech—needs to be thinking through how to integrate the best of breed cloud tools into a simple, elegant interface using APIs that will essentially stitch together a next-generation hosting interface. And for the next-gen apps this goes beyond just a one-click installer for the application, it also has to make sure DNS, email, and storage all work. And this is where the one-click Ghost installer Taylor Jadin built really helped me see it all in one place tied to the Reclaim Cloud environment. It is a blueprint for making these traditionally difficult-to-install next-gen Cloud apps far more accessible, and the addons at the environment level is where you can naturally integrate all the other pieces traditionally offloaded to cPanel, DNS, Email, version updates, and storage quotas to name just a few.

Screenshot of addons in Reclaim Cloud

Addons for a Ghost 1-click isntaller in Reclaim Cloud that helps you manage Mailgun, DOmain configuration, and an easy container update.

We have talked about this at length with the idea of Domains 2.0 and trying to abstract out the hosting process to try and understand what people need rather than defaulting to registering a domain and then immediately driving folks into cPanel. What if the interface  was more contextual (tied together by APIs from other services) that can communicate with your DNS records, have bucket keys for storing files, and see what mail records exist for a given domain. I understand that what I am saying here and what Taylor has done for Ghost is not the same thing, but for me it represents a path forward to explore what Domains 2.0 might look like if Reclaim Cloud were the default, not cPanel.

I think the other piece worth discussing at length, and I will save it for my next post, is how this shift to the cloud effects hosting costs. It has been my experience that this approach can get expensive quickly, but the other side of that is that process becomes that much better and what’s possible that much greater that it seems worth it, at least for me given my day job.

Image of a white board with the early blueproint for DOmains API

White board with the early blueprint for a container-driven Domains API

All of which reminds me of when Tim and I met Kin and Audrey at Emory University in 2014 or so. We were chatting at the hotel, and Kin recounted his early server admin days when he discovered AWS (and soon after understood the power of the API) and the hook was that it is scalable infrastructure that you would only pay for what you use. But as he noted, it was so flexible and so much was possible in terms of replication, increased uptime, and generally tinkering with how the next generation of server infrastructure works that it ended up costing more, but everyone was happy because there was no downtime, while more and more infrastructure could be automated and managed remotely. In 2014 I was just trying to wrap my head around something Kin had been working on for years, and as always he was graceful and generous with everything he knew. In fact, later that year Tim and I asked Kin to help us map out the long road towards a container-driven hosting service managed using APIs, and I think that vision is aging well, and with Reclaim Cloud as robust as ever I know one thing I’ll be thinking a lot about in 2023: defaulting to the Cloud!

_______________________________________

* It’s been two years since I moved the bava.blog and the main ds106.us sites to Reclaim Cloud, and the experience has been great in terms of performance and management.

† Especially once I figure out how to automate virtual hosts so I can map domains and host numerous flat HTML sites from this one server, or basically reproduce the tilde space approach for my archived sites.

‡In many ways Cloudflare represents various pieces of the hosting panel for the next-generation of web applications, and it would be smart to figure out how to integrate, rather than try and reproduce, their features through Reclaim Cloud. An integration between Virtuozzo and Cloudflare for Reclaim Cloud driven by a series of API calls that would allow folks to use it seamlessly with Reclaim Cloud would be a worthy goal. I have much more to say about Cloudflare in the coming posts and beyond, but suffice it to say in this long footnote that there will be a day as soon as next year where all my web properties will be hosted in Reclaim Cloud with the DNS managed in Cloudflare and the email running through Mailgun.

Posted in docker, ds106radio, reclaim, Reclaim Cloud | Tagged , , , , , , | 2 Comments

Here’s to 17 Years on the bava….

…and all the irreparable joy it has brought me!

We were chatting about blogging in the Reclaim Edtech meeting on Wednesday when it occurred to me that I missed bavatuesdays’ 17th orbit around the web. December 13th is this blog’s birthday. Seventeen gott damned years!  I’m not sure I’ve done t0o many other things as consistently and for as long as I’ve blogged. There has been a post at least once a month, every month since December 2005. By year’s end I’ll hit my 3700th blog post, and have over 16,000 comments.

There’s some serious mileage on this site, and I have said it before and I’ll say it again, I pretty much owe any pathetic semblance of a career I have mustered in the last 20 years to this space. That’s why I remain a true believer in the open web; I have experienced its power in my own work. Continually sowing ideas like seeds on this site, working tirelessly to help them germinate, and then sharing the fruit with those who would bite from the bava apple.

The bava.blog continues to be a happy home for sharing thoughts, championing the work of others, and documenting all the things I would otherwise forget. In many ways blogging is a quotidian affair: they’re often not big ideas and many are arguably forgettable, but the habit of reflecting regularly by writing has been transformative. And for me the blog has always represented a liberation from academic writing—a prison house of language I had been stuck in for almost a decade during grad school. If you think my writing is bad now, you should have read my grad school papers 🙂

I still struggle with some of the basics of writing, and I think part of what attracts me to it is that it’s always been so damn hard for me. I’ve learned that if I continue to try and cobble together a sentence that captures an experience or idea sooner or later one will hit. There are certainly more pricks than kicks, but it’s all worth it when I am able to bring forth one cogent thought that resonates with a couple of other people, it’s a deep reminder of how hard we have to psychically work to try and connect with one another—and I’m not interested in trading that for the tempting convenience of offloading the work. In many ways it’s all we have.

But there I go philosophizing  again. The simple point is this blog has been very, very good to me. The least I can do is write a post every twelve months to remind myself that the scribblings in this virtual notebook are a kind of small life’s work that is prosaic enough to be easily forgotten, but remarkable enough to potentially intersect—however briefly—with another life’s vector. There’s a magic in that banality that I don’t ever want to take for granted.

Why blog? Because there is faith in a seed. #4life

Posted in bavatuesdays, blogging | Tagged , , , | 7 Comments

Reclaim Open: Webs Past, Present, and Future

Image of Reclaim Open Art

Reclaim Open Art

I don’t think I have posted yet about Reclaim Open, so let me fix that now and forever! Reclaim Hosting‘s 4th bi-annual conference will take place next year on June 5th, 6th, and 7th in Fredericksburg, VA. As luck and planning would have it, the event coincides with our 10th anniversary as a company, so we decided to go back to where it all started: UMW! To make the deal that much sweeter, there will also be an anniversary/birthday bash at Reclaim Arcade to celebrate this momentous occasion.

Image of Reclaim Arcade

But if you are still not convinced to make the journey, my final plea will be to join us not only for a 3-day event (1 for the un-conference, two for the show, three for the celebration let’s go, go, go), but also be part of a micro-history in the making as we’ll be coordinating a DIY documentary to try and capture the past/present/future of the open web as lived and witnessed by many of the folks on the ground. For example, it would be a lot of fun to bring together a panel of folks from UMW’s Division of Teaching and Learning Technologies (DTLT) during the Web 2.0 years to help anchor that moment of the web and acknowledge its importance for the very existence of Reclaim Hosting, right?

Andy Rush may or may not be involved 🙂

I’m absolutely thrilled for this, not only is it akin to a homecoming, but the prospect of re-connecting with so many amazing people that we’ve collaborated with over the years is truly exciting. In the new year we will also begin announcing three brilliant keynotes speakers, each of whom will be focusing on one of the three temporal conditions of our event, namely past, present, and future of the open web. It’s going to be an event for the ages, even accounting for my bias. If you have attended any of our previous events you know there is a there there, and we will bring our A-game x10 because this represents the culmination of a decade of Reclaiming. And if the Fediverse is any indicator, we’re all just getting started on yet another reclaiming journey, if I may be so bold, sir. I hope to see you there, and you can read more about it and submit a session through our absolutely stunning conference website–the combination of a Lauren Hanks design with Bryan Mathers art is formidable!

Posted in reclaim, Reclaim Open | Tagged , , | 2 Comments

WordPress Backups in Reclaim Cloud

Screenshot of WordPress Back-up Addon Interface

WordPress Back-up Addon Interface

I recently wrote up a support guide that outlines how to backup a WordPress environment in Reclaim Cloud. We already take regular nightly backups of all environments that are  kept for 14 days, but those can only be restored upon request.

Screenshot of backup server setup dialogue box

Reclaim Cloud backup server setup dialogue box

With this approach you can manage backups based on your specific needs. Whether it’s hourly, weekly (or even a specific day of the week), monthly, etc., it’s all possible. Add to that on-demand backups if, for example, you need to test something in the moment and want a quick and easy method to restore if things go south. And there is no two-week limit as with the automatic backups, you control how long they stay around. This tool comes in really useful for folks who want to manage their own backups, and the additional insurance is never a bad thing.

Screenshot of Reclaim Cloud WordPress backup server options dialogue box

Reclaim Cloud WordPress backup server options

Having working backups has been one of the essential elements of keeping Reclaim Hosting running as smoothly as it does. And while not always the sexiest topic, I always feel better knowing they’re around. We can also use Jetbackup in Reclaim Cloud environments for an additional licensing and storage cost which also allows for on-demand backups, what’s more they would happen in a completely different data center to ensure even further redundancy. That would be a nice addition to the current feature in Reclaim Cloud, allowing folks to backup and restore from (and possibly to) a different region in the unlikely event the entire data center is offline. This does overlap a bit with some of the WordPress multiregion hosting we have been doing at Reclaim Hosting this year, and while we can setup region-by-region backup servers for a multi-region environments, they’re still tied to the region the instance lives it—to have these backup environments be region-agnostic across our cloud servers would be pretty badass.

Posted in reclaim, Reclaim Cloud, WordPress | Tagged , , , | Leave a comment

Azuracast Webhook for Mastodon

While I have been moving house to Mastodon over the past month, I knew I would be missing the ds106radio tweets announcing someone going live. That bot was created by UMW student Aaron Clemmer in Sping of 2011, and has been doing its thing for more than 10 years with 134,000 tweets since.

ds106radio twitter profile

ds106radio twitter profile

In 2020 when we moved ds106radio to Azuracast, Tim did some surgery on the bot to keep it working with the new application (we were previously using Airtime). The bot notifies Twitter whenever someone goes live or plays a new track is played, but the trick is it only needs to send notifications when someone is broadcasting live. When no one is live the station falls back to WFMU and none of that is sent as a notification—if it did it would be a very loud account. Yet another functional relic from the most awesome course ever!

To be clear about the details of Tim’s intervention mentioned above, the web hooks available in Azuracast integrate with Twitter and post whenever a new song is played or a new DJ goes live. The issue for us with that is it posts everything, not only when a DJ goes live on ds106radio, but also all songs and DJs when the stream defaults back to WFMU. As mentioned before, that would be way too noisy. So Tim wrote a script that bypasses the Twitter web hook and call a PHP file that has code that only posts to Twitter when someone goes live and when a new song plays—everything else is muted. That works great for Twitter, but what about Mastodon?

Image of webhook interface in Azuracast

Webhook interface in Azuracast

I looked at Tim’s code, but not only was that for Twitter, but I am not a programmer so even if it did translate there’s no way I could do anything with it. At the same time I noticed the lead developer of Azuracast, Buster Neece, announced they built-in web hook support for Mastodon. I checked that new feature out by upgrading to the latest release candidate, but it was not full featured yet. So, given this is an open source app and Azuracast has a Discord community I reached out to see if this was in development and if the ds106radio community could help fund it, literally within days the web hook for Mastodon not only had all the features we needed (namely posting only when a DJ goes live and the metadata changes for a live stream). But even cooler, the Twitter web hook that existed for Azuracast also got these new features, making Tim’s script to no longer necessary. So good!

"Live only" option for both Mastodon and Twitter webhook in Azuracast

“Live only” option for both Mastodon and Twitter web hook in Azuracast

The Azuracast web interface makes it easy to integrate with Mastodon, and you can customize the messages that go out pretty seamlessly.

Web Hook for Mastodon

So now I integrate Azuracast with the Mastodon account for @ds106radio on the social.ds106.us server and I am once again in tune with the mighty ds106radio!

Posted in ds106radio, ds106social | Tagged , , , , , , , | 2 Comments

Open Media Ecosystem: Azuracast

Open Media Ecosystem blitz hosted by Reclaim Edtech kicked off last week. Amanda Schmidt and I got the series started by highlighting the Who, What, When, Where, Why, and Hows of the free and open source software Azuracast. You can watch this session that not only features how to install Azuracast on Reclaim Cloud, but also the impressive interface for radio broadcasting from the browser using WebDJ. The series is meant as an overview of several open source software projects dealing with media, and Azuracast is near and dear to my heart given it has been powering ds106radio since 2020.

What’s more, we just worked with the Azuracast’s creator and primary developer, Buster Neece, to further develop the webhook for Mastodon so that we could integrate ds106radio more cleanly with yet with another open source media ecosystem! More on the Mastodon in January, February, and March…but no spoilers just yet!

Posted in ds106radio, open source, reclaim, Reclaim Edtech | Tagged , , , , , | 2 Comments

Galaxian gets T-Molding, Wheels and a Good Clean-up

T-Molding on Galaxian

I have a couple of video games that are undergoing full cabinet restoration work, namely Moon Patrol and Venture, and they should be finished up before Christmas. But being the paragon of efficiency that I am,  I squeezed in a third quick refurbishing project of the Galaxian cabinet. This was not nearly extensive as the other two projects, and was born of my trying to quickly remove the pale blue T-molding in order to replace it with lime green, which is what I remember as the original trim finish.*

Image of Galaxian cabinet with glued in t-modling

Galaxian cabinet with glued in T-molding

When I started to remove the T-molding I learned it was glued in, and what was previosuly a presentable game quick became rough around the edges, literally.

Galaxian T-Molding

Now I understand why you never want to glue T-molding, taking it out was becoming next to impossible without chewing up the edges, which would only make things worse. So I stopped and brought in the professionals, namely Alberto!

Alberto took a look and told me he has a router tool with a saw-like blade he can adjust to cut out the old T-molding and replace it with the lime green beauty. I was more than happy to let him work his magic, and  he did!

And with that the new T-molding was installed:

Galaxian with New T-Molding

And while he had it in his workshop I asked him to put in on wheels (they’re proving to be absolutely clutch in the bavacade) that can be hidden behind an added base made of 2x4s:

Galaxian Project

He also did a nice job cleaning-up on the cabinet overall, in addition to repairing the side of the coin box:

Galaxian Coin box housing Clamps

This Galaxian was already in good shape, but now it’s just about mint. I have the original feet should someone want to remove the added base and replace the wheels in the future, but I plan on getting every game I have on wheels at some point, it just makes moving these things around that much easier.

Galaxian Project: Original Feet

Galaxian Project: original Feet

And after putting it all back together in a couple of hours, I now have it in the foyer alongside Dig Dug, Pac-man, and Donkey Kong Jr. Quite a classic line-up!

Galaxian Project: It's Working!

_______________________________________

*Although I imagine it may have had more than one color given the immense popularity of the game.

Posted in bavacade | Tagged , , , , | 1 Comment

Elevator Action Multikit Installation

Yesterday was a good day for the bavacade, I got the Elevator Action Multi-Kit from High Score Saves up and running. This kit not only saves up to 10 high scores, and enables free play that allows attract sounds, but also throws in 6 more games to boot, namely Jungle Hunt, Jungle King, Pirate Pete*, Time Tunnel, Space Seeker, and Seafighter Poseidon—the last four of which are new to me. I was excited to get this installed on one of two Elevator Action boards I have.

These Taito boards can be a bit confusing. To make matters worse, my boards were not identical to those in the installation guide. So, below are some images of the board set I was working with in the event it helps anyone else, and oddly my other board is identical, so I don’t think it is a one-off fluke. Anyway, to the boards….

The ROM daughter board is mounted on the game board.

Image of the Taito daughter ROM board for Elevator Action

Taito daughter ROM board for Elevator Action

Then there’s the game board which is where the above ROM board is mounted:

Image of the Taito game board for Elevator Action that has the Sound Z80 that needs to be replaced

Taito game board for Elevator Action that has the Sound z80 chip where the sound mod goes

The video board is mounted beneath the game board in the opposite direction, and you should not have to touch this board:

Image of Taito video board for Elevator Action

Taito video board for Elevator Action, you need to make no changes to this one

Then the CPU board, which is face-to-face with the video board, but separate by 1″ spacers:

Image of Taito main CPU board for Elevator Action

Image of Taito main CPU board for Elevator Action

Finally a ribbon-cable attached CPU board that connects to the main CPU board. The ribbon cable attaches where the z80 chip would normally be, and this would be where the main multikit daughter board would go if you had a normal board set, unlike me.

Image of Taito attachment CPU board for Elevator Action

Image of Taito attachment CPU board for Elevator Action, notice the main multi-game daughter board is attached

The CPU attachment board has a socketed z80 chip where the main multi-game daughter board goes. Also, the chip in the upper-left hand corner with the “TAITO SER. NO.” label is the MCU chip, and you do not need to remove that.

I took my boards apart, and followed the installation instructions available through the website. But once I realized my chip numbers and the chip locations were not always identical, I reached out to the proprietor at High Score Saves and he gave me all the advice I needed, so big shout out to their wonderful service!

Image of the Taito daughter ROM board for Elevator Action

Once the daughter ROM board is removed, no need to re-install

In short, the first board, the ROM daughter board, does not need to be replaced after the multikit is installed. Once you take it off, it can stay off. On the game board, you need to remove the z80 chip the instructions point to, as well as (in my case) two additional ROM chips, namely EA 9 and EA 10.† The guide notes there are three to remove, but my boards only had two.

Image of game board with isntructions for removong z80 chip and two rom chips

Modifications needed for game board

Once you remove the z80 chip from the game board you can place the sound multikit daughter board in this z80 chip being sure to match pin 1 when inserting. Here is a picture of the sound multikit chip installed, notice the z80 chip, once removed, is then placed in the available socket in the daughter board:

image of game board with sound card for multikit installed

Game board with sound card for multikit installed

On the main CPU board you need to remove all ROM chips save the two pictured below in the upper left-hand corner of the two rows of ROMs.‡

Elevator Action CPU Main board with instructions on which ROMs to remove

Removed 8 ROM chips from the main ROM board (instructions say to remove 9, but I only had 8)

Once you have the ROMs removed you need to remove the z80 chip on the CPU attachment board and install the main mulitkit daughter board. The MCU chip—located in the upper right-hand corner in image below—will not need to be removed as noted earlier:

CPU attachment board with z80 chip that needs to be placed in daughter board

CPU attachment board with z80 chip that needs to be removed from socket and placed in daughter board (matching pin 1)

After that re-assemble the board and everything should work. I got extra lucky because the board was not working after I first tried and failed to install the kit it the first time. I realized too late I only had one of two multikit boards needed—the main multikit board—having left the sound board back in Virginia. So I stopped the work and ordered a new sound board, but when I returned to install the kit for this board a second time it was not working. I decided to go ahead with the multikit anyway as a hail mary to see if it would save the extra board, and to my surprise and immense relief it worked. I now have two functioning boards, one with the original Elevator Action chips and the other modded to have 6 additional games and all the other bells and whistles. It was a big win for the bavacade. What’s more, I hope one or two people out there that have a weird set of Taito boards, like I did, find this post useful.

___________________________________

*Another re-release of Jungle Hunt with pirate theme swinging between ship masts and fighting sharks instead of alligators in the water.
†Below is an image of the game board that still has ROM chips EA 9 and EA 10 installed for reference:

Image of game board with two ROM chips installed that were then removed

Image of game board with two ROM chips installed that were then removed

‡ Below is a picture of the chips removed  (save the two in the upper-right row) from the main  CPU board for future reference:

Image of CPU main board as reference for chip placement

Reference for the chips I removed

Posted in bavacade, bavarcade, video games | Tagged , , , , , , , , , , , | Leave a comment

November’s Ghost Redux

Welcome to Running a Newsletter with Ghost!

As we hit the last day of November I wanted to quickly compile the Reclaim Edtech sessions we did this month focused on getting up and running with Ghost, an open source platform focused on simple, elegant publishing with newsletters support built-in. Below are links to posts about each of the three sessions we ran, with relevant resources and along with links to the relevant videos. Thanks to the power of asynchronous learning it is never to late to see a ghost!

Session 1: What is Ghost?

Session 2: Using Ghost & Writing Your Newsletter

https://reclaimed.tech/newsletters-with-ghost/ghost-3/

Posted in Ghost, reclaim, Reclaim Edtech | Tagged , , | Leave a comment

Reclaim.Rocks Mastodon

It was only a matter of time at the pace I’ve been going with setting up Mastodon instances that Reclaim Hosting would get its own snazzy server, and that day was Wednesday. I streamed the setup so that I would have an on-the-fly guide for getting everything setup from the VPS in Reclaim Cloud to DNS in Cloudflare to email in Mailgun to storage in Digital Ocean’s Spaces. The last bit was exciting for me because I realized in version 4.0.2 of Mastodon they’re building DO’s Spaces into the server setup, which is a million times easier to create than AWS’s S3.*

I had everything done in less than an hour, but then got hung-up on a confounding nginx config error that I fumbled around with for way too long between the 1 hour mark and 1:18:00. So if you just want to get to the punchline, go to 1:18 for the proper setup of nginx. Other than that, the process went pretty smoothly, and I do like that Digital Ocean’s Spaces is a viable option for folks now.

_____________________________________________

*What’s more, if you are using Digital Ocean’s one-click instance of Mastodon I imagine this is pretty convenient.

Posted in Mastodon, reclaim, Reclaim Edtech | Tagged , , , , | 1 Comment