About
Hello again. I’m JJ, but you may know me by apropos or omentic (among other names).
I am a linguist, a programming languages nerd, a researcher, and a lifelong learner.
I am lucky enough to have gained an interest in linguistics while attending the University of British Columbia as an undergraduate. British Columbia (and the Americas in general) is home to an almost-unthinkable amount of linguistic diversity in indigenous languages, all of which are in critical danger of dying out without being passed onto the next generations of speakers. The whole programme of research in the linguistics department here (and elsewhere in Vancouver, but quite observably here) is fully centred around the documentation and facilitation of language revival as an urgent task. I have been strongly affected by this underlying urgency, into pursuing linguistics, now. I have strong interests in many other topics too, but they can wait.
As a linguist, I am primarily interested in semantics. Outside of any work deemed particularly urgent by language consultants and communities, I am a sucker for tense/aspect/modality, mood, quantification, and models of dynamic semantics (i.e. again mostly mood).
Semantics overlaps quite a bit with programming languages, another particular interest of mine – an intersection made straightforwardly obvious by both fields’ shared use of the lambda calculus.
- On the linguistics side of the table, the λ-calculus is used for its denotational properties. By considering content words as opaque characteristic functions, and taking the assumption language is built up fully compositionally, we may model meaning by way of the composition of the λ-calculus atop an underlying modal or otherwise higher-order logic.
- On the programming languages side of the table, the ordinary λ-calculus is also used for its denotational properties, often – but more often it is used for its types system, which is a somewhat minimal workable system and extremely amenable to arbitrary extensions. The reasoning about these types systems and the types within them is in fact a form of proof, due to being the computational embodiment of the Curry-Howard correspondence, an extremely cool piece of mysticism that has strongly influenced programming language design since.
I am a self-taught programmer. Most of my programming experience comes from high-school robotics, and CTF @ UBC. The CTF team here, Maple Bacon, is a wonderful club filled with wonderful people I’m grateful to call my friends. I credit CTF with really teaching me how to just go off and learn something. It didn’t teach me programming, nor any particular computer skills, but it exposed me to such a flurry of topics and problems and ideas I simply had to go learn.
My undergraduate degree is in mathematics and linguistics, but over the course of time I mostly eschewed the mathematics for linguistics and used my spare time to lurk in CS courses I lacked formal prerequisites for. Over my 2nd/3rd years I took the graduate-level Theory of Computation, Types Systems, and Dependent Types courses this way, and lurked in the undergraduate compilers course twice prior to taking it for real. This overall was a great use of my time and meant I didn’t have to navigate the (arbitrary) exemptions system and I strongly recommend it to any bored undergraduate (with the assurance that if you don’t cause a burden, nobody minds).
Occasionally, I write code. I enjoy writing code. I find it rewarding, and a meditative progress of expression, and a good excuse to learn new things. Some of my code I’m happy with / proud of, enough to wish to share it publicly on Codeberg (and mirrored some other places).
When I write code, I usually do so in either Scheme, Rust, or Lean. They’re my favourite languages. I find their language design to be beautiful and their communities to be excellent and their tooling to be pretty-good (Rust > Lean > Scheme on this last one). I know a bunch more languages than just these three, of course, that I’ve picked up for more pragmatic purposes, incl. Python, C, Java, etc., but don’t much enjoy working with them and only do so out of necessity.
A lot of the code I like writing is related to programming languages. Usually, what I write is either directly an implementation of some language feature, or is written as an excuse for me to try out some new paradigm or approach. I find exploring different ways to think about code to be a very rewarding process. Within programming languages, I’m especially interested in a couple of things in particular: effect handlers (and WebAssembly), language interop (and WebAssembly), garbage collection, types systems and dependent types and type theories and natural deduction and the sequent calculus and all everything else. The field of PL has a lot of neat topics.
Outside of programming languages, I’m really a big fan of the World Wide Web. I think the internet is just so neat. All sorts of web-related items – networking protocols, HTTP servers, messaging protocols, decentralized and federated consensus, HTML and CSS and inspired works like HTMX, pretty much anything that can or could be found in an RFC – pique my interest.
I’m interested in a bunch of other computer things, too, but haven’t yet had time to explore them all. On my backburner is learning Guix and maybe more than my current level of operational-Nix, picking up some cryptography, getting serious about abstract algebra, becoming familiar enough with the Guile codebase to contribute some macro / continuation primitives, and implementing some programming language designs I’ve been kicking around for a while.
I have various hobbies and interests and such outside of language and logic and computers, as one does. I’m big into the outdoors and enjoy biking and hiking and climbing and camping and ultimate, rain or shine. (Mostly rain. I live in the PNW.) I’m a sucker for web fiction, and ARGs, and all sorts of early-2000s internet optimism / early 2010s nostalgia bait, and subsequently am really into geocaching and OpenStreetMap mapping and freedom-of-information / anti-copyright stuff. Vancouver has a great local music scene, and I really enjoy catching shows, but right now I don’t really play any instruments. I don’t draw, either, but this is more so because I prefer creating art with my hands… I enjoy working with clay, and folding origami, for this reason.
If you’re interested in anything here and want to chat or want to contact me for some unrelated reason, feel free to shoot me a message! I’m contactable over email or via xmpp at jj [at] toki.la.
If you’re just poking around, check out my wiki! (currently a work in progress)
credits
This website is based off of the websites of Cat Zeng, Leonora Tindall, and Simon Højberg.
It is generated by Hakyll. The script is available here.