Skip to content

Instantly share code, notes, and snippets.

View whistler's full-sized avatar

Ibrahim Muhammad whistler

View GitHub Profile
@whistler
whistler / ofx2csv.py
Created April 19, 2015 23:32
Convert QFX/OFX to CSV
from csv import DictWriter
from glob import glob
from ofxparse import OfxParser
DATE_FORMAT = "%m/%d/%Y"
def write_csv(statement, out_file):
print "Writing: " + out_file
fields = ['date', 'payee', 'debit', 'credit', 'balance']
with open(out_file, 'w') as f:
@whistler
whistler / import.sh
Created March 16, 2015 17:31
Copy files to another repository while saving git history
# copied from http://gbayer.com/development/moving-files-from-one-git-repository-to-another-preserving-history/
git clone <git repository A url> # clone source repository
cd <git repository A directory>
git remote rm origin # to make sure it doesn't affect the original repository
git filter-branch --subdirectory-filter <directory 1> -- --all # remove all files other than the ones needed
mkdir <directory 1> # move them into another directory where they will be stored in the destination repository (if needed)
mv * <directory 1>
git add .
git commit
{
"$schema": "https://raw.githubusercontent.com/jsonresume/resume-schema/v1.0.0/schema.json",
"basics": {
"name": "Ibrahim Muhammad",
"label": "Technical Manager at EarthDaily Analytics | Machine Learning, Cloud Computing, Geospatial",
"image": "",
"email": "ibmmmm@gmail.com",
"phone": "",
"url": "",
"summary": "Technical manager for a team creating a satellite image processing system.\n\nSoftware Engineering: Received Developer 30 Under 30 award. Full-stack software engineering experience working on data pipelines, cloud infrastructure, web user interfaces, API services and CICD.\n\nMachine Learning: Neural Networks, Convolutional Neural Networks/Deep Learning, Computer Vision, Image Classification & Semantic Segmentation, Reinforcement Learning\n\nTechnical Leadership: Manager for an Earth Observation Analytics Ready Data team. Maximizing ROI as a Product Owner and streamlining team processes as a ScrumMaster.",
@whistler
whistler / no_overflow.css
Created August 17, 2012 20:09
Make sure child div stays inside parent div
.parent
{
position: relative;
}
@whistler
whistler / jenkins_rails_ubuntu.sh
Created July 26, 2012 02:33
Set up Jenkins and Rails on Ubuntu server
sudo aptitude install build-essential libssl-dev libreadline5 libreadline5-dev zlib1g zlib1g-dev
sudo apt-get install libxslt-dev libxml2-dev
sudo apt-get install libmysqlclient-dev ruby-dev
sudo apt-get install libcurl4-openssl-dev
sudo apt-get install imagemagick libmagickcore-dev libmagickwand-dev
sudo apt-get install libsqlite3-dev
sudo apt-get install libreadline-dev
### Install Java ###
sudo apt-get install openjdk-6-jre-headless
@whistler
whistler / setup.sh
Last active July 25, 2018 21:54
Conda environment for deep learning, image processing, data science
# To install the most recent version go to https://www.anaconda.com/download/
wget https://repo.anaconda.com/archive/Anaconda3-5.2.0-Linux-x86_64.sh
bash Anaconda3-5.2.0-Linux-x86_64.sh
conda install -y -c conda-forge jupyterlab
conda install -y scikit-learn
conda install -y pytorch torchvision cuda91 -c pytorch
conda install -y opencv matplotlib scikit-image
conda install -y affine #rasterio
pip install rasterio==1.0.1 # conda does not have v1 of rasterio yet
@whistler
whistler / merge_aois.py
Created April 6, 2018 02:47
Merge two GeoJSON AOIs into one
from functools import reduce
import shapely.geometry
import geojson
def merge_aois(aois):
shapes = (shapely.geometry.asShape(aoi) for aoi in aois)
union = reduce(lambda a, b: a.union(b), shapes)
merged_aoi = geojson.Feature(geometry=union, properties={})
return merged_aoi
@whistler
whistler / add_swap.sh
Created November 2, 2017 03:32
Add more swap space on Ubuntu 17
count=12288
sudo swapoff -a
sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
sudo mkswap /swapfile
sudo swapon /swapfile
@whistler
whistler / list_comprehension_benchmark.py
Created February 21, 2017 21:31
Benchmark loops vs list comprehension
N = 10000000
def loops():
nums = []
for num in range(N):
nums.append(num*2)
#print nums
def list_comprehensions():
@whistler
whistler / async_await.js
Created February 21, 2017 21:23
Javascript Async Await
function fetch(url, callback) {
console.log('Getting ' + url);
var delay = (Math.round(Math.random() * 1E4) % 4000) + 1000
var response = 'Content for ' + url;
setTimeout(function() {
callback(response)
}, delay);
}
function promiseFetch(url) {