i go by charlotte
or charlie
, my pronouns
(online) are
she
and they
, i study something computer-science-adjacent
in aachen, germany, and make some apps and websites
sometimes.
voluntarily, i use (in order of preference):
python
, js
involuntarily (in alphabetic order):
bash
, c++
, java
,
php
,
typescript
if you couldn't tell, i like
mediumseagreen
(#3cb371
). like, a lot.
i was pretty annoyed about gnome's default app search
provider ceasing to work if you type one (1
)
wrong letter, so i forked someone else's extension that
modified search results and added fuzz.
at first, i used a slightly modified version of the levenshtein edit distance algorithm, but that had a few bugs and was limited to matching queries at the start of words in the result. also, it wouldn't scale well if you had, like, ten thousand apps (which you don't). so i switched to pre-indexed matching instead.
basically, the extension looks at every app and
indexes all substrings of a certain length (n-grams) that the
app's fields contain, swapping letters around and
generating abbreviations (both at a
penalty). when you search, your query is also split up into n-grams and
scores can be calculated by how often an app appears in
their index entries. this also takes into account that
n-grams that appear in more apps (like "the"
) are a lot
less interesting than, say, "fox"
if you use gnome, you can get the extension on extensions.gnome.org or see the source code
mostly as a filler project, i started a little notes app with
a simple ui. i did not know how to properly structure
python/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 urgent need of a notes app (turns out, not many people are) that is both very simple to use and powerful (in theory), you can check that out on gitlab. unless i made the code private out of shame.
ok, don't get mad, but there's actually some cool stuff happening under the hood here! if you have js and you're not on the plain html version, that is. i wanted to use web components for a website for a while, and this is that website! then i got annoyed with browser scrolling and, uh, implemented handling for that myself. don't try to break it, because it WILL break.
but yea, you could technically probably build a whole thing with this stuff instead of just my measly landing page and nothing else.
this is a web app where you can visualise your google takeout data (which the gdpr forces them to give to you). originally, this was a school project (our cs teacher, like seemingly all germans, is obsessed with the topic of internet privacy). it regularly breaks when google changes the format of their takeout archives, so it probably doesn't currently work. nevertheless, you can go to footprint.cza.li to try it.
i have long stopped actually using any of my discord bots and all of them are offline by now, but there's bots.cza.li which lists some of them.
i made quite a few websites instead of paying attention to class, which may be funny to a very small extent or completely devoid of context (or both). a highlight is the berry quiz i made to test a drag-and-drop library that i've been annoying people with ("did you know X is a berry?" expectedly gets a little old the 20th time, and i WILL find a way to make any conversation about berries). you can view a list of shitposts on shitposts.cza.li.