Skip to content

Instantly share code, notes, and snippets.


Emad Elsaid emad-elsaid

View GitHub Profile
emad-elsaid / ago.go
Last active Jun 19, 2022
Converts a time duration to string. for example: 38 minutes 53 seconds ago OR 2 days 58 minutes ago. maxPrecision is the max number of time components in the result.
View ago.go
func ago(t time.Duration) (o string) {
const day = time.Hour * 24
const week = day * 7
const month = day * 30
const year = day * 365
const maxPrecision = 2
if t.Seconds() < 1 {
return "seconds ago"
View gist:188bdd2c7ea61cdc7a99cd71b16417ac
This is a list of ways to say hello in various languages.
It is not intended to be comprehensive, but to demonstrate
some of the character sets that Emacs supports.
Non-ASCII examples:
Europe: ¡Hola!, Grüß Gott, Hyvää päivää, Tere õhtust, Bonġu
Cześć!, Dobrý den, Здравствуйте!, Γειά σας, გამარჯობა
Africa: ሠላም
Middle/Near East: שָׁלוֹם, السّلام عليكم
South Asia: નમસ્તે, नमस्ते, ನಮಸ್ಕಾರ, നമസ്കാരം, ଶୁଣିବେ,
emad-elsaid / gtk.go
Created Mar 4, 2021
this will load a UI/glade file using GTK builder and will bind objects from the UI to a go struct using the struct field tag as an ID
View gtk.go
package main
import (
emad-elsaid / explain.rb
Created Dec 10, 2020
View explain.rb
class Explainer < ActiveSupport::LogSubscriber
def sql(event)
payload = event.payload
return if ignore_payload?(payload)
debug color(ActiveRecord::Base.connection.explain(payload[:sql], payload[:binds]), :yellow)
emad-elsaid /
Last active Oct 12, 2020
This will read your google chrome local history database and offer you fuzzy search with dmenu to open one of them
#!/usr/bin/env bash
cp ~/.config/google-chrome/Default/History /tmp/History
sqlite3 /tmp/History "select url, title from urls;" \
| dmenu -i -l 20 -fn "Source Code Pro:regular:size=16" \
| awk 'BEGIN { FS = "|" } ; { print $1 }' \
| xargs xdg-open
View import-image-to-directory
#!/usr/bin/env ruby
# frozen_string_literal: true
require 'bundler/inline'
require 'fileutils'
gemfile do
source ''
gem 'gtk3'
emad-elsaid / index.html
Created Jul 15, 2020
WebRTC Chat server using simple-peer and Inbox server
View index.html
<form id="userform">
<input id="username" type="text">
<input id="password" type="password">
<label>Other peer Username (only if your the initiator)</label>
<input id="to" type="text">
<button onclick="CreateUser()" type="button">Create</button>
Add-Type @"
using System;
using System.Runtime.InteropServices;
public class Tricks {
public static extern IntPtr GetForegroundWindow();

the bash_profile snippet will let you run the first file when you press tab when you have empty command , you need to put the cmd file in your path and make it executable with chmod +x cmd

View thread_pool.rb
class ThreadPool
def self.execute(objects:, method:, pool: 5)
new(objects: objects, method: method, pool: pool).execute
def initialize(objects:, method:, pool:)
@objects = objects
@method = method
@pool = pool
@queue = queue