Skip to content

Instantly share code, notes, and snippets.

View kevduc's full-sized avatar
📙
Focusing

Kevin Duconge kevduc

📙
Focusing
View GitHub Profile
@kevduc
kevduc / diary2html.m
Created September 25, 2021 22:16
Creates a formatted HTML version of a MATLAB diary file
function diary2html(filename)
% DIARY2HTML Creates a formatted HTML version of a diary file
% DIARY2HTML(FILENAME) outputs a formatted HTML version of a diary file
% to an HTML file (e.g. if filename is "diary.txt", the HTML file generated
% will be "diary.html")
arguments
filename (1,:) char {mustBeNonempty}
end
@kevduc
kevduc / remove-apps.ps1
Last active October 6, 2021 23:24
Deletes Windows Apps and prevents install at setup (removes app folder in "C:\Program Files\WindowsApp", frees space)
# From https://superuser.com/questions/1465089/how-do-i-delete-a-windowsapps-folder/1619744
$appname = @(
"*LinkedInforWindows*"
"*Evernote*"
"*MusicMakerJam*"
"*GetHelp*"
"*Getstarted*"
"*Microsoft3DViewer*"
"*MicrosoftOfficeHub*"
@kevduc
kevduc / simple-web-screen-reader-v1.js
Last active December 10, 2024 20:13
Simple Web Screen Reader v1
document.addEventListener("click", ({ target }) => {
speechSynthesis.cancel();
speechSynthesis.speak(new SpeechSynthesisUtterance(target.textContent));
// animate outline
target.animate({
outline: [
"2px solid rgb(0 0 255 / 100%)",
"5px solid rgb(0 0 255 / 0%)",
],
// https://www.typescriptlang.org/play/?#code/MYewdgzgLgBFCmBbADgGwIYJgXgFAwJgB4AVGeADwTABMIYAFAJxGXiagE8BpeTgPgAUCFBgQBlKEwCWYAOYQAXDBJI0meJJnyIAQSZN0nADQwAdBaggA1vDABJOspIBtALoBKHP3yE-wmzsAWXRkZQZ0Dml0VCIAJXhQJhpSU2htORgAHxgAbzgQLVk5ZUEvbH4YdOKYAF9+fnKfPxbCIvkzQwB3YTUxTSliiFMLMytbBzoAfjNEUMEAiccmgomQ5Bdxu0c3GCmpmAAiQ48PAG5cXAB6K5gAUQp0UXgYAEZlAHUQJmt6LukoAALKqDeQwWycYYwdC0GAgABGACtErB0PQtmAYHNkDBcKBILBKE80PBVKINK8cHA+hoAAZEGjSABu-AAJLkAOQIaAc2qmdkcmy8-mc7lQXlEK6Mlm0vHgCAgVDwMyoEByQRE55k9QIV6CfJi5QcwHSDmmGzKAAsACY6qcYDcjgzmfwTaYbaYTZLpfxDrjrrcHsSlTBrZ9vr8YP8gTAwABXRDw9jgvhQmE0aEGIzQ9GBTHYuUE8iPLU0hC27DU8kIek+9kABj5MHZrybDdq3pdsvxCqVKrVGpLJO1-WtghchxNh3d1s8Xkdh2dLLdMA9MC9UpdfsujqDzxgAGZlOI48hkN8oPRKGhpMAATA5HZ2LeYD2pOhZFBC9Bi8HSWX4APKkRB1eAiC5eAeWyGBBWsDl+FrF0BTFYVm05IU21FSDxQ7TcZW-RVlVVdVNWHACD31aloCNE0zThawrVtWp7QXJdXWkGdPWkTsWW3IA
const template =
<T extends PropertyKey>(templateStrings: TemplateStringsArray, ...tokenIds: T[]) =>
(tokenMap: Partial<Record<T, string | { toString: () => string }>>) =>