There's a plain-HTML version of this site; this link takes you there

hi! i'm charlotte!

i go by charlotte or charlie, my pro­nouns are she and they , i study some­thing com­pu­ter-sci­ence-ad­ja­cent in aa­chen, ger­many, and make some apps and web­sites some­times.

vol­un­tar­ily, i use (in or­der of pref­er­ence): python, js
in­vol­un­tar­ily (in al­pha­betic or­der): bash, c++, java, php, typescript

if you couldn't tell, i like mediumseagreen (#3cb371). like, a lot.

stuff i made

(most re­cent and present­able to least)

quizzer (a quiz maker)

A screenshot of a quiz maker. The screenshot shows edit controls for The Berry Quiz, starting with a question that asks the user whether or not blackcurrant is a berry

the orig­i­nal berry quiz did­n't ac­count for fruits that can't neat­ly be sort­ed in­to berry and non­berry. but, since i did­n't real­ly put much ef­fort in­to cod­ing it, and the de­sign on­ly real­ly worked for ex­act­ly two pos­si­ble an­swers, i set out to make an up­dat­ed ver­sion of it, and this time do it prop­er­ly, with a well­de­fined json for­mat for quizzes and a seper­ate in­ter­face to ed­it a quiz.

en­ter: quizzer. this lit­tle thing that i sunk weeks of my life in­to does all of these things (but in ret­ro­spect should have been de­signed with per­for­mance in mind, be­cause load­ing the berry quiz in the ed­i­tor takes a lit­tle while). how­ev­er, you can play an up­dat­ed ver­sion of the berry quiz or cre­ate your own quiz. I've al­so abused my own quiz mak­er to write a poor­ly writ­ten blog post about it, which goes in­to more de­tail, and links to its re­pos and APIs.

fuzzy app search for gnome

A screenshot of the GNOME search. The query is 'calclu'. The two results are 'Calculator' and 'LibreOffice Calc'. The background is green

i was pretty ann­oyed about gnome's de­fault app search pro­vi­der ceas­ing to work if you type one (1) wrong let­ter, so i forked some­one else's ex­ten­sion that mod­i­fied search re­sults and added fuzz.

at first, i used a slightly mod­i­fied ver­sion of the le­ven­shtein edit dis­tance al­go­rithm, but that had a few bugs and was lim­ited to match­ing queries at the start of words in the re­sult. also, it wouldn't scale well if you had, like, ten thou­sand apps (which you don't). so i switched to pre-in­dexed match­ing in­stead.

ba­si­cally, the ex­ten­sion looks at every app and in­dexes all sub­strings of a cer­tain length (n-grams) that the app's fields con­tain, swap­ping let­ters around and gen­er­at­ing ab­bre­vi­a­tions (both at a penalty). when you search, your query is also split up into n-grams and scores can be cal­cu­lated by how of­ten an app ap­pears in their in­dex en­tries. this also takes into ac­count that n-grams that ap­pear in more apps (like "the") are a lot less in­ter­est­ing than, say, "fox"

if you use gnome, you can get the ex­ten­sion on extensions.gnome.org or see the source code

una notes app

A screenshot of a note window with text in it. It says 'una notes app' in bold and then lists what the app has: 'some **markup**' (where 'markup' is bold), 'a plugin system' and 'some other stuff'. The input cursor is visible after the last item. The top right shows three translucent buttons: a colour picker and a menu button.

mostly as a fil­ler project, i star­ted a lit­tle notes app with a sim­ple ui. i did not know how to pro­perly struc­ture py­thon/gtk3 apps back then and added wayyy too much stuff, so the code is a bit of an ugly mess, but it works*!
*on linux, if you're lucky

in case you're in ur­gent need of a notes app (turns out, not many peo­ple are) that is both very sim­ple to use and pow­er­ful (in the­ory), you can check that out on git­lab. un­less i made the code pri­vate out of shame.

this here site!

ok, don't get mad, but there's ac­tu­ally some cool stuff hap­pen­ing un­der the hood here! if you have js and you're not on the plain html ver­sion, that is. i wan­ted to use web com­po­nents for a web­site for a while, and this is that web­site! then i got an­noyed with brow­ser scrol­ling and, uh, im­ple­mented hand­ling for that my­self. don't try to break it, be­cause it WILL break.

but yea, you could tech­ni­cally probably build a whole thing with this stuff in­stead of just my measly lan­ding page and no­thing else.

google footprint

A screenshot of footprint.cza.li. The text says: 'Your digital footprint: How well does Google know your location?'. There is a 'Load your Google data' button, a language selector and a question mark button beneath. Below those, there is a 'Your data will not leave your browser' info text. The top half of the page and the buttons, which float in the middle, are black-on-green, the lower half is white-on-dark-grey.

this is a web app where you can vi­su­alise your google take­out data (which the gdpr forces them to give to you). orig­i­nally, this was a school pro­ject (our cs teacher, like seem­ingly all ger­mans, is ob­sessed with the topic of in­ter­net pri­vacy). it reg­u­larly breaks when google chan­ges the for­mat of their take­out archives, so it prob­a­bly doesn't cur­rently work. nev­er­the­less, you can go to footprint.cza.li to try it.

discord bots

A white Q with a question mark right to it, the Q and the dot of the question mark are merged. The background is purple.A tear-off calendar icon, with a red top. The date is a 17th something.A tear-off calendar icon, with a red top. The date is a 17th something.A sturgeon.A five-pointed star cut out of a yellow background. The top arm is replaced with a disconnected circle, which looks like a head.A 'forbidden' sign in red

i have long stopped ac­tu­ally us­ing any of my dis­cord bots and all of them are off­line by now, but there's bots.cza.li which lists some of them.

various shitposts

A screenshot of https://4dabloo.nz. It's a cat holding up their paw with 4 toes, labelled '4 dabloons'.A screenshot of https://siss.dev. It's a picture of an astronaut, the header reads 'Semicolons in Space Society', the caption is too small to read.A screenshot of https://tomi.cza.li. This website counts the time since some event in German.

i made quite a few web­sites in­stead of pay­ing at­ten­tion to class, which may be funny to a very small ex­tent or com­pletely de­void of con­text (or both). a high­light is the (outdated) berry quiz i made to test a drag-and-drop li­brary that i've been an­noy­ing peo­ple with ("did you know X is a berry?" ex­pec­tedly gets a lit­tle old the 20th time, and i WILL find a way to make any con­ver­sa­tion about ber­ries). you can view a list of shit­posts on shitposts.cza.li.

places you can find me