Skip to content

Instantly share code, notes, and snippets.

Christoph Gerneth c7h

Block or report user

Report or block c7h

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
c7h / ipynb
Created Dec 9, 2019
Install a pip package in jupyter (the right way)
View ipynb
# Install a pip package in the current Jupyter kernel
import sys
!{sys.executable} -m pip install plotly
c7h /
Created Sep 6, 2018
Read an I2C Portexpander
printf "76543210 76543210\n"
while :
v=$(i2cget -y 0 $ADDRESS 0x00 w)
echo ${v: -4:4} | xxd -r -p | xxd -b | awk '{split($0,a," "); printf "%s %s\r", a[2], a[3]}'
View rotarydial.ino
/* Rotary Dial encoder
encode the rotary dial of an old analog phone.
by Christoph Gerneth
const int active_pin = 2;
const int pulse_pin = 3;
int number_counter = 0;
int last_pulse_state = 0; // last state of the rotary dial pulser
int last_active_state = 0;
c7h / gist:cbba43f1c3d58250f9c9fc7bd39ebba7
Created Jul 17, 2017
major and annoying differences between module versions of Pythons JSON Library
View gist:cbba43f1c3d58250f9c9fc7bd39ebba7
Two versions of the same library behave completely different :-/
the PI
Python 3.4.2 (default, Oct 19 2014, 13:31:11)
[GCC 4.9.1] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import json
>>> try:

Keybase proof

I hereby claim:

  • I am c7h on github.
  • I am c7h ( on keybase.
  • I have a public key ASCdetH8IgkxSS8N_CBwRxZhqthPiFpK-iGS4vlIn1vtUQo

To claim this, I am signing this object:

c7h /
Created Dec 9, 2015
logfile evaluation
my $user_c = 0;
my $user_min = 0;
my @ip = ();
while(<>) {
if (m/(^\w+).*(\d{2}:\d{2})/) {
if ($1 eq 'christoph'){
$user_c++; # user_zaehler erhöhen
c7h /
Created Nov 16, 2015
understanding binary search trees
class BinSearchTreeElement(object):
def __init__(self, data, leftTree=None, rightTree=None): = data
self.left = leftTree
self.right = rightTree
def add(self, element):
if element <=
self._insertElement(self.left, element)
c7h / gist:e0aa37201f255fd5e92a
Created Jul 3, 2015
CSV DictWriter Example
View gist:e0aa37201f255fd5e92a
__author__ = 'Christoph Gerneth'
from csv import DictWriter
from random import randrange
filename = 'data.csv'
label = ['x-axis', 'y-axis']
with open(filename, 'w') as f:
csvw = DictWriter(f, fieldnames=label)
View gist:e2c73880159ab3502539
__author__ = 'Christoph Gerneth'
Decorators are one of the most powerful patterns. They can be used to
inject code in functions, modify them and infuence their beihavior.
Here is an example:
class Tools(object):
def sayhello(self, func):
c7h /
Created Jun 14, 2015
the _drop-method is used for unittesting. Easy way to get rid of all your old instances.
__author__ = 'Christoph Gerneth'
class SingletonType(type):
def __call__(self, *args, **kwargs):
return self.__instance
except AttributeError:
self.__instance = super(SingletonType, self).__call__(*args, **kwargs)
return self.__instance
You can’t perform that action at this time.