Skip to content

Instantly share code, notes, and snippets.

View benjaminsaljooghi's full-sized avatar

Benjamin Saljooghi benjaminsaljooghi

View GitHub Profile

Open Broadcasting Software for Online Teaching

Hi, in this Gist I will show you how to setup a virtual "TV studio" to broadcast your web-cam, your lecture/tutorial slides and document camera in one video feed over Zoom, Skype or an LMS like Blackboard Collaborate Ultra. Here, I will help you to install and setup Open Broadcasting Software for online teaching from home.

Check out my YouTube video for more help!

Software to Install

@davecan
davecan / open_powershell_here.md
Last active September 12, 2025 12:43
How to enable "Open PowerShell Here" context menu in Windows 10
@codehacken
codehacken / hclustering.py
Created July 27, 2017 20:01
Agglomerative clustering using Scikit-Learn (with a custom distance metric)
"""
Hierarchial Clustering.
The goal of gist is to show to use scikit-learn to perform agglomerative clustering when:
1. There is a need for a custom distance metric (like levenshtein distance)
2. Use the distance in sklearn's API.
Adapted from: sklearn's FAQ.
http://scikit-learn.org/stable/faq.html
"""
@unhammer
unhammer / use_gold.sh
Last active June 3, 2022 02:31
Linking with lld on Ubuntu/Debian in CMake projects (or gold in automake projects)
sudo apt install binutils
cd ~/src/an_autotools_project
export CXXFLAGS='-fuse-ld=gold'
export CFLAGS='-fuse-ld=gold'
./configure
make -j4 # no longer wait for linking! =D
# gcc doesn't support -fuse-ld=lld http://gcc.gnu.org/ml/gcc-patches/2016-07/msg00145.html :(
@Rich-Harris
Rich-Harris / module-loading.md
Last active April 19, 2023 09:11
Dynamic module loading done right

Dynamic module loading done right

Follow-up to Top-level await is a footgun – maybe read that first

Here are some things I believe to be true:

  1. Static module syntax is beneficial in lots of ways – code is easier to write (you get better linting etc) and easier to optimise (tree-shaking and other things that are only really possible with static syntax), and most importantly, faster to load (it's trivial for a module loader to load multiple dependencies concurrently when they're declared with a static syntax – not so with imperative statements like require(...) or await import(...)).
  2. App startup time is perhaps when performance is most critical. (You already know this, I don't need to cite the studies.)
  3. If you're in favour of constructs that jeopardise app startup time, you are anti-user. Top-level await is such a construct.
@eiriktsarpalis
eiriktsarpalis / fsharp-listings.tex
Created August 13, 2013 19:10
LaTeX F# definition for Listings package
\usepackage{listings}
\usepackage{upquote}
\lstdefinelanguage{FSharp}%
{morekeywords={let, new, match, with, rec, open, module, namespace, type, of, member, %
and, for, while, true, false, in, do, begin, end, fun, function, return, yield, try, %
mutable, if, then, else, cloud, async, static, use, abstract, interface, inherit, finally },
otherkeywords={ let!, return!, do!, yield!, use!, var, from, select, where, order, by },
keywordstyle=\color{bluekeywords},
sensitive=true,
@senmu
senmu / gist:1277486
Created October 11, 2011 07:06
A makefile for simple java projects
JC = javac
.SUFFIXES: .java .class
.java.class:
$(JC) *.java
default: .java.class
clean:
$(RM) *.class
@willf
willf / f# stopwatch timing elapsed time.fs
Created April 30, 2010 13:05
Stopwatch elapsed timer in F#
open System
let sw = System.Diagnostics.Stopwatch()
sw.Start()
// some calculations
sw.Stop()
System.Console.WriteLine("Time elapsed: {0}", sw.Elapsed);;
// Time elapsed: 00:07:40.4029123
sw.Reset()