Skip to content

Instantly share code, notes, and snippets.

View resume.json
{
"meta": {
"theme": "elegant"
},
"basics": {
"name": "Ivo Bathke",
"label": "Software Developer",
"picture": "https://gist.githubusercontent.com/ivoba/e60c4a537dfa773d37f12cfc02a33798/raw/6c5f4160e1ba2956bcf28eb90bf8eeac30374ba3/resume_ivoba.JPG",
"summary": "I am a senior Software Developer with 20+ years experience in APIs and web applications for ecommerce, travel industry and other sectors. I prefer the backend yet im not afraid of frontends. I even can do DevOps, i would not call me a Admin though. I like open source, remote work, putting tickets to \"Ready for Review\", meetings in videochats across timezones, tagging releases, refactoring, writing tests, checking the commit log and posting smilies to the chat.",
"website": "https://ivo-bathke.name",
@ivoba
ivoba / composer.json
Created Apr 11, 2022
SilverStripe 4.10 & PHP8.1 fix deprecation warnings
View composer.json
"require": {
...
"cweagans/composer-patches": "^1.7"
...
"extra": {
"patches": {
"silverstripe/framework": {
"Fix SilverStripe deprecations error_reporting for PHP 8.1": "./fix-deprecation-error_reporting.4.10.4.patch"
}
}
@ivoba
ivoba / filterCsv.mjs
Last active Jan 17, 2022
Filter a csv file with nodejs streams
View filterCsv.mjs
import {pipeline} from 'stream';
import {parse, transform, stringify} from 'csv';
import {createReadStream, createWriteStream} from 'fs';
pipeline(
createReadStream(`./members.csv`),
parse(),
transform(data => data[2] !== '' ? data : null),
stringify({}),
createWriteStream(`./members_filtered.csv`),
View SS4_lemp_config.conf
server {
listen 80;
# server_name domain.tld www.domain.tld;
index index.php;
root /var/www/current;
charset utf8;
autoindex off;
View init.coffee
# Your init script
#
# Atom will evaluate this file each time a new window is opened. It is run
# after packages are loaded/activated and after the previous editor state
# has been restored.
#
# An example hack to log to the console when each text editor is saved.
#
# atom.workspace.observeTextEditors (editor) ->
# editor.onDidSave ->
@ivoba
ivoba / gist:faf0cff10410024f87e0
Created Jun 17, 2015
VarDumper dump javascript error #15015
View gist:faf0cff10410024f87e0
<script> Sfdump = window.Sfdump || (function (doc) { var refStyle = doc.createElement('style'), rxEsc = /([.*+?^${}()|\[\]\/\\])/g, idRx = /\bsf-dump-\d+-ref[012]\w+\b/; doc.documentElement.firstChild.appendChild(refStyle); function toggle(a) { var s = a.nextSibling || {}; if ('sf-dump-compact' == s.className) { a.lastChild.innerHTML = '&#9660;'; s.className = 'sf-dump-expanded'; } else if ('sf-dump-expanded' == s.className) { a.lastChild.innerHTML = '&#9654;'; s.className = 'sf-dump-compact'; } else { return false; } return true; }; return function (root) { root = doc.getElementById(root); function a(e, f) { root.addEventListener(e, function (e) { if ('A' == e.target.tagName) { f(e.target, e); } else if ('A' == e.target.parentNode.tagName) { f(e.target.parentNode, e); } }); }; root.addEventListener('mouseover', function (e) { if ('' != refStyle.innerHTML) { refStyle.innerHTML = ''; } }); a('mouseover', function (a) { if (a = idRx.exec(a.className)) { refStyle.innerHTML = 'pre.sf-dump .'+a[0]+'{background-col
@ivoba
ivoba / Dockerfile
Created Feb 20, 2015
php5.5 with pimple c extension
View Dockerfile
FROM ubuntu:14.04
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && apt-get install -y \
php5-dev \
php5-cli \
php5-fpm \
php5-json \
php5-intl \
@ivoba
ivoba / post-merge
Created Nov 13, 2014
post-merge hook for composer php apps
View post-merge
#/usr/bin/env bash
# MIT © Sindre Sorhus - sindresorhus.com
# forked by Gianluca Guarini
# phponly by Ivo Bathke ;)
changed_files="$(git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD)"
check_run() {
echo "$changed_files" | grep --quiet "$1" && eval "$2"
}
@ivoba
ivoba / app.js
Last active Dec 26, 2015
bower & masonry & imagesloaded & requirejs
View app.js
define(['masonry/masonry', 'imagesloaded/imagesloaded'], function(Masonry, imagesLoaded) {
$(document).ready(function() {
var container = document.querySelector('#masonry');
imagesLoaded(container, function() {
var msnry = new Masonry(container, {
columnWidth: 200,
gutter: 20,
itemSelector: '.item',
isFitWidth: true
});
View MemberProfileFieldExtension.php
<?php
class MemberProfileFieldExtension extends DataExtension {
public static $db = array(
'SortOrder' => 'Int'
);
function updateCMSFields(FieldList $fields) {
$fields->push(new NumericField('SortOrder', 'SortOrder'));