Skip to content

Instantly share code, notes, and snippets.

@smoser
smoser / README.md
Created January 25, 2022 20:14
frc code layout doc

A command based architecture is one of the designs that FRC suggests (see the TimedRobot here and command based here).

CommandScheduler.java -- I don't think we need to touch this class, but it is at the core of a command-based design; commands may specify which subsystems they interact with, and the scheduler will never schedule more than one command requiring a given subsystem at a time.

RobotCointainer.java -- define/create subsystem and command fields/objects, bind controller buttons to commands, and specify commands for autonomous routine.

SubsytemsBase.java

@smoser
smoser / README.md
Created January 11, 2022 19:37
seed user-data and metadata from a directory with network config from nocloud seed.

Seed user-data, meta-data and network config from a directory in nocloud

A while back a collegue asked me for help. He was trying to seed nocloud data from the kernel command line. Below is how I tested the functionality using LXD.

start a "normal" lxc container

$ lxc launch ubuntu:focal test1
@smoser
smoser / README.md
Last active January 11, 2022 21:29
byting irish homework assignment 1

Byting Irish Programming Assignment 1.

This assignment will get a programming environment installed on your computer. That is the environment that we'll write code in to run and drive our robot. At the end of the assigment, hopefully you'll have the environment installed and ready to work, and have executed a Java program.

Install WPILib 2022

Install the WPILib application. This will install VSCode and WPILib libraries for Java and C++ development. Follow instructions in zero-to-robot/step-2.

Some things to note:

  • You do want to install VS Code, so use "Download for this computer only"
  • You do not need "Additional C++ Installation"
@smoser
smoser / README.md
Last active June 10, 2021 15:17
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
smoser / README.md
Last active April 30, 2021 19:08
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
smoser / README.md
Last active November 17, 2021 18:39
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.

I have been maintaining a "swtpm ppa" at ppa:smoser/swtpm.

Debian/Ubuntu

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

@smoser
smoser / README.md
Created September 23, 2020 17:35
git branch cleanup tool, for deleting local and remote branches

git-branch-cleanup

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

@smoser
smoser / README.md
Created August 27, 2020 16:13
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
smoser / README.md
Last active July 23, 2020 14:47
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
smoser / README.md
Last active July 9, 2020 19:37
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