Peertube’s Live Streaming Option

I have been working on a side project that will be using Peertube and as a result realized after installing the latest version that this awesome open source software now includes live streaming. I’ve been playing around a bit with live streaming apps like Owncast recently, so this was pretty exciting. I tried live streaming a VHS tape I was archiving, and was blown away by the minimal buffering. The stream was solid!

In fact, I tried another version of the same VHS archive with some audio filters on the incoming signal and got a solid archive for posterity:

A nice part of this setup is you can choose between streaming to a unique URL that archives the video at the same namespace for posterity or you can have a consistent URL (what they call permanent live) dedicated to streaming from a single URL for an ongoing event that you can stream to multiple times from different sources. So the fact it has the option between one and done archiving and permanent live stream boiled-in is quite nice.

Live Settings for Peertube’s live streaming option released with version 3.0

As of now there is no live chat as part of a stream in Peertube, which is a deal breaker for many who want a Youtube or Twitch alternative. But have no fear because this is open source software and someone is developing a livechat plugin for Peertube. I will be playing with that later this week, so I’ll definitely share what I learn. Below is a quick overview I recorded of Peertube’s live stream if you are interested in seeing more.

When I realized this functionality was available I knew I had to upgrade to the latest version of Peertube. I was apprehensive because I haven’t had much luck upgrading Docker containers, but luckily the upgrade instructions were clear and worked beautifully. One of the things I realized is that the latest version of Peertube is using Nginx for the  reverse-proxy as opposed to Traefik (which my install was using). This led to an issue opening up port 1935 for the stream, but luckily the great Chris Blankenship bailed me out after I asked for help in Reclaim’s community forums. So, I am running on Peertube 3.0 with traefik as the reverse-proxy and everything is working well, which is awesome!

Posted in, Reclaim Cloud, Streaming | Tagged , , , | 4 Comments

Phoenix Freeplay and Scramble High Score Save Kit

This week I mustered up the courage to try replacing chips on game boards and soldering sockets. This was fairly new territory for me, but I’ve been watching Tim work (as well as many Youtube videos) and taking notes, so it was time to take the leap. I started small and easy with simply replacing a couple of ROMs on my Phoenix PCB game board to add the freeplay functionality thanks to Jeff’s Romhack.

ROM 48 replacement

ROM 48 replacement on Phoenix PCB

I have to admit this was fairly easy, I just had to carefully remove two socketed ROMs numbered 45 and 48, and then be sure to replace them with the modified ROMs making sure the notch was aligned the right way.

Align notches of replacement chips to ensure they are all facing the same way

One of the things you figure out (which is useful info) is these chips are stronger than you think, and they can take a bit of push and pull. That said, the fear of breaking off a leg is real. I did have to pull chip 48 back out gain given one of the legs did not align, but other than that it was quite painless given there was no soldering required, just pull out the old chips and insert the new ones.

ROM 45 replacement on Phoenix PCB

ROM 45 replacement on Phoenix PCB

So with the Phoenix free play ROMs in, I was ready to return to the last bit for my Scramble restore, namely installing the high score save kit with free play I ordered this summer. This should have been simple like the Phoenix ROMs swap, but the snag with this one was the 40-pin Z80 processor on the Scramble board was soldered in and I couldn’t simply pop it out. I needed to desolder it, and then solder in a socket that the high score save kit could plug into. Trick was I needed to make sure the Z80 chip came out cleanly cause that was going to be seated in the mod chip set for the high score save kit.

My first desoldering and re-soldering job on a 40-pin Z80 socket. Not pretty, but it worked.

So I was a bit nervous, but I decided to bite the bullet yesterday and desolder the pins for the Z80 processor, which was a royal pain in the ass. It wouldn’t come out cleanly, and I was afraid to break it with too much force. I must have desoldered the pins five times. Eventually I got the chip out relatively clean and was able to solder in the socket:

Soldered 40-pin socket, you can see the signs of me trying to remove the z80 chip on the board 🙂

It felt pretty good to get this far, but now I had to seat the Z80 chip into the high score save kit, and then plug that into the socket:

Scramble High Score Save Kit Z80 chip plugged into mod kit

So the Z80 went in cleanly, and you can see on the other side of the high score save kit there is a 40 pin that sits in the socket I soldered:

Underside of high score save kit

With all that done, I was now ready to test the board. Moment of truth, and on the first go I got garbage on the monitor, and amongst the scrambled graphics I saw the term PLOOOP. I thought that might help with a search for a fix, but I got nothing. So I went back over the pins I soldered and turns out I missed one (I could tell because it was loose), so I re-soldered it and tried again. Not feeling all that optimistic I re-connected the PCB and BAM—the high score save kit was working!

Freeplay working in Scramble

High Scores saving in Scramble

This may have been the most rewarding arcade project yet, simply because I never thought it would work. If you would have told me I’d be desoldering and re-soldering 40-year old arcade circuit boards I would have laughed. But if you will it, it is no dream!

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

The Sisyphean Labor of Link Love

I woke up this morning to a Twitter exchange between Alan Levine and Ken Bauer about creating a plugin that points dead links on a blog to the Internet Archive’s Wayback Machine:

I do believe my career as a plugin developer is under-rated, never built a bad one 🙂 That said, I did dabble with the plugin Amber, as Tim reminded me, for archiving links both on my site as well as on the Internet Archive, but it was a lot of database overhead and was seemingly inconsistent on WordPress Multisite—so it fell by the wayside.

I’m sure Alan will blog the wonders of how he is augmenting the WordPress Broken Link Checker plugin to point folks at the Internet Archive and I, for one, would immediately install any fork he created. Alan blogged an early example of this plugin modification on his Secret Revolution blog, which in turn linked to this blog post on the bava that then sent me down a rabbit hole of link rot maintenance—a task that will never end until I die, but is oddly comforting in the meantime.

Turns out the article Brian Lamb and I published with the Open University of Catalonia in 2009, “The un-education of a technologist,” was no longer available resulting in a dead link. No problem, I thought, we created a site for the article with all the content at, but when I went there this morning it was throwing a cPanel error. Oh noes!

My Advancing Web Years: Issues with Trading my WPMS Mansion for a Florida Condo

I immediately knew what the issue was, I had started dismantling my WordPress Multisite instance ( several years ago to pull out bavatuesdays, my personal site, and a few others, but forgot this one. I still had the database and all the files, so I pulled it out of the multisite and stood it up again, and will probably site sucker it up into straight HTML for the most reliable long-term archive. And that, dear reader, is the Sisyphean labor of maintaining the integrity of your blog over the long haul. It’s work I deeply enjoy, but can understand it being overhead for many. So making it easier and better is important and I’m glad Alan is always mindful of the long history of the web we inhabit.

Digital Structures: Institutions Abandon / Individuals Preserve

The detour this morning also made me aware that one of my favorite ds106 videos from back in the day, “News on the March,” I’d linked to in that post from 2015 was now private. I had asked the student on several occasions to make it public again, and he always obliges but that can get annoying. So I finally uploaded my version to, and embedded that across my blog so it is available apart from Youtube, which makes me very happy.

While searching for that video I noticed that many videos I had linked to for ds106 were no longer working because Youtube had changed their link/iframe structure, so I had a ton of dead links I needed to update, so I then started work on that, and will soon do a database find and replace. Which reminded me how happy I am to have my own little Youtube clone through Peertube that allows me to store and archive all the videos I watch and create. It’s been a game-changer for me, and I quickly archived those ds106 videos on my Peertube instance cause you can never have enough copies.

In fact, as much as I love the Internet Archive, and I do, I like even better the idea we each have some kind of spider tool for the links on our site, like the Amber plugin mentioned earlier, so that there are copies and backups beyond the Internet Archive. Depending too much on one site may prove problematic in the long run, or just unevenly distributed in terms of what you did or didn’t want as part of your personal archive.

Posted in Archiving, digital storytelling, Instructional Technology | Tagged , , , , , , , | 4 Comments

Installing Owncast on Reclaim Cloud

I am starting to turn my streaming, recording setup to good use, like demonstrating how to get the open source, self-hosted Owncast up and running in Reclaim Cloud. Below is the text guide to accompany the video.

Once you login to Reclaim Cloud you will need to create a New Environment:

Image of Reclaim Cloud Dashboard

Reclaim Cloud Dashboard

Once you click Add New Environment, you will select the Docker tab, rename the environment to something more friendly, and then select the Docker image. You can also choose the data center region from this screen:

Image of Docker tab with various elements for building your owncast Docker image

Docker tab with various elements for building your Owncast Docker image

When you click on Select Image you will be brought to the following screen, and you should search owncast and select the official image which is gabekangas/owncast:

Image of screen where you would select the gabekangas/owncast Docker image

Select the gabekangas/owncast Docker image

Once you have selected the image you should see a blue check mark and can then click next.

Image of selecting the 1.18.0 version of the Nginx load balancer

Create Nginx load balancer

The next step is creating a Nginx load balancer for this environment. This will enable you to issue an SSL certificate for Owncast. Use the latest version of Nginx and be sure to turn on the Public IP option:

Image reminding folks to turn on the public IP option for the Nginx load balancer

Turn on the public IP option for the Nginx load balancer

At this point you can click the Create button and the environment will start spinning up:

Image of Owncast environment spinning up in Reclaim Cloud

Create your environment

Once the environment is created you can see the two containers you have within it. The Nginx Load Balancer, that has the environment’s public IP address, and the Owncast container:

Image of the two containers within the owncast environment

The two containers within the Owncast environment

Notice the public IP address, you will be needing to copy this in order to map a domain to the Load Balancer. I mapped to this IP address using an A record:

Image of Mapping a domain to the Load Balancer public IP

Mapping a domain to the Load Balancer public IP

After that we want to issue a let’s Encrypt certificate for that domain. You can do this by click on the Addons button next to the Nginx Load Balancer container:

Image of Add-ons button in Nginx container

Add-ons button in Nginx container

After that you will see several Add-ons for the Load Balancer, you want the Let’s Encrypt option:

Several addons for container

Now you can Install Let’s Encrypt specifying the domain you want to map on the container, for my example

Image of Let's Encrypt screen

Install Let’s Encrypt certificate using the addon domain you creating

After that, the SSL certificate should install. The final step in Reclaim Cloud is going to the Settings area of the environment and adding an Endpoint so that the Load Balancer can can communicate with with the RTMP port 1935 in the Owncast container which is where the livestream is served:

Once you are in settings choose Endpoints and Add a new Endpoint for the Owncast container, in this instance Node ID: 8347 (every container in Reclaim Cloud has a Node ID):

Then specify the name (RTMP_, the port (1935), and the Protocol (TCP) and click Add:

After that Reclaim Cloud will create the public port and URL for you to use for your streaming URL:

The public URL will look something like the following

And for that to work in Owncast it will need to add the https:// at the beginning and /live/ to the end, which will give you this:

Rather than the default Stream URL Owncast gives you, this will be the URL you add to applications like OBS, Streamyard, etc.

Image of Owncast up and running

A secure Owncast Installation is the endgame!

Finally, we should now be up and running with Owncast at, and the login for Owncast will be your domain /admin. For my example, should be the login and the default password for Owncast is always abc123. The password is also the stream key, so be sure to change that immediately. Finally, the default Stream URL will show up as but on Reclaim Cloud you will be using the Endpoint you created, which for my example is

Happy streaming!

Posted in Reclaim Cloud | Tagged , , | 1 Comment

Some Welcome Love for the LAMP Stack

I really enjoyed Ernie Smith’s article “I Love Lamp” over on his blog, big thanks to David LaCroix for the link. He provides a succinct and fascinating history into the rise of the killer stack that has reigned for over 20 years. There has been a lot of talk about the New Hack Stack, and I’ve been fascinated with those developments for the last decade and what they could mean for Reclaim Hosting. But at the end of the day, LAMP is still very much the workhorse behind the modern web. And if you’re like WTF is LAMP, it’s the suite of open source technologies Linux, Apache, MySQL, and PHP that were combined to build the web servers that still power much of the web.

The article helped fill in a few gaps of my understanding of the rise of this stack, in particular the fact that the creators of MySQL went to O’Reilly in order to popularize the idea that LAMP was actually a thing.

The terminology dates to around 2000 or 2001, with David Axmark and Monty Widenius, two of the cofounders of the relational database MySQL, credited for making the initial connection between the various parts into a combined service that could be sold to developers as an open-source framework. After the developers met with staffers at the publishing firm O’Reilly Media, the firm—which specializes in technical learning manuals that target programmers and IT departments—had embraced the term, evangelizing what it meant to the broader digital community.

It’s interesting to me how the rise of a technology is accompanied by a linguistic sense making through a term or acronym that stands in for a more complex idea—think MOOC or Docker more recently. The power of naming and metaphor plays an often under appreciated role in the adoption of technologies, and just a few years after popularizing LAMP O’Reilly would bring us Web 2.0 (much of which was built on the LAMP stack).  And say what you will about the term Web 2.0, it was a key term in many of us grok the cultural moment of the web during the mid 2000s. In fact, the following quote from the “I Love LAMP” article really hits home for 2004/2005 me:

For years, LAMP stacks had natural advantages for end users, as their ubiquity allowed for the rise of web hosts that could offer cheap processing and storage for PHP-based services, meaning you could have a working interactive website for maybe $5 a month or less, depending on the size of the app and its use case.

That was democratizing—and allowed bedroom experimenters and large corporations alike to try new things online, outside of a walled garden. For the average consumer, the types of tools that won out allowed them to create polished presences for their businesses or creative work with a relatively limited amount of fuss.

This emerging reality in the early 2000s was something Zach Davis at CUNY was tuned into and he got me started down the path of cPanel LAMP hosting in 2003 or 2004. A pastime that soon became a career opportunity when I saw the work UMW was doing under Gardner Campbell in 2005. It was remarkable! This was a university ed tech shop willing to venture outside the controlled spaces of the learning management system to allow “bedroom experimenters” like myself and the rest of the DTLT team to play. What’s more, it was eminently affordable; I think my first Bluehost account at UMW was something like $100 per year with a free domain. This was not a big investment in the technology per se, but rather a realigning of the value of people in communicating the cultural shift that was happening on the web at that moment. Faith in a seed, and a Reverend will bloom. Looking back, I think it was definitely a time and a place thing: being an educational technologist focusing on the power of an open source driven web in higher ed was simply the best job one could have in 2005. And UMW was ground zero for awesome in that regard.

But I digress, another thing that resonates in this article is the the longevity of this technology stack. I have been writing about a post-LAMP environment for Reclaim Hosting for at least 7 years,  and while the next-generation of applications are here, getting them up and running easily and affordably is another thing. Just recently I have been playing with Owncast, an open source streaming software, and I could spin it up in 3 seconds using a Docker container on Reclaim Cloud, but getting a reverse proxy for the SSL certificate led me down a rabbit hole. But in cPanel DNS, SSL, and one-click installers are integrated in such a way that the LAMP environment is seamless. Hosting companies like Digital Ocean are closer than anyone at providing a similar experience for the new generation of applications written in Ruby, Node,ja, Go, Java, etc., but the same level of ease and fluidity you find in a LAMP environment that keeps most folks out of the command line is not there yet.

This article was really encouraging to me because when you help someone get up and running with a LAMP environment you are really giving them access to many of the tools that not only shaped but still drive the modern web we inhabit. This was a welcome reminder that faith in a seed approach to the educational web is still as valuable as it was 16 years ago.

Posted in experimenting, Instructional Technology | Tagged , , , | 2 Comments

Robot Tour of Reclaim Arcade

This morning I streamed and recorded a tour of Reclaim Arcade via the robot. It’s always fun to do this kind of thing, and hopefully this video gives you some sense of the space.

Posted in Reclaim Arcade | Tagged , | Leave a comment

A Quick Tour of Owncast

I spent some of yesterday and this morning playing with an open source streaming software called Owncast. Mo Pezel told me about it last month, and when I saw Digital Ocean had a marketplace app I decided to try and run it on Reclaim Cloud. I installed the official Docker release of the Software and it worked brilliantly. it took all of 3 seconds, and the above video gives you a quick tour of the software, which is quite focused and elegant (the software, not the tour).

The issue I’m still working through is how to get the stream to load over https via reverse proxy given I cannot embed it in another page without that functionality. Turns out that is not proving easy. I documented my woes on the Reclaim Hosting community forums, and hopefully I get some help given I am already sold on this software.

A few highlights of Owncast:

  • You can integrate with external storage like S3, Spaces, or Minio
  • It’s self-hosted and you can hopefully control latency issues with resources
  • It works cleanly with OBS
  • It has built-in chat functionality*
  • It was easy to install on Reclaim Cloud, and if and when we can figure out the SSL issue, a one-click install may be possible
  • It could be an excellent candidate for cheap, pay as you use Reclaim Cloud hosting

A stream of one’s own!


*I had it turned off in the video without knowing as much, but that is a nice feature, even if you opt for Discord or something else.

Posted in Reclaim Cloud, Streaming | Tagged , | Leave a comment

A New Era for Reclaim Hosting

Maybe the post title seems dramatic, but the last month has seen a pretty major shift at Reclaim Hosting. It’s funny, because in terms of evolution I think Stanley Kubrick’s 2001: A Space Odyssey seems fairly accurate in this instance, one day you are jumping around picking the fleas out of each others’ fur, and the next day you are cracking skulls with discarded animal bones! Well … maybe that’s not the point. What I’m trying to say is that change can happen quite fast and seemingly out of nowhere in the shape of a tall, black monolith that gives you new super powers to blog more because your aren’t knee-deep in the day-to-day.*

Just a few months ago Tim was running Infrastructure and managing Support and I was working Sales and various outreach programs like the beautiful OERxDomains21 conference and our Virtual Roadshow workshop alongside Lauren. Things were quite busy, add to that Reclaim Arcade opening and it was getting unmanageable.

In fact, early this Summer I took over support to give Tim some headspace, and it felt a bit like we were losing ground in terms of being able to think beyond the immediate issues of running Reclaim. After 8 years of doing a little bit of everything—Sales, Support, and Infrastructure (while also being the owner)—you start thinking you might never get off the hamster wheel of work. So in late June, early July we committed to hiring more folks to free up some time and energy for Tim and I, which would allow us to finally realize a long-time goal of putting Lauren Hanks in charge of operations. The trick was making sure she has the staff needed to succeed. We re-doubled hiring efforts in Sales and Infrastructure and by late August had commitments from two awesome folks who actually come from Domains programs at two of the schools we work with. [That is both wild and awesome at once.] Goutam Vijay Narang has already started in the role of Junior Web Developer and later this month Pilot Irwin will be joining us as account manager in Sales. Once the dust settles a bit, we will be hiring a part-time Support agent, and with that our company will be 10 strong and Lauren will have a running start in her new role as Director of Operations, which she will undoubtedly thrive at.

Lauren has been at Reclaim Hosting for over 6 years now, and she is nothing short of amazing. Running the daily operations of Reclaim Hosting was just a matter of time, she has proven her awesome over and over again, and I really can’t say enough about how valuable she has been to the very core of Reclaim’s culture, balancing intense work with a ton of good will and fun, fun, fun in equal portions. With Lauren taking on the role of Director of Operations the various groups will each have leads. Chris Blankenship will be leading infrastructure, taking over the day-to-day from Tim who has been overseeing since the beginning. Meredith will continue in her role as Support lead with a more public role of interfacing with our Domains and managed hosting clients as we try and further tighten the way in which Sales, Support, and Infrastructure communicate and integrate. It’s pretty exciting for Tim and I not only because we will have some headspace to think more broadly about Reclaim, but also because we have a whole new group running the show. They bring new ideas, new energy, and an unbelievable amount of talent to Reclaim and it is time they had space and independence to fully realize all that and more.

On a deeply personal level it really does feel like the beginning of a new era at Reclaim Hosting, and I am happy to say I am still a part of it. It’s apparent we are stable enough to stick around for a while, and making sure the great people you work with feel they can grow into their roles and have a larger say in where they work and how it functions is crucial to the overall health of Reclaim. That is one of the things that is harder and harder to manage in large organizations, and being able to see this shift at Reclaim and watch those who helped build it from the ground up decide where it goes is crucial to our future success, and for that this is the most important evolution in our short history yet.

The things I want to focus on now that I will have some new found headspace is blogging more and experimenting in Reclaim Cloud (which means some homework around containers and Docker). I also enjoy the outreach and “marketing” part of Reclaim, so I will be at the workshops and conferences, maybe running a karaoke session or two? I also like having a hand in imagining the Reclaim aesthetic, which is really just talking to Bryan Mathers about what we should do next—so maybe they’ll let me stick around for some of that 🙂

But more than anything I have the urge to teach again, which is a welcome surprise. After imagining a syllabus for a Digital Studies course on the fly that never materialized, and working with Paul Bond producing the Joy of ds106, I can officially say I am ready to get back in the classroom in some form or fashion. So if you know anyone interested in a visiting virtual professor who would treat the course as a digital production studio let me know because I want back in that game!


*Now here is where someone is going to explain to me why this is a bad analogy because I am misreading the film, but to that I must simply say get your own blog and tell it to the wind, dammit!

Posted in reclaim | Tagged , | 1 Comment

Blog Islands in the Stream

I’m not gonna lie, I have been spending the greater part of the last few days honing my karaoke game. Turns out I can spend endless hours on the web broadcasting to a radio/tv empire with no listeners or viewers and feel pretty damn good about myself all the while. Who knew?

But all for God and ds106!  -or is that the other way around? Regardless, this was not entirely me screaming into the void, there was a reason. Chahira and I got back in the Karaoke groove to put on a little event for the Summer Campus group she was helping to run at the University of Göttingen, and it was really a blast.

And it got me thinking we joke a lot about nobody listening on ds106radio, nobody watching on the TV, nobody reading the blogs, etc. But there is a subtle power in that idea, it removes some of the obstacles of entry, it ensures the community is fairly personable, and it keeps the relationships at a human scale. I think a lot of folks that play around with the radio are there because it is about the relationships you build as a result of sharing your story and all the music, images, comedy, sadness, and joy that comes with it. In fact, these karaoke sessions are a particular expression of that personal experience, and while I joke that I have done no work but practice for karaoke, understood another way the karaoke is the work. Sharing around these songs and the experience of opening up, as Rajiv Jhangiani said at OERxDomains21 in his utterly brilliant keynote, is crucial to creating a shared experience that forges a sense of connection.

I am always prepared for there to be just a few people at any event I’m part of, and in that regard I have come to refuse the idea that somehow less is a failure. Scale is the white whale we all seem to be chasing when it comes to online interaction, some abstract valuation (like capital) of followers and friends as a sign of worth that reproduces all the worst elements of the systems many of us thought we were trying to escape with this new media. I find it fitting that 10 people read this blog, and about right that 5 people might want to Karaoke on a Wednesday night. And these five people just happened to span the globe from Germany to Columbia to England to Canada, and maybe beyond even that. And if 3 people on any random Thursday morning happen to listen to me on the radio I consider myself rich as kings.

The chasing of influencer status within a network may be the death knell of generative relationships that provide a sense of meaning and purpose to our short and fragile existence. I don’t think the web is anathema to that reality, but I do think the sense that scale is the measure of success does. I’m not overstating things when I say ds106radio (and increasingly the TV) are proof that the web does not need to always scale to be valuable: seems we have forgotten the power of small spaces to commune and create a sense of purpose outside the maddening rush towards networked thought leader status.

I kind of like the idea of the web returning to islands in the stream apart from our corporate overlords that everywhere dictate how we interact with the culture they keep re-selling us. I want a space within the web but outside the virtual malls the social media landscape has become. I keep returning to the idea of more green spaces on the web and, at least for me, ds106 fits that bill quite nicely. No one really polices that space*, and that is why I love it. What’s more, getting back into the flow of student work from Paul Bond’s Joy of ds106 has reminded me of the deep creative impulse that working within a small, focused community makes possible—and the fact that comes in the form of blog posts in a feed reminds me that there were other streams, blog islands in the stream, that offered an alternative to the data meat market that is social media, and all the irreparable harm it causes us to dream at the scale of the corporation selling us our lunch.


*Although there is a #protocol

Posted in blogging, digital storytelling | Tagged , , , , | 2 Comments

The Joy of ds106: Week 3

Paul and I continue to churn out the cheesy Joy of ds106 weekly videos, and I have to say they’re a blast. No only do they take very little time and exude an air of sub-par quality, but they’re also fun as hell to record. Today was the first time we did a second take because I botched the first one so bad, and I think the whole process takes 7-8 minutes with zero editing. Once we’re done I upload it to for Paul to download and do what it is he does.

We are starting to include more media and I still have to figure out a fun intro that is almost like a 1970s/1980s sitcom opening, think Three’s Company:

Anyway, my avocation as an ornery TV producer is becoming a reality! Who knows, I may even be the over worked manager of a public access, web-based TV station one of these days, a bava can dream!

Posted in digital storytelling | Tagged , | Leave a comment