How to livestream and record a conference when you have no money

I’ve explained this to so many people and thought about this so much that I had to check and make sure I definitely have not written about this on my blog before, but it turns out that I have not.

First, what is this going to be about?

This is a guide to setting up a lo-fi but totally acceptable livestreaming and conference video recording situation using affordable equipment, much of which can be found or borrowed.

If you can afford a service like Confreaks, I really recommend it! They are very nice people and do great work. However, this guide is for when you are in a low-budget situation and it’s better to do it yourself than not do it at all. No excuses!

What do I need?

Hardware:

  • A camera

    Any old handheld camcorder that can plug into a computer will work. Two is even better (one for the speaker, one for the slides)!

  • A tripod

    Tripods go a long way in producing stable video streams. You don’t want to try to set up a camera without one.

  • An analog-to-digital converter

    I recommend BlackMagic brand because they use an open source SDK. This is the cheapest option. This one is fine. This one is the best, if you are looking for an excuse to buy one for digitization anyway – it’s worth the extra $. I’ve used the latter two successfully but I’ve seen the first in action.

  • A computer

    An average laptop is fine. The above converters are Thunderbolt, so make sure to buy a USB3 one if your computer only has USB3.

  • Cables!

    You’ll need cables to connect the camera to the converter, converter to the computer. Audio from source to the converter (if possible). I don’t know what cables you will need, but The Cable Bible might be a valuable resource to you.

  • Optional: external harddrive

Software:

What do I do?

Try to get into your venue a day in advance to setup and run a test trial. It’s very stressful to try to do this right before the conference is about to start, and if you are reading this, there’s a large chance that you are also organizing the conference and are already very stressed.

First, set up the video camera on the tripod, connect it to the analog-to-digital converter, and connect the converter to the computer. You’ll probably have to install the BlackMagic drivers so the computer knows what is being plugged into it (this is familiar to Linux users or people who used computers in the 20th century and less familiar to those who haven’t – installing drivers!). Install one of the above software (OBS or Wirecast) and run it, and it should help you through the process. This is where you will set up the ability to record the footage to your harddrive (Warning: You may need an external harddrive to store footage, as it takes up a lot of space).

If you are lucky, everything will work and you’ll see a video stream on your computer eager to be recorded. If you are less lucky, you might spend a few hours debugging and trying to get the video to appear on the screen by changing various settings. Good luck to you.

Next, you’ll need to plug into the sound system that amplifies the speaker’s voice to the conference room. The cables you will need will depend on that setup, and you might need some extensions to run the cable from the front to the back of the room, if necessary. Plug a cable from the sound system into the analog-to-digital converter and you should hear it broadcasting in the software. If the conference room is very small, you might be able to get away with using the camera’s audio (but it will not be great, so only do this as a last resort).

Adjust the settings in the recording software so video is coming from the camera and audio is coming from the sound system.

With this setup, someone will have to monitor the camera and toggle between the speaker and their slides while streaming. If you are just recording and planning to edit the videos later, you can keep the camera on the person speaking and collect slide decks and edit them together in post-production. A second camera can be added to the setup to just record the screen and toggling between the two can happen within the software.

Okay, next, head over to YouTube and their Live Dashboard. This is where you configure YouTube to start streaming when the conference is ready. Make sure to test out a livestream before the conference starts so you are comfortable with all of the settings, how to turn the stream on-and-off, and mostly ensure that it works.

And that’s it! The hardest part is the setup! When recording, make sure there are two people monitoring the stream and swap out volunteers, so no one gets too tired and grumpy. Watching a stream and also monitoring many levels of social media for people complaining about the service you’re providing for free can be very exhausting.

** Bonus note! Do NOT stream any audio under copyright over YouTube or they will take your video offline. It sucks but that’s how it goes, even if you do it accidentally and only for a minute (this happened to us at Code4lib2016). It’s the tradeoff for using YouTube. If your conference is playing fun music during the breaks, just make sure to mute or pause the livestream during this time.

Wait, why should I listen to you?

I have a whole bunch of years of experience working with video in a preservation setting and little bit in a production setting. I have set up and run livestreaming for Code4lib and No Time To Wait, and have given this advice to those intending to livestream several conferences (with full success). I also know that this is the setup used by conference videostreaming experts. So if you don’t trust me, trust them (via me)!

External Resources

The planning/resources list from Cod4lib 2016 is available here.

The resources list from No Time To Wait! is listed at the bottom of this README.

Making an I Ching application in Javascript

This is the process I used to go about building a small, for-fun webpage. I hope this can help demystify the process of building a website, even if just a little bit.

My first step was the figure out how the I Ching worked, which means going to Wikipedia and reading about it. This scared me a little bit, because the process is pretty complicated. You know, it’s like the O.G. algorithm. There’s an algorithm used in cryptography (and used in macOS’s /dev/random) named after one of the I Ching divination methods, the Yarrow algorithm. Well, that’s enough “research” because now I know what I need to know – I either need to build one of these divination algorithms, find one, or pretend to.

Then I went to existing I Ching sites to see how they were built – they all seem to be built in PHP and therefore run in an obfuscated way (so I couldn’t rip them off).

I found the I-Ching App of Changes and the snippet of open source code that constructed the “yarrow method” of I Ching hexagram construction. What a lifesaver! A lifesaver with an MIT license on it! Now I can be confident that my website will be using the best of the best for oracle-consulting.

Taking a break from the parts that might involve math, I set up some JSON by doing some copy-pasting trickery from Wikipedia and multi-cursor pasting in a rad text editor (I am currently using Atom). Computers are amazing and it only took a few clicks instead of a painful copy-paste for each part of the 64 hexagrams. That’s 64x3! I added a definition, the symbol that represents each hex (cool to find although not reliable), and the number (so I can link to other websites that base results on the hexagram number).

The hard problem was the algorithm and that was solved. The easy problem was how to apply the algorithm and produce a cast hexagram and a transformed hexagram based on six clicks (by throwing yarrow six times and counting, or using three coins, etc). Looking at the open source yarrow-sorting code, I came up with a plan to have 1 represent an unbroken and unchanging line, 0 to represent a broken and unchanging line, x to represent an unbroken line changing to broken (strong to weak), and o to represent a broken line changing to unbroken (weak to strong).

Each click of the button does this sort and applies the results (one of the four options) to a string, resulting in a string that can be “decoded” into the first, cast hexagram, and second, transformed hexagram, by switching the x and os out for what they were and what they would become. This was initially hard to wrap my head around, but once I understood it, it was very easy to implement in Javascript so each hexagram could be displayed by pulling the codes out of the hexagrams.json file.

(I also didn’t feel like standing up a server for testing this, and the json file isn’t very big, so I actually faked it and made a faux hash inside of a variable. Whatever works.)

But, for example, if the yarrow algorithm throws “11xxo1” as the result, that would turn into 110011 (which is the hexagram 61, Centre Conforming) and change to 111101 (which is the hexagram 14, Great Possessing)

Now that the meat of the application was done, I could set up the DOM. I thought about using React until I realized it didn’t make sense to use a framework with a million dependencies just to render a little bit of content, and I used tried-and-true good-old-friend jQuery. I’m old and not that hip, so my code is, too.

With the DOM set up, I could now dress it up. This used to be my least favorite part because I would get so frustrated with CSS that I would want to scream, but now I don’t feel that way anymore.

I wanted mood ring vibes. To do this, I went to Codepen, searched for color changing background, and cruised until I found something that fit what I wanted. Then I copy-pasted that sucker and made adjustments until it looked right and had the right tones. If copy-pasting code from the internet is wrong, I don’t ever ever wanna be right (nor have I ever ever been right). This made the page look extravagant and beautiful and mature but it took very little work.

In more practical matters, Skeleton has been my not-Bootstrap framework of choice. Google Fonts hooked me up with some additional fancy.

That’s that. That’s how a single-page simple webpage works! This only took me a couple of hours, but two years ago it may have taken me all day! Sometimes it’s hard to tell you are learning anything when you are always learning, so this was a good exercise to go back and try something small to realize that you have learned at all. My code is online, as usual, if you want to use it as a reference and learn how to make your own divinations.

Minimum Viable Station Documentation: Recipes

Last month I created and posted about a Minimum Viable Station document. There was such an overwhelming and positive response to this doc! I’m really so happy to see it expand into such a wealth of expert advice. However, I don’t want newbies to feel overwhelmed at the size of this document. I want anybody, at any level, to be able to set up their own digitization system within the constraints of their financial situation, space, and time. Also, this existing doc doesn’t get down into the nitty-gritty details of how much a setup would cost (which is going to vary dramatically, even when confined to ‘recipes’, as you’ll se below), which is important when planning any project (especially when you have to ask other people to spend money, or have to raise it yourself).

So I made a recipes document!

Minimum Viable Station round two! Let’s do this! Does your institution have a setup you’d recommend to others, or have you done this work for grant-seeking or internal-financing purposes? Please contribute your specs! Do you see something wrong? Please leave a comment in (either of) the document(s)!

2016 Reflection and 2017 Goals: Retrospective and refactoring

Welcome to the Ashley Blewer annual report! It’s that time of year again, where I start thinking about where I was at this time last year and where I am now. Here were my goals for 2016.

2016

So. What did I do?

Working

Two projects I worked on shipped: LaMaMa Digital Collections and Screen Slate. Honestly I ended up doing basically zero work on Screen Slate other than attend meetings and complain about things and fretting but not actually write code. However, so happy to see its success. And so happy for LaMaMa’s success as well!

My job @nypl continues to be diverse and exciting, working on a myriad of applications both existing and new, public and non-public, in multiple languages and parts of the tech stack, for patrons and for staff. I am happiest this way. I continued work on MediaConch and QCTools signalserver. MediaConch has been a big part of my life for the past 3 years and it’s strange to realize that this project will come to an end later this year.

Conferences

I gave a talk at Code4lib with Dinah Handel called Free your workflows (and the rest will follow): community-driven AV solutions through open source workflow development. I also did a LOT of work organizing and ensuring a successful conference video streaming experience for everyone. I do not think I will do that again, but I am glad that I did it.

I gave a talk at iPRES 2016, Status of CELLAR: Update from an IETF Working Group for Matroska and FFV1 based on a whitepaper written by Dave Rice and me, available here.

I gave a talk (without being there) at Northeast Historic Film with Travis Wagner. Thanks, Travis, for dealing with the a/v headache of playing a video of my portions. The talk was entitled Buying Lobster Rolls With Linden Dollars: Virtual Tourism and Digital Visions of New England in Second Life and Beyond.

For AMIA, I didn’t talk this year but helped with organizing two streams, Digital Preservation and DIY Community Archiving. I will also probably not do this again, but I am again glad that I did it.

Finally, I (along with Dave Rice and Jerome Martinez) organized a symposium called No Time to Wait!: Standardizing FFV1 and Matroska for Preservation. All the videos and slides are here. I never want to do this again but also will probably do this again.

I also taught THREE workshops: at iPRES, at Tate, and at NYU. Phew!

Travel (not for work)

I went to Disney World for my birthday with some top-notch pals. I spent a week in France with another top-notch pal. I took a weekend trip to my home state to see other top-notch pals and get a friends-tattoo! I was afraid of using all of my vacation days for other-work-obligations, but I did not do that! Also, several pals came to visit me! Friends are important and I’m happy to have so many great ones, near and far.

Misc.

  • Had a chapter in a book published along with amazing-person Jess Rudder.

  • Got this baller-ass tattoo.

  • Wrote about Beyonce and video formats three times. Here’s one and here’s another.

  • (Hopefully) empowered others to learn and contribute through ffmprovisr, open-workflows, Minimum Viable Station and other community efforts. I don’t know if this was a stated goal, but it’s 100% always one of my biggest goals: lower barriers, empower others, facilitate growth and knowledge-sharing.

  • Made a few OSS commits in addition to the above!

  • Regarding “personal projects”, I didn’t make enough time for this as I wanted to but I did a couple of one-off projects like Barthes Tarot or media-id-posters. I made a lot of progress on an on-going, intense art project that I hope to totally wrap/ship in 2017. I made some progress on other yet-unreleased projects that deserve priority in 2017. I refreshed my personal website and this blog’s layout (style update, refactoring of codebase), which makes me feel better and lighter.

  • There’s also this.

What did I want to do?

I wanted to take on less new projects and I wanted to work less (or work less on compensated things and more on personal projects). I did not do these things, but I also knew I wouldn’t do these things. I joined a gym and went regularly, but then I quit going regularly. Now I am going again. But this is like a 50% success rate for goal accomplishment.

Some terrible things happened to me in 2015, although didn’t really start to cause damage until 2016. I do not want to carry these ghosts with me into 2017, but I’m afraid that is not totally preventable. I cut myself some slack for the time lost dealing with these things, but didn’t manage to not feel guilty for not working all the time.

2017

What I said last year still rings true: I have two problems: I care a lot and I care about a lot of things.

Overall, I don’t think much has changed. I suppose the theme for 2017 is “refactoring.” I’m beginning to get nervous. I am afraid of becoming lazy, becoming complacent, of taking things for granted, for getting too comfortable. Although when I started drafting this post, I felt like I hadn’t accomplished anything in 2016 but now I see that I actually did a lot, and did many of the things that I set out to do!

Anyway, hello 2017. I will be succinct and vague.

  • Be less lazy.
    Trust me when I say that I am actually secretly a monster.
  • Increase vigilance.
    The political climate was already lousy and it’s about to get wild. It’s important to be prepared.
  • Minimize.
    I’m clearing out things I do not use and not buying anything new that is non-essential. This isn’t really different from how I normally live my life by default, so maybe it’s not a goal other than padding for the first two points and motivation to not buy new pants if I don’t need them.
  • Get organized.
    My Evernote notes are a mess, and so are many other things!
  • Less wasteful.
    Eat better, drink less, cook more, pack lunches. Don’t buy things due to lazy behaviors. Save that money and give it to people/organizations that really need it.
  • Watch more movies, read more books.
    This is important.
  • Take more vacation than in 2016, not less.
    This is also important.
  • More programming!
    I’m still not very good at this and I want to be better. I did a lot of projects this year but I want a non-work project that challenges me thoroughly (like, for longer than a day) in this way.

Minimum Viable Station Documentation

Hello, internet of people!

Something I’ve been thinking about for a long time and have started working on is the creation of documentation for people who want to set up their own analog audiovisual media digitization stations (called elsewhere as memory labs, personal archiving labs, transfer stations, et al). Aside: I’m also super influenced by my goal of supporting an in-the-works Southeast U.S. Transfer Station by any (remote) means possible. 2017 goals!

I’m specifically interested in this documentation’s ability to facilitate realistic fiscal expectations so budgets can be adequately prepared for before getting started (or for the purposes of asking for funding from an organization or using crowdsourcing methods).

Here’s the thing, though… I need your help and expertise. I am not an expert in this, I do not do this full-time (or even significantly part-time). And even if I were an expert – it’s bullshit for any person to think that they know more than many people working together. So, I ask you.

Here is the document.

This is the goal: Provide what the options are, then give a recommendation. If possible, give a tiered recommendation like “$$$ / $$ / $” for “if ya got a bit of cash” to “if you need a bare-bones minimal setup.” Note that a minimal setup does not correlate with “archival quality” standard but rather a “getting this stuff off of an obsolete format before it is no longer possible to realistically or inexpensively to do so.” We don’t have time for that shit.

Here is the document again!

P.S., N.B.: Don’t let best practices block progress.

P.P.S.: Part two – recipes!