Skip to content

Instantly share code, notes, and snippets.

#!/usr/bin/env python3
# Script to solve "Kitchen Sorting" puzzles at GameSnacks.com
# (https://gamesnacks.com/games/757entlesmh4g) but presumably generalizable
# to any similar sorting game.
#
# Define the puzzle by creating a text file where each line in the file
# represents a tube in the game and is either a single hyphen to indicate that
# the tube starts empty or a whitespace separated list of the items in the
# tube. Change the `puzzle_file` variable below to the file name containing the
@jikamens
jikamens / nas-botnet-complaint.pl
Created March 21, 2025 21:59
script for generating complaints about botnets attacking a Synology NAS
#!/usr/bin/env perl
# Script for pulling "admin" login failure logs from a Synology NAS and
# generating complaint emails to the abuse contacts for the IP addresses in the
# logs.
#
# You need to have the NAS set up so that you can SSH into it as root to be
# able to use this script. Follow the instructions here to enable SSH to the
# admin accounts:
# https://kb.synology.com/en-us/DSM/tutorial/How_to_login_to_DSM_with_root_permission_via_SSH_Telnet
@jikamens
jikamens / cups_conf.py
Created December 29, 2024 02:04
Ansible module for editing CUPS config files such as printers.conf
#!/usr/bin/python3
# Copyright (c) 2024, Jonathan Kamens <[email protected]>
# GNU General Public License v3.0+
# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
import copy
import os
import re

The canonical location of this list has moved here.

@jikamens
jikamens / browserAction.html
Created September 18, 2023 18:56
messenger.mailTabs.getSelectedMessages() demo
<!DOCTYPE html>
<html>
<body>
<div id="messageList">
</div>
<script src="browserAction.js"></script>
</body>
</html>
@jikamens
jikamens / bitwarden-backup.py
Last active August 27, 2025 15:37
Simple script for backing up your Bitwarden vault using the Bitwarden CLI
#!/usr/bin/env python3
# Simple script for backing up your Bitwarden vault using the Bitwarden CLI
#
# Copyright 2021 Jonathan Kamens <[email protected]>
#
# This program is free software: you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation, either version 3 of the License, or (at your option) any later
# version.
@jikamens
jikamens / server-sucker.el
Last active August 27, 2025 15:33
Keep the Emacs server running in the Emacs in the current active systemd session
;; Copyright 2023 Jonathan Kamens <[email protected]>.
;;
;; This program is free software: you can redistribute it and/or modify it
;; under the terms of the GNU General Public License as published by the Free
;; Software Foundation, either version 3 of the License, or (at your option)
;; any later version. See <https://www.gnu.org/licenses/>.
;;
;; This program is distributed in the hope that it will be useful, but WITHOUT
;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
;; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
@jikamens
jikamens / perlmod_install_info.py
Last active August 10, 2024 18:05
Ansible module to figure out from where to install Perl modules
#!/usr/bin/python
# Copyright (c) 2023, Jonathan Kamens <[email protected]>
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
# pylint: disable=missing-module-docstring
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
@jikamens
jikamens / namecheap-dns.py
Last active August 14, 2025 03:03
namecheap-dns.py - Export/import DNS records from/to Namecheap
#!/usr/bin/env python3
"""
namecheap-dns.py - Export/import DNS records from/to Namecheap
This script can export DNS records from a domain in Namecheap to a YAML file or
import records from a YAML file in the same format into Namecheap. I use this
script to maintain my Namecheap DNS records in a source repository with change
history, i.e., "configuration as code" for my Namecheap DNS records.
@jikamens
jikamens / toodledo-agenda.py
Last active August 27, 2025 15:34
toodledo-agenda.py - Prepare your daily agenda in Toodledo
#!/usr/bin/env python3
'''toodledo-agenda.py - Prepare your daily agenda in Toodledo
Toodldeo doesn't _quite_ do the right thing, at least for me, whether I sort by
date and then priority, or by priority and then date.
* If I sort by date first, then top-priority items that aren't due by a
specific date get pushed all the way to the bottom of my to-do list and I
never see them.