https://sorbier.neocities.org/sorbierhi, i'm a tree2024-03-15T14:00:49ZsorbierReturning to linear algebrahttps://sorbier.neocities.org/blog/linearalgebra.html2024-03-14T12:00:00Zsorbier
<h1>Returning to linear algebra</h1>
<p class="date">Mar 14, 2024</p>
<p>
My undergraduate degree was in pure mathematics.
After a rocky start, I really grew to love it, by third year regularly writing a math blog that documented the cool things I was learning.
I definitely was pretentious about it, and it would be untruthful to say that some part of my enjoyment didn't derive directly from feeling intellectually self-important, but most of my enjoyment really was inherent.
</p>
<p>
In my math program (and indeed in most undergraduate math programs), the first proof-based course students take is linear algebra.
This course was a struggle.
I didn't know how to write or structure proofs, but more fundamentally I didn't grasp the <i>point</i> of proofs.
Many times, we were asked to prove statements that looked pointless to me, for example, to prove that for a linear map <b>T</b>: <b>V</b> → <b>W</b>, <b>T</b>(<b>0</b><sub><b>V</b></sub>) = <b>0</b><sub><b>W</b></sub>.
Isn't it obvious?
A linear map of zero returns zero: <em>mx + b</em> is 0 if you plug in zero???
In any case, without getting too in the weeds, what I'm trying to say is that I deeply learned very little, if anything, during this course.
Ever since, I've had the uncomfortable feeling that I'm missing something fundamental to my understanding.
</p>
<p>
Of course, linear algebra is very important in many mathematically-based areas of study: engineering, statistics, and physics are just a few.
I recently encountered something relying on linear algebra in my reading, which reminded me of my undergraduate class in the subject.
Curious on how I might read it differently now, I tracked down the textbook we used and read a few chapters.
I was pleasantly surprised!
Many of the chapters that I found mystifying were perfectly clear now.
</p>
<p>
As a concrete example, the <em>purpose</em> of the proof exercise I mention above is now immediately apparent to me, because I have background context from an abstract algebra course I took later on in the degree.
It's just asking for you to prove that the image of <b>0</b><sub><b>V</b></sub> satisfies the properties of the zero vector in the vector space <b>W</b>.
Moreover, I understand how to write the proof, which statements I'm allowed to use to make the argument, and in which order to put them to get a proof.
I know the "rules of the game", so to speak.
</p>
<p>
It's funny how our brains can sometimes much better grasp things once we have more context and practice.
In particular, I think three things really helped: first, and most important, I now have familiarity with proofs and a better conceptual understanding of them; second, I took (and very much enjoyed) abstract algebra later in my program, which is extremely helpful to frame linear algebra; and third, I have both much more mathematical confidence and also much more context on why we might study linear mappings, which comes with better intuition on how linear algebra operates.
Even though I went through years of mild insecurity about my perceived deficiency of linear algebra, I was more solid than I thought.
It's as though my mind was making backwards connections subconsciously, prospecting through what I didn't even know I remembered from that introduction to linear algebra.
</p>
<p>
Because of this experience, I think we may be giving our minds and ourselves less credit than they deserve.
Maybe they have, in the background, worked through something that you didn't understand fully the first time you saw it.
But I have also learned that it's an even better idea to go back and review whatever the topic is to complete the loop.
You get to explicitly solidy your understanding of it with those connections, and you also get to update your self-perception of how well you know it.
</p>
<p>
There is still one key chapter I haven't revisited yet, which is on inner product spaces.
Maybe I will get to it and write a blog post on that, too!
</p>
<p class="emailme"><a href="mailto:lasorbier@pm.me?subject=Returning to linear algebra">send a comment</a></p>
I hate mega evolutionshttps://sorbier.neocities.org/blog/megas.html2024-03-04T12:00:00Zsorbier
<h1>I hate mega evolutions</h1>
<p class="date">Mar 4, 2024</p>
<p>
With the announcement of Pokemon Legends: Z-A last week, there's been a lot of excitement about mega evolution returning. All the reactions to the news that I've seen have featured the classic YouTube thumbnail o: face. Never have I felt more "old man yells at cloud" as when I think about mega evolutions. I hate mega evolutions.
</p>
<p>
I'm so negative! I'm acutely aware that I just wrote <a href="/blog/igforwarding.html">a similar complaining blog post</a>, but I can't help it. As they say, rage sells! It's so much more tempting to get riled up and unleash your outburst than it is to express your appreciation for something positive. So I'm indulging my contrarian opinion today.
</p>
<p>
I dislike megas for the same reason I dislike mimikyu. It's really simple: both concepts are too self-aware, too referential. There is no in-universe explanation for which pokemon have a mega evolution — they are just the popular pokemon in our world. If mega evolution is really supposed to be the product of a deep bond between trainer and pokemon, then why are only around twenty out of hundreds of pokemon capable of reaching this state? In the same way, there is no reason for mimikyu to understand that pikachu is well-liked and to dress up as pikachu. Why should pikachu be popular in-universe? Mimikyu should just as well dress up as rattata.
</p>
<p>
I don't know why the self-referentialism bothers me so much. Media breaks immersion all the time. Maybe because it isn't tongue-in-cheek or otherwise joyful, like most good fourth wall breakages are. Audiences love seeing cast members on SNL break because it shows they're having fun with the skits and jokes too. Pokemon's meta-acknowledgement feels cynical — let's just give megas to the pokemon which are popular, so we can best sell the games. It's one thing to remind me, with a wink, that I'm playing a game in a fabricated world. It's very much another to remind me that you are <i>selling</i> me a game.
</p>
<p class="emailme"><a href="mailto:lasorbier@pm.me?subject=I hate mega evolutions">send a comment</a></p>
Atom feed intricacieshttps://sorbier.neocities.org/blog/atom.html2024-01-04T12:00:00Zsorbier
<h1>Atom feed intricacies</h1>
<p class="date">Jan 4, 2024</p>
<p>
Somehow I'm on a kick of writing a whole lot right now, and
specifically on nerdy topics it seems. I can't help myself. It's
just what's going on in my life currently. Around two weeks ago, I
had a manic (colloquial) moment, wiped my computer, and installed
Linux. It isn't the first time I've run Linux as my primary operating
system, and, every time, it just consumes my life. I think my brain
is <a href="https://www.youtube-nocookie.com/embed/40fPT0o-BhA">very
susceptible to getting hooked onto nerdy neuroses</a>. Anyway,
I downloaded a command-line feed reader and noticed that my own
blog's feed was showing up totally weirdly. This observation triggered
a (nearly) full day of reading the RSS/Atom specification and fixing
my feed generation script. I'm not going to write anything new here,
since RSS/Atom is very well documented, but I just couldn't let this
event pass by without noting it somehow.
</p>
<p>
I am also very aware that posts about a blog/site's backend are
always much more interesting for the webmaestro (do we have a
better word than webmaster yet???) and extremely
dry for everyone else. Recognising that, onto the very indulgent
post.
</p>
<h2>My feed generation process</h2>
<p>
I know lots of people use some software tool to generate their feeds,
whether Hugo or some other generator. I don't. As I noted on my
<a href="/about.html">about</a> page, I wrote everything that goes
into this website by hand, except the syntax highlighting on pages
with code snippets. Even though static site generators
are very convenient, I just like making each part of my
website myself (see the above reference to my neurotic nature,
especially in the context of tech). Anyway, that's a very
long preamble to say that I wrote the feed generator for
my blog by myself. I recognise that having to sink hours
into debugging my feed was a problem 100% of my own making because
I choose not to use an off-the-shelf generator.
</p>
<h2>My feed generating script</h2>
<p>
My script isn't anything fancy. I wrote it in Julia, the language
with which I am the most comfortable. I literally just have a
skeleton <code>feed.xml</code> file, into which the script inserts an
entry for each blog item.
</p>
<p>
My main goals with the feed were
</p>
<ul>
<li>to always have the most updated version of each post</li>
<li>to have the <em>full body</em> of each post, not just a link
to the post like some feeds</li>
</ul>
<p>
To those ends, my script basically loops through every single
blog post, extracts the necessary information for each (e.g.
title, date, body), builds an entry using this information,
then inserts the entries into the skeleton file. I know it's
inefficient to go through this process every time to generate
the feed (for example, why not only modify the entries that
were actually updated by checking something like git?),
but it's super conceptually straightforward and therefore
really easy to code up. Plus, I just don't have that
many posts yet, and Julia is a fast language, especially
for loops. The script runs in no time at all.
</p>
<p>
What is it that they say about optimisation having to balance
development time vs runtime? Usually I'm so neurotic about
optimising runtime that it's comical how much development
time I sink in. For once, I think I am striking the right
balance on this spectrum.
</p>
<h2>So what was messing up?</h2>
<p>
It's outlined in the
<a href="https://validator.w3.org/feed/docs/atom.html">W3
documentation</a>, but I just was too dense to truly get it.
Basically, to have the full content of the post in the feed
entry, I was just taking the raw HTML body of the post and
sticking it into the feed entry directly.
</p>
<p>
It turns out that, though lots of RSS/feed aggregators are
smart enough to interpret the resulting <code>.xml</code>
file properly to render the HTML, you aren't actually
supposed to straight up dump HTML into the <code>.xml</code>
file's <code><content></code> tag. If you do, the <a
href="https://validator.w3.org/feed/">W3 validation
service</a> will yell at you, and rightfuly so. It against the
specification. And, precisely for this reason, my command line
feed aggregator was not displaying my feed entries properly.
</p>
<p>
To include HTML-marked-up text in the <code><content></code> tag,
you need to
</p>
<ul>
<li>tell the <code>.xml</code> file that your content is in the
HTML format, by including the <code>type="html"</code>
attribute in the <code>content</code> tag</li>
<li><em>escape</em> any of the HTML markup syntax — for
example, a <code><p></code> tag should become
<code>&lt;p&gt;</code>
so the triangular brackets are represented with their HTML
character entities rather than their actual character</li>
</ul>
<p>
It's one of those things that's dead simple once you figure it
out, but for some reason just totally resists comprehension
until you do. Typing it out now, I almost feel silly
with how straightforward it is. But when I was in the weeds mucking
about, I tried so many permutations of escaped/unescaped,
<code>type="html"</code>/<code>type="text"</code>/<code>type="text/html"</code>, etc.
</p>
<p>
(As a little meta-comment, I actually had to escape these characters
in this blog post itself to get them to render properly. Check out
the source code of this post if you want to see what I really wrote
in that previous paragraph compared to what you see in your browser.)
</p>
<p>
I always wondered why some feeds don't have the full article content
but instead just a link to the post's page. I just assumed the
webmaestro wanted to force traffic to their website. While I'm
sure that's part of it, I am also now extremely sympathetic to simply
putting a link and not the entry's contents. It's so much easier.
That said, I guess most people just use a feed generator, like a sane
person, so maybe it's not really that big an ordeal for them to
include the post's body in the feed. Come on, people! If I can do
it, you really have no excuse.
</p>
<h2>Thanks for nothing, Linux</h2>
<p>
I'm writing this post for my future self as reference,
and for the minute possibility that someone else is both
as stubborn as me about building a feed generator by
hand and also stuck on how to actually get the articles
to display properly. The likelihood is definitely laughably
slim. Even if such a person exists, chances are they haven't
noticed that their feed is wonky because, as I previously
mentioned, most feed aggregators now are smart enough to
parse an incorrectly-structured feed (e.g. with unescaped
characters). It's why I, myself, didn't notice there was
something wrong with my feed until this week.
</p>
<p>
I only really became aware of the problem, as I said, because
I tried to view my feed with a command-line aggregator that
doesn't do the smart parsing. (It's
<a href="https://www.newsboat.org">Newsboat</a>, by the way.)
I guess I have Linux to thank for that. You certainly don't need
to be using Linux to use a command-line aggregator, but something
about being on Linux makes command-line tools feel so much more
<em>a propos</em>. People always say using Linux is good because
it forces you to learn about your computer system more deeply. I
definitely think that sentiment is true, and I didn't really need
convincing of it, but here's a cute example regardless.
</p>
<p class="emailme"><a href="mailto:lasorbier@pm.me?subject=Atom feed intricacies">send a comment</a></p>
Update on Helix, the modal editorhttps://sorbier.neocities.org/blog/helix.html2023-12-29T12:00:00Zsorbier
<h1>Update on Helix, the modal editor</h1>
<p class="date">Dec 29, 2023</p>
<p>
Hey, look at that! Maybe my last post of the year <a href="/blog/igforwarding.html">won't be so negative</a> after all!
</p>
<p>
In looking back through my blog, I noticed that I had quite a few tech-flavoured posts: about my <a href="/blog/computingsetup.html">Mac Mini</a> that I was using as a pseudo-laptop, <a href="/blog/degoogle.html">what I use</a> instead of Google/Facebook/Amazon products, my <a href="/blog/keyboard.html">keyboard</a>, my <a href="/blog/tokyonight.html">vow to retry "Vim"</a> (actually Helix), and <a href="/blog/juliapackage.html">countless</a> <a href="/blog/aoc1.html">posts</a> <a href="aoc2.html">about</a> <a href="/blog/revisejl.html">Julia</a>.
</p>
<p>
I thought I was due for an update, especially on my experimentation with Helix. I don't expect my blog posts to remain relevant forever — exactly the distinction between the posts that go to the blog and the writing that goes to the <a href="/">front page</a> — but it did seem kind of unsatisfying that I said I'd try again to learn a modal text editor, but then never reported back.
</p>
<h2>So how's it going?</h2>
<p>
In short, great!
It's been over a year since that original blog post about Helix, and since then it has really become a comfortable part of my routine.
I do so much writing: of code, of academic papers, of presentation slides.
I used to write these all in a graphical text editor, except for code, for which I felt forced to use VSCode.
As I complained in that previous post, though, I hated VSCode.
It felt clunky and over-stuffed, with too many features that I didn't use weighing down its speed.
The settings menu was overwhelming.
It ate up RAM.
And, most pettily of all, it was ugly.
</p>
<p>
Looking back, I was lucky to have stumbled into Helix.
Though, at the time, I thought that it was basically the same as all other modal editors (like Vim or NeoVim), it actually is not.
I somehow blindly stumbled into the exact modal text editor for me.
</p>
<p>
Once I got used to the concept of a modal editor and learned the keybindings, Helix quickly revealed its very intuitive nature.
Unlike VSCode, it was light and pleasant.
It didn't jealously hoard resources.
It worked without any setup, and what configuration I did do was manageable and unintimidating.
I can't stress this part enough — I always got overwhelmed in VSCode's settings menus (plural!), feeling unpleasantly defeated whenever I opened the software.
Like an outfit sometimes wears a person, I felt like VSCode was running me.
Getting into Helix was like getting onto a smooth on-ramp.
Because Helix worked right away, I didn't have to start by reading documentation and setting it up.
I started writing right away.
In the meantime, I could chip away at the configuration slowly, which itself was very approachable.
</p>
<p>
By now I have Helix configured in a way that I like.
My Helix configuration file is under 50 lines long (though a bit longer if you include the separate file that sets up LSP functionality).
I haven't tried Kakoune or NeoVim, but based on my understanding of them, I'm not sure my return to modal editors would have been successful if I had tried with them.
In particular, I've read that NeoVim takes a lot of tinkering and configuring before it works productively.
I do appreciate a barebones approach that allows a user to only implement features they want (after all, I just dinged VSCode for being overbloated with unwanted features), but it isn't beginner friendly.
I don't rule out tinkering with NeoVim some day, but as someone who just wanted to start using a sensible text editor for my work, I really appreciated the balance both of features and restraint that the designers of Helix obviously struck with intention.
</p>
<p>
The Helix experience has the same smooth approach when it comes to actually learning the modal keybindings.
Though I read through the modal concept for a few minutes, most of what I learned came from using Helix itself.
The reason I could even learn on the fly is that Helix has everything well documented inside the editor itself.
There's a help menu, like the VSCode control palette, where you can search for functionality.
Each function has its keybinding right there beside its description, so once you search for it enough times, you will just remember the keybinding.
There are a few menus in the editor which list some common functionalities, so you don't even have to search for the most important ones.
It really felt like Helix held my hand and was designed with newcomers to modal editors in mind.
</p>
<p>
That isn't to say that Helix is just for beginners.
The "tutorial" parts are unintrusive if you don't want them.
By now, since I know what I'm doing, I almost never interface with or see the guiderails.
There are several "serious programmers" who use Helix, who I mentioned in my previous post as actually having been my inspiration for trying it out.
It has lots of features that help me be much more efficient than I ever was with any other text editor.
Though I'm sure some of that improvement must be attributed to modal editors in general rather than Helix specifically, let me just list a few here for now.
</p>
<ul>
<li>I love the built-in git highlighting and the ability to revert individual lines.</li>
<li>LSP support is great: I can look up a function's documentation directly in the editor.</li>
<li>I cannot begin to guess how much time the matching mode has saved me — quickly deleting, adding, or replacing paired characters (like parentheses or brackets) without finding each character is like magic. It's easy to see how operating on parentheses or braces could be helpful when programming, but it's surprisingly relevant just when writing prose. But the real area for this feature is LaTeX. Being able to select and operate on chunks within curly braces is so nice.</li>
<li>Split view! Vertically or horizontally!</li>
<li>You can pipe things to the shell (though I'm not personally good enough at shell scripting to do more than the basics).</li>
</ul>
<p>
The one thing in Helix that really sets it apart, different most other modal editors, is its cursor-first paradigm.
This aspect is paradoxicaly the one most likely to trip up those experienced with Vim.
Since I don't actually know much about vanilla Vim besides the few hours in the tutorial I completed years ago at this point, I can't do a detailed comparison.
I do remember that, in Vim, you had to anticipate what a change would look like before you implemented it.
You need to know how many letters you want to delete, for example, before you start deleting.
With Helix, you use the cursor to select the letters to delete (like in visual mode), then invoke the delete.
Seeing the text on which you're about to operate is much easier and intuitive.
The alternative was one thing that I found very difficult to grasp intuitively with original Vim.
How am I supposed to know how many letters or words I want to count or move?
I didn't think naturally that way and I didn't like having to count letters.
I do acknowledge that it's probably much faster for coding, once you learn how to do it, to just type 3D rather than having to select the three characters before deleting them.
Aside from not being able to do it very well fluidly, I also don't exclusively write code for my work.
I write a lot of prose, both for work and for my hobbies, the text for which is much less structured by nature.
I just think it would be hard to have an intuition for the number of words or letters when writing prose compared to code.
</p>
<p>
The cursor-first design really sings when it comes to multi-cursor actions.
You can have multiple cursors at once, and each cursor will replicate your commands.
For example, if you have a cursor on each line of a five-line file and insert, then each line with have the inserted characters.
I absolutely love this ability!!!
Let me illustrate with a story.
When I was getting into programming more involved numerical computations, I asked a software developer friend what to do with all the arguments.
Some of my functions could be parameterized by dozens of arguments.
Often, multiple functions would have the same long list of arguments, since one function would call the next, and so on.
Even if I wrapped the arguments in a structure, so I didn't have to call the functions with a long list of arguments, I would then have to retrieve the arguments from the structure for every single function.
How much time was I going to waste typing out arguments in function defintions and function calls?
Worse, how much time was I going to waste double checking these lists were consistent whenever I had to change an argument or two?
It was driving me crazy.
I felt like I must be doing something wrong.
There was no way professional software developers were living like this!
</p>
<p>I was disappointed.</p>
<p>
My software engineer friend said, "Nope. You basically just write them every time. Copy and paste is your friend."
Oh, my god.
I don't think I'd ever felt that cheated.
Of course, Helix and its multiple cursors solved the problem for me instantly and elegantly.
I could just write all my function definitions and calls with empty arguments.
Then, once everything was written, I could select every instance of a function call or definition, then insert all the arguments a single time.
Any time I wanted to modify the arguments, same story — just select the lists all at once and edit away.
</p>
<p>
It may be a silly example, but I really can't imagine how much time something this simple has saved me.
Of course, it's only one instance of many where multiple cursors have been a huge efficiency boost.
(Dealing with tables in LaTeX is another common one.)
What's more, it's <em>fun</em>!
Seeing multiple cursors simultaneously typing or deleting on your screen, watching the text expand out or contract in identically all at once — it gives me an indescribable, juvenile, feeling of satisfaction.
</p>
<p>
Writing in Helix is a delight.
</p>
<h2>Helix to the moon</h2>
<p>
I have to admit, it's beautiful in a nerdy way to see all my tech posts come together to form my current Helix success story, like small tributaries that wander around without knowing the river into which they will ultimately flow.
For example, I wouldn't be able to use Helix so productively if I hadn't figured out the <a href="/blog/revisejl.html">Revise</a> and <a href="/blog/juliapackage.html">package</a> workflow for Julia.
Revise tracks and incorporates into the REPL any changes made to an active package, which allowed me to dump VSCode definitively since I no longer needed its IDE capabilities.
Being able to separate editing Julia code from running Julia code meant I could go full steam ahead with Helix as my editor and a simple terminal for the REPL.
</p>
<p>
In a similar way, now that I have a laptop, I keep my <a href="/blog/computingsetup.html">Mac Mini</a> at the office and remote into it sometimes.
Remoting into anywhere was always a huge pain because editing files from a terminal, or executing it in Julia, was such a pain.
Since Helix is a terminal-based text editor, I've solved that problem as well and reinforced my love for it even more.
</p>
<p>
I admitted in my original Helix post that a big motivation for the switch was that I wnated a consistent colour scheme over all my text-based activities, notably my terminal, text editing, and note-taking with Obsidian.
In particular, I no longer use Obsidian for note-taking because it suffered the same problems as VSCode, though to a lesser degree: it was clunky, burned resources, and over-featured.
I was originally drawn to Obsidian because you could take notes in LaTeX and see the math right away without having to compile.
A huge downside was that it used MathJax, a web-based library, to render the LaTeX.
In other words, I needed an internet connection essentially at all times.
Besides being inconvenient during travel, sometimes I just like to disconnect from the internet and zone in on work.
Just like from VSCode, Helix has freed me from Obsidian.
With its built-in LSP support, Helix can be set up to compile any LaTeX document automatically on save.
Problem with LaTeX notes solved.
Of course, now that Helix has basically taken over everything text-related, I have achieved my consistent colour-theming goal with ease: setting the same theme for Helix and my terminal has done the trick.
What's <em>more</em>, in a <em>truly</em> full circle moment, I dropped the Tokyo Night theme and simply chose the same colours as I use on this very Neocities page!
</p>
<p>
(And it goes without saying that all work in the last year on this Neocities site has been done in Helix.)
</p>
<h2>A brief self-important reflection on Uses</h2>
<p>
It also turns out that a few statements I made on my <a href="/blog/degoogle.html">De-Googling</a> post are not true any more.
Though I know some people have a <a href="https://uses.tech/">"uses" page</a>, that could easily solve this problem of outdated tech statements, I'm not so keen on the idea.
For one, it veers pretty close into couching your <a href="/essays/identitythroughconsumption.html">personal identity</a>, if partially, in the objects you use and consume.
Though I'm not perfect, I've really been trying to rethink and avoid that impulse.
Especially for tech nerds (of which I begrudgingly admit I am one), the notion of gear and software is so personally important.
Don't we all know an Apple fanboy?
</p>
<p>
More importantly, though, it feels a bit soulless to just have a page listing tech that I use.
If we've learned anything in the recent dramatic ramp-up of tech presence in our lives, is that technology is greatest when it facilitates human connection.
That's the backbone of the indie web ethos, isn't it?
When technology instead serves corporate interest, it becomes a dystopian nightmare of surveillance, advertising, and consumerism.
I don't want to be part of that.
If I'm going to talk about the tech I use, it will be more than a cold list of items with no meaning.
I want to tell the human story: what has this tech done for my life?
How do I feel about it?
How does it relate to me as a person?
If I don't have something personal to share about these items, what is even the point of listing them on my website?
Believe me, though — since I'm a (if self-conscious) tech nerd, I never run out of personal thoughts about tech.
</p>
<p class="emailme"><a href="mailto:lasorbier@pm.me?subject=Update on Helix, the modal editor">send a comment</a></p>
Unsubscribe me from the IG mailing listhttps://sorbier.neocities.org/blog/igforwarding.html2023-12-28T12:00:00Zsorbier
<h1>Unsubscribe me from the IG mailing list</h1>
<p class="date">Dec 28, 2023</p>
<p>
My (likely) last post of the year, and I'm going to spend it raging.
Oops, sorry.
</p>
<p>
I just can't help myself.
I received a DM on Instagram from a friend, which was just one Instagram reel, which prompted the following stream-of-consciousness rant to a private Discord server:
</p>
<blockquote>
idk where else i direct my old man shouts at world energy<br/><br/>
but i really really hate when people just send you memes/content/ig posts with no message whatsoever<br/><br/>
it's like the lowest form of communication, it's barely interpersonal interaction. one of my friends just sends a totally unannotated string of garbage posts from instagram and it peeves me every single time. i could see the content if i wanted to see it. literally add any single sentence so i feel like i'm talking to my friend rather than getting a feed of posts<br/><br/>
everyone is talking about dystopian web 3.0 nightmares but i think this one might be the personal thorn in my side. i've seen entire groupchats that's just ig post after ig post, with reacts if you're lucky, and no one has typed a single word in years <br/><br/>
it's probably completely antisocial but i'm so tempted just to tell this guy outright to stop sending me random posts with nothing else attached<br/><br/>
the ABSOLUTE NAIL IN THE COFFIN is whenever i reply to this guy with text, like i actually write something about the post he sent, he never responds
</blockquote>
<p>
I guess I've decided Neocities is where I should ultimately direct my old man yells at world energy.
Older generations have always judged the technologies of newer generations out of fear.
I used to think I was the opposite — <a href="https://iwonthepageant.tumblr.com/post/148377113150/i-love-being-a-millenial-so-much-i-love-it-i">bring on</a> the silly photos, filters, and memes.
But maybe I have finally hit that point.
After all, the ruling digital class is no longer the millenial.
</p>
<p>
As I already described, I feel irrationally angry when I receive these kinds of messages — where some piece of internet content is (usually) thoughtlessly forwarded with no accompanying message.
It feels cold, unpersonal, and careless.
Why are you sending me this content?
What are we meant to connect over?
Reintroduce your humanity!
Reach out with your brain to mine!
I don't want to feel like I'm just interfacing with what could have easily just been an app's feed of content!
</p>
<p>
What's more viscerally horrifying is how I perceive this way of communication is taking over.
Though I am not in the group chats that are just an endless stream of exclusively content and reacts, I have seen many of them glancing over the shoulders of my friends.
I shouldn't pooh-pooh the fun of others — if they're not bothered, why should I be?
But I feel a sinking in my stomach every time.
How much meaningful interaction, conversation, and deepening interpersonal understanding has been replaced by sharing junk food content, easily and without a real thought?
</p>
<p>
Again, I know I shouldn't disparage what other people are doing, if they like it and it doesn't hurt anyone else.
After all, how do I know the meme-sharing is overwriting deep emotional bonding?
Maybe these groups wouldn't even communicate, if it weren't for easily forwarded Instagram reels and pre-defined emoji reacts.
I can only really make statements about myself.
</p>
<p>
So here's my statement: I don't want to be part of this conversation.
Leave me out.
</p>
<p>
Unsubscribe me from the content forwarding.
</p>
<p class="emailme"><a href="mailto:lasorbier@pm.me?subject=Unsubscribe me from the IG mailing list">send a comment</a></p>
An integration between producing and consuminghttps://sorbier.neocities.org/blog/productionintegration.html2023-11-18T12:00:00Zsorbier
<h1>An integration between producing and consuming</h1>
<p class="date">Nov 18, 2023</p>
<blockquote>
As a publisher, I have learned that it's possible to sell hundreds of thousands of books about knitting, brewing beer, and stacking wood. A great many of us have a desire to return to something basic, authentic, and to find peace, to experience a small quiet alternative to the din. There's something slow and sustainable about such pursuits, something meditative. <i>[...]</i> This is not just a new trend, or a fad; it is a reflection of a profound human need. Knitting, brewing beer, felling trees; these are activities that all have something in common. You set yourself a goal and carry it out — not all at once, but over time. You use your hands or your body to create something.
</blockquote>
<p>
This quote is from Erling Kagge's <i>Silence: In the age of noise</i>, which a friend lent to me. He thought I would get a lot out of reading it.
</p>
<p>
The author is making the argument that silence, especially meditative internal silence, is valuable. He cites the popularity of books on activities like knitting, brewing beer, or stacking wood (homesteading?) as support for his claim. Of course, in a book centring silence, it makes sense that he interprets the popularity of these activities through their meditative and silent practice.
</p>
<p>
Reading this passage, though, made me think about something else. As he described the <em>practice</em> of these activities — truly a practice, as he describes, in the sense that you slowly complete your goal over time — I thought about my own joy from knitting a scarf. While I did appreciate the silent, meditative, process of knitting, I think a large part of my joy has been actually <em>wearing</em> the scarf afterwards. The satisfaction you get from using something you made with your own hands is not an uncommon unfeeling.
</p>
<p>
Thinking more about it, I think there's a fundamental joy in the <em>integration</em> of production and consumption: wearing something that you, yourself, knit; eating bread that you, yourself, kneaded; using something that you, yourself, made. I don't get joy from wearing my scarf predominantly because it's a nice scarf to wear (although it is), but because I am happy that I am wearing something that I made with my own hands. Though <a href="/essays/physicalminimalism">I adore all of my clothing items</a>, most of which I did not make myself, and derive joy from wearing them, this joy is mostly about their beauty and functionality. On the other hand, the happiness I get from wearing the scarf I knit myself is unique. If I had bought it rather than knit it myself, I would not wear the scarf with the joy that I do now.
</p>
<p>
Anticipating that I would eventually wear the scarf also changed the experience of knitting it. It turned the practice into a labour of love. If I had instead knit that scarf knowing that I would sell it, I would not have enjoyed knitting it as much. Just as having crafted the scarf heightens the experience of wearing it, knowing that I would ultimately wear the scarf similarly enriched the experience of knitting it. The two acts of knitting and wearing are more than the sum of its parts: it's their <em>integration</em> that creates a new totally new satisfaction. We also generally can derive this pleasure if we gift our creations, since we know the person who ultimately uses them.
</p>
<p>
Today's economy does not encourage this integration. To the contrary, it is built around specialisation. Everyone focuses on the creation or provision of one good or service (or a small number of them), which we trade for the productions of other people. While specialisation is more efficient, it divorces the two acts of production and consumption. We commonly do not consume the outputs of our labour, and in the same way our consumption is not directly produced with our own labour. A baker doesn't eat most, if any, of what they bake; instead, the baker buys from other producers a majority of they actually consume, from food to clothing to services. I wonder if this separation (partially) explains why "job-ifying" our passions seemingly paradoxically sucks the joy out of them, or why <a href="/essays/phyisicalminimalism.html">people can seem unfulfilled with their purchases</a> even as consumer goods get cheaper over time and people can largely afford more than before.
</p>
<p>
I don't think specialisation is a bad thing. I think we are much better off with it — imagine a world where everyone had to farm their own food, build their own houses, and make their own clothing. But I do think that, in our rush for efficient specialisation, we have lost this special joy that we derive from the integration of production and consumption. I hope we can rediscover this joy in small ways: me with my scarf, others with their breads, and still others with their beers. The popularity Erling observes of books about crafting is encouraging. Dear reader, I hope you are enjoying your own craft, both the process and the output, whatever it is.
</p>
<p class="emailme"><a href="mailto:lasorbier@pm.me?subject=An integration between producing and consuming">send a comment</a></p>
What to practicehttps://sorbier.neocities.org/blog/practicing.html2023-09-20T12:00:00Zsorbier
<h1>What to practice</h1>
<p class="date">Sep 20, 2023</p>
<p>
Today, I was thinking about what people choose to practice. Often, we practice things that leave easily externally visible marks: our strength to build muscles, or our professional skills to build careers and promotions. Most self improvement starts at the gym or studying.
</p>
<p>
I wouldn't even say most of us practice almost exclusively these things simply because we're shallow. They are the things that we see everyone suggest and practice themselves.
</p>
<p>
But I wonder about practicing traits that are generally discussed as though they are innate. I want to practice, and get better, at kindness. Empathy. Respectfulness, humility. Just as we can build our muscles so that a move that used to require concentration and force can grow to become second nature, I want to intentionally practice conscientiousness.
</p>
<p>
I'm going to think about exercises for my nature.
</p>
<p>
(I don't mean for this blog post to come off preachy or self-righteous! It was just a idea I had. I, of course, also have the tendency to practice the default things: muscles, body, and skills. I only had the thought today to question this approach. But now that I have, I want to be a bit intentional about exercising these equally important, if not more important, dimensions of myself.)
</p>
<p class="emailme"><a href="mailto:lasorbier@pm.me?subject=What to practice">send a comment</a></p>
Convenience Store Womanhttps://sorbier.neocities.org/blog/conveniencestorewoman.html2023-08-30T12:00:00Zsorbier
<h1>Convenience Store Woman</h1>
<p class="date">Aug 30, 2023</p>
<details open class="authorsnote">
<summary>
Author's note
</summary>
This post has been edited and reposted as an <a
href="/essays/conveniencestorewoman.html">essay</a>.
</details>
<p>I have recently been trying to read more, especially in place of <a href="/essays/identitythroughconsumption.html">watching YouTube videos</a> (yes, the habit ebbs and flows). Browsing through my library's available books, I found <i>Convenience Store Woman</i>, written originally in Japanese by Sayaka Murata and translated to English by Ginny Tapley Takemori. The description drew me in right away: a woman reflecting on her purpose, questioning ambition, and trying to dissect the rules of society with almost alien-like confusion. I have struggled to unknot these exact topics repeatedly, <a href="/blog/writing.html">once even on this blog</a>.</p>
<p><i>Convenience Store Woman</i> paints a vignette of Keiko Furukura, a 36-year-old woman who has worked in a convenience store since she was 18, when it first opened. She more than enjoys her job: it is her life's purpose. While nearly everything else in the store has changed over — the other workers, the managers, and even the store's inventory stock — she has been there, learning better than anyone else how it functions. Her deep understanding of its rules and routines is her main source of pleasure, since she has trouble grasping nearly any other aspect of society. In a series of flashbacks, she describes a few events in which she sensed that she did not act in the way others expected. In one, after finding a dead pet bird as a small child, she asks her mother to cook the bird since she knows her father likes to eat chicken teriyaki. When her mother offers to bury it instead, she can't understand the purpose of burial, and continues to insist on making teriyaki.</p>
<p>In the present day, Keiko works at the convenience store, fastidiously following its employee manual and imitating the patterns of speech of her coworkers. In her days off, she visits either her sister or her former college classmate. Both worry that she does not have a career or husband, but she is happy the way she is, having established a routine that works for her and learned how to behave to avoid being perceived as abnormal. However, during a barbecue hosted by her classmate, her carefully prepared social script finally fails as the other guests ask her if she has ever dated and why she hasn't married yet. Concluding that she will now need a man to continue fitting in, she offers to house Shiraha, another worker at the convenience store, who has recently been evicted from his apartment. From the outside, her friend and sister interpret this arrangement as romantic, though in practice she treats him like an obligation or a pet, and are overjoyed with the news. Although Keiko goes through the motions of appearing romantically engaged with Shiraha, even quitting her job at the store, she eventually realises that she does not want to be anything other than a convenience store woman.</p>
<p>It wasn't until after I had finished reading the book (a very short novella!), that I discovered it was extremely acclaimed. I can see why immediately — the writing style is a pleasure to read, and the themes are universal. Given its reception, what can I say about this book that hasn't likely already been said? Regardless, I wanted to write my initial reactions.</p>
<p>Fundamentally, I interpreted this book as deconstructing social expectations and conformity. Keiko does not understand the unwritten rules of society, neither at the level of interpersonal social interation, nor at the broader level of what is expected out of a person's life progression. Her observations of and struggles with these expectations forces us to examine them ourselves.</p>
<p>Since Keiko's "mistakes" as a child, she never says what she is truly thinking, and moreover just keeps silent unless she has a canned response, prepared by her sister, ready. Day to day, Keiko observes the behaviour of others nearly scientifically, often noting their contradictory nature. For example, she has noticed that her coworkers will brighten if she echos their anger, explaining that they would appear happier if she reacts with anger compared to positivity. In another passage, she acknowledges that her friends are more reassured with the explanation that she stays employed at the konbini because a chronic illness prevents her from having a career, rather than because she simply likes it. Her failed attempts at explaining many social patterns that most understand intuitively give the reader the perspective to question their unspoken validity.</p>
<p>Given her hyper-rational approach to understanding and interpreting social behaviour, readers have speculated that Keiko has autism. While I am happy that many autistic readers see themselves in Keiko and relate deeply with her, I think everyone can learn from her commentary. That she struggles with society's paradoxical conventions is both relatable and a call to reflection to all readers. I have spent countless hours anxiously trying to understand and taxonomise the unspoken conventions of social interaction. Over time, Keiko has learned to mirror the speaking and dressing patterns of her co-workers, a behaviour which may seem at first neuro-atypical, until she notes that everyone seems to do so. The only difference is that she approaches this mimicry with intention, while she surmises that most absorb their surroundings into themselves seemingly unconsciously. Her observations urge us to rethink the strength of our own identity and how much we may bend to the expectations of others, <em>especially</em> those of us for whom these adjustments come naturally. What has been the role of society in shaping each of us?</p>
<blockquote>My speech is especially infected by everyone around me and is currently a mix of that of Mrs. Izumi and Sugawara. I think the same goes for most people. [...] And I probably infect others with the way I speak too. Infecting each other like this is how we maintain ourselves as human is what I think.</blockquote>
<p></p>
<p>While the first half of the book focuses on the intracacies of ordinary social interaction, the second half zooms out and turns a critical eye on the larger expectations of society. Partway through the book, Keiko begins to receive signals that her existing social strategies, which her friends and sister seemingly tolerated before, are increasingly inadequate. They question when she will marry, or get a career, or do <em>something</em> beside live alone as a single women working part-time in a convenience store.</p>
<p>The different expectations on her — that she marry, have children, or pursue a career (in order of preference) — illustrate how larger social forces play out on the small scale, in social interaction. Though she is aware that her life is not enough for those around her, she does not want to marry or leave her job at the convenience store. Instead, Keiko comes up with a plan. She has observed that, when given a vague answer to a question, others will fill in the rest with whatever story is most in line with their own expectations. Based on this pattern, she offers to an evicted Shiraha that he live with her, anticipating that everyone will assume they are dating and on the track to marriage.</p>
<p>As expected, Keiko's friends and sister are overjoyed when they hear she is living with a man, immediately assuming that they are dating. Though Keiko expected this reaction from her friends, she is surprised by how her sister takes the news. Always having seen her sister as an ally in her quest to appear normal, especially as the source of her pre-planned answers and social script, she calls her sister once Shiraha has moved in to share her plan. Before she can explain that she and Shiraha are barely acquainted, her sister immediately congratulates her and asks if they will get married. Keiko is so taken aback by everyone's immediate yet abrupt relief that she realises they never saw her as one of them before. In their desperation to reconcile Keiko's behaviour that is outside the norm of social expectations, they never accept to see her as she truly is. Regardless which of the acceptable routes Keiko actually chooses, the main message is that society cannot tolerate Keiko living her life as it is. </p>
<blockquote>Everyone seemed happier than when I'd told them I'd never been in love, and they were carrying on as if they knew everything about my situation. The previous me — who'd never fallen in love or had sex, who'd never had a proper job — had sometimes been hard to read. But everything about the new me — the one who had Shiraha living with her — was clear, even my future. Listening to my friends go on about me and Shiraha was like hearing them talk about a couple of total strangers. They seemed to have the story wrapped up between them. It was about characters who had the same names as we did, but who had absolutely nothing to do with me or Shiraha.</blockquote>
<p></p>
<p>The subconscious refusal from both her sister and her friends to consider that Keiko may not follow the conventional path forces the reader to ask the deeper question of life's purpose, and society's role in its determination. The story asserts that, in the eyes of society, there are only two acceptable possibilities: to get married and have children, or to have a respectable career. The narrative underlines the centrality of these two options, since they are the only two presumptions filled in by Keiko's peers when she provides vague non-answers. For women, the first is the preferable route; for men, the second. Other readers have interpreted this book as a critique on gender norms, mysogyny, capitalism, and workoholism. These forces are undoubtedly present in the narrative, but I think the larger issue is how these paradigms and their accompanying rigidity are perpetuated through a society that expects conformity to its norms. Any principle, whether positive or negative in general, can become restrictive in a society that is either subconsciously or intentionally intolerant.</p>
<p>Indeed, the last section of this book contrasts how Keiko feels when she follows the path prescribed by her peers compared to when she does what she loves at the convenience store. Though she feels socially accepted when she appears to have a partner and begins applying to "more serious" jobs, she feels listless and empty. She describes her body as purposeless, seeing no point in eating, sleeping, or personal hygiene. Her emotions during this period are in stark contrast to her vibrating joy and enthusiasm when she works at the convenience store. The final pages of the book, when she wanders into the convenience store by accident and feels her mind reawaken, begs of the reader the simplest request: can't we allow everyone to choose their own life purpose based on how it feels internally rather than externally?</p>
<p class="emailme"><a href="mailto:lasorbier@pm.me?subject=Convenience Store Woman">send a comment</a></p>
Julia, Revise, and DrWatsonhttps://sorbier.neocities.org/blog/revisejl.html2022-12-27T12:00:00Zsorbier
<script src="/prism/prism.js"></script>
<h1>Julia, Revise, and DrWatson</h1>
<p class="date">Dec 27, 2022</p>
<p>
So the blogging about Julia continues. I didn't really anticipate I'd blog so much about Julia (or crosswords, <a href="/blog/nytxw1.html">for</a> <a href="/blog/nytxw2.html">that</a> <a href="/blog/nytxw3.html">matter</a>), but here we are, I guess.
</p>
<p>
Just like my post about <a href="/blog/juliapackage.html">the mechanics of setting up to write a Julia package</a>, this post is mostly for my own reference, so I can remember how to do things later down the road.
So here's the problem: I want to use <em>both</em> <code class="language-julia">Revise.jl</code> and <code class="language-julia">DrWatson.jl</code> with my project.
The problem is that <code class="language-julia">Revise.jl</code> mostly expects you to be working on something that's semantically packaged, while <code class="language-julia">DrWatson.jl</code> doesn't really generate Julia packages.
In fact, if you use the built-in <code class="language-julia">] generate NewProject</code> functionality that lays out the skeleton of a package for you, <code class="language-julia">DrWatson.jl</code> will refuse to initialise it as a new project.
The reason is, of course, that the folder isn't empty — it's got all the files associated with a new package.
If you ask <code class="language-julia">DrWatson.jl</code> to forcibly initialise the project, it will first erase the directory's contents.
That's definitely not what we want.
</p>
<p>
So how do we get the two productivity tools to play nice with each other?
Here's my extremely roundabout solution. If someone knows a more graceful way, I'd be happy to hear it.
</p>
<ol>
<li>
Create a package using <code class="language-julia">] generate NewProject</code>. You will get a folder called NewProject in your current directory.
</li>
<li>
Initialise a new DrWatson project with
<pre><code class="language-julia">using DrWatson
DrWatson.initialize_project("tmp")</code></pre>
or whatever temporary name you'd like. You'll get another new directory called tmp.
</li>
<li>
Move everything from the tmp directory to the NewProject directory, <em>except</em> the <code>Project.toml</code> file and the <code>src</code> directory.
The NewPackage directory should already have its own versions of them (that were generated earlier).
Make sure to move the hidden items too, namely the git stuff.
</li>
<li>
Delete the tmp directory if you'd like — you've already gotten what you wanted out of it.
</li>
<li>
Optionally, write a little helper file that will pull everything in for you:
<pre><code class="language-julia">import Pkg; Pkg.activate(pwd()); Pkg.instantiate()
using DrWatson, Revise
using NewProject</code></pre>
This little script will add the current directory to the list of locations that Julia looks to find packages.
It then activates the current directory as a project, pulls in DrWatson and Revise, then finally loads the current project.
Of course, the script assumes that you're running Julia in the project's directory.
I usually call it <code>intro.jl</code> and just run it every time I open the project.
</li>
<li>
Finally, commit all your hard setup work via git!
</li>
</ol>
<p>
Yeah, a short nerdy blog for today.
If the nerdiness is too much, then wait until I do an update on <a href="/blog/tokyonight.html">using Helix</a> or a recap of <a href="https://asahilinux.org/2022/03/asahi-linux-alpha-release/">setting up a vanilla Arch Linux install</a> (oops!).
</p>
<p class="emailme"><a href="mailto:lasorbier@pm.me?subject=Julia, Revise, and DrWatson">send a comment</a></p>
Tokyo Nighthttps://sorbier.neocities.org/blog/tokyonight.html2022-12-10T12:00:00Zsorbier
<h1>Tokyo Night</h1>
<p class="date">Dec 10, 2022</p>
<p>
While this blog post is titled Tokyo Night, it really is about a bunch of things. I guess I should just start from the very beginning (a very good place to start).
</p>
<p>
It all began years ago. I can't remember exactly how I ended up there, but I heard of Vim. (This statement feels a little like the computer version of "one time at band camp".) I tried to complete the tutorial but found it too complex and unintuitive — after all, we all spend so much time developing a muscle memory of normal computer operations: up, down, left, right, shift to select, control to skip words, and so on. It would be very difficult to relearn it all... and for what reason? After an evening, I closed the tutorial and moved on.
</p>
<h2>
I'm giving Vim another try
</h2>
<p>
I never really forgot about it though. Just like <a href="/blog/aoc2.html">Cartesian Indices</a> in Julia, I had the sense that, if I could <em>only</em> wrap my own dumb brain around it, it would be a really powerful tool. This feeling only intensified as I began to get more into programming for my work and led me to interact with these communities more deeply. Lots of developers used Vim, Emacs, or other terminal-based text editors. What did they know that I didn't? What were they getting that I wasn't? Maybe you could ungraciously just say that I had intense FOMO.
</p>
<p>
I think the final straw was how alien VSCode feels to me. I've been using it begrudgingly for the past few months (more accurately, I've been using VSCodium). While I can tell it is a powerful development environment, I just didn't like how it felt. Maybe it's because it seemed too heavyweight for my preferences. Before switching to VSCodium, I had been using much more basic editors like CotEditor or Geany. For whatever reason, I tend to like something that seems primarily like a text editor than a full-fledged application with lots of built-ins, plugins, and extra functionality. Go figure.
</p>
<p>
Recently, I got a new laptop (yeah, I know, there goes my dedication to the <a href="/blog/computingsetup.html">weird computing setup</a> — though I think over a year and a half is a pretty respectable length of time to commit to something). Maybe the change in device has been signalling to my brain that it's also the time to make changes to my software, text editor included.
</p>
<p>
So here we are. I'm giving Vim another try. Well, more accurately, I'm trying <a href="http://www.helix-editor.com">Helix</a>. Some names I recognise praised it in a Julia group. I don't have a deep enough knowledge to appreciate its differences from Vim or Neovim, but I'm sure they're important. To me, it has a lot of the same fundamentals: insert vs normal mode, selecting words at a time, and Vim's really weird search methods.
</p>
<p>
I'm hopeful I'll be able to get more out of this terminal-based editor this time. There are definitely some things that have changed that might help me in that sense. For one, I've been using regex regularly, so the search feels much more natural now. Now that I think about it...maybe that's the main change. But it's a big one! How often does one search???
</p>
<h2>
Colour schemes
</h2>
<p>
Maybe frivolously, I'm also excited to have a colour scheme that's hopefully harmonised across much more of my text experience. Previously, I had a different colour scheme for my terminal, for VSCode, for Obsidian... Though I wanted to have the same one for all of them, there just wasn't a theme I like that was available for them all. Now, though, I am happy to say that this inconsistency has been fixed by a single theme: Tokyo Night, the title of this blog post! (Yes. Even though I recognise it's a frivolous concern, it's also such an important one that I felt it was worth the title of this blog post.)
</p>
<p>
Trying to get colour schemes working in Helix led me down a rabbit hole of discovering that the macOS native terminal app doesn't do full colour; it took me a while to muck around and understand what was going on before I managed to pick a terminal app that supports full colour and was pleasant to use. (It's <a href="https://wezfurlong.org/wezterm/">wezterm</a>, incidentally.) By a happy coincidence, the theme I picked for Helix was also available for the terminal! Consistency between my text editor and terminal has been achieved at last. (I guess the last question that remains is Obsidian. I've been feeling some doubt over whether I should continue using it. Let's see.)
</p>
<p class="emailme"><a href="mailto:lasorbier@pm.me?subject=Tokyo Night">send a comment</a></p>
Advent of codehttps://sorbier.neocities.org/blog/aoc2.html2022-12-09T12:00:00Zsorbier
<script src="/prism/prism.js"></script>
<h1>Advent of code</h1>
<p class="date">Dec 9, 2022</p>
<h2>Dec 8, 2022</h2>
<p>
I solved this puzzle with <code class="julia-language">CartesianIndices</code>. Though I'm not sure that was really necessary, I chose to because I wanted to get more familiar with them. I still don't totally grasp the point of them, but I have a nebulous feeling that they <em>could</em> be very powerful, if only I understood them deeply. Indexing always kind of scares me since it isn't super intuitive (and I know there's a whole debate about 0-indexed vs 1-indexed, which arguments on both sides about being more intuitive).
</p>
<p>
I also discovered <code class="julia-language">readeach</code> which reads an <code class="julia-language">IO</code> stream character by character. Another "tech" that was totally unnecessary for today (probably better just to read the trees in as a matrix, honestly) but, as I said, I see AoC primarily as a way to learn tricks!
</p>
<h2>Dec 9, 2022</h2>
<p>
I can feel the difficulty ramping up! This one wasn't too bad after a while. I used <code class="julia-language">Complex</code> numbers since they are a convenient unbounded two-dimensional space. It worked pretty well. Only afterwards did I see someone used <code class="julia-language">CartesianIndex</code> items for this problem! I was one day too early, perhaps.
</p>
<p class="emailme"><a href="mailto:lasorbier@pm.me?subject=Advent of code">send a comment</a></p>
Advent of codehttps://sorbier.neocities.org/blog/aoc1.html2022-12-04T12:00:00Zsorbier
<script src="/prism/prism.js"></script>
<h1>Advent of code</h1>
<p class="date">Dec 4, 2022</p>
<p>
I've done the <a href="https://www.adventofcode.com">Advent of Code</a> off and on the past few years, but I never made it to the end. Let's see if I can do it this year.
</p>
<p>
To no one's surprise, perhaps, I'm using <a href="https://julialang.org">Julia</a> this year, like every year I've participated in the past. In this post, I just want to log what I've learned so far! Advent of Code is always a good opportunity to discover the more "niche" functions in your language of choice. After even four days, I've found some cute stuff.
</p>
<p>Warning: spoilers ahead!</p>
<ul>
<li><strong class="dot"><code class="language-julia">eachsplit(string, dlm)</code></strong> Creates an iterator over what you'd get from <code class="language-julia">split(string, dlm)</code>. Similar to <code class="language-julia">eachline(filename)</code>, or really any other <code class="language-julia">each</code>-type function.</li>
<li><strong class="dot">Subtracting letters</strong> For example, <code class="language-julia">'b' - 'a'</code> returns <code class="language-julia">1</code>!</li>
</ul>
<p class="emailme"><a href="mailto:lasorbier@pm.me?subject=Advent of code">send a comment</a></p>
Getting back on the horsehttps://sorbier.neocities.org/blog/backonthehorse.html2022-11-12T12:00:00Zsorbier
<h1>Getting back on the horse</h1>
<p class="date">Nov 12, 2022</p>
<p>Over this summer, I spent a lot of time reflecting on digital life and the larger question of what I wanted to do with my time. At that point, I had already felt for several months that I was wasting my life away, and not in a dramatic way. It was just slipping by, mundane moment to mundane moment, as I absent-mindedly watched YouTube videos. So I made a directed effort to cut YouTube, trying to be purposeful with the time it freed up. I might even have said that I was doing well. I stopped compulsively going to YouTube's homepage, instead using an RSS reader to only gather new videos from a pre-curated list of channels. I spent time walking around, trying to be present rather than listening to a podcast episode for the fifth time just to avoid the silence. I wrote and edited essays. Maybe I was even more focused with work.</p>
<p>The new arrangement was tenuous, however. I was still trying to break a bad habit, which always takes many repetitions of the new behaviour before it replaces the habit. Before anything could solidify, though, I slid back into my old patterns. At the time, I told myself that I was just taking a brief detour, since some (unrelated) circumstances in my life had changed, but that I'd quickly revert to my new intentional living after things went back to normal. Well, things did go back to normal, but my behaviour didn't change readjust. Established habits are sticky, unfortunately. It's now been months since, and I am still opening YouTube and scrolling with my brain off.</p>
<p>I've recently started to believe that, of all internet addictions, watching competitive Pokemon videos may be one of the best I could have chosen. Especially with the recent news of Twitter prompting many to reexamine their usage of the service and face the fact that it might be too difficult for them to leave, I feel that I have escaped relatively unharmed. I don't doomscroll or feel drawn to the rage-bait designed just for engagement. I'm not addicted to Instagram, with its veneers of edited perfection, nor to TikTok, which users blame for shorter and shorter attention spans. Not to mention, I have happily avoided gacha games and other addictions masquerading as mobile games. For having sidestepped all these worse problems (through likely through no great virtue of my own!), I am thankful.</p>
<p>Still, I want to rededicate myself to being intentional with my time, which I only feel is becoming more and more precious in its scarcity. So I'm getting back on the horse: no more scrolling YouTube's homepage aimlessly, if I can help it. Thankfully, I've developed some ambitions to occupy my leisure time otherwise: essay writing, reading books, creating TTRPG campaigns, yoga, and running. Maybe I'm just feeling optimistic today because I finished a good chunk of work this past week. If that's the case, I want to strike while the iron is hot. Ultimately I hope I can unlearn my digital habits that aren't serving me, to the point where I can experiment with <a href="https://omoulo.com/digitalwellbeing/22%20screenless%20dayz.html">more concerted digital minimalism efforts</a>.</p>
<p class="emailme"><a href="mailto:lasorbier@pm.me?subject=Getting back on the horse">send a comment</a></p>
Keyboard updatehttps://sorbier.neocities.org/blog/keyboard.html2022-08-07T12:00:00Zsorbier
<h1>Keyboard update</h1>
<p class="date">Aug 7, 2022</p>
<p>I <a href="/blog/computingsetup.html">previously wrote</a> that I was using the Cooler Master SK622 keyboard. When I bought it, I choose it for a few key reasons:</p>
<ul>
<li>it had both a wired and Bluetooth mode (bonus: it could remember and switch between three Bluetooth devices super easily)</li>
<li>it was low profile</li>
<li>it had a compact layout (60–65%)</li>
<li>it was made by a relatively well-known company</li>
</ul>
<p>These criteria were non-negotiable for me. Surprisingly, they basically knocked every other keyboard out of contention (at least, I couldn't find any other keyboard that hit on all four). So with the Cooler Master keyboard I went.</p>
<p>Well, then, what's the update?</p>
<h2>I've switched keyboards.</h2>
<p>The short explanation is that, after two years, the Cooler Master keyboard doesn't work any more. It's pretty disappointing. I started noticing problems over six months ago, beginning with the { key. I'd hit it, but nothing would happen. Well, that's not entirely true. Sometimes a few seconds later, five {s in a row would show up. It was frustrating, but bearable, until the same problem started happening with the ( and m keys soon afterward. At first, I thought it was because the keyboard was dusty (I did carry it around mercilessly in my bag, after all) — so I took all the keycaps off and cleaned the keyboard thoroughly. It made no difference.</p>
<p>As more keys developed this behaviour, I discovered that other people with the same keyboard were having the same problem, and often with the same keys! By then, I knew it was only a matter of time before I would have to replace the board. Happily, strong denial let me put it off for another month.</p>
<p>I finally caved last week. By then, I was having problems with the m, c, 7, (, {, and backspace keys. Backspacing in particular was a constant frustrating minefield, with an innocuous typo sometimes slowing me down for minutes on end. On the bright side, now that over two years have passed since I did my first keyboard search, I found a new board that fit my must-haves: the <a href="https://www.keychron.com/products/keychron-k7-ultra-slim-wireless-mechanical-keyboard">Keychron K7</a>. It arrived this weekend, and I am happily typing this blog post with it.</p>
<h2>SK622 Mini-review</h2>
<p>Now that the SK622 has been retired, I thought I would conclude my time with it properly by writing a quick review. Of course, the main takeaway has already been said: there seems to be consistent manufacturing quality problems with a lot of the keys! No one should buy this keyboard! But this <em>minor</em> problem aside, what did I think of it?</p>
<p>Let's start with the pros. The typing experience was very pleasant, with a satisfying amount of resistance. It was a perfect portable keyboard: it always connected quickly to my various Bluetooth devices, was low-profile, and had a cute compact layout. All functionalities are listed tersely on the keys themselves, so I never had to look at the manual. And though I got very little out of this feature, I imagine the extensively customisable RGB would be important for some.</p>
<p>The board had two major issues in addition to its obvious main drawback. The first was proper compatibility with the iPad. While you could pair it to an iPad and type with it, the iPad wouldn't recognise it as a hardware keyboard. Because of this oversight, the on-screen iPad keyboard would stay visible at all times, taking up half the screen. All hardware keyboard settings were also unavailable, including remapping the modifier keys. Practically speaking, that meant I couldn't use the command key at all, like for copying and pasting with the keyboard. Not being able to do any keyboard shortcuts was a huge impediment. The second issue was the placement of the right shift key. After two years of use, I still hadn't gotten used to how small it was, routinely hitting the up arrow by accident instead. I even managed to commit many other patterns to muscle memory, like the location of the media keys, but never this one.</p>
<h2>K7 first impressions</h2>
<p>Finally, let's christen the new keyboard with its own little write up! I haven't used it for very long, so I will keep it brief.</p>
<p>I am so happy that the iPad actually sees this keyboard as an external hardware keyboard. I can copy and paste at last! Another major advantage of the K7 I got is that it is hotswappable, so I can easily replace the switches if they start to fail. Finally, the keyboard is even lower profile than the SK622, though it is one key wider. Because it still fits in my bag, I am don't mind the additional width, especially since it means the right shift key is a normal size. The extra column of keys also allow for a dedicated pgup, pgdown, and home key, but I don't think I will get much use out of them.</p>
<p>Not everything is better about this keyboard. The typing experience is subjectively worse, if quieter. Some switches squeak like a hinge that needs to be reoiled (probably because... they need to be reoiled), rather than the pleasant thunk of the SK622. I also find the keycaps less pleasant in a way I can't fully explain. I think it is because they are wider than the keycaps from the SK622, resulting in less space <em>between</em> the keys, so it's harder for my fingertips to tell apart one key from the next. I'm also not used to the placement of the del key and the extra column of keys in general, but optimistic that a few more days of training muscle memory should solve this problem.</p>
<p>Overall, I'm so relieved to just have a keyboard that works like a keyboard again: it reliably inputs keys <em>once</em>, immediately after they are struck, and I can copy and paste. Imagine!</p>
<p class="emailme"><a href="mailto:lasorbier@pm.me?subject=Keyboard update">send a comment</a></p>
Today's crosswordhttps://sorbier.neocities.org/blog/nytxw3.html2022-07-22T12:00:00Zsorbier
<h1>Today's crossword</h1>
<p class="date">Jul 22, 2022</p>
<p>Hey look, I <a href="/blog/nytxw1.html">said that I wouldn't just blog about crosswords</a> but I also <a href="/blog/nytxw1.html">said that</a> <a href="/blog/nytxw2.html">Friday crosswords just tend to be good</a>. What can I say??? Plus, today's crossword had a FART in it.</p>
<p>Clues that delighted:</p>
<ul>
<li><strong class="dot">16A</strong> Sail holder ... or sale holder?: YARD</li>
<li><strong class="dot">39A</strong> Things some people do at bars: SHOTS</li>
<li><strong class="dot">59A</strong> Comment from one who's all thumbs?: TEXT</li>
<li><strong class="dot">2D</strong> French phrase with a grave accent: À LA</li>
<li><strong class="dot">5D</strong> Make fast again: RETIE</li>
<li><strong class="dot">15D</strong> Story segue: SO THEN (Just so evocative... can totally hear someone going off on a breathless long-winded retelling. Maybe it's because I watched <a href="http://www.youtube.com/watch?v=esnvI17i5AA">this video</a> yesterday night.)</li>
<li><strong class="dot">43D</strong> Put down: WRITE</li>
<li><strong class="dot">54D</strong> Worker in a tunnel, maybe: ANT</li>
</ul>
<p>Answers that delighted:</p>
<ul>
<li><strong class="dot">17A</strong> IT'S DO OR DIE: "Everything comes down to this" (A nice phrase, but also for some reason I got it immediately and put it in while the puzzle was still blank. I always wonder how <a href="https://rexwordpuzzle.blogspot.com">Rex</a> can just plop in answers with a empty grid and now I think I'm starting to understand that it's just a lot of practice to build up some background lateral process.)</li>
<li><strong class="dot">21A</strong> WHOOPEE CUSHION: Butt of a joke? (The obvious marquee answer. The constructor <a href="https://www.xwordinfo.com/Crossword?date=7/22/2022">said</a> he originally intended this crossword to run on April Fools day, so this word was the first to go into the puzzle. He also sneakily snuck in a FART there too.)</li>
<li><strong class="dot">34A</strong> SLAIN: Like Goliath, in the Bible story</li>
<li><strong class="dot">36A</strong> ON THE TOWN: Going from club to club, say (Totally anachronistic. Surely people young enough to club don't say ON THE TOWN any more.)</li>
<li><strong class="dot">36A</strong> WHITNEY HOUSTON: Only singer to have seven consecutive #1 singles on the Billboard Hot 100</li>
<li><strong class="dot">48A</strong> LISTEN TO ME: "Hey, I'm talking here!"</li>
<li><strong class="dot">55A</strong> UTTER BORES: Ones who put you to sleep</li>
<li><strong class="dot">3D</strong> WORK OF ART: Real gem</li>
<li><strong class="dot">4D</strong> RED HOTS: Spicy sweets</li>
<li><strong class="dot">25D</strong> SPIN: Quick drive, informally</li>
<li><strong class="dot">30A</strong> AHOY THERE: Ship-to-ship communication (somehow <a href="https://rexwordpuzzle.blogspot.com/2022/07/foe-of-skeletor-in-masters-of-universe.html">I doubt</a> ships actually communicate this way, but I found this answer quaint)</li>
</ul>
<p>Beyond the WHOOPEE CUSHION / FART theme, and despite the constructor explicitly intending this puzzle as themeless, I did notice some small reoccurrences. There's the WORK OF ART with the pearl EARRING (9D: Vermeer painted a girl with a pearl one). There are things to be HEFTED (26A: Weighed unscientifically), HOISTED (37D: Raised), and 43D: Put down (WRITE). There are SHOTS to be had by those who are ON THE TOWN. There are WHITNEY HOUSTON and OPRAH (47A: First Black female billionaire, informally), two entertainment giants. (8D: Brian who was a pioneer in ambient music) ENO doesn't count because he always shows up in crosswords. Your best friend, bless them, may love to tell stories that are UTTER BORES, during which they indignantly demand your attention: "LISTEN TO ME! SO THEN..." And finally, those at the ship YARD who have to RETIE sails must surely take a pause to greet each other with a congenial AHOY MATEY.</p>
<p>I do actually have an unprecedented type of comment, which is that I <em>hated</em> RAWR, <em>especially</em> with its clue 1A [Ooh, you're sexy!]. Maybe it's because I've spent too much time on Tumblr and in other spaces where "rawr :3" culture is everywhere, but seriously: who RAWRs at people??? How embarrassing.</p>
<p class="emailme"><a href="mailto:lasorbier@pm.me?subject=Today's crossword">send a comment</a></p>
Today's crosswordhttps://sorbier.neocities.org/blog/nytxw2.html2022-07-15T12:00:00Zsorbier
<h1>Today's crossword</h1>
<p class="date">Jul 15, 2022</p>
<p>Today's crossword was cute! <a href="/blog/nytxw1.html">Once again</a>, I had fun with the Friday puzzle while Thursday's (yesterday) was a total joyless slog.</p>
<p>Clues that delighted:</p>
<ul>
<li><strong class="dot">12A</strong> Relatively new addition to Thanksgiving?: INLAW</li>
<li><strong class="dot">22A</strong> Funny business: COMEDY</li>
<li><strong class="dot">23A</strong> They're put in quotes: PRICES</li>
<li><strong class="dot">27A</strong> Stick in one's mouth: TOOTHPICK</li>
<li><strong class="dot">33A</strong> Drink with an onomatopoeic name: SLURPEE (just made me think of that sluuuuurrrrppppp sound you get when the drink is running out)</li>
<li><strong class="dot">36A</strong> Their customers lie for them: MASSEUSES</li>
<li><strong class="dot">51A</strong> Warped fabric, it's said: SPACETIME</li>
<li><strong class="dot">5D</strong> Neck lines: FRETS</li>
<li><strong class="dot">23D</strong> English four-wheeler: PRAM</li>
<li><strong class="dot">42D</strong> Fencing needs: POSTS (really misdirects everyone who does the crossword often, since I immediately plopped in EPEES feeling all confident)</li>
<li><strong class="dot">46D</strong> Is short: OWES</li>
</ul>
<p>Answers that delighted:</p>
<ul>
<li><strong class="dot">8D</strong> YOUR OTHER RIGHT: "No, the opposite" (of course, since it's a marquee answer! if the marquee answer <em>doesn't</em> delight, there's something wrong... which also sadly happens in this puzzle with the other marquee answer)</li>
<li><strong class="dot">10A</strong> MOOED: Responded to a cattle call (the word MOO is just so whimsical)</li>
<li><strong class="dot">37A</strong> SLUICE: Streaming channel? (just like with SLURPEE, there's just something so vivid and satisfyingly <em>wet</em>-sounding with this word)</li>
<li><strong class="dot">39D</strong> ECLAIRS: Desserts once known as petites duchesses (I like learning these little factoids from the puzzle)</li>
<li><strong class="dot">43D</strong> UNPIN: Remove from the top of one's profile, as a tweet (seemed a little modern knowledge to me, in a good way... either that, or I'm truly old)</li>
</ul>
<p>And finally, SLEW (50D: Host) crossing with SLAW (58A: Side dish that's uncooked) was quite CUTE (22D: Aww-inspiring).</p>
<p class="emailme"><a href="mailto:lasorbier@pm.me?subject=Today's crossword">send a comment</a></p>
De-Googling, and more in generalhttps://sorbier.neocities.org/blog/degoogle.html2022-07-13T12:00:00Zsorbier
<h1>De-Googling, and more in general</h1>
<p class="date">Jul 13, 2022</p>
<p>De-Googling is not uncommon, especially among people concerned with internet privacy and the slow web. I'm not going to make the argument for de-Googling in this post. The fact that a single company is so huge that we all struggle to free ourselves from it says it all. Because Google (and Facebook, and Amazon) are so pervasive in standard life at this point, everyone has their own strategies for separation. I will just describe what I've done. My hope is that it's at least partially helpful for someone else on the same journey.</p>
<h2>Google</h2>
<p>Just one glance at Google's <a href="https://en.wikipedia.org/wiki/List_of_Google_products">array of products</a> is overwhelming. I've seen more than one person say that <a href="https://kevq.uk/de-googling-my-life-series/">unless something is just as good as a Google service, they wouldn't consider it</a>. I can't understand this position. If the motivations behind de-Googling are personally valuable at all, wouldn't you be willing to compromise something in exchange? Rarely is anything without tradeoff. Needless to say, that's not my attitude. I am open to products that may be worse in some ways, if it means I can get away from Google. Simply giving up a service with no replacement is also an option.</p>
<ul>
<li><strong class="dot">Search</strong> Google's flagship product. I switched to <a href="https://www.ecosia.org">Ecosia</a> years ago. I know they are based off Microsoft Bing (at least they were at some point), but I can't say no to trees. Though they do claim to <a href="https://info.ecosia.org/privacy">respect user privacy</a>, it likely isn't the most robust on that front. I'm okay with that — I've mostly chosen them for the trees.</li>
<li><strong class="dot">Chrome</strong> I never really used Chrome, since I've been on Safari forever.</li>
<li><strong class="dot">Email</strong> Since my job uses Google products, my professional email will likely never be de-Googled. I switched my personal email to a paid <a href="https://protonmail.com">Proton</a> account years ago.</li>
<li><strong class="dot">Calender</strong> Similarly to GMail, my professional calendar remains with Google. I keep my personal events stored in iCloud.</li>
<li><strong class="dot">Drive</strong> An example of a service I simply stopped using with no direct replacement. I now back up my files periodically to a physical hard drive. Proton is supposedly working on both a Calendar and Drive replacement, but their development is slow.</li>
<li><strong class="dot">Docs and Sheets</strong> Another product I simply don't really use. For personal projects, I rarely use word processors or spreadsheets — depending on the specific context, the equivalent tools might be <a href="https://obsidian.md">Obsidian</a>, LaTeX, Julia, or R.</li>
<li><strong class="dot">Maps</strong> To look up specific addresses, I use <a href="https://wego.here.com">HERE WeGo</a>. To browse around looking for something (like trying to pick a restaurant for dinner), I've been trying to just use my legs and eyes! Otherwise, I use Apple maps.</li>
<li><strong class="dot">YouTube</strong> My main strategy with YouTube has also been to <a href="/identitythroughconsumption.html">severely pare down</a> how much I actually use it. I pretty much only watch three channels now, all of which I track using <a href="http://newsblur.com">NewsBlur</a>. When they post a new video, it's delivered to my feed there, so I never actually go to YouTube's own page. (I'm pleasantly surprised YouTube still supports RSS feeds for channels!) I also use <a href="https://apps.apple.com/us/app/vinegar-tube-cleaner/id1591303229">this Safari extension</a> to block YouTube ads and analytics.</li>
</ul>
<h2>Facebook</h2>
<p>I quit Facebook over ten years ago. At the time, it felt extremely isolating because everyone was still using it to connect, invite people to events, and chat. Now, no one really uses it, besides parents. Facebook still owns <a href="https://en.wikipedia.org/wiki/Meta_Platforms">a lot of important brands</a>, though.</p>
<ul>
<li><strong class="dot">WhatsApp and Messenger</strong> Depending on the person, I either use SMS, iMessage, or Signal. All of these messaging services surely have their own privacy issues, especially SMS. Could they be worse than Facebook's though?</li>
<li><strong class="dot">Instagram</strong> Easy. Don't use it and try to avoid social media. I've been trying to work productively, spend time with friends and family, volunteer, read (very trashy romance novels — I'm no monk), and <a href="/index.html">write</a>.</li>
<li><strong class="dot">Marketplace</strong> Again: <a href="/physicalminimalism.html">buy less stuff</a>.</li>
</ul>
<h2>Amazon</h2>
<p>There was a point in time when my friends and I were <a href="/physicalminimalism.html">buying on Amazon almost as sport</a>. Beyond that, Amazon is just <em>so convenient</em>. Need oddly-sized batteries? A screen protector? Korean skincare? That one tech product with a really long name containing a serial number? Any weird single-purpose doohickey? Amazon is perfect for these types of low-demand products that are hard for a brick-and-mortar store to carry. It really took effort to wean myself off of Amazon. At the beginning, I found myself totally at a loss for where else to even <em>find</em> these objects. (Again, this total dependence is telling and frightening.)</p>
<p>I haven't bought anything from Amazon in about five years, so by now I've adjusted. The strategy I use the most is just to <a href="/physicalminimalism.html">buy less stuff</a>. If I do have to buy something, I probably have to accept that I won't get something as specifically perfect as if I had the whole product selection from Amazon. I usually try to find a physical store in my area first. If that doesn't work, I'll look for a specific website (like an electronics website for a screen protector).</p>
<p class="emailme"><a href="mailto:lasorbier@pm.me?subject=De-Googling, and more in general">send a comment</a></p>
Today's crosswordhttps://sorbier.neocities.org/blog/nytxw1.html2022-06-03T12:00:00Zsorbier
<h1>Today's crossword</h1>
<p class="date">Jun 3, 2022</p>
<p>There are enough <a href="https://rexwordpuzzle.blogspot.com">crossword blogs</a> without needing another! I'm not becoming another crossword blog! I'm just very excited and happy about today's crossword!</p>
<p>A text I sent yesterday about Thursday's groan-worthy theme:</p>
<blockquote>
monday - wednesday are easy but usually no sing<br/>
thursday is TERRIBLE<br/>
friday is the best. saturday is usually good too but a touch too hard<br/>
sunday is a big long slog and usually for some nonsense too
</blockquote>
<p>I am once again proven right. Yesterday's puzzle was a plodding chore with no payoff and today's was anything but.</p>
<p>Clues that delighted:</p>
<ul>
<li><strong class="dot">18A</strong> Giving chocolate to the dog, e.g.: NONO</li>
<li><strong class="dot">20A</strong> Proceed during rush hour, say: CREEP</li>
<li><strong class="dot">21A</strong> It's down in France: DUVET</li>
<li><strong class="dot">28A</strong> Give and take: BARTER</li>
<li><strong class="dot">39A</strong> Huckersters have them: SPIELS</li>
<li><strong class="dot">43A</strong> The average American spends over four hours a day on it: PHONE (something we've got a lot to say about over here in Neocities, it seems)</li>
<li><strong class="dot">49A</strong> Clip: RATE</li>
<li><strong class="dot">52A</strong> It's not good: EVIL</li>
<li><strong class="dot">53A</strong> Buildings with many wings: BIRDHOUSES</li>
<li><strong class="dot">3D</strong> Tiny inheritance: GENE</li>
<li><strong class="dot">6D</strong> Looks like a jerk: OGLE</li>
<li><strong class="dot">30D</strong> Reason some kids won't go to class: FIELD TRIP</li>
<li><strong class="dot">32D</strong> It may be part of a suit: TORT</li>
<li><strong class="dot">41D</strong> Take a plane to: SHAVE</li>
<li><strong class="dot">48D</strong> Private dining room: MESS</li>
</ul>
<p>Most of these clues had answers that were just a little unexpected, exactly what I like about good Friday clues. It means that you get to feel smart when you know one immediately, or else pleased when you finally figure one out. Like you actually! solved a puzzle!</p>
<p>Answers that delighted:</p>
<ul>
<li><strong class="dot">17A</strong> BANKROLLED: Supplied with dough, say</li>
<li><strong class="dot">30A</strong> FANCY THAT: "Well, who'da thunk it!"</li>
<li><strong class="dot">50A</strong> CRUNCH TIME: Period before a big deadline</li>
<li><strong class="dot">10D</strong> TENURE TRACK: Path at a university</li>
<li><strong class="dot">11D</strong> I'M OVER HERE: Comment made while waving in a crowd</li>
<li><strong class="dot">22D</strong> SOLAR PANELS: They work using photovoltaic cells (of personal significance)</li>
<li><strong class="dot">27D</strong> NOVA SCOTIA: Part of Canada named for part of Europe</li>
</ul>
<p>They're so fresh, compared to the boring or actively joyless junk that commonly fills the crossword.</p>
<p>Hoping we get a puzzle as fun tomorrow!</p>
<p class="emailme"><a href="mailto:lasorbier@pm.me?subject=Today's crossword">send a comment</a></p>
On writinghttps://sorbier.neocities.org/blog/writing.html2022-05-24T12:00:00Zsorbier
<h1>On writing</h1>
<p class="date">May 24, 2022</p>
<p>When I was younger, I tortured myself over the purpose of my life. What did my life contribute to society and what did my life bring to myself? When I was younger still, I wondered why everyone questioned the meaning of life. It seemed a lofty yet useless question, when really I did not understand its meaning. The truth, I have come to discover, is that eventually one can't help but to reflect on the question.</p>
<p>I don't have the answer yet. As for when I am even older, will I have the answer then? Will I be listless with despair or absorbed in joy over the mundane? At the moment I find myself teetering between both attitudes.</p>
<p>An easy answer, one that I considered years ago, is service to others. How better to reassure yourself of your life's value than to see the benefit of your own actions for others? At the time, I told my therapist: "Some people have inherent meaning: they want to make art or play sports. It makes them happy, it drives them. For everyone else without an inborn desire, our purpose must be to help those who do." She did not totally agree, but to me it seemed clear. Since I didn't want to paint or to play, the best use of my life was to enable others to paint and to play.</p>
<p>Several years later, I find myself returning to this sentiment from a different perspective. I find <em>myself</em> wanting to create. Maybe neither to paint nor to play specifically, but to write. I want to record what I've learned, to organise it in a way that is satisfying in its clarity. I want to preserve the story of my parents. I want to ignite joy and to share the warmth of human connection, to give anyone who reads a brain massage. (And, much later, I want to write a DnD campaign.)</p>
<p>People with the ambition to write are a dime a dozen, so I am not expressing anything new. But the feeling is new to me: an urge that is purely personal. I must now begin down the well-worn path familiar to aspiring writers of practicing writing: of transforming large formless ideas into specific words, of expressing myself clumsily, of frustration and of rewriting. I recently read William Zinsser's <a href="http://richardcolby.net/writ2000/wp-content/uploads/2017/09/On-Writing-Well-30th-Anniversa-Zinsser-William.pdf"><i>On writing well</i></a>, in which he advises to just begin.</p>
<p>Consider this post a debut.</p>
<p class="emailme"><a href="mailto:lasorbier@pm.me?subject=On writing">send a comment</a></p>
My computing setuphttps://sorbier.neocities.org/blog/computingsetup.html2021-11-06T12:00:00Zsorbier
<h1>My computing setup</h1>
<p class="date">Nov 6, 2021</p>
<p>I spend my fair share of time cranking through theory, but I spend an equal amount of time coding quantitative computations, mucking with data, or (recently) even teaching online. My computing devices are a central determinant to not only my work's success, but also my happiness, since I spend so much time with them. I therefore approach choosing my setup with appropriate seriousness!</p>
<p>My current devices are not only frictionless to use, but also joyful. I do my work on two main devices: a large iPad Pro and a Mac mini desktop computer.</p>
<p>I bought the first generation iPad Pro soon after its release, taking an early adopter risk that paid off. The iPad is functional both as "digital replacement paper" in portrait orientation as well as a "light computer" in landscape orientation. The first use case is the real hero, though: it is a delight to read papers or work through theory with the iPad and its accompanying stylus. Eliminating paper from my life is a seemingly small benefit that has actually had a huge impact: the digital medium creates possibilities that couldn't be accomplished with physical paper. I never misplace my notes or have to rifle through physical copies of papers. Everything is instantly searchable, including handwritten annotations. I can open the same note in multiple windows, for example to conveniently reference an equation from an earlier page in one window while rewriting it with some substitution on a later page in another window. The stylus is infinitely precise, so I can easily add annotations in the tiniest available space by just zooming in. Finally, I can always use the iPad in landscape orientation to perform light computer tasks, like typing up documents, responding to emails, or managing my calendar. These activities are made even smoother with my external mouse and keyboard, which connect easily to the iPad, but I will talk more about those a bit later.</p>
<p>The Mac mini is the primary computing device of my setup, a role previously filled by my laptop until the laptop's screen physically separated from its body. Why did I replace it with a desktop instead of another laptop, when laptops ostensibly have the advantage of including peripherals (display, keyboard, and mouse) and being portable? As it turns out, the Mac mini does just as well, if not better, in all these areas for my context. For peripherals, I had already been using the laptop exclusively with my own external monitor, <a href="http://coolermaster.com/catalog/peripheral/keyboards/sk622-silver/">keyboard</a>, and <a href="https://www.logitech.com/en-ca/products/mice/mx-anywhere-3.910-005985.html">mouse</a>, all of which I preferred to the built-in options by a landslide. Why purchase computing power bundled with peripherals that I wouldn't use when I could instead concentrate on more computing power? The Mac mini is also highly portable — I can easily slip the Mac mini in my regular bag, together with my keyboard and mouse, to bring with me to the office, a coffee shop, or on travel. The only seeming obstacle to portability was finding a display solution, which I remedied by simply <a href="https://astropad.com/product/lunadisplay/">using my iPad as the display</a> with a pleasingly solid yet foldable <a href="http://twelvesouth.com/products/compass-pro">stand</a>. Why not, if I'm likely bringing my iPad with me anyway?</p>
<p>At first, I admit I was not sure if my Mac-mini-as-a-laptop-replacement scheme would work. However, after several months now of using it daily, I can confidently label the experiment a success. At home, I get the full desktop performance and experience. On the go, it takes one or two extra seconds to pack up (Mac, mouse, keyboard, iPad, and iPad stand), but the benefits far outweigh this cost. The setup is wonderfully modular, with all components working seamlessly together. I can use the iPad on its own as digital paper. I can pull out my mouse, keyboard, and stand to use the iPad like a light computer. If I need the desktop OS to do something more serious, like <a href="juliapackage.html">Julia development</a>, I can just switch the iPad's screen to showing the Mac mini's display. As an additional underrated bonus, I use my own keyboard and mouse for everything, which I selected based on my own preferences, rather than default OEM parts.</p>
<p>Finally, I cannot overstate the ergonomic advantages of separating the display from the keyboard. By construction, a laptop must (nearly) attach them together. The implication of a laptop's clamshell design is that, if positioning the keyboard and trackpad adequately close to one's hands, the display is far too close to the eyes. Not only is it too close, but it is too far down, which would create tension as I craned my neck downward to see the display. Having physically separated all the components of my computer from each other, I can position each at a comfortable distance.</p>
<p>While this setup may not be for everybody, or indeed for most people, I wanted to share my strange solution in case it may be helpful to someone else. A mini-desktop-as-a-pseudo-laptop may appear at first glance like an unnecessary reinvention the wheel, but the modularity and personal customisability have made all the difference to me.</p>
<p class="emailme"><a href="mailto:lasorbier@pm.me?subject=My computing setup">send a comment</a></p>
Writing a package in Juliahttps://sorbier.neocities.org/blog/juliapackage.html2021-11-03T12:00:00Zsorbier
<script src="/prism/prism.js"></script>
<h1>Writing a package in Julia</h1>
<p class="date">Nov 3, 2021</p>
<p>In tandem with one of my projects, I wrote a Julia package implementing its central solution methods. This undertaking was the first time I wrote a Julia package (the larger project itself the first time I really used Julia).</p>
<p>Since I had never written a package in Julia (or indeed in any other language), it was a learning experience — especially for the under-the-hood processes with which software engineers are undoubtedly familiar: wrangling workflows; git and version control; packages and dependencies; documenting and testing. While I learned a lot, I will focus only on the mechanics of starting and developing a Julia package here. (Maybe more to come on the other topics later!)</p>
<p>A package is <em>functionally</em> no different from any code project in the sense that it just runs code. <em>Conceptually</em>, packages tend to be centred around building and making available a core set of functionalities to use repeatedly — hopefully for yourself, your collaborators, or even strangers trying to solve similar problems. For this reason, code for a package should be written in Julia <em>modules</em>, exporting only the key functionalities for general use.</p>
<p>For brevity, I'll first list the basic steps to get a new package going, then discuss them in more detail.</p>
<ol>
<li>Open Julia, enter Pkg mode (by typing <code class="language-julia">]</code>).</li>
<li>Initiate your package, say "NewPackage", by typing <code class="language-julia">generate NewPackage</code>. Doing so will create a NewPackage folder in the current working directory.</li>
<li>Create a git repository at some online host like GitHub, probably called NewPackage.jl, and push the contents of the NewPackage folder.</li>
<li>NewPackage can now be added to Julia's default <em>environment</em> — tell Julia about it by typing something like <code class="language-julia">add https://github.com/your_username/NewPackage.jl</code> in Pkg mode. Julia now knows to get NewPackage from the online git repository.</li>
<li>We probably want to make changes to NewPackage locally before publishing them online. In Pkg mode, type <code class="language-julia">dev NewPackage</code>. Julia will copy the package files for local development (usually somewhere like ~/.julia/dev/NewPackage), then tell the default environment to load NewPackage from this local version rather than the version hosted online.</li>
<li>We now have two local versions on the package: one we created with <code class="language-julia">generate</code> and one we created with <code class="language-julia">dev</code>. At this point, the first serves no purpose (it isn't being watched by Julia, for example) so we can delete it. I personally created a symbolic link from this location to the local development copy, since the original location was more convenient for my file management purposes.</li>
<li>Now, we can make any changes we want to the local copy. To incorporate the changes, update the package by typing something like <code class="language-julia">up NewPackage</code> in Pkg mode, then restart Julia. When satisfied with changes, commit and push them so they can be available for everyone from the online hosted location.</li>
</ol>
<p>The process above is a bit convoluted. For me, the multiple copies (created with <code class="language-julia">generate</code> and <code class="language-julia">dev</code>) were very confusing. I am not sure if there is a way to get the balling rolling in a more efficient way in Julia, or if it's standard with other languages to create multiple local copies of a project during the initiation process.</p>
<p>I'll close with a few final comments on the practicalities of package development.</p>
<ul>
<li><strong class="dot">Dependencies</strong> Each time before working on the package, activate its environment by typing <code class="language-julia">activate .</code> in Pkg mode while in the package's directory. If done correctly, the Pkg prompt will switch to <code class="language-julia">(NewPackage) pkg></code> and track dependencies. For example, suppose the package relies on LinearAlgebra.jl. After activating the package's environment, typing <code class="language-julia">add LinearAlgebra</code> in Pkg mode means that Julia will automatically record that your package depends on LinearAlgebra. When others download your package, Julia will know to also download LinearAlgebra.</li>
<li><strong class="dot">Prototyping</strong> I like using Pluto.jl to prototype small snippets of changes before directly editing the package contents. Its reactivity is a real convenience for quickly seeing whether ideas will work.</li>
<li><strong class="dot">Revise.jl</strong> A package recommended by essentially everyone, it allows real-time updates to local packages rather than having to open a fresh Julia session to see changes reflected.</li>
<li><strong class="dot">Testing</strong> Nearly every serious package has run tests to check its functionality. To test a package, write a "NewPackage/test/runtests.jl" file (creating the test directory if necessary). Then, you can ask Julia to run the runtests.jl file by typing <code class="language-julia">test NewPackage</code> in Pkg mode.</li>
</ul>
<p class="emailme"><a href="mailto:lasorbier@pm.me?subject=Writing a package in Julia">send a comment</a></p>