Develop Touch Portal plug-in interfaces with Delphi

I’m pleased to announce that I have just released ‘BaseTouchPortalInterface’ on GitHub.

This is a base interface class that can be easily extended using annotation with attributes to implement bespoke interfaces for Touch Portal plug-ins. All communications are handled for you, at the most basic level all you need to do is provide the handler methods for the various actions/connectors/lists implemented by your plug-in.

Full details are available on GitHub.

Touch Portal Plugin Development – A Review

Part of my streaming setup is a program called StreamHelper (SH). This is a Delphi application that does a bunch of stuff including playing music and running scripts for automation. The original interface between Touch Portal (TP) and SH was a unidirectional HTTP request based system. The net result was limited capabilities and a need to refer to the source code to keep looking up the request paths and for things like requesting a song, a need to lookup request params and then the information to put in them by searching through the music lists.

I was aware from the moment I started using Touch Portal that they had a plug-in API but for some reason I put off making one and I kept putting it off until a couple of days ago. This post is a bit of a retrospective on my efforts and a few comments about the API and how I think it could be improved.

Continue reading “Touch Portal Plugin Development – A Review”

Discord not displaying images you serve yourself?

If you’re experiencing issues with Discord not displaying images you server yourself from some kind of web server, the answer could be as simple as including the CA chain bundle when you setup the server.

I was having problems with my Discord/Twitch bot being unable to serve images into Discord (that is to say if I posted a link to an image served by the bots web server) it wouldn’t render… could be a link posted in chat or a link in an embed.

Because I’m used to working primarily with self-signed certificates where the CA bundle is about as much value as the certificate itself in the eyes of many, I’ve never included it when setting up an HTTP Server instance in Node.JS.

This singular action appears to be the difference between Discord loading my images and not. I have just modified the setup to include the CA bundle when creating the server and now all of my images appear to load properly within Discord.

So moral of the story… include all the certificate files you get shipped when you buy an SSL certificate đŸ™‚ If you don’t you’re probably going to be disappointed when Discord doesn’t render your images. Hope this little nugget helps someone out and saves you trying to figure out what’s going on.

Utility – RenameWindow

This is a little utility for renaming windows. The purpose is primarily to provide known titles to allow programs such as OBS to find the window reliably. A couple of example of where this can be used are Notion and Discord.

Both applications have dynamic window titles which means even if you select the ‘Match title, otherwise find window of same executable’ match priority OBS may struggle to find it.

Enter ‘renamewindow.exe’… a small console application that is designed to find and then set the title of windows. Searches can use the EXE name, the title and the window class.

Source code is available on Github along with some instructions.

The exe and a sample configuration file are available here.

AI helpers… useful tool or serious security issue?

The ads for Grammarly are slowing but surely gnawing away at my soul with their frequency… I’ve seen numerous people mention some fancy ‘AI plugin’ for VS Code that helps you with your coding and now Speechify, which helps you by reading your documents and emails using AI so you can get more done.

Great, some useful applications of technology that can clearly help you out. But in my mind, these apps and similar raise nothing but security concerns for me.

Continue reading “AI helpers… useful tool or serious security issue?”

Let’s talk about StreamElements…

First up, I’d like to be clear… I moved from StreamLabs to StreamElements because I felt it offered a better overall product offering. This is not a complaint about the portion of their product that most people will use (i.e. the overlays, the store, merch etc.) but I do have a big gripe about the API, specifically the lack of good, clear supporting documentation.

So, if you’ve tried to engage with their API and have been struggling, read on as there may be some nuggets here that will help you. This is by no means a comprehensive reference, but it is a rundown of the issues I’ve faced and overcome in writing my StreamElements interface for Delphi.

Continue reading “Let’s talk about StreamElements…”

Connecting Node.js to Streamelements Websockets

If you’re planning on using the Streamelements Websockets service to receive realtime notifications of things like tips, merch purchases and stream store redemptions (it can also do follows, cheers, raids, hosts and subs for Twitch), you may find information is a bit thin on the ground, so here’s a quick guide to getting connected using TypeScript and Node.js.

Continue reading “Connecting Node.js to Streamelements Websockets”

Why? Case sensitivity in software source code

In case it’s not clear from my moniker, in the world of software development Delphi is my preferred weapon of choice and if you’re not familiar with it (you should be), the underlying language is Pascal. I’ve been using Pascal for over 30 years, in this time of COVID-19 lockdown I’ve been using my time to learn Typescript, brush up on modern Javascript and familiarise myself with the Node.js ecosystem.

Continue reading “Why? Case sensitivity in software source code”

Happy Birthday Delphi – 25 Today!

The year, 1995. Windows 3.1 was the current Microsoft operating system running on the family’s 486sx 25MHz with 4MB of RAM. Turbo Pascal 7 was my weapon of choice but of course it couldn’t produce Windows applications… yes there was Turbo Pascal for Windows and Borland Pascal but they both required lots of boiler plate code to make windows and interact with the OS (Nightmare). And then it happened…

Continue reading “Happy Birthday Delphi – 25 Today!”