Friday, January 17, 2020

Reflecting on 0.4 and the future

After the busy holiday season it’s a good time to take stock of what happened with the project recently. Further down I discuss the lessons my future self should remember and discuss the roadmap. This is a summary of developments during the 0.4 branch:

30.10: 0.4.0 features and 0.4.0a fixes
31.10: 0.4.0b features and fixes
07.11: Server migration
11.11: Server maintenance (the infamous PSU issue)
12.11: 0.4.0c features and fixes
18.11: 0.4.0d features (downtime scheduler)
20.11: Content update
02.12: 0.4.0e features (daily shows scheduled)
09.12: 0.4.0f features (series slots added)
13.12: 0.4.0f fixes (effectively 0.4.0f1)
16.12: Outage begins after server relocation
21.12: Restoration after reversing server relocation
23.12: 0.4.0g features (support for fixed-date shows and weekly “themes”)
24.12: 'Countdown to 2020' event begins
01.01: 'Countdown to 2020' event ends
12.01: 0.4.0g1 fixes
15.01: 0.4.0g2 fixes

Lessons for 2020

  • Listen to your own feelings about the project, especially when it’s criticism
  • Don’t be afraid to abandon features that don’t work
  • When things go wrong, consider if it’s catastrophic or manageable
  • Make sure your version format can support every eventuality
  • Work out a balance between feature and content releases
  • If it isn’t broken, don’t fix/ change/ touch it without good reason!

Roadmap update

0.4.1 - To mute or to unmute?
0.4.2 - Vote for your soundtrack Does that track really fit the video?
0.4.3 - To be announced
0.4.4 - To be announced
0.4.5 - To be announced
0.5.0 - To be announced (hint: involves a lot of rebuilding)

In developing the scheduling system I learnt a great deal about what works, for the stream and my development process. After developing the original format, new shows every 30 minutes, I found that replaying the same content at short intervals became boring for me and the voting system was never used. It is never nice to admit something you created is bad, but accepting this feeling and being unafraid to embrace change can be good (as long as we also accept perfection is unrealistic and that there is a logical end to this struggle). If I am bored with what’s playing, it’s certain that others will be as well. So, 0.4.0b was my initial response and from there I kept iterating on the format. Updating the on-screen schedule’s format, removing the voting system and toggling what’s shown on the information panel were the simple changes. Storing state and continuing shows at their previous point, episodic content played at particular times, daily shows and fixed-date shows were challenging to implement, but ultimately improved upon the purpose of the stream.

The version numbers the stream had gone through may look strange, but the format reflects how I develop software. The agile methodology has been my favoured approach for years and it shines when you need to iterate- the final version in the 0.4 branch is radically different from the first. When something went wrong the first consideration was time- do I fix it now, wait until the next version or is is manageable in the short-term? Some of these decisions worked out well, others not so much. Fixing some playback issues in the last few days was absolutely the right call, but sticking with Streamlabs OBS lead to many stream crashes. However, Streamlabs OBS has broadcast my stream for many hours at a time and its suite of tools gave the stream a headstart where overlays are concerned. There is a technical problem that consumed time, but was there a good reason to invest time testing other streaming software? My answer came once I was satisfied with 0.4- the next version will take more time than the previous iterations, use it to test other streaming software too! So, no there was no good reason before, but now is the perfect time.

The roadmap is still in place and I am working on 0.4.1 and 0.4.2 simultaneously because they both demand a better-structured storage system. 0.4.2 will now aim to harmonise the video and music, instead of having a completely random playlist system. I have an idea of priorities for 0.4.3-0.4.5, but I will announce them once I have 0.4.1 released. All of this work is being done with objectives extending to 0.5, but rest assured this work will have little effect on the existing stream's bot. Vetting, compressing and adding material to the archive has been a time-consuming process that would benefit from some automation.

Monday, November 11, 2019

RescindentArchives - VLC, OBS, NVENC and PSUs

If you had wandered into my archive stream at any point in the last few days you would notice how it was starting, freezing, ending and resetting. I apologise for this downtime and subsequent loss of time from a viewer's perspective, but the intention of this post is to provide a hint to anyone that encounters the problem I had experienced.

Why is VLC media player freezing/ crashing and OBS crashing unexpectedly?

There could be any number of reasons, but in my case there were no logs or crash dumps to provide an explanation. After trying several nvidia drivers I trust to be stable I stumbled upon a forum discussing the possibility of their PC’s Power Supply Unit (PSU). Unable to find a software solution to my issue I thought, "what the hell", and dug out a PSU from a server I am repairing. I write this post at 8pm, 7 hours after going live, and neither VLC nor OBS have crashed. No, I did not publish this after writing it... just in case!

Answer: When nothing else works, try changing your Power Supply Unit (PSU)!

Thursday, November 7, 2019

RescindentArchives server migration 2019/11/05 to 2019/11/07

Today the RescindentArchives stream was migrated from a Virtual Machine to a physical server. There were a number of reasons that I shall discuss in this post.

Honourable technology mentions before I begin...

  • VMWare ESXi, a bare-metal hypervisor I use to test many Virtual Machines
  • Nvidia and AMD graphics cards I use for streaming video

Virtual Machines vs Physical Machines

Virtual Machines (VMs) are a fascinating technology that are often paraded as the answer to every system administrator's woes, but there are downsides to using them. VMs, in most configurations, can be backed-up in entirety, moved from one data centre to another and their performance boosted by moving them to more capable hosts. The hosts are the main reason I am hesitant to use VMs for anything performance or time-sensitive- often a customer will have no idea what other VMs are running on the host. These other VMs have their own demands and in some cases I have seen troubled VMs drain enough resources to cripple their kindred.

You may be asking me why I chose to use a Virtual Machine in the first place, a good question! I love experimenting with technology! When I began the journey of setting up RescindentArchives I wanted to try out VMWare ESxi's GPU passthrough and managed, after some troubles, to get my Nvidia Geforce GTX 1050Ti to work inside a Windows 10 VM. The downside of this is the VM is now tied to its host, eliminating most of the benefits of using a VM in the first place.

Development environments

In my time developing software professionally it was drilled into me from day one that Production was not our platform- it was the domain of our users and support team. As Developers it was our role to deliver improvements, observe problems, work out solutions and pass these all onto the support team, who would scrutinise and potentially implement them. I stand by this philosophy, but when you are the only person managing a project like RescindentArchives you become the Developer and support team! So, by designating a new physical server as Production I can now use the VM for extensively testing new versions before they go live.

So what is this mystical new physical server?

I have loved building new machines since I was in my early teens, fortunately one of them was sitting around not doing much. The CPU is still going 10+ years after it was built, seeing me through secondary school and University, since combined with a new motherboard and hard drive. During testing I discovered how far GPU encoding has come- the Radeon R7 250X GPU I tested could not cope with 1080p at 60fps. As a result I swapped the 1050 Ti into the new host and the 250X into the old. This will cause a performance disparity, but I will resolve this when extra parts become available.

The Virtual Machine formerly hosting RescindentArchives runs on my main Virtual Machine host, a server called, "Contrivian", that has served me well for 7 years:
  • AMD FX-8350 (8-core, 4.0Ghz)
  • 16GB DDR3 RAM 
  • Nvidia Geforce GTX 1050 Ti

These are the new RescindentArchives hosts

 

Rescindent (Production)

  • Intel Core 2 Quad Q9550 (4-core, 2.8Ghz)
  • 4GB RAM
  • Nvidia Geforce GTX 1050 Ti
I am already seeing much better networking performance with this physical server.

VW10/ Contrivian (Development)

  • 3 vCPUs allocated from AMD FX-8350 (8-core, 4.0Ghz)
  • 6GB RAM allocated (host max. 16GB DDR3 RAM)
  • AMD Radeon R7 250X
The development server will be back in action soon.

Tuesday, October 22, 2019

Hello and RescindentArchives Roadmap!

Welcome to the first entry in my Project Blog, devoted to progress updates on my various projects, be they software, literature or art.

RescindentArchives

RescindentArchives is a passion project that I have used to keep my programming skills ticking along. It has also given a new purpose to the archive server I built to store old video from the various games I have played, now broadcasted on the channel for all to see. While the video may not be that exciting to seasoned gamers, it is a window to the gaming worlds I have visited over the years. I keep telling myself that one day these unedited videos will be interesting for others to reflect on, but only time will tell!

You can watch and vote on the channels below:

The story thus far

  • 0.1 - Integrating Video with the Twitch Chat Bot
  • 0.2 - Iterating on the Voting format
  • 0.3 - Launching on Mixer and YouTube, via Restream (restream.io)
There are a lot of solid foundations in the present version, 0.3.4, to build upon. The chat bot is well integrated with Twitch and Mixer, with some issues on YouTube. Organising the video content has also come along well and is worthy of a future article.

Roadmap

0.4 - Schedules and Events

The current format will be going away and replaced by one familiar to anyone that has watched television. Instead of voting for what you would like to see at this very moment, viewers will be scheduling, or rescheduling, the next event.

0.4.1 - To mute or to unmute?

Some of the video played on the channel has private conversations mixed into the audio, making the sound a bad candidate for broadcasting. Others are completely free from such restrictions and could have the audio broadcast. Video will be vetted and the Bot updated to allow appropriate audio to be played.

0.4.2 - Vote for your soundtrack

At the moment viewers have no control over the music that plays in the background. This version will introduce a vote for soundtracks.

Pretzel (https://app.pretzel.rocks/) is a nice solution to broadcasting music without fear of copyright claims, but there are many great royalty-free soundtracks on other platforms. Another aspect of this version will be trying to expand the variety of music available.

RescindentArchives Status Update and new Roadmap

Status Update  It has been some time since I wrote blog entry because of life becoming busy so I'll try to summarise the current status ...