oxaliq at rc

dispatches from the edge of my abilities

week 1

well, i'm here. at recurse center very recent life events had me unsure if this would be possible. but, here i am! writing about my feelings, and putting the self directives here, so i can reference them as i reflect

work at the edge of yr abilities
be ambitions about what you can achieve and honest in yr current capacity

build yr volitional muscles
practice making decisions based on intrinsic motivators, yr curiosity and joy

learn generously
seek support when needed, offer when asked, share, share, share yr interests yr struggles yr successes yr enthusiasm for others

it's funny. there are a lot of ways i feel less-than as a developer. in more than a few workplaces i've been shunted to the corner to figure things out on my own, because i am generally 'autodidactic' as a former boss called me. but, i have not felt free to share my enthusiasm or my struggles in professional contexts. i'm absolutely a generalist of the higher end of the stack, with no particular specialization and i ... have feelings ... about that. however, the larger impediment to my growth has been this feeling of isolation -- of needing to figure things out on my own

i came into this experience certain i was going to work on latl but as the time to start my batch drew nearer and as the flood of new ideas came on during my first week, that certainty evaporated. dreaming up grand plans is not difficult for me; i am even occassionally honest enough about my capacity to take the lots of baby steps to get there. there were some themes tho, in evaluating the bubbling froth of ideas of where to put my energy for the next eleven weeks. and the most resonant were social utility and the potential of not-working-alone. while i'm at rc, i will be not-working-alone no matter what i do. but the latl idea is so niche that my explanation '(a dsl for conlangers) expanded into '(a racket-hosted domain specific language . for creating tools to construct human languages) into '(a domain-specific programming language . hosted in a technology designed around language oriented programming . treating linguistic data and procedures to manipulate that data homoiconically . allowing for the definition of phonology & phonotactics, lexicon, morphosyntax -- if you believe in that sort of thing --, pragmatics and hopefully even semantics of a given language in the same program as the history of that language's change and any resulting languages in the family). which i still think is really cool! but it's an idea that's been tickling me for years, and it's maybe too niche for this moment in my life. too difficult to associate with the work of other's here. and even worse1 tho i really love the hobby of conlanging and the creativity that tools like this could engender..., the social utility piece just isn't there for me

okay, so a new idea. lending library software. but for scrappy community projects, not powerful institutions. and with the ability for any library member to be a lendor. and any lendor to lend to any member of any library they'd like for as long as they like. similar to fediverse but for physical stuff. this is definitely an idea too ambitious for me to achieve in the next eleven weeks (and maybe at all.) but, maybe if i tell myself this is the goal i'm working towards i can learn a lot from building a piece of this idea. and maybe if i talk about it enough it'll inspire others to contribute to making it something more powerful than the nebulous thing in my head and maybe not

also! i want to use this project as a kind of curriculum. i might not actually write any code that goes into any eventual project that exists. but, what would i need to deeply understand to achieve this? obviously there's some networking involved, clients talking to servers. servers talking to servers.

so! learning goals scoped to my time at rc:

  • stream 1: network. to begin with i want to focus on networking from a lower level than i am used to. no frameworks, just building a server -- i have to think about protocol here, depending on how much i want to focus on the federation thing i might want to do rpc and not http. but either way, there are internals that i have soared over in my abstraction-glider
  • stream 2: database. i take for granted database connections. i take for granted that someone on my team will have a better knowledge of the query scheduler or more excitement about cte's. exactly what this looks like also depends on the architecture (does every client maintain it's own state? or do member/donor's collections live on a home server). whatever the case, i want to spend less time in abstractions and more in db internals
  • stream 3: extracurriculurs. i still want to give myself some unstructured time to finally work through the back chapters of sicp, compose goofy little orca pieces, talk about politics and human-computer interaction, and work through the propagation networks in clojure side project. my time here is finite, but having some side-projects helps me from falling into ruts

altho this is still very fuzzy, narrowing the scope a tiny bit feels good. i've been riding high on excitement all week, and this weekend i definitely crashed hard into feelings of self doubt. i could absolutely engross myself in working through someone else's curriculum for this time, but that's not what any of this is about. i'll maybe post here mid week 2 as my own curriculum starts to cohere

i think that's all i've got for the first week. it's time to get working

week 2

drinking-from-firehose intensifies

ok, there's a lot going on here. i may need to start making some decisions about where to focus my time. i've got a pretty full schedule and have done at least a couple hours of head-down coding each day. the problem is stuff like... a creative coding thing. i wanted to spend a couple hours each week just making beep-boop noises in some esoteric live-coding environments. (orca and overtone). there's a new prompt each week, i open up my tools (which themselves are somewhat newt o me--i've only done little things with them. but i'm on a relatively new system (new to linux and using mint on one machine and nixos on another) and i haven't entirely figured out how to patch midi messages from one process to another. so i'll go read about pipewire and now i'm building some programs to help me create pipewire patches and i'm racing through this process wondering if this is what i want to be doing right now. i don't want to just spend a couple hours building dependencies for the tools i intend to use to creatively code, i want to understand what i'm doing. but understanding alsa wasn't really the point of the prompt -- so i need to either slow down and dive deep or pivot to something else

i guess that's kinda how i wound up focusing more on this project than i intended this week: propagation networks in clojure. it's fun--it's challenging enough that i'm learning more about the language than i would just following a tutorial. i'm also convincing myself that this is part of the curriculum. i do an intro project to learn the language, this weekend and into next week i put it behind a server. next week i see if i can find someone interested in helping with a rough graph manipulation gui frontend. by next weekend, i package and deploy it--in whatever state it happens to be in.

and i think on week 4 i assess whether to continue building the concepts in the paper or shift my focus to uf-library

okay, so more thinkings from the week and more goals for the next. the other streams have been some thinking with people on human computer interaction (next week we're talking end user programming yay!) the beginnings of a group to talk about doing computer in ways that are more socially oriented, and some study groups--working through the wizard book, the missing cs semester course, and a 'tool time' group as well. both of these are building on some things that i'm already pretty comfortable with and it's nice to have a group to work through the back half of the wizard book + the shell,git,vim tricks i haven't figured out for myself yet and the debugging and profiling stuff i know too little about and the data wrangling techniques that make logs so powerful. excited for tool time too! gonna do some ide hacking maybe? so i've got some homework to that end for the weekend, plus i think i want to do a little spreadsheet side project that (if it works decently) i'd like to present on next week

o! and to do way more pairing. i haven't gotten up to daily pairing sessions yet, but that's definitely something i want to hold myself to next week! leaning on pairing-bot for sure, but also reaching out and being open to impromptu pairing sessions. (plus some pairing sessions with partners on projects outside of rc)

i think that's a wrap for this week's notes. feeling more secure, but also less settled