Skip to content

Instantly share code, notes, and snippets.


Matthias MatthiasSaihttam

View GitHub Profile
MatthiasSaihttam / EytukanTamperMonkey.js
Last active Mar 8, 2017
This program's bookmarklet,, ported to TamperMonkey. Still quite buggy and doesn't always work.
View EytukanTamperMonkey.js
// ==UserScript==
// @name Show flags on programs
// @version 1.1
// @description Shows number of flags for a program, even on the hot list (
// @author Eytukan (ported by Matthias)
// @match
// @match*/projects
// @grant none
// ==/UserScript==
MatthiasSaihttam / BetterKAVoting.js
Created Sep 8, 2017
A bookmarklet to improve voting on Khan Academy
View BetterKAVoting.js
(function () {
//The element that we mess with
var base = document.getElementsByClassName("voting-wrap")[0];
//No voting base means we're looking at a child account program or a tutorial/offical video
if (!base) {
//Try just adding a whole new thing
var wrap = document.getElementsByClassName("buttons_vponqv");
View example.html
<!DOCTYPE html>
<!-- Taken from, from pamela, from DillingerLee -->
<title>Processing.JS inside Webpages: Template</title>
<p align="center">
MatthiasSaihttam / KAUserList.json
Created Jan 12, 2018
A list of KA users and some basic info about them
View KAUserList.json
{"username": "Butterflys4me", "kaid": "kaid_288875354292615286993893", "nickname": "Sasha B", "points": 5171599},
{"username": "JuzerShakir", "points": 5278769, "nickname": "Juzer Shakir", "kaid": "kaid_1019087183123970941813090"},
{"username": "furia.dhaval", "kaid": "kaid_1143531252016047271846752", "nickname": "Dhaval Furia", "points": 7861227},
{"username": "CaptainAmericaCivilWar2016", "kaid": "kaid_124058193188360295524990", "nickname": "David (TD)", "points": 0},
{"username": "kdgettelman", "points": 7063005, "nickname": "Lachesis", "kaid": "kaid_238644219424894610277990"},
{"username": "Thornclaw", "kaid": "kaid_449226918406096781851737", "nickname": "Roman Farchutdinov", "points": 6071563},
{"username": "versesvineyard", "kaid": "kaid_519084642615019393614658", "nickname": "jjv007", "points": 5924578},
{"username": "HeYamin", "points": 9742971, "nickname": "Benjamin", "kaid": "kaid_642616638457067013727525"},
{"username": "yagod", "points": 7122516, "nickname": "Yago", "kaid": "kaid_346165209013713
MatthiasSaihttam / better-ka-voting-v2.js
Created Sep 6, 2018
KA voting script, this time without down-voting, hopefully for the KA extension.
View better-ka-voting-v2.js
(function () {
/* ---- Definitions and fetching information ---- */
const EXTENSION_ITEM_CLASSNAME = "m-better-voting";
let oldWrap = document.querySelector(".voting-wrap .discussion-meta-controls").firstChild;
//No voting wrap means we're looking at a child account program or a tutorial/offical video or program, contest, etc
if (!oldWrap || !oldWrap.innerText.includes("Vote")) {

Keybase proof

I hereby claim:

  • I am MatthiasSaihttam on github.
  • I am matthias1 ( on keybase.
  • I have a public key whose fingerprint is 7C97 9494 7C55 C478 FEFF 932C 154B 71C3 B6C7 7172

To claim this, I am signing this object:

View getAbnormalProps.js
function getAbnormalProps () {
var f = document.createElement("iframe");
f.src = "about:blank";
var normalProps = Object.keys(f.contentWindow);
var result = {};
Object.keys(window).filter(p => !normalProps.includes(p)).forEach(p => { result[p] = window[p]; });
MatthiasSaihttam /
Last active Jul 27, 2020
A walkthrough of downloading Android on an iPhone 7 and getting setup

This tutorial is going to walk you through taking an unjailbroken iPhone 7, and a Mac, and installing Android on the phone using Project Sandcastle.

  • Download Project Sandcastle from here. We want the Android build.
  • This document follows the instructions under the Mac section of the README, but with more detail and extra setup help at the end.

Perform a Checkra1n jailbreak

  • Download Checkra1n from here.
  • Move the Checkra1n app to /Applications/ (this is important later).
  • Connect your phone to the computer
  • Launch the checkra1n app, and perform the jailbreak as described.
MatthiasSaihttam /
Created Apr 13, 2019
An example of how to add syntax highlighting for new languages to xi-mac.
  1. To add, for example, TypeScript,
  2. Find a .sublime-syntax file for the language.
  3. Create a TypeScript folder in xi-mac/xi-editor/rust/syntect-plugin/syntect-resources/Packages/
  4. Place the .sublime-syntax file in that folder.
  1. In xi-mac/xi-editor/rust/syntect-plugin/, run