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
  • 20:45 (UTC -12:00)
View GitHub Profile
@neumachen
neumachen / turn_off_switches_at_sunrise.yaml
Last active November 16, 2023 23:22
Turn Off Switches At Sunrise
blueprint:
name: Turn Off Switches At Sunrise
description: Turn off the following switches at sunrise
domain: automation
input:
# Create a variable for identifying the light to act upon
target_switch:
name: Switches
description: This is the switch (or switches) that will be deactivated at sunrise
# Use a selector, to pick the light(s)
@neumachen
neumachen / turn_on_switches_at_sunset.yaml
Last active November 16, 2023 23:21
Turn on switches at Sunset
blueprint:
name: Turn On Switches At Sunset
description: Turn on the following switches at sunset
domain: automation
input:
# Create a variable for identifying the light to act upon
target_switch:
name: Switches
description: This is the switch (or switches) that will be activated at sunset
# Use a selector, to pick the light(s)
@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)