Skip to content

Instantly share code, notes, and snippets.

View neumachen's full-sized avatar
🏠
Working from home

Kareem H neumachen

🏠
Working from home
  • Bergen, Norway
  • 06:48 (UTC -12:00)
View GitHub Profile
@neumachen
neumachen / load_dotenv.sh
Created October 21, 2023 21:14 — forked from mihow/load_dotenv.sh
Load environment variables from dotenv / .env file in Bash
if [ ! -f .env ]
then
export $(cat .env | xargs)
fi
@neumachen
neumachen / list.go
Created September 27, 2023 06:09 — forked from pje/list.go
A simple golang implementation of a doubly-linked list that supports generics.
// A generic doubly-linked list
package list
// the zero value is ready to use.
type List[T any] struct {
root Element[T]
Len int
}

The following snippet contains an example for GoLang Generics for Structs:

package main

import "fmt"

// Structs definition
type ObjectOne struct {
	Name string      `json:"name"`
@neumachen
neumachen / nvme_mount.md
Created April 16, 2023 19:46 — forked from a-maumau/nvme_mount.md
how to mount m.2 ssd/hdd
@neumachen
neumachen / multi-arch-docker-ci.sh
Created March 5, 2023 02:24 — forked from ArturKlauser/multi-arch-docker-ci.sh
Building Multi-Architecture Docker Images With Buildx
#!/bin/bash
# (c) 2020 Artur.Klauser@computer.org
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
# This script installs support for building multi-architecture docker images
# with docker buildx on CI/CD pipelines like Github Actions or Travis. It is
# assumed that you start of with a fresh VM every time you run this and have to
# install everything necessary to support 'docker buildx build' from scratch.
#
# Example usage in Travis stage:
@neumachen
neumachen / docker-traefik-label.txt
Created July 4, 2022 18:48 — forked from ismailyenigul/docker-traefik-label.txt
docker labels for traefik reverse proxy multiple ports in a single container with different domain names
--label "traefik.enable=true" \
--label "traefik.protocol=http" \
--label "traefik.first.port=80" \
--label "traefik.first.frontend.rule=Host:web1.example.com" \
--label "traefik.second.port=8080" \
--label "traefik.second.frontend.rule=Host:web2.example.com" \
Above labels will allow us to forward web1.example.com to docker container port 80 and web2.example.com to same container's port 8080
@neumachen
neumachen / README.md
Created July 3, 2022 22:52 — forked from mahemoff/README.md
Vim Terminal Mode - A short introduction

Vim has a Terminal Mode!

Since v8.1 (May 2018), Vim has shipped with a built-in terminal. See https://vimhelp.org/terminal.txt.html or type :help terminal for more info.

Why use this? Mainly because it saves you jumping to a separate terminal window. You can also use Vim commands to manipulate a shell session and easily transfer clipboard content between the terminal and files you're working on.

Key Bindings

@neumachen
neumachen / gist:fb30a03ff9e9c9fa9d9aed7711cd72ec
Created March 23, 2022 22:52 — forked from junegunn/gist:f4fca918e937e6bf5bad
Browsing git commit history with fzf
# fshow - git commit browser (enter for show, ctrl-d for diff, ` toggles sort)
fshow() {
local out shas sha q k
while out=$(
git log --graph --color=always \
--format="%C(auto)%h%d %s %C(black)%C(bold)%cr" "$@" |
fzf --ansi --multi --no-sort --reverse --query="$q" \
--print-query --expect=ctrl-d --toggle-sort=\`); do
q=$(head -1 <<< "$out")
k=$(head -2 <<< "$out" | tail -1)
@neumachen
neumachen / graphq_testing_type_tester.rb
Created March 21, 2022 16:02 — forked from bessey/graphq_testing_type_tester.rb
Beginnings of a reusable GraphQL Ruby type testing toolkit.
# Assumptions
# 1. Your schema implements the Relay Query.node(id:) field, Schema.id_from_object, and Schema.object_from_id
# 2. The types you wish to test implement the Node interface
# 3. (In order to be compatible with Node) the object you test resolves to a single type
# 4. The object you wish to test has a unique identifier
# TODO
# Maybe we can remove 3. by making use of an override in context?
# Since Schema.resolve_type takes a context object, perhaps if you must test an object that is
# presented via multiple types in the schema, you can force the decision via context. I have not
@neumachen
neumachen / .zshrc
Created January 12, 2022 17:26 — forked from acepukas/.zshrc
Convenient commands for ripgrep and fzf.vim integration
# RIPGREP config (this is the environment variable that vim is reading when building the rg command)
# In this case the shell is zsh. Adjust accordingly based on preferred shell and needs.
export RG_COMMAND_BASE='rg --ignore-file ~/.ignore --hidden --follow'
# Minimal FZF config. Shares the RG_COMMAND_BASE env var.
[ -f $HOME/.fzf.zsh ] && source $HOME/.fzf.zsh
export FZF_DEFAULT_COMMAND="$RG_COMMAND_BASE --files"