Timewarp Technologies Blog v2

Leveraging search engines to keep my notes

Jan 22, 2025 - 1 minute read

Click Once App Cache

ClickOnce was frequently used for custom WinForms apps that were deployed within small to medium business environments. The ease with which the installer can be created combined with auto updating being a base feature made it attractive. However, it can fail to work with alarming frequency. When that happens, there is a simple command that will improve the chances of a reinstall succeeding:

rundll32 dfshim CleanOnlineAppCache

This command does what the argument claims: it cleans the “app cache”, which is where Click Once installs are located. I recommend uninstalling the offending app, running that command and then reinstalling normally. This fixes most ClickOnce install issues. In some extreme cases, I have found filesystem damage within

Aug 23, 2024 - 2 minute read

Nat Is Good for You

On my old blog, I had a post with the same title. The basic premise was simply this: consumer grade NAT acts as an “accidental” firewall, with your router only allowing traffic back to your PC in the cases where you initiated an outbound connection or you explicitly opened a port up to be statically available (port forwarding). The net result was not as good as a full fledged firewall with content inspection and other features, but to be honest, it prevented many people from having drive-by scanners exploit insecure operating systems and applications.

May 5, 2021 - 1 minute read

GPT 3 in the Wild

The GPT 3 text machine learning network had received a lot of press when it was unveiled, but I am surprised how quickly it is being commercialized.

The article covers the concerns well enough (propagation of bias and lack of constraints on output without humans supervision) but I suspect the biggest real world impact we will in the short run is in the search space. With the ease at which low-effort pages will be able to be fired off by those looking for a little SEO juice, search engines may be far less effective in the near future without careful tuning.

Apr 30, 2021 - 1 minute read

Scripting Creation of Posts

Next we script the creation of posts, which sit in a defined directory. This reduces the overhead to running the newpost.ps1 and when edits are complete running the previous up.ps1 command.

Apr 29, 2021 - 2 minute read

Automation of the Hugo Upload

Now that we have a few posts under our belt, it is time to automate the process of updating the site. For this I selected powershell as we are doing many small scripts in Azure DevOps using the tool and it is well supported on Windows 10. I decided to use WinSCP to perform the sync of the files, which keeps the transfer times down as it only concerns itself with uploading changed files.

Apr 21, 2021 - 1 minute read

Google Mail IP Addresses on Black Hole List

Some of my clients use Google’s offerings, especially for email. One client in particular kept reporting that some of their emails were being blocked with 553 sorry, your envelope sender is in my badmail list. (#5.7.1) results. We thought it was something in our configuration and reviewed the SPF, DKIM and DMARC settings, but found not issues. Eventually we got through to a Google support rep, who initially claimed it was our configuration, but eventually admitted that some of their outgoing IPs are on real time black hole lists.

Apr 21, 2021 - 1 minute read

Using git Sub Modules

Static site generator create new opportunities for streamlined workflow. For Hugo, I created two git repositories, once for the blogs’ source and one for the static output. I then checked them out, first the source repository normally: git clone https://<path-to-source-repo>.git. Then I cloned the output repository inside the source repo as a sub-module: git submodule add https://<path-to-output-repo>.git public. The “public” folder in this case was directly inside

With this done I can edit the source repo, add new blog posts or make style changes. Then, running the hugo command outputs into the sub-module. Committing the top level repository does not commit the output, which is what we want. Instead, you change the directory to the sub-module’s folder and then run git commands there to affect the sub-module’s repository.

Apr 19, 2021 - 2 minute read

Initial Hugo Configuration

To get Hugo off the ground, I used the Chocolatey package manager to install the software. Using a pre-compiled version turned the normally annoying process of tweaking the npm install process into a single line: choco install hugo -confirm.

From there I followed the quick start, adding a theme and then creating a first post. Hugo doesn’t really care what content is in the content folder, but it does use utility sub-commands like hugo new posts/my-first-post.md to create a mark down file with some meta data. Once you have some content, you can run hugo server -D and it will watch the files in your system for changes and update them in real time. This gives it a bit of a feel of a content management system, with none of the deployment work.

Apr 19, 2021 - 2 minute read

New Site

My old blog fell by the wayside when Drupal started having so many security flaws that managing the site was taking a large amount of time from my work day. I have wanted to have a place to post my findings in software development, new utility programs that I find useful and so on, but setting up a full content management system again seemed to simply be an exercise in busywork.