Skip to content

Instantly share code, notes, and snippets.

smoser /
Last active Jun 10, 2021
Using -proposed on Ubuntu selectively

Enabling and Selectively using Ubuntu -proposed.

Often times people will want to test a package from -proposed, but do not want the whole ball of wax.

This covers how you can selectively use -proposed.

It is based on the backports doc. But also mentioned in EnableProposed in the Ubuntu Wiki. I used 'priority' of 400 below. You can read more about priority in apt_preferences(5).

After doing this you can leave -proposed enabled and your 'dist-upgrade' will not pull from it.

smoser /
Last active Apr 30, 2021
firefox , java, flash in a container

Flash, Java and Firefox in a functional container

Revisit the days of yesteryear by running unsupported and abandoned and security-vulnerability infested software. This will build a container with old enough versions of firefox, flash and java to all work together.

My purpose was to access a non-updated Cisco Integrated Management Controller (CIMC). Older versions used flash-only but required java plugin for KVM access.

It should be obvious to the reader that running out of date software might not be a good idea.

How to build

build the container

smoser /
Last active Apr 27, 2021
swtpm / libtpms notes

swtpm notes

Info on how to build/use swtpm and libtpms. Pretty good doc at swtpm wiki. Qemu page has good info also, including qemu command lines. Qemu tpm.


libtpms and swtpm seem to be working their way into debian/ubuntu.

smoser /
Created Sep 23, 2020
git branch cleanup tool, for deleting local and remote branches


git-branch-cleanup basically just allows me to do housekeeping more easily on my many branches.

smoser /
Created Aug 27, 2020
golang (go) cmd.ExtraFiles example

This is an example of using cmd.ExtraFiles in golang with a os.Pipe()

There are 2 things that might be a bit tricky:

  • the order of closing the read and write side of the pipe. I got this right by reading the implementation of cmd.StderrPipe.
  • the number of the file descriptor for the child. I'm not sure of a good way to cleanly determine what that is. Golang cmd processes do not inherit all open filehandles, so you can't just use pipeWrite.Fd().

Ultimately, we did this because we were working with tssnvread which is possibly the worst user interface I've ever seen. We wanted to read the contents without writing to a file on the filesystem. To do so, we were able to tell it to write to /proc/self/fd/.

smoser /
Last active Jul 23, 2020
proxy setup using tiny proxy

proxy setup using tiny proxy and proxy command

set up tinyproxy and /etc/environment for system wide proxy.

By default, this only reports how you can set this up. No changes to the system will be made unless the first argument is 'update' or UPDATE=1 is found in the environment.

No root access is required for dry-run.

The values configured at the top of the script are for an internal

smoser /
Last active Jul 9, 2020
bootstrap (bs) run (vcs-run)

Docker ubuntu containers are pretty useless by themselves. The expectation is that the user will create a DockerFile and build their own image and push that image somewhere and maintain it.

In 2013 I authored vcs-run as part of cloud-utils. It is installed by default in ubuntu server images, but not in the docker images. :-(. The idea of vcs-run is that you can just invoke something like:

vcs-run https://your.git.server/repo.git bootstrap your-args-here

vcs-run would handle:

  • installing git
  • cloning repo
  • change dir to repo
smoser /
Last active Jul 22, 2020
codimd-index create an index for codimd

codimd-index: maintain a global index for codimd pages.

We have a team codimd and it is wonderful. We have CMD_ALLOW_FREEURL=true so that users can create alias'd (named) pages.

Users can't see each others pages though, unless they know to look for them (codimd/#975).

This is just a "manually updated" script to generate a simple index page. It'd be wonderful if codimd/#103 was fixed, then we could generate a table and let user sort.

To run it, you need pyscopg2 (apt install python3-psycopg2).


smoser /
Created Jun 12, 2020
demo of yaml anchors and yaml-dump script.

yaml anchors demo

yaml anchors are:

  • useful
  • confusing
  • hard to google for

yaml can be quite hard to read and see if it is valid.

I use 'yaml-dump' script here to just load a file and dump it as json to more easily see what it loads as.

smoser /
Last active Jul 17, 2020
build-upstream-pkg build a package from upstream source


Usage: build-upstream-pkg [ options ] <<ARGUMENTS>>

   build-upstream-pkg <upstream-commitish> <packaging-commitish>

      --version  VERSION    make the upstream version VERSION
                            default is to use git-describe
      --output   DIR        put created files in DIR