🅱️ Deep Fried Memes
All processing done client side in vanilla Javascript. JPEG compression done using canvas.
Gets over 90,000 unique visitors a month.
All processing done client side in vanilla Javascript. JPEG compression done using canvas.
Gets over 90,000 unique visitors a month.
Output may be nsfw/offensive.This is because the model was trained on real demotivators from open directories, some of which seem to have come from old /b/.
~6000 demotivators were gathered, and then split into image and caption fragments using Go, which were labelled / OCR’d by Google Cloud Vision. The resulting text blocks were then used to train OpenAI’s GPT-2 language model.
GPT-2’s output then likewise consists of image labels and captions. The labels are searched on DuckDuckGo images to find a suitable picture, to which the captions are then appended.
Ripcord is an amazing alternative Discord client, but its notifications support is rather lacklustre, displaying them only for DMs.
Since it’s closed source shareware, I can’t go in and tweak it to my liking.
So, this daemon displays notifications in a superior way, following Discord’s own settings.
Done as my final project for a Computational Morphology class. Quite limited (e.g. no strong verbs), but still handles things like double U-umlaut.
Backend is a Python + Flask app interacting with HFST to output JSON.
I couldn’t find a Finnish ➔ English dictionary for Kindle that supported in-book definitions, so I wrote this program to generate one from Wiktionary.
WarCrumb is my Warcraft III replay parser written in Go, mostly based on a 2007 fanmade spec of the binary format, updated for the new Reforged edition with my own investigations using a hex editor.
WarCrumpet is an in-browser frontend to the parser, powered by WebAssembly.
Since WoW addons have no filesystem or network access, it does this via a thin strip of pixels in the corner of the screen that are then read by a Go program.