Skip to content

Instantly share code, notes, and snippets.

Ismaïl Baaj ibaaj

  • Paris, France
View GitHub Profile
import numpy as np
import skfuzzy as fuzz
import matplotlib.pyplot as plt
import sys
import matplotlib
matplotlib.rc('font', **{'sans-serif' : 'Arial',
'family' : 'sans-serif'})
View pasta
Acini di pepe,2,-,3,-,-,lisse,lisse,solide,droit,9
Cannolicchi rigati,8,-,41,-,-,lisse,strié,creux,droit,11
ibaaj /
Created Aug 13, 2018 — forked from laanwj/
tools to write (block) data to png files and vice versa
#!/usr/bin/env python3
# Distributed under the MIT software license
import binascii, struct, sys, io, argparse
from PIL import Image
IMG_WIDTH = 512 # could be made adaptive...
MIN_HEIGHT = 4 # minimum height of image; twitter won't let us upload anything smaller
def div_roundup(x,y):
View p.tex
\documentclass[a4paper, 12pt]{article}
\input xy
ibaaj /
Created Oct 13, 2017 — forked from Tomasvrba/
HD 360° Timelapse and FFmpeg tutorial

How to capture, stitch and publish a 360° timelapse

Consumer ready 360° cameras are becoming ever more accessible and many people are experimenting with a variety of 360° content. Out of the many cameras on the market the Ricoh Theta S is one of the most user-friendly, turn-key solutions with lots of built-in features. However, the camera's videos are limited 1920x960 resolution and the Theta+ app only lets you create a timelapse with up to 300 or 400 images. The workaround is to use interval shooting to capture as many images as you'd like at the 5376x2688 to full resolution and then stitch them together manually into an HD video. There are few GUI solutions (especially open-source/free) which let you do this with ease. Here's how you do it:

Set up interval shooting on your Ricoh Theta S

rm -rf ./frames ./ftop ./fbottom ./final;
mkdir -p {frames,ftop,fbottom,final};
ffmpeg -i IMG_6501.MOV -r 25 -qscale:v 2 frames/%05d.jpg ;
framesNumber=$(ls ./frames/*.jpg |wc -l|tr -d ' ');
View gist:0b6bb25e9c307a66783dc4535f61c8de
digraph mainmap {
resolution = 72;
node [fontsize = 10];
edge [fontsize = 9];
overlap = false;
splines=true;xSatisfiability [label= "SATISFIABILITY" URL= ""style="bold", shape="ellipse", peripheries="2", fontsize ="14"];
xCircuitSatisfiability [label= "CIRCUIT SATISFIABILITY" URL= "" style ="filled", fillcolor ="#eeeeee" style="bold", shape="ellipse", peripheries="2", fontsize ="14"];
xMaxCut [label= "MAX CUT" URL= ""];
xJobSequencing [label= "JOB SEQUENCING" URL= "" style ="filled", fillcolor ="#eeeeee" ];
import json
import csv
thuneEUR = 100
thuneETH = 0
paramChange = 1
s = 0 # 0 = faire rien, -{paramChange} vendre, +{paramChange} acheter
View data.csv
date value
2017-05-08 02:25:05 84.2557611
2017-05-08 02:30:03 84.39944492
2017-05-08 02:35:04 84.80249011
2017-05-08 02:40:03 85.00872619
2017-05-08 02:45:04 84.94212441
2017-05-08 02:50:05 84.9358578
2017-05-08 02:55:03 84.88719833
2017-05-08 03:00:06 84.82001123
2017-05-08 03:05:06 84.74269385
ibaaj /
Last active May 4, 2017
Ethereum Notification System
import urllib.request
import json
import datetime
import csv
import matplotlib.pyplot as plt
import matplotlib.dates as md
import dateutil
import os
from pushbullet import Pushbullet
You can’t perform that action at this time.