Installing BookStack on Reclaim Cloud

It’s officially Container Month at Reclaim Edtech, so I wanted to get in the spirit and record a quick howto stream for installing BookStack on Reclaim Cloud. But first, what the hell is BookStack?

Screenshot of Bookstack homepage

BookStack is a lightweight, open source PHP-driven wiki application

BookStack is a lightweight, open source wiki software in the vein of Dokuwiki. And while it’s the most popular open source wiki software on Github at the moment, I hadn’t heard about until two days ago when we got a ticket from Coventry University reporting that it won’t run in their Domain of One’s Own environment. After a bit of digging we realized it’s using the Laravel PHP framework which was not playing nice with cPanel, so I decided to see if we can get it up and running on Reclaim Cloud, and turns out once Taylor reminded me how to clone the Github repository I was off to the races.

It’s really pretty easy, after you have your Docker Engine environment installed you access ssh and clone the Github repository of choice, I am using Solidnerd’s Docker container:
git clone

After that move into the docker-bookstack directory:
cd docker-bookstack

Then you want to edit the docker-compose.yml file and replace the URL with the URL of your instance and change port 8080:8080 to 80:8080. Save that file and then run the following command:
docker-compose up -d

Then you can go to your instance at the defined URL and login using the default credentials and password. That’s it!

Posted in docker, reclaim, Reclaim Cloud, Reclaim Edtech | Tagged , , , | 1 Comment

bavaLibrary Progress: a Form of Awesome Production

As we wrap-up Reclaim Edtech’s Form of Awesome flex course today, I’m happy to report significant progress was made wrapping my head around the workings of Gravity Forms. Major kudos to Tom Woodward, who not only shared is wealth of knowledge in-person, but also regularly in Discord, in addition to blogging like a madman to provide custom solutions, insight, and all around helpfulness. That’s the dream!

Not gonna lie, a big part of pushing for instructional technology this year is keeping all of us at Reclaim Hosting responsible for pushing on our skills and resisting getting too comfortable with any one approach. If we’re gonna work alongside edtechs in the field then we have to remain in a state of constant learning and personal growth. It’s not easy, and we’ve felt the push the last couple of months for sure. That said, I firmly believe making professional development that interfaces with our community an integral part of our work will make us all better. This work is not done in a vacuum, it’s always best done as part of an open, engaged community as Lisa Lane articulated brilliantly recently in a couple of comments on the bava.

Anyway, enough rambling, time to document what I did for Form of Awesome over the last week.

Linking Multi-Word Tags in Advanced Post Creation

I decided to make film Director’s tags and film Genres categories in WordPress as discussed in my last post. As I started to get comfortable with Advanced Post Creation through some basic CSS, Alan Levine recommended I try linking tags and categories (directors and genres) to harness some of the built-in functionality of WordPress to filter by genre, directors, etc.

That’s looking good. But if you are making things like Genre into a tag, why not hyperlink your output so you can see all Horror, e.g. (not sure how html will come through in comments)

<a href=”/tag/{Film Genre:21}”>{Film Genre:21}</a>

I like this because it started to push me to think through why categories or tags (the age old dilemma in WordPress) as well as a good reminder that links make the web go ’round.  I did it and worked a treat for categories, but the link for Director’s names using tags was not adding a hyphen between first and last names so that tag link was resulting in an error. Bummer! Never fear, because the Bionic Teaching blog is near!

Adding Gravity Form Merge Field Modifiers

After some back and forth in Discord wherein I tried to explain what I was doing, Tom pointed me to a filter I can add to the theme’s functions.php file (it could also be a simple plugin) that will insert a hyphen between tags and prevent the link to director’s names from breaking. So, this led me to adding the following gform_merge_tag_filter to functions.php based on Tom’s ridiculously helpful and pointed blog post on the topic.

//Add filter
add_filter( 'gform_merge_tag_filter', function ( $value, $merge_tag, $modifier, $field, $raw_value, $format ) {
if ( $merge_tag != 'all_fields' && $modifier == 'urlmaker' ) {//I name it urlmaker but it could be whatever you want
$value = str_replace(" ", "-", $value);//typical php search and replace of space with dash
return $value;
}, 10, 6 );

And it now works brilliantly! In fact, this can also be done via javascript, but I have not fallen down that rabbit hole yet.

Playing with CSS

Next objective for last/this week was to play with CSS, which for me was a bit of a throwback given I haven’t messed with CSS for a long while. Add to that I’m using the WordPress Twenty Twenty-Two theme that incorporates the beta of WordPress’s Full Site Editor, which is brave new territory for me given I have never stopped using the Classic Editor. [What did I say earlier about resisting getting too comfortable? 🙂 ] As it turns out, Ed Beck has been digging in on the Full Site Editor and was generous enough to provide several of us in Reclaim Edtech’s Discord community a walk-through of the features and what’s possible. You can watch this well-paced and really informative overview here, thanks Ed!

This walk-through gave me a good sense of where WordPress was going with Full Site Editing, which seems a logical progression from blocks in Gutenberg. That said, it is very much in beta and for simplicities sake I added a series of very basic styles to the single post template to change the look and feel of the single post library entries.

<style>body{background-color: #cccccc;background-image: url(“”);background-repeat: repeat;} h1{background-color: #ffffff;} h4{background-color: #ffffff;} h6{background-color: #ffffff;} p{background-color: #ffffff;}</style>

And the results are a beautiful single post page highlighting the metadata around a single VHS tape like so:

Simple and ugly!  But it is my simple and ugly and offers a decent demonstration of what’s possible. And to ensure I don’t forget what I learned from Ed Beck’s Full Site Editing session, I used the visual editor to reorganize my homepage to list just the titles and featured image, and that is looking a lot cleaner!

I’ll play with tiling entries and making it more elegant, but for now I am pretty fired-up at the possibilities of fairly easy template editing via a visual editor, but wrangling width grouping in the demo of Full Site Editing was a bit scary.

Conditional Logic in Advanced Post Creation

During week 3 one of the things we touched on is using Gravity Forms short codes to embed conditional logic for viewing/hiding fields depending on whether or not they have content. Again, Tom pointed to a post he wrote on “Conditional Content Display in Gravity Forms” back in 2017 which saved me a lot of work and anguish.

Conditional Content Display in Gravity Forms Templates

This provided a perfect guide for my own playing with hiding fields that might have no content. For example, I have a subtitles field for media with a simple yes/no radio button. If the answer is no I want to hide the next field which lists language(s) subtitled.

So, in the image above when there are subtitles (radio button “Yes” checked on form) you can see the subtitle language field, which here is German.

When the radio button for subtitles is “No” the header for Subtitle Language(s) is hidden and it goes right on to Extras, which is pretty slick. Short coding #4life!

Image of Short code for hiding subtitle langauges if the Subtitles field is not marked Yes

Short code for hiding subtitle languages if the Subtitles field is not marked “Yes”

Things to do

We discussed webhooks and how Gravity Forms can use them to integrate with a wide variety of tools. I ran out of time to play with them in earnest, but webhooks are on my to do list, and hopefully after this afternoon’s session I’ll have more ideas to explore.

That gets me pretty close to caught-up, I realized a couple of things I need to work on, so getting them down here given this project has a solid start, and I think I can have an excellent prototype for video/media catalog quite soon. Things I need to add are Ratings for films, figure out how to add additional fields for something like director given one of the films I added, Heavy Metal Parking Lot, has two directors. So need to find a good way to make it easier to add multiple fields for any given metadata. For example, there is the year the film was made and often the year the home video, DVD, etc. was released. So I do need to figure out an elegant solution there as well. But, again, these are more taxonomical/metadata issues than technical ones at this point, which is a beautiful thing.

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

Form of an Awesome VHS Catalog Entry for The Shining

After yesterday’s Gravity Forms session led by Tom Woodward for Reclaim Edtech’s June Flex Course things started to click for me. I am starting to wrap my head around the basics of Gravity Forms. As mentioned in my last post on my Gravity Forms progress, I am building out a site for cataloging physical media. Yesterday’s session started with a Q&A which helped me understand some the necessary distinctions between standard fields in Gravity Forms versus advanced fields and post fields. Admittedly I’m slow, but it was not apparent to me which type of field to use when and why, and I’m glad I asked because I was missing a crucial piece of the puzzle. Namely that while the fields I’m using to collect data is part one of the process, part two is using the Advanced Post Creation add-on to translate and embed that data into a post. Simple enough, but that connection wasn’t happening until week 2 when it finally click for me. YEAH!

The remainder of this week’s session focused on how you can pull the data collected from the form into a post using Advanced Post Creation, which helped me understand when to translate data I collected into a post title vs. category vs. tag, etc. I spent much of today re-factoring my existing data collection approach, as well as adding more fields. I appreciated Alan offering advice in the comments of my last post, and I’m realizing that capturing the data in formats other than single text will be valuable for doing more with the data.

Screenshot of drop down field of Format of Movie media

Drop-down field of Format of Movie media

So, here’s where I am so far; I’ll try to be brief. After a few false-starts with creating categories using basic post fields to manage both the Film Genres and Media Type entries, I was reminded that any field I create in the form can be translated to a category or tag in the Advanced Post Creation tool, which loosened up my uptight thinking considerably. In fact, as a result I realized my Media Types were all wrong taxonomically. Rather than listing Book, VHS, DVD, Cassette, Magazine, Toy, etc. I need to go back a step and filter the media with more abstract types like Book, Movie, Magazine, Music, and Toy, and then start conditional logic for the movies based on that. So the next field is Media Format which included options for VHS, Betamax, DVD, Laserdisc, Selectavision, and Digital Copy (meaning those I have ripped, which may be a check box for the physical media moves?). Abstracting this made the conditional logic for all movie fields so much easier. I just say show these options for any Movies. Not sure I’m being clear here, so let’s take a look. I added the formats as a drop-down:

Screenshot of Drop-down of Format types for Movies

Drop-down field of Format types for Movies

And thanks to abstracting Media Type out from including formatting, as I did in my last post, I am able to have simply one entry for conditional logic, all Media that is Movies will see the Formats drop-down option. Golden!

Screenshot of Conditional Logic of Format field for movie media type

Conditional Logic of Format field for movie media type

That made adding additional fields like Language, Region, Aspect Ratio, Subtitles, Director, and Extras quite quick and easy:

Screenshot of the full form for entering data into the bavaLibrary for a movie

Full form for entering data into the bavaLibrary for a movie

I also included a Media Image field to upload a picture of the physical media, which is kind of cool. Once I had these fields I then turned to the Advanced Post Creator and pulled the fields into a WordPress post using the merge tool that allows you to select fields to pull in, like I can pull title and date into the Post Title, and then each of the other data points in, being sure to add some titles above each of the fields, kinda looking like this:

Screenshot of various elements of the Advanced Post Creator add-on for Gravity Forms

The Advanced Post Creator add-on for Gravity Forms

You’ll notice you can have multiple fields in the title, and then I am just separating the other data using OG HTML titles. Also, I figured out that taking the form fields and then translating them into tags and categories is pretty easy as well thanks to Advanced Post Creation. The final piece was getting my image to display, and I originally was running into issues cause it was only bringing in the URL, but like with the titles after wrapping the merge tag {Media Image:34} in an img src= HTML wrapper it worked cleanly, and my entry for an Italian VHS tape of The Shining looked something like this.

Screenshot of the bavLibraries first entry for the VHS tape of The Shining

The bavLibraries first entry for the VHS tape of The Shining

I am happy!

Posted in Reclaim Edtech | Tagged , , | 6 Comments

Thinking about Edtech

In fact, I’m always thinking about edtech in some fashion, but these days I’m thinking about the term itself. There are more than a few reasons for this, not least of which Reclaim Hosting was essentially born as an edtech company, even if trailing edge. And over the last 6-8 months we’ve finally gotten to a point in our history where we can double-down on those roots in order to build a group that can work more closely with edtechs at various institutions, organizations, and beyond.

But one of the things about the term edtech, much like open, is that its meaning is elusive. More recently when folks talk about edtech it’s often associated with venture capital buy-outs, start-ups, and the broader LMS market. So much of the discussion around edtech is akin to a market-driven spectator sport. While that financial logic around the field has accelerated over the last decade, it’s always been there to some degree. Blackboard was the evil empire when I entered the field in the early 2000s, and while they seem almost quaint now, their financial reports were not the focus of the work of edtech, as I understood that term. They were very much outside that term altogether, they weren’t edtech they were the LMS. Edtech, on the other hand, was a brave new distributed community of bloggers that were narrating and sharing their practices for others to benefit from freely. The work was a demonstration of faith and hope in not only education, but the power of the web to augment that process. I understand that the results were uneven at best, at the same time that sense of possibility and hope is how I still understand the term edtech because that is the garden from which I was cultivated. What’s more, I would hate to suggest to a whole new generation of edtechs coming up that possibility and hope were a thing of the past. That very logic is why I hate the children of the 60s so much, they suggested their revolution was all that ever mattered. I guess Generation X emo dies hard.

In recent years I’ve become less enamored of the term open, which was an adjective/positionality many edtechs embraced for the past 20 years. But the term has become muddied, and the constant handwringing about licensing was a warning sign for me that it was, ironically, more about control and branding than anything resembling the liberating rhetoric of a movement it often championed. To see the avant garde of that movement so willingly consign themselves to venture capital and the inevitable professional perdition that follows is a shame, but it’s also a choice. There are a lot of edtechs, in the true sense of that word for me, that have willingly resisted the lure of exchanging cachet for cash. Folks who continue to good work, edtechs that I deeply respect who reside far from the maddening crowd of the financials of firms that have little to no interest in the transformative power of augmenting teaching and learning—despite the claims they make. Edtech as an approach that is exploratory, experimental, and creative, not to mention generous and unbolted to the logic of licensing and litigation. That’s my edtech, and I like it.

Posted in edupunk, indieedtech, Instructional Technology | Tagged | 20 Comments

bavaradio on ds106radio, 6-15-2022

This was a fun show stitching together a bunch of songs via Youtube that I had been feeding off all morning. There’s a lot of Ty Segall, Courtney Barnett, and IDLES, so that is fair warning. I re-listened the morning after the show, something I rarely do, and it reminded me why I love ds106radio so much.

bavaradio on ds106radio 6-15-2022
Posted in on air | 4 Comments

Is Edtech Dead?

Funny, sometimes the end appears closer in the rearview mirror than it actually is, and that’s been a lesson for me the last couple days. I hate to see good folks leave a field I have invested deeply in for almost two decades, but I understand we all have our reasons. Whether burn-out or sell-out, the end is always right around the corner.

Am I working in a Reclaim bubble? I remain very much compelled by the work we do in this “dead” field, and I have not abandoned all hope just yet. In fact, I think it would be not only impossible, but irresponsible, for me to do so given all the amazing talent that has come up both through Reclaim directly, as well as through my association with all the creative and committed folks at the schools we work with. Seeing the next generation of edtechs come into their own has been the unexpected joy of playing the long-game.

And, to be clear, we aren’t all sell-outs.  Reclaim Hosting hasn’t sold out. We walk the walk. We still control our own destiny to the degree any small entity can, and we are not dismissing a field that represents one of the many borderlands of our shared digital future, cause I am not so sure I am seeing any alternatives offered to that one.

We all have choices to make, and I applaud those who act on them authentically. That said, I think about all the amazing people I have worked with in this field and I can honestly say that edtech’s not dead yet.

Posted in Instructional Technology | 5 Comments

Week 1: Form of an Awesome Personal Media Catalog

I spent the morning playing with Gravity Forms to figure out how to create a form to start cataloging my personal media collection. I can now understand why folks get addicted to creating forms for everything, once you can a handle on a few basics. Soon I’ll be thinking I can actually “program,” a scary place for me to be in the borderlands of nonprogramistan.

Image of nonprogramistan propaganda poster

The form I am playing with will provide a simple way for me to catalog my media collection, which consist of movies of various formats, books, comics, and some toys. Not sure toys are media, but I am going to “play” with that category a bit. I started the process my using a standard text field for both Title and year media was created. I then added a standard drop-down for media types, and added a whole bunch, with the idea that depending on what media your selected (book, VHS, CD, etc.) the fields you would see would change.

Drop-down of Media types that provide the basis of conditional logic choices for this form

This would allow me to immediately hit one of this week’s goals: conditional logic. What I did not understand right away was that conditional logic does not apply to the Media type as much as the fields I would create after, such as running time, region, film genre, etc. It is on those fields that I would need to specify the Conditional logic as any of the media formats that are film related.

Image of Gravity forms conditional logic selector

Setting conditional logic for Running time to be only related to film formats

So now when i go to the form and choose a format that is related to film, the conditional logic kicks in and I can see relevant fields like running time, film genre, and region:

Gravity forms media preview

Gravity Forms Preview

Whereas if the Media Type is book none of these fields will show:

If no film format is selected, all relevant film fields are hidden, that’s conditional logic!

So, I have a few goals accomplished here, figuring out conditional logic, ordering the form using simple drag and drop to have fields side-by-side, and finally using a CSS Class Name, gf_red_alert,  to change the color of the required asterisk for the entire form:

Image of Gravity forms screenshot for CSS Class Name

Changing CSS Class Name for asterisk to make it red

The next step would be to play with pagination for this form to break it up and make it manageable. But I didn’t have enough on the form yet and was still trying to think through a good way to make logical section, so that will be something I include as I keep building.

The last challenge for this week was to play with confirmations and notifications, but given this is a form I will only use (unless I truly do force my kids down the data entry path) I figured notifications might not be all that useful. Though I may be overlooking something here. But I was able to manage a silly confirmation message that will be a constant a reminder that my physical media addition is not healthy. Changing this is as easy as clicking on the Confirmations option for the selected form and changing the default text to something you like, and it can even have links, images, etc.

And with that I do feel like I have some of the basics for Gravity Forms under my belt and I’m ready for Week 2 of the Form of Awesome Flex Course to start fine-tuning the process. I am wondering if I can streamline any of the form fields that might be automatically filled based on fields already filled out. Not entirely sure given my form is sparse yet, but I like how this process starts to force you to think in a bit more structured way, which is not something I am used to.

Posted in Reclaim Edtech | Tagged , , , , , | 5 Comments

Peertube 4.2: Permanent Live Archiving, Web-based Video Editing, and more

Peertube 4.2.0 has been out for just over a week, and I finally got some time this morning to play around with it a bit. I have to say this is software I remain super excited about, and part of that is the upgrading to new versions is super simple. This versions has some really major features in my mind, and while video stats are nice (I have limited use for them given no one writes the Colonel anymore), it’s the web-based editing of videos and ability to automatically archive permanent live videos that have me super excited. I did a quick test this morning to test the permanent live to archive feature, and it worked! Here is the video I created as a permanent live stream that immediately archived a copy of that stream as a new video:

And it worked! What happened was that the permanent live URL for the stream automatically produced an archival copy with a unique URL. Going forward I can use rtmp:// (and the associated stream key) in OBS  without having to change it with every new stream. To save a copy of each stream previously you had to create a  “normal live” versus a “permanent/recurring live.” But with 4.2.0 you can archive the streams using either method, which allows you to have a consistent URL to point people at with for every new stream.

Image of normal vs recurring streams in Peertube

Normal vs recurring streams in Peertube

The other piece here that was new to me was the ability to choose the latency mode. Peertube is designed to work as a P2P video sharing platform, but you can turn that off for streaming if you want less latency, which I realized after my test above.

Image of latency options in Peertube

Latency streaming options in Peertube

The other feature you can enable is basic video editing in the browser, which can be useful for those false starts and bad endings 🙂 I have only played with this a bit, and it is pretty rudimentary, but so is what it needs to accomplish. You can also easily add an intro, outro, and watermark from the studio web interface.

Image of Peertube Studio

Peertube Studio

The other piece worth noting here is that the Video Studio feature was funded by the “Direction du numérique pour l’Éducation du Ministère de l’Éducation Nationale, de la Jeunesse et des Sports” (french Ministry of National Education). Specifically by the team in charge of the platform, “which offers remote working tools to French employees and teachers.” Open source software for the win. And I can’t help but think of the good work the folks in British Columbia are doing with OpenETC when reading about the French education initiative to provide educators and staff powerful, open source tools to make the transition to remote work that much smoother, richer and data-empowering.

Image of Video Stats in Peertube

Video Stats in Peertube

I failed to mention the video stats feature in my test video, but that is yet another cool feature of 4.2. If nothing else this release points to some robust development happening in this open source, federated video hosting software that has me super excited about the future of both and

Posted in, PeerTube, reclaim, ReclaimTV | Tagged , , | 2 Comments

A Bird’s-Eye View of Gravity Forms

In 2012 (more than 10 years ago!) I wrote a post about how Cathy Derecki‘s vision for transitioning the Faculty Notes newsletter, Eagle Eye, from a bi-annual print publication to a website and weekly email. We worked on that starting in 2010, and in retrospect as I am working through Gravity Forms in earnest almost 12 years later I am realizing that this process was as good an example as I can find for streamlining a publication using WordPress. 12 years later it is still going strong!

Image of UMW's EagleEye newsletter

I was reminded of this now ancient experiment during last week’s live session when Ed Beck shared a project he is hoping to prototype using Gravity Forms. He plans on using this tool to move the Oneonta Bulletin from the current process of filling out a form that is then copied and pasted into WordPress and then again into an email, to simply allowing for self-service form submission for the community that can be vetted and published, while automating the regular email newsletter piece. It eliminates several steps in the process, and highlights a very simple, powerful use-case for a tool like Gravity Forms.

For me it highlights the idea that a form like this is often a step in a workflow of online publishing that can then make the process of sharing across a campus that much more efficient and seamless, while at the same time retaining control over the tools. We haven’t touched EagleEye for close to 12 years, hell I have been gone from UMW for almost 7 and Cathy even more. There may have been some tweaks that I don’t know about, but let’s face it, nothing speaks to value more than something continuing long after tenure. Kudos to Cathy for an awesome project that continues to prove its value to this day.

Posted in Reclaim Edtech | Tagged , , | 2 Comments

Linda McKenna is ds106 #4life

Yesterday I had the opportunity to realize a long-time dream of reflecting on ds106 with one of the many awesome internauts that traveled where no student had gone before. Linda McKenna was just the internaut I was looking for, and as luck would have it she still hosts websites on Reclaim Hosting and we happened to re-connect in a support ticket, wherein I asked her to chat about ds106 as part of our Reclaim Today series, and she graciously agreed!

It was a really fun discussion, and Linda is amazing. I clearly remember her role in helping to build out the ds106 in[SPIRE] site with Alan Levine, which, as it happens, used Gravity Forms. What I did not expect was how many memories flooded back when she recommended we take a look at her final ds106 reflection video wherein she highlights not only her projects, but all the people that made it possible. It encapsulates the magic of that community so well.

There are the amazing TDC assignments, her brilliant photography, Kim Droom and the ongoing Emre5087 investigation, as well her ridiculously amazing audio work wherein she wrote a script and recruited open ds106er Norm Wright to collaborate with her on the project.

This Week in ds106: Kim Droom vs Enre5807 from umwnewmedia on Vimeo.

It was a wild and at times strangely emotional trip down memory lane that further reinforced why I keep returning to ds106: it was/is a fountain of awesome that created so many rich tributaries that it’s impossible to catch them all from draining into the web of oblivion. Luckily chatting with Linda reminded me they’re all still there, and the spirit is alive and well for making some art dammit. Linda described her approach to ds106 as “all in,” which says it all. It’s not about your grade in a disposable course at university, but about committing to connect and create as part of one’s lived experience. It is the essence of any work worth doing. That’s #4life!

Posted in digital storytelling, Reclaim Today | Tagged , | 6 Comments