GeistHaus
log in · sign up

https://michaelyodev.github.io/posts/index.xml

rss
9 posts
Polling state
Status active
Last polled May 19, 2026 01:11 UTC
Next poll May 20, 2026 00:41 UTC
Poll interval 86400s
ETag W/"69f6a65b-13d12"
Last-Modified Sun, 03 May 2026 01:35:23 GMT

Posts

all-state 2026: my first (and last) year
My unforgettable experience at the 2026 California All-State Music Education Conference (CASMEC) as concertmaster of the Symphony Orchestra—highlights, funny chaperone moments, snapped strings, and the magic of making music with the best in the state.
Show full content

2026 marked my first and last year at All-State. It turned out to be one of the most profound and joyful experiences of my life so far.

Being surrounded by people who all play at such a high level, and who truly wanted to be there, is something that has been missing from my life. We assembled the program incredibly quickly, and after a 3 hour rehearsal, we sounded as good as – if not better than – my youth orchestra. We got the pieces to a high level so early on that we could spend a lot of time on the small details.

The conductor, Dr. Hoi Yin Kwok of Ithaca College, knew exactly what to ask for and how to explain what he wanted, and he almost never had to repeat himself. Everyone wanted to improve, wanted to sound the best we could, and did not want to be the person that fell behind. And the low brass, man they were incredible! I have never heard such a deep, rich, majestic sound from a low brass section.

Let’s go through the events of this weekend.

day 1

When I first arrived, I took a walk with my parents around the area, and I got some of my favorite photos ever on my Ricoh GR IV. Once I entered the convention center and checked in, I met up with my friends from my school. My seating audition was only half an hour away, so I got to practicing the difficult parts.

My audition felt awful in the moment, and I did not feel like I played my best: I had to restart one of the excerpts (at least I didn’t leave my music at the airport like one of my friends!). The practice I had put in beforehand did pay off though, and I sounded pretty good in retrospect. Keep this in mind for later.

I visited the exhibition hall with my friends, which had a ton of booths for all sorts of music related companies, from Yamaha to the Sacramento Mandarins, natural trumpets to plastic instruments, and even a booth selling conducting batons. I spotted a few trumpets I wanted to try, so I went back to my luggage to grab my mouthpieces. When I tried to go back, though, one of the chaperones did not let me go back! Since I was checked into the main hall, I couldn’t go anywhere else. Unfortunately for him, my friends and I found a backdoor that led straight into the exhibition hall, and we were off! I found a few trumpets that played really nicely, including the Wayne Bergeron and Bobby Shew Yamaha’s.

Prior to our first rehearsal, we had to form our chaperone groups, which were predetermined by last name. Our group was called Heliodor, which as one of my new friends said, “oh so we’re a rock.” This chaperone group was extremely funny. The chaperone assigned us all numbers, and her way of taking attendance was to have all of us say our numbers in order. Whenever someone wasn’t there (it was always “number 5? ANDREWWW!”) we restarted the count, as if that would somehow summon the missing person. Because of this, and our chaperone’s general disorganization, we were consistently the last group in our ensemble to arrive anywhere, from meals to the hotel.

At our first rehearsal, there were name plates on the music stands so we knew where to sit. I started looking for my name at the back, as I thought my audition went poorly, but I couldn’t find my name. I kept going up a stand, up another stand, until finally, I found my name tag: I was the concertmaster!!! I was shocked, but also thrilled, because I have a lot of experience being concertmaster and, well, it meant I was the best in the state! My ensemble was the Symphony Orchestra, the highest level orchestra in the conference.

We started with Barber’s Medea’s Meditation and Dance of Vengeance, a piece I had wanted to play for the last few years! I first heard it in Star of Indiana’s 1993 show, titled “The Music of Barber and Bartok”.

Since the pianist would only be at morning rehearsal of day 2, we had to get the piece to a point where it was easy to add the piano. And that’s exactly what we did.

The word of the rehearsal was: supple.

After dinner, we collected our room keys (which took another hour and a half) and lined up at the door with our roommates. There were 2 lines, and the chaperones decided to merge them. For absolutely no reason, my room got moved. To the very back. Another hour, gone.

We only got to our room at around 11pm, and still had to shower, unpack, and get ready for bed. We watched some sheet music on the TV while we did that, and finally got some sleep.

day 2

When I say I got some sleep, I mean about 2 hours because one of my roommates snored louder than a chainsaw. One of my roommates pulled up with the exact same fit that I had set aside the night before: white t-shirt, blue jeans, and chain.

At breakfast, someone knocked my orange juice out of my hands with their case (on accident) and it spilled all over my shoes! They helped clean it up, so it was all good.

At the morning rehearsal, we finally got to play the Barber with the pianist. Towards the end of the piece, my e-string snapped! The conductor announced “first casualty of all state!” as I furiously replaced my string with the only spare I had (keep this in mind for later).

One section of the Barber was in 7/4 time signature, and the conductor counted us off with “6, 7…”, leading to a subsequent laughing fit among the entire orchestra. He said “it’s not my fault Barber wrote in 7/4!”

The word of the rehearsal was: superfluous.

During lunch, one of my roommate’s friends commented that my posture was really good, whether I was sitting or standing, which was pretty funny.

After lunch, we got to visit the exhibition hall. I tried out every trumpet I could (again!), playing a lot of high notes and turning a lot of heads. Notably, I heard some people say “wait, he plays trumpet too?”

I bought a tri-tone samba whistle, which I had been hearing throughout my listening of latin jazz, and I was super excited to see one there for sale.

At the evening rehearsal, we finally got to work on Ethel Smyth’s “On the Cliffs of Cornwall: Prelude to Act II of The Wreckers and Arturo Marquez’s “Conga del Fuego Nuevo”. We got both pieces up to a really solid level in only one rehearsal, which I was super impressed by. It’s a testament to how good everyone there was, and how good the conductor was at getting exactly what he wanted out of us.

The word of the rehearsal was: ineffable.

That evening, we got to watch the first concert at All-State, which was comprised of vocal jazz, middle school jazz, and high school jazz. Vocal jazz was an extreme vibe, and I loved the scatting solos they did. Middle school jazz was super impressive, because those kids could really play! I think a lot of them were better than the musicians at my school’s jazz band, and they brought the crowd to their feet (albeit with some rushing).

High school jazz, though, was something else. They were incredible. They played a lot of familiar pieces, including one called Palmas by Eddie Palmieri, which I had played in the jazz ensemble I am in. In fact, one of the trombonists who soloed on that tune is in the same ensemble, so it was great hearing a familiar tune played so well.

The students watching the concert were all in the upper seats, and once the concert was over, we attempted doing a wave that spanned the entire student section. We were successful for the most part, except for one group at the end who never joined in!

We arrived at our hotels extremely late once again, due to the chaperones, but we got an extra hour before breakfast the next morning.

day 3

Since we had a concert that evening, the conductor did not want us to overplay, so at the morning rehearsal we recorded run-throughs and listened back to make note of what could be improved.

Somehow, my E string snapped again, in the exact same spot of the Barber as the previous day! Luckily, my standpartner had an extra string that she lent me, as I had used up my only spare the day before. Her bow had broken, so I lent her my extra bow, and I’d say we were even.

At the break during the morning rehearsal, I got jump-scared by my school’s band director, who showed up to watch a portion of our rehearsal.

In the Marquez, there was a measure where the conductor had asked for a glissando, and in the recording we took you could clearly hear that I did the glissando very exaggeratedly. He started jumping around a bit and looked really happy with how the glissando sounded, and told everyone to do it that way!

We practiced our entrance, standing/sitting, and bows for the concert. Dr. Kwok asked me to do my walk on, and I did a very exaggerated one just to be funny (it was quite the success).

After the rehearsal, we had a mini Q&A with Dr. Kwok. Here are some notable things I remember from it:

  • He chose the antiphonal layout (with first violins on one side, second violins on the other side, and cellos next to the 1sts and violas) because it forces the orchestra to listen more closely, and can lead to greater perfection than the normal layout. Since similar voices are further apart, there is much less margin for error, so while it is more difficult, a higher level of togetherness can be attained.
  • His favorite key is when enharmonic modulation (like from F# to Gb) happens, especially in Schubert, because the entire harmony pivots on a single note, but becomes a completely new emotion.
  • His favorite composers are the Three B’s (no, not Bach, Beethoven, and Brahms): Britten, Barber, and Bartok. He said that Bach didn’t feel very personal to him, but Britten did.
  • Dr. Kwok plays violin too, and often applies to be a sub in professional orchestras. He is going to play Stravinsky’s The Rite of Spring and Mahler’s 6th Symphony this year.

The conductor was given a gift on behalf of the orchestra: pens, a notebook, and a 365 Words a Year calendar! We also gave him folders signed by everyone in the orchestra.

Prior to dinner and the concert, we had 45 minutes to pack, change into our concert attire, and meet down in the lobby. However, due to Heliodor’s chaperone group and attendance, we only had 15 minutes. I repeat, it took 30 minutes to take attendance. Some of us (myself included) wanted to take a nap before heading down, but instead we were forced to scramble around to cram pack as quickly as possible. It was quite the stressful time, and we weren’t even allowed to use the stairs!

After dinner, we had a 30 minute soundcheck on stage. We started each piece, touched on a few trickier spots, and during those sections the conductor went out into the audience to listen to the balance, which meant I was the conductor for a few minutes!

Next, we had some time to relax on stage, but I mostly stayed backstage and talked to the conductor. I also got a few photos on stage with my friends (which had horrible backlighting but a great background).

Walking on stage at the concert after being announced as the concertmaster, I could not keep the smile off my face. Hearing the audience cheer, the rumbling of the orchestra’s stomping, and being proud of representing my school, I felt true joy. When I turned around to tune the orchestra, I was still smiling, and I saw many people in the orchestra smiling too.

We were all brought together through music, a bond so strong I cannot describe in words. It is something that only happens when playing music together. We connect so strongly, playing perfectly with each other, phrasing together, even moving together!

Throughout the entire concert, it felt like no one was worried about the notes or their entrances. Everyone was just having fun, pouring the music out for the audience. I have never felt as happy performing as I did then, at that concert.

When we finished the final piece, I couldn’t help but cry as the audience rose to their feet, the conductor shook my hand, and I felt the culmination of all the emotions of the weekend.

It was amazing. The concert was really, really good, and performed with such amazing people.

Afterwards, we went backstage to the room where all our equipment was. My standpartner gave me back my binder and said “don’t look at the last page”, so naturally I did. She had drawn a few really impressive pictures of me and my instruments, and that made me feel really good inside.

I got photos with a bunch of people, including a selfie with all of the first violins and Dr. Kwok, and a photo with a group of 8 girls (which people were laughing at when they saw me get the photo like “he got game!”).

And at last, we got to experience one final wave of chaperone disorganization. We were told to head back to the convention center, instead of watching the Wind Symphony perform. Once we took attendance outside and were about to walk to the convention center, we were told that those instructions were a mistake, and we were supposed to drop our stuff off backstage (where our stuff had already been) and to go watch the concert. Once we finally did that, we were told again to head to the convention center. So we never got to watch the Wind Symphony, unfortunately.

Despite the endless chaperone adventures (or maybe because of them), the weekend felt perfect in its imperfection.

Walking out of that final concert, still buzzing from the standing ovation and Dr. Kwok’s handshake, I realized something: one of the best parts of All-State was seeing the people we became while playing such excellent repertoire at such a high level. For three intense days, I wasn’t just a high school violinist; I was part of something bigger, something grander. Being concertmaster meant I got to lead that energy, but every single person in that orchestra, from the unstoppable low brass to my 1st violin section, made the weekend unforgettable.

This was my first All-State, and my last. But the friendships, the laughs, the moment my E-string snapped (twice!) and we just kept going, the way the entire group moved and breathed as one during the concert, those will stay with me forever.

If you’re ever lucky enough to get that acceptance email, say yes without hesitation. The exhaustion, the late nights, the spilled orange juice, the messy chaperone groups: it’s all worth it for those few hours when music turns a room full of strangers into a family.

Thank you, All-State 2026. Thank you, Dr. Kwok. Thank you to every musician who showed up ready to give everything.

I’ll be carrying that sound for a long time.

https://michaelyodev.github.io/posts/all-state-2026-my-first-and-last-year/
something feels off with my photography
Digital is perfect. Too perfect. Why I’m daydreaming about film photography and how it could change my emotional value of photography.
Show full content

Oh how I wish I could get into film photography.

My Ricoh GR IV treats me amazingly well. It’s tiny, the lens is razor-sharp, and it’s way more intentional than firing off endless iPhone bursts. I end up with far fewer shots (in a good way) overall, yet after ~1000 frames in my first month, only a handful feel like true keepers. Nothing is “wrong” with the camera, it’s just too easy in a way that makes everything feel a little flat.

Something is missing.

I can’t quite put my finger on it, but the process lacks weight. Every shot is effortless to compose, review, adjust, reshoot. There’s no real consequence, no anticipation, no ritual. Even when I try to be deliberate, the digital safety net lets “good enough” sneak in.

This feeling kicked off from watching MKBHD’s The Studio channel, which introduced me to David Imel, the writer and producer at MKBHD. I love how David talks about cameras, both digital and film, with such passion and knowledge. He got me really interested in photography, more so than I had ever been, and he’s also the one who introduced me to film photography. That led me to Grainydays’ photography vlogs, where David has appeared as well. What hooked me is the vibe and process of photography on their roadtrips: the casual yet intentional shooting while exploring landscapes, the excitement of choosing film stocks and capturing moments on long drives, the mechanical clunk of a real shutter, the magic of different film stocks turning the same scene into something entirely new, the forced mindfulness of only having a limited number of chances per roll.

Film promises what digital sometimes lacks: real intentionality. You’re limited, so you have to think harder, pre-visualize, choose your film stock. The wait for scans builds excitement. And that tactile stuff of loading the roll, advancing the film, hearing the actual shutter feels like technology from a time when photos mattered more.

And the payoff? Those organic, imperfect looks that digital tries to emulate but rarely nails. Film stocks can completely transform a vibe, like the creamy, forgiving tones of Kodak Portra 400, or the cinematic halation of Cinestill 800T.

I’ve yet to shoot a single roll of film. It’s still in the daydream stage. The biggest hold-ups are time (life’s busy right now) and money (film + developing/scanning adds up pretty quickly). But the pull is very strong.

Maybe I’ll start small with a cheap, reliable 35mm SLR like a Canon AE-1 or Pentax K1000, a couple rolls of Portra or Ektachrome, and see if that “something” clicks.

Either way, I’m chasing that feeling. Because right now, something feels off and I think film might be the fix.

https://michaelyodev.github.io/posts/something-feels-off-with-my-photography/
notable features in my neovim config
A tour of the custom features I have built directly into my Neovim config, from a custom tabline and statusline to small QoL automations, showing how far you can go with minimal plugins.
Show full content

I have been using Neovim since my junior year of high school, and have gone through the phases of emulating an IDE with lazy.nvim, using dozens of plugins, to my current setup, where I rely on very few plugins and use a lot of features I built in myself.

Let us take a look at said features, the ones implemented directly in my config rather than through a plugin.

buffer tabline

This was inspired (and almost directly copied) from Adam Thiede’s blog post, where he completely removed all of the neovim plugins he had been using.

-- nvim/lua/stuff.lua
function M.BufferTabline()
    vim.api.nvim_set_hl(0, "TablineBuffer", { link = "Normal" })
    local s = ''
    for _, buf in ipairs(vim.api.nvim_list_bufs()) do
        if vim.api.nvim_buf_is_loaded(buf) and vim.fn.buflisted(buf) == 1 then
            local name = vim.fn.fnamemodify(vim.fn.bufname(buf), ":t")
            if buf == vim.api.nvim_get_current_buf() then
                s = s .. '%#TablineBuffer#[' .. name .. '] '
            else
                s = s .. '%#TablineBuffer# ' .. name .. '  '
            end
        end
    end
    return s
end
-- nvim/init.lua
o.showtabline = 2
o.tabline = [[%!v:lua.require('stuff').BufferTabline()]]

This function replaces the usual tabline with a buffer list of sorts.

It gets all buffers with nvim_list_bufs(), filters to only loaded and listed buffers, extracts each buffer’s filename (with no path), and adds each name to the tabline string. It then highlights the current buffer by wrapping it in [ ].

The two lines in init.lua set the tabline to use that function.

go to last location in buffer

This one is a small QoL feature that makes my neovim experience just a bit smoother.

-- nvim/init.lua
vim.api.nvim_create_autocmd("BufReadPost", {
    callback = function(args)
        local mark = vim.api.nvim_buf_get_mark(args.buf, '"')
        local line_count = vim.api.nvim_buf_line_count(args.buf)
        if mark[1] > 0 and mark[1] <= line_count then
            vim.api.nvim_win_set_cursor(0, mark)
            vim.schedule(function()
                vim.cmd("normal! zz")
            end)
        end
    end,
})

The autocommand triggers on BufReadPost, which happens when a file is opened.

It retrieves the last cursor position using vim.api.nvim_buf_get_mark(args.buf, '"'), which gets the saved mark for the buffer.

If the position is valid, the cursor is moved back to that location. Then, the screen is centered on the cursor using vim.cmd("normal! zz").

custom statusline

The default statusline had a bit too little information for me, and I did not want to use a plugin for that, so I took my favorite info sections from mini.statusline and built it myself.

function M.MyStatusLine()
    local mode_map = {
        n = 'Normal',
        i = 'Insert',
        R = 'Replace',
        v = 'Visual',
        V = 'V-Line',
        <C-v> = 'V-Block',
        c = 'Command',
        s = 'Select',
        S = 'S-Line',
        <C-s> = 'S-Block',
        t = 'Terminal',
    }
    local mode = vim.fn.mode()
    local mode_name = mode_map[mode] or mode:upper()

    local filepath = vim.fn.expand('%:~:.')
    if filepath == '' then filepath = '[No Name]' end

    local ft = vim.bo.filetype
    if ft == '' then ft = 'none' end

    local enc = vim.bo.fenc ~= '' and vim.bo.fenc or vim.o.enc
    local fmt = vim.bo.fileformat == 'dos' and 'CRLF' or 'LF'

    local function size()
        local b = vim.fn.getfsize(vim.fn.expand('%:p'))
        if b <= 0 then return '0B' end
        local s = { 'B', 'K', 'M', 'G' }
        local i = 1
        while b >= 1024 and i < 4 do
            b = b / 1024; i = i + 1
        end
        return ('%.1f%s'):format(b, s[i])
    end

    local l, c, tot = vim.fn.line('.'), vim.fn.virtcol('.'), vim.fn.line('$')
    local pct       = tot > 0 and math.floor(l * 100 / tot) or 0

    local left      = (' %s | %s '):format(mode_name, filepath)
    local right     = table.concat({ ft, enc .. '[' .. fmt .. ']', size(), pct .. '%% ' .. tot, l .. ':' .. c }, ' │ ')

    return left .. '%=' .. right .. ' '
end
--nvim/init.lua
o.statusline = [[%!v:lua.require('stuff').MyStatusLine()]]

My statusline shows the current mode, file path, filetype, encoding, file size, and cursor position with progress percentage. The left side displays the mode and file name, while the right side is right-aligned using %= and contains technical details and position info.

yank highlight

I have seen many a config with this feature. It makes it slightly easier to know exactly what I yanked (yes, I sometimes mess up my vim motions ._.).

-- nvim/init.lua
vim.api.nvim_create_autocmd("TextYankPost", {
    group = vim.api.nvim_create_augroup("HighlightYank", {}),
    pattern = "*",
    callback = function()
        vim.highlight.on_yank({ higroup = "IncSearch", timeout = 50 })
    end,
})

This autocommand runs after text is yanked (TextYankPost). It briefly highlights the yanked text using the IncSearch highlight group, giving visual feedback that the yank succeeded. The highlight lasts for 50 milliseconds before disappearing.

markdown2pdf

I tend to use Markdown a lot (what you are reading right now was written in markdown!), and I wanted an easy way to convert the current markdown file into a pdf, using pandoc.

--nvim/stuff.lua
function M.markdown2pdf(input)
    if not input or input == "" then
        print("Usage: markdown2pdf(<file.md>)")
        return
    end

    local f = io.open(input, "r")
    if not f then
        print("File not found: " .. input)
        return
    end
    f:close()

    local filename = input:match("([^/]+)%.md$")
    if not filename then
        print("Invalid input file (must end in .md)")
        return
    end

    local home = os.getenv("HOME") or "~"
    local output = home .. "/Downloads/" .. filename .. ".pdf"

    local cmd = string.format('pandoc "%s" -o "%s" -V geometry:margin=1in', input, output)
    local ok = os.execute(cmd)

    if ok == 0 then
        print("PDF saved to " .. output)
    else
        print("Conversion failed")
    end
end
--nvim/after/ftplugin/markdown.lua
local stuff = require('stuff')
vim.keymap.set('n', '<leader>mp', function()
    local input = vim.api.nvim_buf_get_name(0)
    stuff.markdown2pdf(input)
end)
plugins

These are the only plugins I use:

final thoughts

These custom-built features and plugins (or lack thereof) make my neovim experience extremely satisfying. Everything is fast and built exactly how I want it. I am still experimenting, and who knows? I might go back to using more plugins, or I might cut them out entirely.

I hope you got some inspiration for your config. Happy neovim hacking!

:wq

https://michaelyodev.github.io/posts/notable-features-in-my-neovim-config/
what is the arvelie date system?
An introduction to the Arvelie date system, what draws me to it, and why I use it throughout this site.
Show full content
introduction

The Arvelie calendar is a compact alternative date system developed by Devine Lu Linvega. It is designed to emphasize regularity, computational simplicity, and personal contextualization of time.

Arvelie dates are written in the format YYMDD. The year count begins at zero relative to an arbitrary but meaningful reference point, most commonly the start of a project or journal. The calendar consists of 26 months, each represented by a letter of the Latin alphabet (A–Z). Every month contains exactly two weeks of seven days, resulting in a uniform structure of 14 days per month.

Using 2025 as the base year, the following examples illustrate the system:

  • January 1, 2025 -> 00A00
  • April 1, 2025 -> 00G06
  • October 5, 2025 -> 00T11
  • December 31, 2025 -> 00+00
  • March 15, 2027 -> 02F03
conceptual motivation

A defining characteristic of the Arvelie system is its rejection of an absolute historical epoch in favor of a relative temporal framework. Conventional calendars typically anchor time to distant historical or religious events, such as AD (Anno Domini) or BC (Before Christ). By contrast, Arvelie permits the user to define year zero according to personal significance—for example, the inception of a website or creative project.

This relativity aligns closely with everyday human conceptions of time. Age is measured from birth, professional experience from a start date, and relationships through the use of anniversaries. Arvelie formalizes this intuitive practice, shifting emphasis from an abstract global timeline to the duration and development of a specific endeavor. For this reason, it is particularly well suited to a personal site such as the one you are currently reading.

Structurally, the calendar is notable for its uniformity: 26 identical fortnights per year. This eliminates irregular month lengths and exception-heavy rules, improves lexical date sorting, and yields concise, visually distinctive date strings that remain legible.

intercalary days

The Arvelie calendar accounts for surplus solar days through the use of intercalary days. After the final month (Z), a special Year Day is inserted, denoted as +00. This day exists outside the standard month–week structure and represents the final day of the year, e.g., 2025-12-31 is translated to 00+00.

In leap years, an additional Leap Day follows the Year Day and is written as +01. Like the Year Day, it does not belong to any month. For example, in 2028, 2028-12-30 corresponds to 03+00 (Year Day), and 2028-12-31 corresponds to 03+01 (Leap Day).

implementation on this site

This site launched in 2025, which is therefore designated as year 00. All dates published during 2025 begin with 00, incrementing to 01 in 2026, and so forth. This approach explicitly ties the calendar to the lifespan of the project itself.

Technically, the system is implemented using a Hugo partial (date-arvelie.html) that converts standard post dates within my HTML templates, as well as a shortcode (arvelie.html) for direct use in Markdown. The examples above were generated using this shortcode. The underlying logic draws significant inspiration from the Arvelie CLI implementation by Tillman Jex.

final thoughts

While the Arvelie date system represents only a modest departure from conventional calendrical practice, its impact on the tone and coherence of this site is substantial. By allowing timekeeping to evolve alongside the project it documents, Arvelie transforms dates from static timestamps into indicators of growth and duration. As the year count advances from zero, the calendar will not merely record when content was created, but how far this project has progressed over time.

further reading tip For practical experimentation with the system, I have developed a converter, available here. note This post was intentionally written in a more scholarly and academic register, drawing inspiration from the in-world academic voices of Shallan Davar, Jasnah Kholin, and Navani Kholin in Brandon Sanderson’s The Stormlight Archive."
https://michaelyodev.github.io/posts/what-is-the-arvelie-date-system/
what is this website?
An exploration of the concepts of the Garden and the Stream as they relate to personal websites, examining how my site incorporates elements of both and why it cannot be confined to a single category.
Show full content

This website was created on November 4th, 2025 (00V13).1 Depending on when you are reading this, that may have been very recently or a long time ago.

In his 2015 keynote The Garden and the Stream: A Technopastoral,2 Mike Caulfield describes two different philosophies for the web: the Garden and the Stream.

The Garden is the web as topology. It uses links, slow growth, evergreen notes,3 and things arranged next to each other instead of in a timeline.

In a true garden, you walk around. You follow a path because one thought feels close to another, not because it was posted last Tuesday. Nothing is ever truly old; it just sits there until someone stumbles across it again and decides to water it. Dates, if they exist at all, are secondary. The shape of the space matters more than the arrow of time.

My website borrows a few habits from the garden.

  • There are interconnected pages that live outside of time and keep growing, such as /about, /colophon, /uses, /now, and more.
  • My homepage displays a few featured writings, not sorted chronologically and absolutely no paginator.
  • Ideas for my writings often start as tiny seedlings in the microblog, and later blossom into fully-fledged writings.
  • Every page on my website can be updated, tended to. I can come back and edit an old post, add a paragraph, fix a broken thought, and the updated on line at the bottom changes accordingly.
  • Pages are connected to each other through tags and manual links.

This site is not a Garden, though.

The Stream is chronology, newest-first, posts that appear and then slide away forever. You see it on most social media, from Instagram to X.

In the stream you don’t explore; you stand in the current and let things rush past. The only organizing principle is simply “when”, and once something scrolls off the front page it might as well not exist anymore.

My website still carries a lot of the stream in its bones.

  • Almost every post on my website includes dates:
    • The /posts have a published on date, and are sorted accordingly.
    • My micro blog is sorted chronologically, with the newest entries on top.
  • Most writings are written, published, and then left exactly as they were on the day they went live.

This site is not a Stream, though.

It lives in the middle.

Some corners are cultivated beds, some corners a fast-moving river, and most of the land is just ordinary ground where both weeds and flowers grow however they want.

I am fine with that. I do not need to pick a side or finish the transformation.

This place is simply mine. My little corner of the web. It can keep changing, shape-shifting, as long as I am still here to tend to it.

Thanks for walking through it with me, whenever you happened to arrive.

If you feel like staying longer, here are a few nice spots:

Or simply wander my writings and the micro blog.

Take your time, and I will see you around.


  1. The Arvelie date format is an alternative calendar system with 26 months of 14 days each, often used in personal wikis and indie web projects for a more uniform and project-relative timing. Read more about it here↩︎

  2. Mike Caulfield’s 2015 keynote, delivered at dLRN at Stanford, contrasts personalized, linked knowledge spaces (gardens) with chronological feeds (streams), influencing the modern “digital garden” movement. ↩︎

  3. Evergreen notes, popularized by Andy Matuschak, are atomic, concept-focused notes designed to grow, evolve, and interconnect over time, fostering long-term knowledge development rather than serving as temporary record-keeping. Their conceptual roots trace back to Niklas Luhmann’s Zettelkasten, traditional commonplace books, and Sönke Ahrens, who helped popularize the modern Zettelkasten method. ↩︎

https://michaelyodev.github.io/posts/what-is-this-website/
how vim broke my brain (and why you should try it)
A retelling of my experience learning Vim, and why it is worth trying for yourself.
Show full content

hhhhjjjkkklllllhhlhjkkkjjjj5wxxd5jxkkkkk:wq

No, my dog did not walk across my keyboard. That was me, in my first few hours of Vim, desperately trying to escape a blank Neovim buffer.

the before times

I started programming in 7th grade. Like most beginners, my setup was VS Code, a mouse, and the arrow keys. It worked, but something always felt off.

Every time I needed to edit code a few lines away, I would:

  1. Lift my hand off the keyboard
  2. Hunt for the mouse
  3. Drag the cursor to exactly the right spot (usually missing the first time)
  4. Click
  5. Put my hand back on the keyboard
  6. Repeat 47 times per coding session

It was exhausting. I felt like I was doing finger gymnastics just to write a for-loop.

My dad, on the other hand, was a different species of programmer. I’d watch him hammer away for hours with this constant clack-clack-clack from his absurdly loud mechanical keyboard, never touching a mouse. One day I asked what editor he used.

His exact words that would change my life, delivered with the smug satisfaction only a true programmer can muster, were:

"I use Vim, btw."
the youtube rabbit hole

Fast forward a couple of years. I was deep into programmer YouTube, from Fireship’s 100-second videos to ThePrimeagen flying around his editor like he’s possessed by the ghost of Ken Thompson. Every other video I saw mentioned Vim. The memes were relentless:

  • “Only real programmers use Vim”
  • “There are two types of developers: those who use Vim and those who will…eventually”
  • The eternal “HOW DO I EXIT VIM???” panic

Eventually the peer pressure won. I installed Neovim, cracked my knuckles, and typed the fateful command:

nvim
the trauma

My screen went blank. Nothing worked.

  • Arrow keys? Dead.
  • WASD? Nothing.
  • Random smashing of every key I could reach? Still nothing.

I was trapped. I legitimately restarted my computer because I could not figure out how to quit. (Yes, I know now it’s :qa! or ZZ or a multitude of other commands. No, I did not know that then.)

the breakthrough

After recovering from the PTSD, I actually started learning.

Turns out in Vim, the “arrow keys” are hjkl:

  • h –> left
  • j –> down
  • k –> up
  • l –> right

It felt wrong, like trying to play piano with my elbows. My muscle memory screamed in protest.

But then…something clicked.

I learned you could prefix motions with numbers: 5j goes down 5 lines, 10k goes up 10. I learned the basic modes: Normal (used to move around), Insert (used to type), and Visual (used to select text). I discovered macros (record a sequence once, replay it forever with @). I even found netrw, Vim’s built-in file explorer. So many other motions made it extremely easy and fast to navigate a file.

Within a week I caught myself trying to 5j6w my way through Google Docs for a school essay.

Everything felt…creamy. (You’ll only understand that word if you’ve experienced the same brain rewrite.)

Suddenly I was not fighting my tools anymore. My hands and brain were finally speaking the same language. I could think –> type –> execute at something close to the speed of thought.

the real lesson

Here’s the thing most Vim evangelists get wrong:

You don’t have to use Vim or Neovim to benefit from Vim.

The motions are the superpower. Almost every major editor and IDE has Vim keybinding plugins:

Start there. Fall in love with the motions in an editor you already know. Then, if you want to go deeper, dip your toes into actual Neovim.

Helpful resources if you’re curious:

  • kickstart.nvim: great starter config. It is not a distro, but rather teaches you how to make your own configuration
  • ThePrimeagen’s “Vim As Your Editor” series: very beginner-friendly and in-depth tutorials for the vim motions
  • My neovim config (found in my .config)
Final Thoughts

You don’t have to marry Vim. You don’t even have to date it exclusively.

Just take it out for a week, and see if the sparks fly.

Even if you break up afterward, you’ll walk away with better editing skills in whatever tool you actually use.

Vim broke my brain, and I’m better for it.

Now if you’ll excuse me, I have to go dd the memory of ever using a mouse again.

:wq

This post was adapted from a rhetoric assignment I wrote for AP English Language and Composition in my junior year of high school.

https://michaelyodev.github.io/posts/how-vim-broke-my-brain-and-why-you-should-try-it/
remembering marching band
A reflection on my emotions and thoughts after my final high school marching band competition.
Show full content

November 23rd, 2025. WBA Grand Championships. My last day of high school marching band.

I started crying in Part 4, during the drum break. After my flugelhorn solo, I knelt on the sideline while the rest of the brass did their dance break. When they turned and looked toward me, seeing their smiling faces started the waterworks. Later, during the outro after Part 5 where my line ran one of the river tarps around the field, the tears would not stop. At the last hold, I could hear people from the color guard sobbing.

I remember our last moments on the field: feeling the emotions overcome me, trying and failing to maintain a smile for the audience as the tears flowed. Then, as we began pushing off the field, I remember yelling with joy, hugging my closest friends, and feeling a mixture of pride and sorrow. Proud of our band putting on the best performance we could have done. Sad that my high school marching band career was over.

Thinking about those final moments on the field, I remember the same events my freshman year. The same pride and sorrow. At the time, I did not think any other year would surpass it. That was my first year in marching band, and it left a lasting impression on me. My senior year, though, was even better.

I had a really close group of friends this year. We called ourselves the “5 guys”, and got a tuff photo at every competition. They are all high-achieving musicians and marchers, just like me, and it was great hanging out with them. Now, with marching season over, I hope we still stay close even though we don’t have an activity bringing us together.

Life feels so strange without marching band. A feeling I haven’t felt since freshman year. It’s like a part of my life is empty; Wednesday evenings are occupied by homework and violin practice, not marching band. Saturdays are free for sleeping in, reading at the local bookstore, or taking a trip to the city, not marching band.

Looking back, I am so glad I did marching band. Some of my closest friendships came out of it. I made so many memories, documented on my camera roll and journal.

I will never have another high school marching band experience.

Last one, best one.

note to future self This is not the end! In 2 years, you will see me at the Lucas Oil Stadium in Indianapolis, for the 2027 DCI World Championships. :)
https://michaelyodev.github.io/posts/remembering-marching-band/
music of reflection
An exploration of how music preserves emotions and memories, illustrated through several personal examples.
Show full content
music, to me.

“Music is a universal language” is a phrase I have heard endlessly, but which has always rung hollow.

How can I actually talk to someone with music? young me wondered. Does that mean I don’t need to learn English?

For me, a more accurate version is: “Music is a medium to express and share emotions”. Let me show what I mean.


brahms: violin sonata no. 2 in a major, op. 100, 1st mvt

I first heard this piece played in a student recital at a violin summer festival I attended.

When I hear the opening piano part, I immediately feel a wave of nostalgia wash over me. That happened the first time I heard it, and every time since. It is a very interesting sensation, because it does not take me to a place or time I have been before. It just bathes me in the emotions of longing, melancholy, and a hint of joy.

Check out my favorite recording of this piece by Itzhak Perlman and Vladimir Ashkenazy.

Just the Two of Us (Grover Washington)

This is the sound of the last month of sophomore year. That period of time was very special to me. It is hard to put into words, but it felt removed from the timeline of my life.

When I hear it, I remember walking around campus with my friends prior to the AP CSP exam. I remember stepping off of campus for the last time that year, feeling that my life was moving on. And I remember being in that bubble of time, enjoying the moment.

If my life was a film, that portion would have a slightly different tint that no other scene would share.

My jazz combo performed this song, as well as a From the Start and a few others, at my school’s Senior Awards.

I listen to it whenever I want to be transported back to that vibe, or when it feels hard to keep living and looking forward.

Listen to this one here.

Suk: Love Song from 6 Pieces, Op. 7

The title of the piece perfectly encompasses what I feel from this piece: love.

Just like the Brahms, I first heard this piece at a violin summer festival, performed as an encore by Ray Ushikubo.

The warmth of D-flat major pairs incredibly with the melody of the first section. The feeling of love builds up and becomes so intense, entangled with the feeling of heartbreak: tender and raw. In the second section, it develops into a brighter and more wistful feeling, as if reminiscing on the happy memories with a past lover. It returns back to the first section, but with more movement in the piano accompaniment, as if they are starting to move on, with the heartbreak fading slowly. The piece ends with a final thought: that everything will be okay.

This piece got me through a lot of difficult times. It is my favorite piece of music, and I can feel myself going through all the emotions whenever I perform it. The way I feel after a performance of this piece is incomparable to any other.

Love. Hope. Comfort.

Take a listen to my favorite recording of this piece by Janine Jansen.


Final Thoughts

Each of these pieces marks a different chapter in my life, and different emotions I have felt throughout it: moments of longing, of connection, of healing. Music has a way of holding time still, of letting us return to who we once were, and who we are, and who we will become.

These three pieces are a small selection from my reflection playlist, where each piece or song carries a memory or emotion that is special to me.

https://michaelyodev.github.io/posts/music-of-reflection/
a dream of love and joy
A recounting of a dream I had about love and joy, and the subsequent loss of it upon waking.
Show full content

The memories are … fuzzy.

I can see her face, half-lit by the dream’s last streetlamp. I remember the clothes she wore, and the feeling of her wool coat brushing my wrist as we walked, hand in hand. I can feel the soft touch of her fingers on my cheek. I can picture the slight redness of her nose and cheeks from the cold, along with her beautiful smile. I can taste the meal we shared at the restaurant. I can hear the click of her camera, an old digital camera that looked like a Fujifilm.

I woke feeling joy. True joy. And love. The kind that inspires the butterflies in your stomach to flutter to their hearts’ content.

Then the details slipped, the memories faded, and the joy dissipated into the old familiar hush of my bedroom.

I searched my memories: no texts. No photos. No yesterday. It was just a dream.

All I was left with was the pain of emptiness and loneliness, a hopefulness for the happiness I could someday have, and an image of her face, slowly fading.

I do not know why God showed me what He did. All I know is that, through the pain and sadness, I look forward to the joy and love I will experience someday.

Someday.

Until then.

https://michaelyodev.github.io/posts/a-dream-of-love-and-joy/