Skip to content

Instantly share code, notes, and snippets.

Excel Tables and VBA

It's 2020, and there's now many ways to work with data of arbitrary length in Excel:

  • Power Query's M language
  • JavaScript
  • dynamic arrays.

But if you use or support older Excel versions, VBA can still be useful.

@raysan5
raysan5 / custom_game_engines_small_study.md
Last active July 21, 2026 00:23
A small state-of-the-art study on custom engines

CUSTOM GAME ENGINES: A Small Study

a_plague_tale

WARNING: Article moved to separate repo to allow users contributions: https://github.com/raysan5/custom_game_engines

A couple of weeks ago I played (and finished) A Plague Tale, a game by Asobo Studio. I was really captivated by the game, not only by the beautiful graphics but also by the story and the locations in the game. I decided to investigate a bit about the game tech and I was surprised to see it was developed with a custom engine by a relatively small studio. I know there are some companies using custom engines but it's very difficult to find a detailed market study with that kind of information curated and updated. So this article.

Nowadays lots of companies choose engines like [Unreal](https:

@kentbye
kentbye / gist:d643216a3c2ace30cabc9efa023df3db
Created April 18, 2020 23:37
FFMPEG code for Spectral Frequency Display using showcqt (logarithmic frequency spectrum) + showspectrum (audio frequency spectrum) + showwaves
ffmpeg -i coltrane.wav -filter_complex "[0:a]showcqt=s=640x518:fps=30:axis=0,colorchannelmixer=.769:.393:.189:.349:0:.686:.168:0:.272:.534:.131,hue=n*2,pad=1280:720[vs]; [0:a]showspectrum=mode=separate:color=fiery:scale=log:orientation=vertical:overlap=1:slide=scroll:s=640x518[ss]; [0:a]showwaves=s=1280x202:mode=cline:scale=cbrt:colors=#FF8300[sw]; [vs][ss]overlay=w[bg]; [bg][sw]overlay=0:H-h[out]" -map "[out]" -map 0:a coltrane-output.mov
@jokergoo
jokergoo / gridtext.R
Last active March 21, 2020 16:35
support gridtext in ComplexHeatmap
library(ComplexHeatmap)
set.seed(123)
mat = matrix(rnorm(100), 10)
rownames(mat) = letters[1:10]
ht = Heatmap(mat,
column_title = gt_render("Some <span style='color:blue'>blue text **in bold.**</span><br>And *italics text.*<br>And some <span style='font-size:18pt; color:black'>large</span> text.",
r = unit(2, "pt"),
padding = unit(c(2, 2, 2, 2), "pt")),
column_title_gp = gpar(box_fill = "orange"),
from tkinter import *
from PIL import ImageTk,Image
import time
import os
targetImageWidth = 850
targetImageHeight = 400
inputImageWidth = 0
inputImageHeight = 0

Always Already Programming

Everyone who interacts with computers has in important ways always already been programming them.

Every time you make a folder or rename a file on your computer, the actions you take through moving your mouse and clicking on buttons, translate into text-based commands or scripts which eventually translate into binary.

Why are the common conceptions of programmer and user so divorced from each other? The distinction between programmer and user is reinforced and maintained by a tech industry that benefits from a population rendered computationally passive. If we accept and adopt the role of less agency, we then make it harder for ourselves to come into more agency.

We've unpacked the "user" a little, now let's look at the "programmer." When a programmer is writing javascript, they are using prewritten, packaged functions and variables in order to carry out the actions they want their code to do. In this way, the programmer is also the user. Why is using pre-made scripts seen

@yogthos
yogthos / clojure-beginner.md
Last active June 21, 2026 17:32
Clojure beginner resources

Introductory resources

X:1
T:from./abc-abcnotationcom+thesessions/abc-111803542.mid
M:2/4
L:1/16
Q:1/4=120
K:D % 2 sharps
V:1
BGEGc'2Bd2GdBdG|BGEGc'2Bd2GdB|BGEGc'2Bd2GdB|BGEGc'2B2a2b2g2|BBGEGc'2Bd2Gd|
BGEGc'2Bd2G2B|BGEGc'2Bd2G2B|BGEc'2Bd2GdB|BGEGc'2B2a2b2g2|
BBGEGc'2Bd2G2B|BGEGc'2Bd2G2B|BGEGc'2Bd2G2B|GEc'2Bd2GdB|
@rbnpi
rbnpi / ReadMe.md
Last active November 9, 2023 09:30
Sonic Pi Midifile Player accompanying article at https://rbnrpi.wordpress.com/a-midi-file-player-program-for-sonic-pi/

These files comprise two versions of a midifileplayer for Sonic Pi version 3.0.1 or later. There are two versions.

File SPbasicMidiFilePlayer.rb is the basic version, where the synths used to play each channel in the midifile have to be specified in teh code before running the program in the form of a sonic pi ring. If this contains just a single synth e.g. (ring :saw) then each channel will use this synth. If two synths are specified eg (ring :rri) then midi channel 1 will use :saw, channel 2 :tri and then any further channel will use index into this ring and use in turn :saw, :tri,:saw,:tri This is set in line 38. Also specified at run time in the code is the attenuation level set by the fx :level wrapper in teh variable attenAmp set to 0.5 by default in line 40.

In the second more complicated vbesion, support is provided for an external TouchOSC interface which can be used to specify synth allocation on the fly as the program is running. and also to adjust the attenAmp setting in teh range 0.1 to 1 again

@surma
surma / .gitignore
Last active June 12, 2026 15:17
Moving a Three.JS-based WebXR app to a worker
node_modules
build
package-lock.json