Skip to content

Instantly share code, notes, and snippets.

@turingbirds
turingbirds / invoke.py
Last active Aug 29, 2015
Execute a child program in a new process
View invoke.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""Execute a child program in a new process"""
import os
import subprocess
def exec_binary(cmd_line_list, cwd=None, stdout=None, stderr=None, verbose=False):
"""Invoke an executable file.
@turingbirds
turingbirds / inkscape_to_dxf.rst
Last active Feb 24, 2019
From InkScape to DXF
View inkscape_to_dxf.rst

From InkScape to DXF

1. Save in Inkscape as PDF

Draft your design in InkScape. If there's any text, convert it to a path before or during exporting (Path → Object to Path).

Save as PDF (tested PDF v1.5).

@turingbirds
turingbirds / upload.php
Last active May 30, 2019
a simple php upload script
View upload.php
<?php
header("Content-Type: text/html; charset=utf-8");
function display_filesize($filesize) {
if (is_numeric($filesize)) {
$decr = 1024;
$step = 0;
$prefix = array('Byte','KB','MB','GB','TB','PB');
View ip_cam_ethernet_usb.rst

Connect an IP camera via wired ethernet to an ethernet USB adapter to a Raspberry Pi

Connect the camera to the ethernet USB adapter via a CROSSOVER cable (or via an ethernet switch).

Install DHCP server:

sudo apt install isc-dhcp-server
@turingbirds
turingbirds / launch_xscreensaver.sh
Created Apr 30, 2020
Manually launch xscreensaver; disable auto-activate
View launch_xscreensaver.sh
#!/bin/bash
# I do not want my screensaver to auto-activate after a timeout.
# For some reason, you *have* to select a nonzero, finite timeout value for xscreensaver (there's no "infinity").
# I only want my screensaver to active when I lock my system by pressing [Meta]+[L].
# This hotkey is set up to launch this script, which
# - starts the xscreensaver daemon,
# - activates the screensaver (with lockscreen enabled),
# - waits for it to terminate (unlocking logs an "UNBLANK" event),
# - then kills the xscreensaver daemon.
@turingbirds
turingbirds / ltspice_high_precision.rst
Last active Feb 4, 2022
ltspice options for high precision simulation/data export
View ltspice_high_precision.rst

ltspice options for high precision simulation/data export

Uses backward Euler integration (maxord=1 option), which can be very slow.

Set maximum iteration counts: DC iteration count limit (itl1, default: 100), DC transfer curve iteration count limit (itl2, default: 50), and transient analysis time point iteration count limit (itl4, default: 10) [ltwiki]_.

.OPTIONS maxord=1
@turingbirds
turingbirds / moore_penrose_pseudoinverse.c
Last active Feb 16, 2022
Compute the (Moore-Penrose) pseudo-inverse of a libgsl matrix in plain C.
View moore_penrose_pseudoinverse.c
/**
* Compute the (Moore-Penrose) pseudo-inverse of a libgsl matrix in plain C.
*
* Compile uding:
*
* gcc moore_penrose_pseudoinverse.c -lgsl -lblas
*
* Dependencies:
* - libgsl (GNU Scientific Library)
* - libblas (Basic Linear Algebra Subprograms)
@turingbirds
turingbirds / Agilent 82357B GPIB interface programming on Ubuntu Linux.rst
Last active Mar 11, 2022
Agilent 82357B GPIB interface programming on Ubuntu Linux
View Agilent 82357B GPIB interface programming on Ubuntu Linux.rst

GPIB interfacing using Agilent 82357B on Ubuntu Linux

I initially had some problems installing on my laptop, so decided to boot Ubuntu 12.04.5 LTS, 3.13.0-32-generic from USB and work from there.

For an automated installation script, see gpib_install.sh (and gpib.conf) below. The rest of this document describes the actions of the installation script step-by-step.

First, get the packages that are necessary to support Python bindings: