First run the following command.
cat <<EOF | sudo sh -x
apt-get install -y uidmap
EOF
Get rootless Docker and install.
curl -sSL https://get.docker.com/rootless | sh
First run the following command.
cat <<EOF | sudo sh -x
apt-get install -y uidmap
EOF
Get rootless Docker and install.
curl -sSL https://get.docker.com/rootless | sh
HackerNews discussed this with many alternative solutions: https://news.ycombinator.com/item?id=24893615
I already have my own domain name: mydomain.com
. I wanted to be able to run some webapps on my Raspberry Pi 4B running
perpetually at home in headless mode (just needs 5W power and wireless internet). I wanted to be able to access these apps from public Internet. Dynamic DNS wasn't an option because my ISP blocks all incoming traffic. ngrok
would work but the free plan is too restrictive.
I bought a cheap 2GB RAM, 20GB disk VM + a 25GB volume on Hetzner for about 4 EUR/month. Hetzner gave me a static IP for it. I haven't purchased a floating IP yet.
# Refer to the Caddy docs for more information: | |
# https://caddyserver.com/docs/caddyfile | |
:80 | |
reverse_proxy 10.100.100.1:80 |
I have come back for the first time to Gnome after they moved to version 3. This environment is very new for me and hence a lot of my experiments are around fixing things which i feel are wrong.
I have realized that they want a certain experiance and then they allow extensions to customize that experiance as per users needs.
I have applied a whole bunch of extensions as per my need to get things working for myself.
# sudo apt install libnotify-bin libnotify-dev python-gobject | |
# python pomodoro.py "do homework" | |
import sys | |
from time import sleep | |
from gi.repository import Notify | |
Notify.init("App Name") | |
Notify.Notification.new(sys.argv[-1]).show() | |
Notify.Notification.new("Pomodoro Start!").show() | |
for i in range(25): |
Patreon: https://levels.patreon.com/
Buffer: https://open.buffer.com/engineering-career-framework/
Rent the Runway: https://docs.google.com/document/d/1SxmQBrDZvj16veuc2OVO0wUX7a7vEKPM-57dNLXhuEk/edit
Medium: https://medium.com/s/engineering-growth-framework/engineering-growth-introduction-8ba7b78c8d6c
Kickstarter: https://gist.github.com/jamtur01/aef437a79fee5a9cefdc
// TxFunc is a function that can be wrapped in a transaction | |
type TxFunc func(tx *sql.Tx) error | |
// WithTx wraps a function in an sql transaction. After the function returns, the transaction is | |
// committed if there's no error, or rolled back if there is one. | |
func WithTx(db *sql.DB, f TxFunc) (err error) { | |
tx, err := db.Begin() | |
if err != nil { | |
return err | |
} |
This gist is based on the information available at golang/dep, only slightly more terse and annotated with a few notes and links primarily for my own personal benefit. It's public in case this information is helpful to anyone else as well.
I initially advocated Glide for my team and then, more recently, vndr. I've also taken the approach of exerting direct control over what goes into vendor/
in my Dockerfiles, and also work from
isolated GOPATH environments on my system per project to ensure that dependencies are explicitly found under vendor/
.
At the end of the day, vendoring (and committing vendor/
) is about being in control of your dependencies and being able to achieve reproducible builds. While you can achieve this manually, things that are nice to have in a vendoring tool include:
www.iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com
is up the virus exits instead of infecting the host. (source: malwarebytes). This domain has been sinkholed, stopping the spread of the worm. Will not work if proxied (source).update: A minor variant of the viru