Disable Sticky Keys on Windows

Many games use the Shift and Num Lock keys for control. In Kerbal Space Program Shift increases the throttle.

On Windows, when you press the Shift key five times, the OS interrupts the game display and switches to a prompt asking if you want to turn on Sticky Keys.

Pressing the Num Lock key for five seconds enables sound when you press the Caps Lock, Num Lock, or Scroll Lock.

Pressing the right Shift key for eight seconds turns on the Filter Keys functionality.

To disable the Sticky Keys, Toggle Keys, and Filter Keys prompts

  • Open Settings
  • On the Keyboard page uncheck
    • Allow the shortcut key to start Sticky Keys
    • Allow the shortcut key to start Toggle Keys
    • Allow the shortcut key to start Filter Keys

Engine is missing for the Kerbal Space Program tutorials

The Kerbal space program tutorials still reference the old LV-T45 “Swivel” Liquid Fuel Engine, but the default Engines tab does not contain it. To access the engine

  1. In the upper left corner click the Enable advanced mode icon
  • Click the Filter by Cross-Section Profile icon
  • Select the LV-T45 “Swivel” Liquid Fuel Engine

How to change a Git commit message after push

To change a Git commit message after the commit has been pushed

  • Open a terminal in the repository folder
  • Use the interactive rebase command to retrieve the specified number of recent commit messages
git rebase -i HEAD~3
  • The list of the recent commits appears in your default text editor
  • Replace the word pick with reword in the lines you want to change, save and close the file.
  • A new text file opens for each selected commit message. Edit the messages, save and close the files.
  • Safe force push the updated commits with
git push --force-with-lease

This command will abort if there was a change in the repository since the original commit.

ModuleNotFoundError: No module named ‘googleapiclient’

When we start to use a Python module, we need to install it on our workstation, and on the server, or in the Docker container where the application will run.

ModuleNotFoundError: No module named ‘googleapiclient’

Usually, we install the module with the pip install MODULE_NAME command, but when we try it for the googleapiclient we get the error message

ERROR: Could not find a version that satisfies the requirement googleapiclient (from versions: none)
ERROR: No matching distribution found for googleapiclient

To install the googleapiclient Python module, use the command

pip install google-api-python-client

To install the module in the Docker container add the line to the Dockefile

# Install app dependencies
run pip install --upgrade google-api-python-client

Record multiple keystroke macros in Stream Deck

Stream Deck is a great programmable keyboard to organize frequently used functions in games and other programs. In games, we usually store one keystroke per button, but we can store longer macros for Google Sheets and other applications.

To store multiple keystrokes in one Stream Deck button

  • Open the Stream Deck app
  • Drag the Multi Action icon to one of the keys from the Stream Deck section
  • Select an icon and enter a title for the button
  • Drag the Hotkey icon from the System section
  • Click the Hotkey field and press the key you want to store.
  • To store special keys, select them in the drop down.
  • Drag more Hotkey icons to the rectangle to store the rest of the keystrokes.

Cannot connect to an AWS EC2 Windows instance with WINRM

When we launch an AWS EC2 instance with Windows 2012, Windows 2016, Windows 2019, the “Administrator” local account is automatically created and added to the Administrators group. We can decrypt the Administrator password using the private key of the key pair we used to launch the server.

On Windows servers WINRM access is necessary during the bootstrap process to install the Chef Infra Client and set up the node to communicate with the Chef Infra Server.

When we try to access the instance via WINRM using the “Administrator” account, the Windows Event Log saves an error entry with Login Failure.

To access the server with WINRM

  • Create a new local user account and add it to the Administrators group,
  • Open inbound port 5985 in the AWS security group,
  • Make sure inbound port 5985 is enabled in the Windows firewall,
  • Configure WINRM running the command in a PowerShell window:
    winrm quickconfig
  • Make sure the WINRM listener is enabled by running the command in a PowerShell window:
    winrm e winrm/config/listener

An argument named “root_block_device” is not expected here. Did you mean to define a block of type “root_block_device”?

In the Terraform script to create an AWS EC2 instance, we can specify the volume sizes. Separate arguments describe the root and data volumes. This feature enables the script to create the volumes without specifying the connection attributes in another block.

The Terraform documentation does not show the syntax, and the Terraform example at the time of writing this in GitHub is NOT correct at https://github.com/terraform-aws-modules/terraform-aws-ec2-instance/blob/528613d4580f2c1266e87d8d24fc25bf5290fe2c/examples/complete/main.tf#L113

If the syntax is not correct get the error message:

An argument named “root_block_device” is not expected here. Did you mean to define a block of type “root_block_device”?

An argument named “ebs_block_device” is not expected here. Did you mean to define a block of type “ebs_block_device”?

The correct syntax is

resource "aws_instance" "default" {

  ami                         = "ami-0da7a37366e7ee5f0"
  instance_type               = "t3.medium"
...
  root_block_device {
      volume_type = "gp2"
      volume_size = 100
      tags = {
        Name = "my-root-block"
      }
    }

  ebs_block_device {
      device_name = "xvdf"
      delete_on_termination = true
      volume_type = "gp2"
      volume_size  = 500
    }
  ...
}