A Eulogy for VMware Project Nautilus

Do you remember the hype in 2020 when VMware announced their own OCI-compliant, Docker-compatible container support in their desktop virtualization solutions? I even wrote about it in 2021 after it had some time to mature.

So where is Project Nautilus in 2023, a good three years later? Dead, in the grave.

In 2021, I called vctl “a promising disappointment”, but in 2023 I will have to change that title to “an ambitious stillbirth”. After three whole years and a new major (paid) VMware Workstation version, vctl is still exactly where it was back in 2020.

When people poke VMware staff about this on Twitter, the response pretty much shuts the door on any further development:

I wish I could say it were in a better state. […] We’re taking the time to address this in a more holistic way.

Now, just in case you do not know what “taking the time to address this in a more holistic way” means in plain old English: There are no plans to put another second of development time into it, but marketing says it is a bad look to deprecate it after just one major version, especially since VMware already removed Shared VMs from the desktop virtualization solutions.

This is such a shame. VMware had an admittedly early but incredibly compelling feature in the pipeline that perfectly complemented its core technology and gave developers another reason to love Workstation or Fusion.

Rest in peace, Project Nautilus. I bemoan the waste of potential and awesomeness.

1Password SSH-Agent + Pageant on Windows 10

1Password is a great password manager. For a little less than a year 1Password can act as your ssh-agent, meaning that you only need to store the public keys locally, the private key comes from 1Password itself. There are a few things to note and set up if you are on Windows.

I hope this post will help people interested but somewhat bewildered by some parts to get it to run and understand the relevant bits and bops.

Please note that this post assumes that you already have Windows’ own version of the OpenSSH client installed and possibly updated to a newer version. I also assume that you have already imported at least one SSH key pair (public/private key) into 1Password (under the SSH Key type).

Windows Hello

A requirement for 1Password’s ssh-agent is that you have Windows Hello enabled. The documentation on 1Password’s end makes it sound like you need a Windows Hello-compatible webcam or some kind of fingerprint sensor or whatnot.

This is not true, you can also use a simple PIN as your 2nd factor. This is easily set up via Windows 10’s Settings – Accounts – Sign-in options.

Disabling Windows’ SSH Agent

Open the Computer Management, browse to the services and ensure that, if it is present, the “OpenSSH Authentication Agent” is disabled.

This is required because the ssh-agent on Windows is published through a pipe. If the OpenSSH Authentication Agent is running, the pipe is already present – causing an issue with 1Password trying to fill that role.

Enabling 1Password SSH Agent

Within 1Password’s desktop client, go to the settings – Security and enable “Unlock using Windows Hello” as well as “Show Windows Hello prompt automatically”.

Now switch to the Developer tab and tick the box “Use the SSH agent”.

Configuring the SSH Client

For the sake of argument, let us assume that you have a dedicated ssh key for communicating with GitHub and that you already imported that ssh key into 1Password.

How do we get the Windows-version of the OpenSSH client to use the agent for this?

Edit your ~/.ssh/config file and generally enable the agent:

Host *
  IdentityAgent //./pipe/openssh-ssh-agent

We want to specify the exact key to use for GitHub, though. So let’s return to 1Password, select the public key of your ssh key and save it locally. Move the file to your ~/.ssh directory and rename it (i.e. id_ed25519_github.pub).

Edit the ~/.ssh/config file again and add/alter an entry for GitHub:

Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519_github.pub
  IdentityAgent //./pipe/openssh-ssh-agent
  IdentitiesOnly yes

Save the configuration. If you still have your pair of pubkey/privkey in the ~/.ssh directory, move it aside for a test. By instructing the use of the id_ed25519_github.pub, 1Password will look up the matching ssh key from it’s archive.

Otherwise, like other ssh-agents, it would try several keys. We do not want this.

Now you should be able to connect to GitHub via ssh and have 1Password provide the proper key:

ssh -T git@github.com

If you see the input field for your Windows Hello pin, things should be peachy:

Hi XXXXXXXX! You've successfully authenticated, but GitHub does not provide shell access.

Sweet stuff! You should also be able to check the contents of your 1Password ssh key archive:

ssh-add -l

Even better!

Git

Git for Windows ships with its own copy of ssh. We need to make sure the Windows version of the OpenSSH client is being used. So, as per documentation, we explicitly set the path to the ssh client:

git config --global core.sshCommand "C:/Windows/System32/OpenSSH/ssh.exe"

If you have downloaded a newer version of the Windows-version of the OpenSSH client, point it to the appropriate executable.

Pageant

But what about applications that use Putty’s Pageant? Having two instances provide keys is not what we want.

Thankfully, WinSSH-Pageant is able to bridge between the two tools. Simply install WinSSH-Pageant, make sure to close Putty’s Pageant and… well, that’s it.

If you use WinSCP or other software using Putty’s components, WinSSH-Pageant should relay the agent requests to 1Password, meaning that the Windows Hello PIN will be prompted and keys will be delivered from 1Password’s archive.

My Software Picks for 2022

Since the year 2022 is finally coming to a close and everyone seems to like these stupid lists, here is my list of software picks for 2022. The software products listed here are not necessarily made in 2022 but have been my most used applications throughout the year.

Please note that this list specifically targets Windows applications.

Wavebox

Unsurprisingly Wavebox makes the list. The modern worker needs a good browser and Wavebox is the best choice, in my opinion. Unlike lesser products like Sidekick, Stack, Shift and whatnot, Wavebox is the real deal with its powerful Cookie Containers feature, powerful app routing rules and the ability to let Chrome extensions run in specified containers only.

It is the application that always runs on my machine. Whether I am using it on a personal level for Discord or professionally for Teams.

Instead of installing several dozen of Electron garbage applications, just install Wavebox. The developers make sure to keep Chromium up to date, so you never run into the risk of using an outdated browser.

This year saw some questionable changes in Wavebox. I did not like the fact that you have to enable the new, rounded interface to use the web dock auto-hide feature. Especially since the rounded interface is buggy as fuck and does not render/hide properly ever so often.

I also do not like that you cannot have two main windows.

The price is a little steep as well, however, if you do make use of web applications on a daily basis and want to keep them isolated from each other, there is virtually no better solution than Wavebox at the moment.

Windows Terminal

Signs and wonders! I never thought I would recommend Windows Terminal before 2025 but here we are.

Previously I scoffed at Windows Terminal for being a somewhat buggy mess with strange bugs and limitations that made it impossible for me to use on a daily basis. I am absolutely delighted to report that all of these issues have been resolved, making Windows Terminal an absolutely incredible choice for command-line aficionados.

Mouse emulation works fine, all applications seem to render properly now and the superior Unicode/emoji support makes this a great package.

I feel comfortable recommending Windows Terminal over ConEmu unless you are specifically looking for one of the awesome ConEmu features.

It is also easier to coerce corporate administrators into installing a Microsoft-developed piece of software than what many would see as a “suspicious Russian-made application”.

JetBrains IntelliJ

JetBrains keeps flexing on us with its portfolio of great IDEs. I love the new UI they introduced in 2022 throughout their products and the packages have become more stable and faster throughout the year. Rider has had some slight issues with newer SDK versions but these issues have been resolved.

Especially when having to work with Eclipse on occasion, you learn to appreciate and yearn for IntelliJ. Or Visual Studio Code. Or anything… but please, not Eclipse! Not Eclipse!!

Not really much else to say here.

OBS Studio

OBS Studio is without a doubt the best streaming software around. Sure, other packages provide neat built-in features, but no other package has the amount of community and manufacturer backing that OBS has.

With the built-in support for virtual cameras and powerful third-party plugins, OBS has essentially become my go-to for ensuring my virtual webcam only shows what I want it to show (and when I want it to show!). It also powers my streaming endeavours on YouTube and Twitch (hopefully I will be more active in 2023!).

You could use Xsplit or Wirecast… but why spend money on these packages when you can use that budget on a good microphone or an Elgato Stream Deck instead?

Zoom Player Max / mpv

There are many media players out there, but my favourite is still Zoom Player Max. It simply behaves exactly as I would expect from a great GUI media player. A great runner up is mpv. Both players have hardware-accelerated playback, support Advanced Substation subtitle rendering and have a delightfully minimal UI.

If you are still sitting on Media Player Classic or even VLC, you owe it to yourself to give at least mpv a try.

Zoom Player stands out for the integrated component installer that makes setting up a fresh installation as well as maintaining it really easy.

XYplorer

Come on, did you really think XYplorer would not get mentioned? Not a single day goes by without me using XYplorer. It is still one of the mightiest Windows graphical file managers, next to FAR and Directory Opus.

If I had to voice a single complaint about XYplorer, it would be the lack of catppuccin themes available. And the fact that I spend so much time in the application sorting files. I would rather do something else, thank you.

Closing Thoughts

I tried a lot of possible alternatives to my application stack. 5 years ago, I would have dismissed Wavebox in favour of Franz. The fact that some of these programs have kept their spot for a decade is a testament to how great they are and how little my workflow actually changed over the years.

Perhaps in 2023, there will be a disruptive new file manager or productivity browser. We will see.

Microsoft Power Automate – Uninstall the malware-like Browser Extensions

The development and support teams at Microsoft have become so daft that a very simple question seems to be too much for them. Several users inquired about how to uninstall the browser extension because even after removing Power Automate, it kept automatically registering itself on new browser profiles. Really not hard to understand.

Here is how to remove the extension from your user-profile for good:

Open up regedit and remove the following keys:

  • Computer\HKEY_CURRENT_USER\SOFTWARE\Wow6432Node\Google\Chrome\Extensions\gjgfobnenmnljakmhboildkafdkicala
  • Computer\HKEY_CURRENT_USER\SOFTWARE\Wow6432Node\Google\Chrome\NativeMessagingHosts\com.robin.messagehost
  • Computer\HKEY_CURRENT_USER\SOFTWARE\Wow6432Node\Mozilla\NativeMessagingHosts\com.robin.messagehost
  • Computer\HKEY_CURRENT_USER\SOFTWARE\Wow6432Node\Microsoft\Edge\NativeMessagingHosts\com.robin.messagehost
  • Computer\HKEY_CURRENT_USER\SOFTWARE\Wow6432Node\Microsoft\Edge\Extensions\njjljiblognghfjfpcdpdbpbfcmhgafg
  • Computer\HKEY_CURRENT_USER\SOFTWARE\Mozilla\NativeMessagingHosts\com.robin.messagehost
  • Computer\HKEY_CURRENT_USER\SOFTWARE\Google\Chrome\NativeMessagingHosts\com.robin.messagehost
  • Computer\HKEY_CURRENT_USER\SOFTWARE\Google\Chrome\Extensions\gjgfobnenmnljakmhboildkafdkicala
  • Computer\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Edge\NativeMessagingHosts\com.robin.messagehost
  • Computer\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Edge\Extensions\njjljiblognghfjfpcdpdbpbfcmhgafg

I honestly don’t know why the Power Automate team does not simply remove these references upon uninstall. Or why they seemingly dodge answering the question altogether when it is very clear what the users are asking.

Then again, the Microsoft forums are the biggest cesspool next to Facebook and Reddit, so I probably should not be surprised.

Ventoy Manjaro Issues

The horror you do not want to see:

mount: /run/miso/sfs/livefs: can't read superblock on /dev/loop0.
dmesg(1) may have more information after failed mount system call.

I have been struggling with this and similar issues for a while now. After checking the affected ISOs, the thumb drive and all, I finally chose the nuclear option: Completely re-installing Ventoy.

Turns out this was a good call. My Ventoy thumb drive has always been updated for roughly 2 years and somewhere down the line, something did go sideways. After completely re-installing the entire drive (partitioning and all), all ISO files finally work properly now.

The Quest for VirusScript

I recently did a livestream where I was unearthing the (probably) forgotten mIRC script VirusScript by Virus. It is the mIRC script I used back in 2000 and it always held a very special place in my heart, in good part due to nostalgia.

I figured that I could at least turn this into a nice blog post since a lot of the heavy lifting was already done during the stream and the story has, for all intents and purposes, a happy ending. Plus, this way we can all browse history together.

If you are in the mood for reminiscing about an obscure Turkish bit of mIRC scripting from 23 years ago, today is your lucky day. Otherwise, you might want to stop reading here.

The Year: 2000

Ah, the year 2000. Back then, people actually had a sense of taste and played games like Unreal Tournament, Team Fortress Classic and Counter-Strike. Usenet was still drawing some measurable amount of breath. We were chatting on ICQ, IRC and Roger Wilco. And imagine that, the hot smartphone of the day was the venerable Nokia Communicator. Fancy that.

Back then, I used mIRC as my IRC client of choice. IRC clients are a somewhat strange breed of application, as most of them have kind of scripting language or plugin interface to extend their functionality. My choice of mIRC script was the aforementioned Virus Script by Turkish programmer Virus.

The Year: 2022

Fast forward to the present day. A lot of the “old web” has been lost to either time, page rank irrelevance or data rot. With many services ceasing operation in the mid-2000s, we lost a ton of historic data.

So, how do we find the website of a script, that has been defunct for more than 20 years? With a name that brings up all sorts of irrelevant search results?

Thankfully, some remnants still remain – given you feed search engines with the correct term.

Obviously, searching for “VirusScript” does not really help much. “VirusScript ME” is a better search term because that is the full name of the script.

Depending on your search engine, you might get a relevant result… or nothing at all.

Bing, StartPage and Kagi fail, with no relevant search results. Google gives us what we need, though:

Angelfire! This looks good!

Bingo, an Angelfire hit that lists “mIRC Scripts -Just The Best-“. But do we get a link or a download?

Why does this page look significantly better than tsukasa.io?

Luckily, we do! A link to the homepage on a cjb.net subdomain. The story of CJB Management and mIRC-X is a great and interesting tale for another day, so let’s just press on for now.

Unfortunately, CJB.net stopped the entire subdomain and hosting thing back in the mid to late 2000s. So we need to take a slight detour through archive.org‘s Wayback Machine to proceed. Since VirusScript is old enough to drink, there is a fair chance we can unearth a fully working copy of the website.

After checking the Wayback Machine’s records for vscript.cjb.net, we come up with these possible snapshots:

56 snapshots – 56 chances!

After stabbing a 2008 snapshot, we can see a barely-working landing page with nothing behind that. Let’s try a 2004 snapshot instead… same result. Perhaps 2002 is a lucky year – and indeed, it is!

Bingo!

We get an (almost) fully-working snapshot of the webpage which allows us to read some more information about Virus, his hobbies and even spy his graphics card from back in the day.

With shaking hands, we try the download. A white page. A moment of silence. And then…

Atari!

Yes, this is a working download for VirusScript ME by Virus. A script not only forgotten by most people but also lost to the internet’s constantly shifting sands.

Unfortunately, though, VirusScript is true to its name and contains a few nasties. So I recommend some caution if you are interested in this.

So, let’s fire up a virtual machine, install the script and see what’s up. It turns out VirusScript comes with a few “hacking tools” that were the talk of the town back in the late 1990s – all of which VirusTotal still has a grudge against. Windows Defender is a lot more lenient and only complains about one tool.

There are also some false positives due to the age of the mIRC executable and the fact that this specific mIRC version was also used for malicious deeds back in the day.

h4x0R t00Lz

I suppose these tools are considered harmful due to being “hacking tools” or “attack tools”. So how does VirusScript look? Well…

VirusScript ME up and running, almost like in 2000!

Launching the script is no issue, it does try to do some funky stuff with the vmm_32.vxd – but to no avail, thanks to NTFS and the fact that this is not Windows 98 anymore.

Shareware was such a beautiful thing.

The script comes with mIRC v5.8. Surprisingly, this is not a pre-cracked copy of mIRC or anything. So, let’s take a look at the script editor…

Yeah, that makes sense.

The script editor’s font has been changed. Combine that with some strange default settings for DCC (auto accept and auto run) and we’ve got ourselves a bit of fun. Even back in 1999/2000, automatically running received files was bad practice. So it is reasonable to assume this setting was chosen deliberately to possibly infect users.

There are some shenanigans going on with the script. I do not recommend people to run it. If you must, at least run it in an isolated environment that you can discard later on.

It is still a cool script, all things considered. Especially all the ASCII art fun stuff is as neat as it was 20 years ago. And it is great that archive.org preserves these otherwise forgotten parts of internet history.

Dither me beautiful

So there you have it. From a memory to a broken link to a full download. All the emotional highs and lows you want from a good story.

Synology – Storage Pool Restore Woes

After roughly 44.000 hours in service, I decided to slowly replace my trusty Western Digital Red 4TB drives with some spanking new Western Digital Red Pro 8TB ones. Partly because I am running out of storage and partly because some of the older drives started giving me elusive but terrifying dmesg outputs.

With Synology, this is usually a pretty pain-free process. You remove one old drive at a time, run an extended SMART check on the new drive and then repair/restore the storage pool with the replaced drive.

This causes three scrubs of your drives/pools for each md software RAID device (md2, md3 and md4):

With the number of drives in my ageing DS2413+, this takes about 14-ish hours per run. Except when it does not.

Sunday is SMART day. All drives run an automated extended SMART test at precisely midnight. This also takes about 14 hours. Except when it does not.

Turns out that running the SMART test during a pool restore is a mighty bad idea and slows both processes down to a crawl. I am not talking about a few performance hits, I am talking full-blown “this takes 3 times as long as it should” madness.

After about 38 hours I finally cancelled the SMART tests and the restore process finally reached acceptable speeds again.

TSE – Redone Icon

As I have eluded to in the past, I am a huge fan of the SemWare Editor or TSE Pro for short. The icon I used on the linked post was a homemade upscale of the original icon you can find on the SemWare website.

Since it probably benefits the community more to have the source file for the icon, you can find that for download here.

It is an Affinity Designer file that contains the vector-based redo. Perhaps someone has some practical use for it (i.e. shortcut icons, website banners or whatnot).

Some thoughts on Kagi search

Kagi, unrelated to the prior (and now defunct) shareware payment provider of the same name and domain, is a new search engine that has received a bit of attention over the past few weeks.

The company promises to respect the user’s privacy while still delivering a set of compelling features and high-quality, relevant, user-tunable search results. This sounds awesome, especially since other sites like Brave, DuckDuckGo, Ecosia and Startpage had their share of negative press over the last few years. SearX is a nice idea – but often does not deliver relevant results. So one could say the market is ripe for a new competitor.

Kagi offers two tiers of service: A free tier limited to 50 search queries per month and a paid 10$/month tier for unlimited queries.

The company is US-based but seemingly employs an international team of people worldwide via remote work.

Kagi’s landing page after logging in

The Good

First off, Kagi ticks all the right boxes for me. It integrates relevant additional data as well as quick access to archived copies of a site on archive.org. This does not sound like much of a feature, but I do a lot of research and this saves me some clicks.

The ability to rate the relevance of certain domains is also absolutely stellar.

As for the quality of the search results, I have no complaints. The ability to use specific “lenses” to skew results to a certain set (i.e. programming related or PDFs) is great.

The Bad

There is no way to sugarcoat this: 10$/month for a search engine is too much of an ask. I’d happily pay 5$/month for a service like this.

However, even that would not work because Kagi uses Stripe and only accepts credit cards. No Google Pay, no Paypal, no nothing – only credit cards. This is a typical issue with US-based services that do not realize credit cards are not the primary payment method in the rest of the world.

Kagi states on Hackernews that they anticipate a low search volume for their regular users (citation/link missing). I heavily disagree here. When I am using a search engine, I do not send one query. I usually do some research by using one term, run some variations on that term and new search queries based on the information I have learned from previous results.

I use my search engine of choice more than 1.7 times a day, so the free tier of Kagi would be unusable for me. And if I cannot use the search engine, there is no way I will fully commit to switching to it.

Unfortunately, the long-term sustainability and growth of the service are murky topics and something that warrants further analysis in 2-3 years – assuming we will get any kind of published data from Kagi. Will the company be able to convert enough users into customers to be sustainable and/or profitable?

The company is US-based. For many, this might seem like a great selling point, however from a privacy perspective the US are a terrible haven. The fact that government can order the silent exfiltration of data via gag orders is worrisome. Kagi assures us they do not log or collect data – but the same was also true for many VPN providers that were logging in the past decade and handed over data to the feds. An independent audit of the infrastructure, configuration and software – similar to how Mullvad operates – would go a long way to verify the claims and build trust.

Lastly, Kagi has a worrying amount of products in the pipeline. Their Orion browser is in beta and they have already announced an e-mail service on their FAQ. On the one hand, it is a good strategy to branch out and offer many different products in various categories. On the other hand, you might be spreading yourself a little thin here, Kagi.

The Bottom Line

Despite me sounding pretty negative, I do like what Kagi offers. However, the price and available payment methods (and I am not alone in this) are a big turn-off right now. A price of 10$/month is just too high for me when Newsblur takes 36$/year (which comes down to 3$/month). If Kagi magically manages to knock the price down to 5-6$/month I’d immediately subscribe.

The free tier is virtually useless for me and acts as a nice gimmick to show off how Kagi works, what features are present and what kind of results you can expect.

Ironically, this is similar to the methods employed by the shareware processor Kagi (fully functional but limited to x uses). We will see if Kagi search will last as long as the company whose name and domain it is using – or whether the party will come to a sobering end much earlier.

And even if this bitter end should come to pass, I think that having a service like Kagi is important. It shows that an increasing number of users are growing sick of being the product. And Kagi might be able to more easily innovate/refine in a similar fashion as XenForo managed to one-up vBulletin back in the day.

If you want a simple, quotable takeaway from this post, then here you go: While I currently would not pay for Kagi, I highly recommend you try it out yourself. It is an elegant search engine that did not fail me on my queries yet.

Affinity Photo: Creating a Microbutton or Antipixel

I wanted to create some new microbuttons for some of the cool stuff in the link roll.

I could, of course, use the online generator. But that would be boring – plus there is no option to add images/logos – so I would have to do some retouching anyway.

Instead I opted to create and share a simple template for Affinity Photo. You will need to install the Silkscreen font first.

It is easy to override pretty much every colour (border, text and background) and by smartly using the hierarchies in Affinity Photo, we can get some neat auto-masking.

The hardest part for me was to understand the way Affinity Photo tries to smooth elements. This is quite different from what I was used to in Photoshop.

Building a video soundboard in OBS

Despite the fact that I do not stream as much anymore, I continue to tinker with OBS on a daily basis. For a while now I wanted to have what I would call a “video soundboard”, a simple mechanism that allows me to quickly play short clips during my stream.

Now, this doesn’t really sound too hard. Create many scenes, add media sources, slap a StreamDeck button on top of that – boom, you are done. This is a crappy solution because it requires a ton of additional work to add new videos into the mix.

I wanted to have a mechanism that relies entirely on one single scene with one single media source for all the content. Control over what gets played is wholly set on the StreamDeck and the StreamDeck only, meaning that adding new content is as easy as adding a single new command to a new button on the StreamDeck.

Sounds interesting? Here is how it works.

Prerequisites

Before we start, you will need the following things ready:

The Basic Setup

Create a new button on your StreamDeck with the Text File Tools plugin.

Specify a target filename and set the Input Text to the location of your desired media file (i.e. C:/Temp/heheboi.mp4). Leave the “Append” checkbox unchecked so the entire file gets rewritten.

This is all you will need to do to add new media to the scene. We can now set up OBS.

Within OBS, create a new scene (i.e. “Scene – Memes”) and add a media source to that scene (i.e. “Media Source – Memes”). Make sure this is a media source and not a VLC source!

Open the properties of the media source and be sure to check the “Local File” checkbox, “Restart playback when source becomes active”, “Use hardware decoding when available” and “Show nothing when playback ends”.

Hide the media source via the Sources list by clicking on the “eye” icon in the source list.

Setting up Advanced Scene Switcher macros

Now open the Advanced Scene Switcher plugin via Tools – Advanced Scene Switcher, navigate to the Macro tab and add a new Macro called “Meme Scene (Start)”.

Check the “Perform actions only on condition change” checkbox and add the following condition:

[ If ] [ File ]
Content of [ local file ] [ <PATH ON STREAMDECK BUTTON> ] matches:
.*

(Yes, that is dot asterisk – no space or anything else before, after or inbetween)
Check the “use regular expressions” checkbox and the “if modification date changed” checkbox, and leave “if content changed” unchecked.

Now add the following actions:

[ Switch scene ]
Switch to scene [ Scene - Memes ]
Check the "Wait until transition to target scene is complete" checkbox.

[ Scene item visibility ]
On [ Scene - Memes ] [ Show ] [ Source ] [ Media Source - Memes ]

This takes care of actually playing the video when a change in the file is detected. But we also want to switch back to the previous scene when playback has finished, so we must add another macro.

Add the second macro “Meme Scene (End)”, check the “Perform actions only on condition change” checkbox and add the following conditions:

[ If ] [ Scene ]
[ Current scene is ] [ Scene - Memes ]

[ And ] [ Scene item visibility ] (Click the clock) [ For at least] [ 1.00 ] [ seconds ]
On [ Scene - Memes ] [ Media Source - Memes ] is [ Shown ]

[ And ] [ Media ]
[ Media Source - Memes ] state is [ Ended ]

Add the following actions to the second macro:

[ Switch scene ]
Switch to scene [ Previous Scene ]
(Check the "Wait until transition to target scene is complete" checkbox)

[ Scene item visibility ]
On [ Scene - Memes ] [ Hide ] [ Source ] [ Media Source - Memes ]

Now we should be good, right? Well, almost. While we react to changes in the file thanks to the macro and switch between the scenes, we still do not set the media file on the source. This is handled by the Lua script which we must set up as a final step.

Setting up the Lua script

Open the Scripts window via Tools – Scripts and add the VideoFileFromText.lua script.

You should see some options on the right side of the window.

Set the interval to 50ms, browse to select the same text file you used on the Elgato StreamDeck button for the Video File List, and select the “Scene – Memes” scene for the Scene, as well as the “Media Source – Memes” for the Media Source. Finally, check the “Enable script” button and you are done.

Tying it all together

Be sure that the Advanced Scene Switcher is active and press the button on the StreamDeck. The scene should switch to your Meme scene, play the video and then switch back. Add another button on the StreamDeck that writes a different video file path to the same text file.

Now press the new button, and the second video file should play.

This makes adding short clips really simple and pain-free. No need to manually create multiple scenes or deal with multi-action steps on the StreamDeck. Adding a new video is as quick as adding a new button, setting the path to the desired media file and giving it a nice button image.

Of course, this is just the solution that I came up with, so your mileage may vary.

However, I do think that the inherent simplicity makes it an ideal solution. What do you think?

Friendship ended with WebDrive

Now RaiDrive is my best friend.

After more than a decade I have finally migrated away from WebDrive. It is not that I am particularly unhappy with the product, so South River should not feel bad here. My use-case for the software simply changed over the years and WebDrive did not cater towards that.

Back in the 2000s I primarily used WebDrive to keep a connection to an FTP or SFTP system to easily manage and edit files. A perfect fit, a very reliable tool. Especially in a landscape where many applications only knew how to work with local (as in: on a local drive) files. With the advent of rich media content online, however, WebDrive’s approach to file access no longer fits my requirements.

These days, I manage pools of video and audio on remote systems. I do not want to download an entire file to “peek” into it. It is problematic for collaboration. And more importantly: It is slow and inefficient.

Enter RaiDrive, a Korean-based software that does this very well (on supported protocols).

I read some buzz online about Raidrive not being reliable, however, I cannot mirror that sentiment. The software has been reliable for me during the 2 months of daily use.

Being the old fogey that I am, I make no use of any of the hip “cloud” integrations both products offer, so I cannot speak to the quality of those. However, Raidrive uses EldoS/Callback’s reliable components – the same ones also used in my favourite sync tool Syncback Pro.

Content-based file search with Powershell and FileLocator

I love Powershell. Unfortunately, as soon as we cross into the realm of trying to grep for a specific string in gigabytes worth of large files, Powershell becomes a bit of a slowpoke.

Thankfully I also use the incredible FileLocator Pro, a highly optimized tool for searching file contents – no matter the size. The search is blazingly fast – and you can easily utilize FileLocator’s magic within Powershell!

For the sake of clarity: I will be using Powershell 7.1.3 for the following example.

# Add the required assembly
Add-Type -Path "C:\Program Files\Mythicsoft\FileLocator Pro\Mythicsoft.Search.Core.dll"

# Prepare the base search engine and criteria
$searchEngine                      = New-Object Mythicsoft.Search.Core.SearchEngine
$searchCriteria                    = New-Object Mythicsoft.Search.Core.SearchFileSystemCriteria

$searchCriteria.FileName           = "*.log"
$searchCriteria.FileNameExprType   = [Mythicsoft.Search.Core.ExpressionType]::Boolean

$searchCriteria.LookIn             = "C:\Temp\LogData"
$searchCriteria.LookInExprType     = [Mythicsoft.Search.Core.ExpressionType]::Boolean

$searchCriteria.SearchSubDirectory = $true

$searchCriteria.ContainingText     = ".*The device cannot perform the requested procedure.*"
$searchCriteria.ContentsExprType   = [Mythicsoft.Search.Core.ExpressionType]::RegExp

# Actually perform the search, $false executes it on the same thread as the Powershell session (as in: it's blocking)
$searchEngine.Start($searchCriteria, $false)

foreach($result in $searchEngine.SearchResultItems)
{
   # SeachResultItems are on a per-file basis.
   foreach($line in $result.FoundLines)
   {
      "Match in $($result.FileName) on line $($line.LineNumber): $($line.Value)"
   }
}

Wowzers, that’s pretty easy! In fact, a lot easier (and quicker, to boot!) than playing around with Get-Contents, StreamReaders and the like.

One thing of note here: Between running this on a loop for every file in a directory, it is actually quicker to process an entire tree of folders/files. The larger the dataset, the larger the gains through invoking FileLocator.

And yeah, you can use FileLocator on the command line through flpsearch.exe – however the results are not as easily digestable as the IEnumerables you get through the assembly.

The SemWare Editor is now available for free

There are two things you cannot ever have enough of: Good text editors and good file managers.

One of the arguably best commercial console-based editors for Windows with a history going back all the way to the 1980s is now available for free: The SemWare Editor.

If you have never heard or tried TSE Pro, imagine a mix between the simple and intuitive CUI of a EDIT.COM with the rich feature set of a VI, allowing you to extend and alter how the editor works by adding or modifying the included macros. The editor comes in two flavours: A true console application and a Windows-only pseudo console that has a few more bells and whistles. Of course, the purebred console version works great via SSH/telnet.

Now is a great time to give TSE a try, as the following announcement came on the mailing list:

Yes, this and future versions will be free.
The good Lord Willing, (ref: James 4:13-15),
I plan to continue working on TSE.

Sammy Mitchell

I cannot praise the editor enough and will vouch that it is worth every penny of its previous license cost.

You can grab the setup on Carlo’s TSE page.