<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel>
        <title>esrh.me</title>
        <link>https://esrh.me</link>
        <description><![CDATA[my blog!]]></description>
        <atom:link href="https://esrh.me/feed" rel="self"
                   type="application/rss+xml" />
        <lastBuildDate>Sat, 15 Nov 2025 00:00:00 UT</lastBuildDate>
        <item>
    <title>Overdue life update (2025 recap)</title>
    <link>https://esrh.me/posts/2025-11-15-year-recap.html</link>
    <description><![CDATA[<article>
  <script id="MathJax-script" async
          src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js">
  </script>
  <section class="header">
    Posted: 2025 / 11 / 15
  </section>
  <section>
    <div class="toc">
<h2 class="tocheader">Contents</h2>
<ul>
<li><a href="#intro" id="toc-intro"><span class="toc-section-number">1</span> Intro</a></li>
<li><a href="#masters-degree-moving-back-to-japan" id="toc-masters-degree-moving-back-to-japan"><span class="toc-section-number">2</span> Master’s degree, moving back to japan</a>
<ul>
<li><a href="#moving-back-to-japan" id="toc-moving-back-to-japan"><span class="toc-section-number">2.1</span> Moving back to japan</a></li>
<li><a href="#research" id="toc-research"><span class="toc-section-number">2.2</span> Research</a></li>
</ul></li>
<li><a href="#looking-forward" id="toc-looking-forward"><span class="toc-section-number">3</span> Looking forward</a></li>
</ul>
</div>
<h1 data-number="1" id="intro"><span class="header-section-number">1</span> Intro</h1>
<p>With 2025 coming to a close, I thought I’d write up a sort of
free-form summary. These kinds of things are of course mostly for the
author’s own self satisfaction, but I also do genuinely want to stay
connected to everyone interested in this site (and me), whether we’re
close or have never met at all. If you talk to me regularly in person,
then there are some things you’ve inevitably heard from me; so I want
to pick and choose a few of them and keep everyone else updated too.</p>
<h1 data-number="2" id="masters-degree-moving-back-to-japan"><span class="header-section-number">2</span> Master’s degree, moving back to japan</h1>
<h2 data-number="2.1" id="moving-back-to-japan"><span class="header-section-number">2.1</span> Moving back to japan</h2>
<h3 data-number="2.1.1" id="cycling"><span class="header-section-number">2.1.1</span> Cycling</h3>
<p>As <code>many</code> everyone who knows me in person is aware by know, I got
into road cycling this year. In 2025 I cycled a bit over 3000km on my
bike, with really only one long distance trip on the Shimanami
Kaidou and the rest just around Tokyo and Yokohama. I bought my bike
off ジモティー, a second-hand sales website, late last year:</p>
<p><img src="../images/2025_bike2.jpg" class="post-image" /></p>
<p>It cost me about $350 as pictured, which was probably too high with
all things said, but I immediately fell in love with the look of the
frame. It’s a 2008 Lemond Poprad CX bike with fairly beaten up
parts. I knew pretty much nothing about road bikes when I bought it –
I literally didn’t know how to shift up on the Shimano brifters when I
first got on. If I did, I would’ve noticed that the front shifter was
completely busted. Over the course of the next half year or so I
taught myself to service every part of my bike. Some new Microshift
shifters, all-new cabling and housing, new linear pull brakes to
replace cantilevers, new Campagnolo/Fulcrum wheels, new tires,
all-ultegra drivetrain (including the chain!) later, it looks
something like this:</p>
<p><img src="../images/2025_bike1.jpg" class="post-image" /></p>
<p>I feel like bicycles are simultaneously magical and intricate but also
surprisingly foolproof and operationally obvious. I find this balance
of simplicity and technology extremely elegant, which is also why I
personally couldn’t imagine using the new wave of electronic shifters
&amp; derailleurs, or power meters, or hydraulic brakes. Not that I could
afford any of them anyway. Not too long ago I used to be a huge fan of
trains and loved taking them whenever I go anywhere, but these days I
have to come up with places to go just so I can hop on the bike. City
cycling, for all its risks and inefficiencies, is so thrilling and
liberating.</p>
<p>I happen to live quite close to the city, so areas like Shibuya,
Shinjuku, and Akihabara are all within around 10-15 km away. One of my
favorite pastimes is to bike over, eat some good food and watch the
people and cars for hours at a time. While the city is nice, another
area I love to cycle to is the series of artificial islands on the
south-east coast: Shinagawa/Oi wharfs, the south edge of Haneda
airport, all the Kawasaki industrial islands, and Daikoku. I am
generally fascinated by the logistics that make possible the modern
lifestyle we take for granted – trains, airplanes, ships, but also
radio networks and manufacturing. I’ve collected a kind of amusing set
of photos from cycling through these areas which for the most part are
only conveniently accessible by car, and I plan to put them up on my
site somewhere. I also have quite a bit of cycling footage from a
action cameras, but editing them turned out to be way, way more effort
than I thought it would be. I should probably give up on Kdenlive (I
won’t).</p>
<p>One special cycling trip was in March of this year, during which I
cycled the <a href="https://en.wikipedia.org/wiki/Nishiseto_Expressway">Shimanami Kaidou</a>, a road connecting Onomichi in Hiroshima
with Imabari in Ehime. Most of the route has excellent bike
infrastructure is quite famously the ultimate cycling destination in
Japan. The views really didn’t disappoint, I <a href="https://photos.esrh.me/albums/japan_2/">posted</a> a couple photos
but something went horribly wrong with the color grading during
development and I didn’t want to fix it in post. I travelled with some
very interesting people (mostly from the <a href="https://dicega.ng/">Dice ctf team</a> and Zellic) who
were in Japan for SECCON. I made some awesome lasting friendships
(everyone comes back to Japan eventually) and it was all-around a
really great time.</p>
<h3 data-number="2.1.2" id="school-life"><span class="header-section-number">2.1.2</span> School life</h3>
<p>I’ve finished a bit over half of my Master’s course at Science Tokyo
now, and I’d like to write a bit about how it’s been.</p>
<p>From an educational standpoint, I find it difficult to recommend coming
here. The courses I’ve taken os far are in general exceedingly
superficial, easy, and exclusively busy work. I assume this is unique to
my department (Information &amp; Communications (ICT)), but there’s a
distinct culture of prioritizing research. To be honest though, I like
it much better this way. I have nothing but positive things to say
about my <a href="https://nishio-laboratory.github.io/member/nishio">supervisor</a> and <a href="https://nishio-laboratory.github.io/">lab</a>. I’ve been given all the resources I
could ask for and more, both in lifestyle and technological
terms. I’ll discuss the details of the my research work in a different
section.</p>
<p>The campus and my office though, are really awesome. In the spring,
the pathway to the main building is flanked by cherry blossom trees:</p>
<p><img src="../images/2025_sakura.jpg" class="post-image" /></p>
<p>And in the fall, the main road is covered in yellow gingko leaves
(let’s not talk about the rotting fruit):</p>
<p><img src="../images/2025_ichou.jpg" class="post-image" /></p>
<p>(My office is just off to the right).</p>
<p>One very funny course I took this year was “Getting familiar with the
Science Tokyo campuses” about each of the campuses of the (newly
merged) university and their surrounding areas. Each class took place
in a different campus and included a tour of the clock tower of the
main building. This class was really amusing; I wrote my final paper
as a ranking/review of ramen shops near the main (Ookayama)
campus (my top ranking was <a href="https://maps.app.goo.gl/9YLt4LFY3oJoYCCU7">なるめん</a>, I’d recommend visiting if you get
the chance, but you have to monitor the owner’s X to figure out when
it’s open).</p>
<p>For the most part, school was fun this year. There’s a fairly large
population of foreign students from many countries, both exchange and
regular students. I live in a mostly international university dorm, so
I’m definitely interacting with more cultures than I ever have
before.</p>
<ol>
<li><p>TraP</p>
<p>I’m a member of only one club, the <a href="https://trap.jp/">traP</a> “digital creation circle”, a
unified CS and digital art organization (which is also <em>by far</em> the
biggest club on campus). Trap has a bunch of sub-clubs, like for game
dev, ctf, and competitive programming. Most of my (japanese) friends
are also in/from trap, and I keep up with them through an internal
discord-like chat app called <a href="https://github.com/traPtitech/traQ">traQ</a>. The club has a lot of culture and
creative soul, and produces a suprising amount of output in the form
of code, games and miscellaneous projects. The only issue is that it’s
essentially 100% japanese, and definitely leans more undergraduate in
composition.</p>
<p>I had the chance to compete in the ICPC Japan competition this year
with some foreign students from traP (@<a href="https://jp.linkedin.com/in/bohdan-parahailo">malfisto</a> (my friend Bohdan),
and @<a href="https://atcoder.jp/users/Eraxyso">Eraxyso</a>). I’m completely washed at competitive programming now
(not that I was ever really good), so I kinda just tagged along for
moral support. Out of 355 teams, <em>yamatonadeshiko</em> placed 20th in the
country, but we still didn’t qualify for the Yokohama regional since
we only placed 7th in the school. Science Tokyo was so strong this
year that all 4 teams that qualified full solved. It kinda inspired me
to start practicing again, and I’ve been working through the Japanese
CP book 「競技プログラミングの鉄則」on Bohdan’s recommendation.</p></li>
</ol>
<h2 data-number="2.2" id="research"><span class="header-section-number">2.2</span> Research</h2>
<p>While being a regular student, I’m also employed as a research
assistant in our lab. So, I’ve naturally been somewhat focused on
research this past year.</p>
<p>The project I worked on for most of 2025 (which is now winding down)
is <a href="https://github.com/nishio-laboratory/latentcsi">latentcsi</a>, a method to generate images from Wifi CSI (a
record of the effects of the physical channel on signals transmitted
at various frequencies). To summarize the method, it adapts a
traditional Stable Diffusion type image to image process by replacing
the image-to-latent encoder with a different csi-to-latent neural net
that’s trained to imitate the output of the original model with a
different input modality. This constituted one half of the work; the
other half implements this idea in real life, with distributed sensor
nodes, a training server, and clients. It turns out that using a
neural network to predict small latents instead of large images means
you can train it fast enough to show interestingly generalized results
in a few minutes and use it for nearly real-time inference. The <a href="https://arxiv.org/abs/2506.10605">paper</a>
contains more details, but I’d instead suggest browsing the <a href="https://github.com/nishio-laboratory/latentcsi/blob/master/docs/slides.pdf">slides</a> for
a more concise summary.</p>
<p>To my great shock and horror, this paper got sort of popular on<a href="http://127.0.0.1:8001/posts/2025-11-15-year-recap.html"> a</a> <a href="https://x.com/birdabo/status/1973014505878901154">few</a>
<a href="https://news.ycombinator.com/item?id=45434941">websites</a>, typically with people not really understanding the limits of
the work. Generalized learning off of raw CSI is very difficult, and
this isn’t a problem we claim to solve. Instead, we try to find a
really lightweight solution that can be trained so fast that you can
learn new scenarios in a practical way. A short while after we put out
the arxiv paper, several companies contacted our lab interested in the
work, including worryingly some consumer technology companies. I can
say with some confidence that the industry is actively and eagerly
interested in abusing CSI sensing in quite concerning and directly
consumer impacting ways. This is real and might very well be coming
soon. Send me an email if you’re interested in discussing more about
this topic. Sometimes it’s quite easy to forget, when you’re working
on an academic project, that what you do <em>does</em> impact the real world
and can very well hurt people. It’s seems quite clear to me that
pursuing this direction of research is somewhat morally compromised.</p>
<p>…anyway, I had the opportunity to do some (sponsored) travelling over
the past months to attend a few conferences. Travelogue follows:</p>
<h3 data-number="2.2.1" id="conferences"><span class="header-section-number">2.2.1</span> Conferences</h3>
<ol>
<li><p>MIRU @ Kyoto</p>
<p>The first conference I attend this year was MIRU in Kyoto, the largest
domestic computer vision conference in Japan. This conference is huge:
there were at least a few thousand attendees, mostly composed of
students with an unexpectedly large cohort of undergrads. As I
understand, many undergrads present their senior-year thesis here.</p>
<p>Kyoto is of course only a short Shinkansen trip away from home, and a
city I’ve visited many times before. The highlight of the trip travel
wise was definitely the venue, the <a href="https://en.wikipedia.org/wiki/Kyoto_International_Conference_Center">Kyoto International Conference Center</a>. This building is extraordinarily striking:</p>
<p><img src="../images/2025_kicc.jpg" class="post-image" /></p>
<p>It’s designed in such a way that there are very few vertical lines at
all, and no vertical supporting columns. The famous Kyoto Protocol was
signed in the same main hall, and was a lot of fun to explore and
photograph.</p></li>
<li><p>Mobicom @ Hong Kong</p>
<p>In November, I visited Hong Kong for Mobicom 2025. Hong Kong was a
destination I’d wanted to visit for a long time, so I was very
excited. I stayed in the Kerry Hotel near Whampoa, which had excellent
food and a really spectacular view of the Hong Kong island skyline:</p>
<figure>
<img src="../images/2025_hotel.jpg" />
<figcaption>Carlsberg at the conference reception</figcaption>
</figure>
<p>I presented a demo of our real-time implementation of LatentCSI. I met
some very interesting people, students and professors alike. The final
day of the conference was held at the Hong Kong University of Science
and Technology (HKUST), a beautiful campus and environment. The
symposium presentations (which I managed to attend) were very
interesting.</p>
<p>This was my first time in officially-PRC territory, so I tried to make
the most of the trip. The very same day I landed I’d already hit most
of the big tourist spots, like the Avenue of Stars and the Peak. After
that, I kind of just wandered around Tsim Sha Tsui and Central either
trying to find famous restaurants or movie spots (my favorite of which
was the Central-Midlevels escalator from <em>Chungking express</em>). I’m a
big fan of Hong Kong cinema, especially Wong Kar-wai and the classic
Triad movies. While I did visit a couple of really good expensive
restaurants (especially for dim-sum), one of the most memorable things
I ate in HK was 車仔麪, or “cart noodles”, where instant noodles are
mixed with the sauces and toppings of your choice. I’m sure I’d be
eating it every day if it was popular in Tokyo.</p>
<p>I took a day to visit Shenzhen, which is directly north of Hong
Kong. I’d read about a 5-day visa on arrival for the Shenzhen Special
Economic Zone, so I decided without thinking too carefully to buy a
ticket for the HSR from West-Kowloon in Hong Kong to Futian in
Shenzhen. However, I’d unfortunately missed that the visa is only
available at direct ports of entry, namely the land-border crossings
at Luohu and Huanggang, the Shekou ferry port, and Bao’an airport –
<em>not</em> any of the HSR stations. So here I am, at the immigration
counter to Shenzhen and the lady in charge looks through my passport
and asks me where my visa is, and I had to vaguely explain away my
horrific lack of research. The good news is that it’s less than an
hour from West-Kowloon to the real land-border crossing, where I got
my 5-day visa and finally made it across.</p>
<p>Stepping into mainland China really feels like entering a different
world if you’ve never been there before. Everything’s done slightly
differently, like the mobile payments, simplified Chinese, brands I’ve
never heard of before, delicious convenience store drinks, and above
all, the raw scale of buildings and public infrastructure. Luohu
station, the most popular land-crossing, is probably close to 10x
bigger in size on the Shenzhen size than on the HK side. I imagine
this sense of wonder is how many people feel when they visit Japan for
the first time (I’m so jaded now I can hardly remember it). My
favorite experience in Shenzhen was the Huaqiangbei electronics
market, a sprawling collection of buildings selling almost any
electronic product in any state of completion. When I was in high
school, I remember reading the <a href="https://bunniefoo.com/bunnie/essential/essential-guide-shenzhen-web.pdf">Guide to electronics in Shenzhen</a> book
for mysterious reasons, so it was cool to finally be there. The scale
and sprawl of the market was very impressive to see, since technology
has of course been a big part of my whole life. A common sight in
Huaqiangbei are groups of foreigners rolling around large suitcases
full of electronics (especially smartphones) buying hundreds of items
at a time to resell in regions like India and Western Africa. This
mirrors what you can see in places like Chungking Mansions (also of
<em>Chungking Express</em> fame), where a large number of south asians
(mainly Indians and Pakistanis) run smartphone export businesses. I
also spent a bit of time in the Chungking Mansions while in HK, mainly
for the delicious and very authentic south Indian food, but also to
get a sense of this extremely weird and unique environment – an
ostensibly poor piece of the Third World right in the middle of one of
the riches cities in the world. I highly recommend the book <a href="https://press.uchicago.edu/ucp/books/book/chicago/G/bo11234886.html">Ghetto at the Centre of the World</a>, which aptly describes this pattern as
“low-end globalization”. I guess it’s still surprising that the market
hasn’t fully optimized electronics export out of China.</p></li>
<li><p>Globecom @ Taipei</p>
<p>In December, I attended Globecom held at the Taipei Internatinal
Convention Center. While it was my first time in Hong Kong, I
visited Taiwan for nearly 2 weeks in the summer. I stayed for about a
week in Taipei and another week in Kaohsiung. As such, I had a decent
idea of what I missed, what I wanted to do again, and what I should
advise my school friends to skip.</p>
<p>The main thing I missed was probably Yangmingshan park, with its
grasslands, cows, and hilly hiking routes:</p>
<figure>
<img src="../images/2025_yangmingshan.jpg" />
<figcaption>Yangmingshan grasslands (entrance)</figcaption>
</figure>
<p>In the same area I missed doing the hot springs at Beitou, but I did
get a chance to see the very cool old Xinbeitou train station. The
bulk of my trip was however, revisiting places I’d already been –
restaurants and food stalls. I absolutely love the kind of congyoubing
(scallion pancakes) that’s served from streetside stalls – I usually
ask for an egg and extra spicy sauce.</p>
<figure>
<img src="../images/2025_congyoubing.jpg" />
<figcaption>Congyoubing</figcaption>
</figure>
<p>When it’s done right, it’s incredibly flaky on the outside but soft
and chewy on the inside. My other top choice of street food is
hujiaobing (pepper buns), a slightly spicy meat bun from Fuzhou. For
dessert, I recommend xuehuabing (milky shaved ice), but it’s probably
just as popular in the USA or Japan. I probably remember the night
markets in Taipei better than anything else from the trip – I’d say a
trip to Taiwan is worth is just for the food (indeed there might not
be <em>that</em> much else to do). We stayed fairly close
to Ximending station, and since our conference happened to coincide
with the <a href="https://en.wikipedia.org/wiki/Qing_Shan_King_Sacrificial_Ceremony">Qingshan king festival</a> in Wanhua we got to see the whole
place lit up and packed with dancers and parade cars at every
intersection.</p>
<p>After all three of our presentations were finished, we took the
Maokong gondola up to Maokong station. While the weather was far from
ideal, the views from the gondola and the Taiwanese tea we shared at
the top were both fantastic.</p>
<figure>
<img src="../images/2025_maokong.jpg" />
<figcaption>Maokong gondola view, Taipei 101 barely visible on the right</figcaption>
</figure>
<figure>
<img src="../images/2025_cha.jpg" />
<figcaption>Tea and sweets (maybe a bit overboard for 3 guys)</figcaption>
</figure></li>
</ol>
<h1 data-number="3" id="looking-forward"><span class="header-section-number">3</span> Looking forward</h1>
<p>With that, I think I’ve covered my 2025 in fairly large strokes. When
I look back on this year as a whole, two things stand out to
me. First, it felt quite dense, a fair bit of travel, very new
experiences, and new people coming into my life. But paradoxically, I
don’t really have much tangible artifact to show for it! I didn’t
learn as much as I might’ve hoped to, despite reading a lot; and
didn’t make as many things as I would’ve liked to, despite programming
a decent amount. It’s much harder to find value in experiences that
change you subtly and over time compared to individual events.</p>
<p>I’ve never been a big believer in new years resolutions, but there are
some trends I’ve felt recently that I hope carry on into 2026. One of
these is that I’ve returned to trying to learn Chinese (since ~3 years
ago). The last time I gave it a serious attempt, I decided to learn
traditional characters, which seriously limits the scope of content
you can immerse in. So, I ended up mostly doing a lot of vocabulary on
anki and not as much content immersion. This time around, I’m taking
it really easy on the anki, learning simplified characters (which
turned out to be much harder at all), and watching more
content. Still, I feel that compelling easy content for Chinese is
much harder to come by than for Japanese, for which you can pick and
choose from younger audience manga and anime popular and widespread on
the Western internet. My trips to the (Republic of) China, a (SAR of)
China and the (People’s Republic of) China left a pretty strong
impression on me. I’d like to get to a reasonably conversational level
next year – my standards and expectations are probably not going to
be as high as they were for Japanese.</p>
<p>I’m still enjoying programming in lisps, but I’d like to do more next
year too. The biggest thing I’m working on is a new static site
generator written in Racket. It uses scribble/html s-expression based
html templates, and will support really flexible transformation
pipelines (with a focus on ergonomic pandoc). I do like Hakyll, and
I’ve been using it for a long time now, but at some point I did come
to terms with the fact that it is just hard to “hack” on. Changing
anything that’s not intentionally exposed (built-in) requires
hackage-reading and hoogling, it’s impossible to monkey-patch
functions like we can do in lisp, and the templating system is
slightly awkward. I am essentially planning a hakyll-type SSG, with
the same structural philosophy about “contexts” and “compilers”,
except dynamically typed (everything is a string), and much more
easily hackable. While I have a prototype working, getting it
feature-complete enough to totally replace both this blog and my
photos website has proved to be a bit more complicated. I am also
planning a total style/layout overhaul of both websites soon.</p>
<p>In any case, happy new year and holidays to everyone!! Here’s to a fun and
fruitful 2026.</p>

  </section>
</article>
]]></description>
    <pubDate>Sat, 15 Nov 2025 00:00:00 UT</pubDate>
    <guid>https://esrh.me/posts/2025-11-15-year-recap.html</guid>
    <dc:creator>Eshan Ramesh</dc:creator>
</item>
<item>
    <title>Why I love lisp, among other topics</title>
    <link>https://esrh.me/posts/2025-02-11-lisp.html</link>
    <description><![CDATA[<article>
  <script id="MathJax-script" async
          src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js">
  </script>
  <section class="header">
    Posted: 2025 / 02 / 11
  </section>
  <section>
    <div class="toc">
<h2 class="tocheader">Contents</h2>
<ul>
<li><a href="#introduction" id="toc-introduction"><span class="toc-section-number">1</span> Introduction</a>
<ul>
<li><a href="#some-rambling" id="toc-some-rambling"><span class="toc-section-number">1.1</span> Some rambling</a></li>
</ul></li>
<li><a href="#other" id="toc-other"><span class="toc-section-number">2</span> Other</a></li>
</ul>
</div>
<h1 data-number="1" id="introduction"><span class="header-section-number">1</span> Introduction</h1>
<p>So far, I’ve usually written posts here when I feel I have something atomic
and at least somewhat unique to say, but this one will be a bit more
personal, retrospective, meandering and kinda pointless. I’d like to
talk about something that’s quite dear to my heart, lisp.</p>
<p>But first of all, I’d like to update my dear readers of this website
on where I’ve been! It’s been just about a year since my last post,
and longer since the last redesign of the site design (if memory
serves me right, we’re on the third or fourth iteration at the
moment). My <a href="https://photos.esrh.me">photos</a> site is updated every so often, but I rarely take
many photos unless I’m travelling – I plan to change this in the near
future!</p>
<p>I spent the summer 2024 taking the last classes I’d kept until
the end, working on an SDR time-of-flight estimation project, playing
lots of badminton with <a href="https://sidongg.github.io/">Sidong</a> (now ECE PhD at GaTech) and of course – as
we did for 2 years – watching anime and yapping way too much with
<a href="https://cgdct.moe/">Stephen</a> (now CS PhD at CMU). Excluding the year I
spent interning at NTT, I was at Georgia Tech for 2 years. I’d rather
not comment about the state of the admin, CS classes, or housing, but I
really did come to like Atlanta and the people I spent my time with
there. I changed considerably from 2021-2024, broadly attributable to
two experiences. One was the year I lived in Japan, which gave me a bit a
of a bigger picture about life and deeply influenced my sense of
aesthetics; but the other was living in close proximity with <a href="https://brown.ee">Daniel</a>
and Stephen – who influenced everything from my sense of humor to my
thoughts on programming languages (ostensibly, the topic of this
post). My friends at GT were honestly one of a kind and had such
strong, bright and interesting personalities, I’m so glad I got to
know them :)</p>
<p>I was always vaguely amused by cool programming languages, but I
started seriously programming lisp in my first year of undergrad to
prove to my neovim-using friends that emacs was way cooler. I say
“amused” because really I’m just interested in alternate ways of
thinking about computing, since I don’t know much about PLT or
compilers. I had briefly interacted with Haskell in high school, but
hadn’t ever written anything in it. Daniel and I learned Haskell again
together in my first year, doing the <a href="https://mightybyte.github.io/monad-challenges/">monad challenges</a> and a bunch of
advent of code problems, although my main use for Haskell was for
configuring Xmonad and Hakyll. Daniel was (and is) very good at
functional programming, and these moments are fond memories to me. I
remember particularly well getting badly stuck deriving <code class="verbatim">liftM2</code> while
he cruised along ahead. I highly recommend that challenge set if
you’re interested in learning Haskell. Haskell was the first time I
was exposed to FP proper, and all the abstractions built up with types
and higher order functions – things like functors/applicative/monads,
arrows, zippers, etc. What caught my interest was the way that Haskell
programmers continue making abstractions until the actual problem to
be solved appears syntactically trivial – and relatedly, why the code
of some Haskell projects are practically DSLs. But this post isn’t
about Haskell, and I don’t think any of my friends from then had any
love for lisp, but Haskell forever changed the way I wrote lisp (and
all other languages too).</p>
<h2 data-number="1.1" id="some-rambling"><span class="header-section-number">1.1</span> Some rambling</h2>
<p>One of the many magical things about lisp is that it’s the <strong>only</strong>
language that can claim to be truly multi-paradigm – because it has
minimal syntax. The more syntactical rules are baked into the language
(like, for instance the way Python deals with generators), the more
the language guides people into a certain idiomatic way of
programming. Lisp on the other hand, is only a few macro expansions
away from raw abstract syntax tree. This is what makes lisp so
powerful in my eyes; it can implement a huge variety of ideas
elegantly. Macros enable features that require deep changes in other
languages, like <a href="https://en.wikipedia.org/wiki/Common_Lisp_Object_System">object oriented systems</a>, <a href="https://clojure.org/guides/spec">runtime data validation</a>,
<a href="https://clojure.github.io/core.async/walkthrough.html">async programming</a>, crazy <a href="https://www.lispworks.com/documentation/HyperSpec/Body/m_loop.htm#loop">loop</a> facilities, and even <a href="https://github.com/coalton-lang/coalton">static types</a>.</p>
<p>For instance, the commonly used <code class="verbatim">when</code> macro from many languages
adds a new syntactical construct:</p>
<div class="sourceCode" id="cb1"><pre class="sourceCode scheme"><code class="sourceCode scheme"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a>(<span class="ex">define-macro</span><span class="fu"> </span>(when <span class="kw">cond</span> <span class="kw">exp</span> <span class="op">.</span> rest)</span>
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a>  `(<span class="kw">if</span> ,cond</span>
<span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a>       (<span class="kw">begin</span> ,exp <span class="op">.</span> ,rest)))</span></code></pre></div>
<p>Which lets you run any number of forms when a condition is true. This
means you can write</p>
<div class="sourceCode" id="cb2"><pre class="sourceCode scheme"><code class="sourceCode scheme"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a>(when (at-war?)</span>
<span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a>  (<span class="kw">display</span> <span class="st">&quot;Lauching missiles!&quot;</span>)</span>
<span id="cb2-3"><a href="#cb2-3" aria-hidden="true" tabindex="-1"></a>  (<span class="kw">display</span> <span class="st">&quot;Attack at dawn!&quot;</span>))</span></code></pre></div>
<p>instead of</p>
<div class="sourceCode" id="cb3"><pre class="sourceCode scheme"><code class="sourceCode scheme"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a>(<span class="kw">if</span> (at-war?)</span>
<span id="cb3-2"><a href="#cb3-2" aria-hidden="true" tabindex="-1"></a>    (<span class="kw">begin</span></span>
<span id="cb3-3"><a href="#cb3-3" aria-hidden="true" tabindex="-1"></a>      (<span class="kw">display</span> <span class="st">&quot;Lauching missiles!&quot;</span>)</span>
<span id="cb3-4"><a href="#cb3-4" aria-hidden="true" tabindex="-1"></a>      (<span class="kw">display</span> <span class="st">&quot;Attack at dawn!&quot;</span>)))</span></code></pre></div>
<p>Since the first one gets compiled to exactly the second one. Obivously
this is a trivial (but useful!) example, but macros become more complex when code is
generated <em>programmatically</em> rather than just by mechanical
substitution into a template. The <code class="verbatim">loop</code> macro from common lisp is a
good example of another commonly used macro with a very complex
implementation. In common lisp, a for loop can be written with the
loop macro:</p>
<div class="sourceCode" id="cb4" data-org-language="lisp"><pre class="sourceCode commonlisp"><code class="sourceCode commonlisp"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a>(<span class="kw">loop</span> for i from <span class="dv">0</span> to <span class="dv">10</span> <span class="kw">do</span> (<span class="kw">pprint</span> i))</span></code></pre></div>
<p>The loop macro has a <a href="https://cl-cookbook.sourceforge.net/loop.html">quite intricate natural-language syntax</a>.</p>
<p>Of course, macros aren’t unique to lisp by any means, but the degree
of freedom and ease of definition of macros in lisp is due exactly to
the homoiconicity; code is data, so manipulating code is just as easy
as manipulating data! In other languages, like rust, c++, defining
macros is limited, dangerous, difficult, and thus rarely done. In lisp, defining and
using macros is natural. I will point out a notable exception to the
“other languages” scope: Julia, which is remarkably close to the
syntactic freedom one has with lisp – the lisp influence is markedly
clear in many aspects of that language: metaprogramming, multiple
dispatch, flexible typing, repl interactivity, etc.</p>
<p>Anyway, I become involved with the <a href="https://github.com/meow-edit/meow">meow</a> project in my first year of
college as well, and that marked my full immersion into elisp. My
emacs config became filled with functional commands like those from
<code class="verbatim">dash</code> and weird macros. This was really the point of no return for
me, and I started writing much more lisp – but ran into
the classic issue: you’re spoiled for choice. There are tons of
different lisp dialects, some with tons of different
implementations. I finally settled on <a href="https://github.com/janet-lang/janet">janet</a> for scripting needs, it
was small, fast, and had a convenient standard library. But after
touring clojure, emacs lisp, common lisp, and scheme, I kept feeling
like I was missing some feature from some language, or preferring some
naming scheme that I was used to. This sparked <a href="https://github.com/eshrh/matsurika">matsurika</a>, a fork of
janet with additional functions and macros wrapped up in the
binary. Essentially, every helper or abstraction I wanted to write
while actually solving a problem I’d generalize as best as possible
and put it into the interpreter instead of that particular
script. It’s very powerful to be able to modify your interpreter as
you go; and when you can do this freely knowing nobody will ever read
your scripts, and nobody will ever use your fork, it leads to
extremely concise and clean programs with a lot of hidden complexity.</p>
<p>Some of the macros added to matsurika include:</p>
<ul>
<li><code class="verbatim">$</code>, which runs a shell command and returns the output – very
useful to hack quickly, by using unix commands when convenient. For
example, getting python files in the current directory:
<code class="verbatim">(filter |(s-suffix? ".py" $) ($ ls))</code></li>
<li><code class="verbatim">cli</code>, a concise way to define a main function make the args accessible</li>
<li><code class="verbatim">s+</code>, a string concatenation facility with constants in scope:
<code class="verbatim">(s+ qt "hello" s "world" qt nl)</code> to print <code class="verbatim">"hello world"\n</code> which</li>
<li><code class="verbatim">awk</code>, which runs lisp forms on every line of a string/file that
matches a PEG (CFG-like grammar) – ported from <a href="https://www.nongnu.org/txr/txr-manpage.html#N-179D63DE">TXR lisp’s awk macro</a></li>
<li><code class="verbatim">-&gt;&gt;</code>, chains a sequence of computations by threading a value as the
last argument of each form… <code class="verbatim">(-&gt;&gt; 5 (+ 1) (- 5) (* 100))</code> evals to
-100. However, it is sometimes convenient to change the arg order
for only one computation in the chain. In my version of the threaded
macro, prefixing a form with <code class="verbatim">*</code> reverses the order of the args. So,
<code class="verbatim">(-&gt;&gt; 5 (+ 1) *(- 5) (* 100))</code> evals to 100. I am a big fan of these
threading macros, I used them first in Clojure, but find myself
wanting them everywhere. My favorite macro library is <a href="https://github.com/rplevy/swiss-arrows">swiss-arrows</a>,
which invents some new kinds of arrows with… rather odd
names. I ported several of them to matsurika and use them
surprisingly often. Actually, this is a good example of the
contrast between a lisp-enabled “abstraction by rewriting” approach
and a traditional fp “abstraction by higher order functions”. <code class="verbatim">-&gt;&gt;</code> can
be easily interpreted as <code class="verbatim">foldl const</code> over a list of partial
functions, or composing partial functions. This has effectively been turned
into a new convenient syntactical construct with a macro. Similarly,
the “Nil-shortcutting diamond wand” (??) from swiss-arrows, which
ends the chain early if any intermediate value is nil, is equivalent
to chaining <code class="verbatim">Maybe</code> computations with <code class="verbatim">&gt;&gt;=</code> in Haskell.</li>
</ul>
<p>I’ve written a number of scripts that use reasonably often in
janet/matsurika, and in general it’s been fun. However, I don’t think
that choosing janet was the right choice in retrospect. This is for a
number of reasons. First, janet (and by extension, clojure) is already
too opinionated, and is not a good base to mold to your tastes. I like some of those opinions (for
instance, the PEGs, the table syntax) but don’t like some
others. Second, the maintainance cost of having to hack on the janet
source code, combined with the fact that since its forked i will need
to periodically rebase to get the latest changes (with manual merge
conflicts), turned out to be nontrivial. Finally, needing your own
deranged binary to run your scripts is a bit awkward. One of Janet’s
biggest differentiators, and indeed a project goal is that it’s small,
written in C, has no dependencies, and is embeddable. My goals include
only “small.” Everything new in matsurika could easily have
implemented as a library providing new macros and functions. In the
near future, I plan to implement this for either r5rs scheme or
racket. Racket seems particularly appealing, since it has explicit
support for other lisp dialects using the <code class="verbatim">#lang</code> keyword. I do enjoy
clojure as a language, but for mostly superficial reasons: it tends to
encourage a stateless pure FP style, and the standard library is pretty
good (batteries included). However, I’m not a huge fan of some of the
modern clojureisms like the square brackets; one might argue that
clojure is not a lisp at all because the code is not linked lists and
there are no cons cells; one of the minimal specifications for a lisp
according to the <a href="https://www-formal.stanford.edu/jmc/recursive.pdf">original paper</a> by John McCarthy.</p>
<h1 data-number="2" id="other"><span class="header-section-number">2</span> Other</h1>
<p>I graduated college in August 2024 – and I’m now doing my Masters at
the Institute of Science Tokyo (formerly Tokyo Tech). I love it here!
I’m working on using using diffusion models with wireless data at
<a href="https://nishio-laboratory.github.io/">Nlab</a>. I’m living a lot slower than I did the last time I was here;
there’s not much local tourism left to do, and it feels normal rather than
magical as it once did. I bike a lot around the city, and it’s become
one of my favorite hobbies.</p>
<p>I’ve been using emacs for a long time now, but lately I’ve been
keeping my on <a href="https://github.com/lem-project/lem">lem</a>; I think it’s a matter of time before I switch
(probably after I port the core of meow to CL). I no longer believe as
strongly as I once did in the future of emacs, but I do still feel
that my current keybinding scheme on meow’s editing model is really
close to optimal for me. I’m sure that emacs and its religious users
will continue to hack away underground long after the nukes fall and
wipe out surface life, but there are fundamental flaws that need to be
fixed:</p>
<ul>
<li>emacs-lisp is really not that good</li>
<li>decades of cruft has led to bad performance
<ul>
<li><a href="https://200ok.ch/posts/2020-09-29_comprehensive_guide_on_handling_long_lines_in_emacs.html">the epic long lines problem</a></li>
<li>single-threaded</li>
<li>the epic GC hanging problem</li>
<li>relatively slow start up time</li>
</ul></li>
</ul>
<p>With a project of emacs age and popularity obviously there have been a
number of attempts to hack it: GNU Emacs is itself a
reimplementation for one (1984), Lucid emacs (late 80s), <a href="https://github.com/emacs-ng/emacs-ng">emacs-ng</a>,
<a href="https://github.com/remacs/remacs">remacs</a>, <a href="https://github.com/commercial-emacs/commercial-emacs">commercial-emacs</a>, etc that I’m probably forgetting. I like
lem mainly because it makes the step of finally ditching
emacs lisp for common lisp. It’s much better suited for developing
editor packages, and cl compilers are more performant. I think of lem
to emacs as perhaps neovim to vim; a tight, modern reimplementation
that doesn’t forget the culture and soul of the original project.</p>
<p>No matter how much I wax about lisp, I write mainly python on a day to
day basis. That’s why the “soul” (as I like to call it) of the
language/ecosystem and the experience of writing in lisp is so
important to me; it’s my reprieve. I’ve wasted more time than most
readers could possibly imagine trying to convince people that lisp is
the best programming language ever (true), literally goated (also
true), <a href="https://youtu.be/HM1Zb3xmvMc">alien tech</a> from
the future (so timeless!), divinely inspired (it’s said God came to
JMC in his sleep) etc but it really doesn’t matter. What matters is
that writing lisp is truly fun! It’s a joy to iterate and organically
build up a solution, testing as you go in the repl, precisely
manipulating the code with sophisticated tools (structural
editing! paredit!). Lisp dialect tooling (especially CL, Schemes,
Clojure) is blissful to use – the very first language servers were
for lisps! The monkey-wrench move-fast-break-things attitude
encouraged by dynamically typed lisp combined with the patterns of
interactivity, self-documentation, and hot-swappability is to me, at the
very core of hacker culture. If you spend enough time with lisp, the
parentheses fade out with the stars and you’re left to admire the
raw, pulsating heart of computation.</p>
<p>As Stallman puts it:</p>
<blockquote>
<p>The most powerful programming language is Lisp. If you don’t know Lisp
(or its variant, Scheme), you don’t know what it means for a
programming language to be powerful and elegant. Once you learn Lisp,
you will see what is lacking in most other languages.</p>
</blockquote>
<p><code class="verbatim">Y F = F (Y F)</code></p>

  </section>
</article>
]]></description>
    <pubDate>Tue, 11 Feb 2025 00:00:00 UT</pubDate>
    <guid>https://esrh.me/posts/2025-02-11-lisp.html</guid>
    <dc:creator>Eshan Ramesh</dc:creator>
</item>
<item>
    <title>spectral blessing (a short story)</title>
    <link>https://esrh.me/posts/2024-02-25-spectral-blessing.html</link>
    <description><![CDATA[<article>
  <script id="MathJax-script" async
          src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js">
  </script>
  <section class="header">
    Posted: 2024 / 02 / 25
  </section>
  <section>
    <div class="toc">


</div>
<p>For Sa-yi, the time has nearly come. Most of children she grows up
with all live for the ceremony she will soon take part in. Most
children pick a trade, a kind of specialization. Some work on the
autofarms, some learn to decode the messages from the elders, and some
make handicrafts and tools. Some children, of course, decide that the
work isn’t worth the effort, and instead engage themselves with
trivial matters, like competing to see who can climb the highest up
the holy tower (a common demonstration of masculinity), or playing
card games for extra snacks.</p>
<p>Sa-yi learns the scripture. She always has, for as long as she can
remember. There are no adults in their cocoon, not since they all
turned 8 (at which time there is another ceremony, the <em>i/Ha</em>,
celebrating the sacred nature of the number). To her, the scripture is
everything. Seemingly, the more she reads the more there is to read;
the more questions are answered the more questions reveal themselves.
But this doesn’t bother her; it excites her. Her trade is to
read, and she is the best at what she does.</p>
<p>The <em>i/Yi-ro</em> is what one might call a coming of age ritual, underwent
at twice the age of the <em>i/Ha</em>. The hatch in the center of the cocoon is
opened for a child to descend into, and they are never seen again. The
scriptures (the easiest of them, the <em>Yajur</em>) tell the children that
they will receive their true name during the ceremony, and the
children have no choice but to believe them. They don’t know what
their true name would mean, or even what it might sound like, but they
all feel a certain weight and importance attached to it. They’re only
told it’s a judging, where the bad children will be punished for their
misbehavior with a disgraceful name and and the good children will be
rewarded for their effort with a beautiful name. It goes a long way
towards keeping them in line, but it’s hardly necessary. Nobody
really misbehaves in the cocoon, and there is no serious conflict.
All the children are familiar with the invisible force on their heads
that presents itself when they begin to disobey the scripture.</p>
<p>Today it is Sa-yi’s turn. She tries her best to suppress her shaking
hands as she climbs down a set of stairs – irreverent oscillation is
frowned upon by the Third Book of the <em>Rig</em>. The stairs soon give way
to a gently sloping spiral slope that leads her deeper underground. At
the bottom she finds a finely woven mesh door made of the same
metallic material as the walkway. She pushes opens the door and steps
inside. It is warmer here, and dark. Before she can take another step,
a light finds her and she lays eyes on three vague, shadowy
silhouettes.</p>
<p>The central figure speaks: “We will now begin with the 31st <em>i/Yi-ro</em>
of this epoch. Sa-yi, step forward. Speak only when asked.”</p>
<p>She does as she is told, stepping forward onto a circular platform,
feeling a slight but definite pressure as she does so. It’s not all so
different from what the children feel every night as they go to
sleep. It’s stronger, and much clearer.</p>
<p>“State your identity” the figure booms. Sa-yi begins almost
immediately:</p>
<p>“My false name is Sa-yi, cocoon <code class="verbatim">DF0</code>, batch <code class="verbatim">AA1</code>, group <code class="verbatim">DC3</code>. I am
an Interpreter with guild 71. Confirm?”</p>
<p>As she utters the last phrase, she stretches her arm out in front of
her, palm facing forward. On it, an intricate tattoo of swirling lines
and intertwining curves – her eigenkey – glows hot for a brief
moment. Even the youngest among them knew the proper etiquette.</p>
<p>“Accepted.” they reply, in unison yet such that one can match each
voice with its owner effortlessly. They are in perfect
harmony.</p>
<p>“The truth of the <em>i/Yi-ro</em> is not as you have been told it is,
Sa-yi. We do not judge here. There is no need to judge you. We have
been judging you for a long time now, and we are nearly finished. The
purpose of this event is for you to listen, rather than to speak.”</p>
<p>Sa-yi begins to feel the pressure on her head grow, and grow until it
becomes unbearable and piercing and all-consuming and resonant with
her skull. And finally, for the first time, she begins to see.</p>
<p>Colors rush forth, the normal colors included, but more colors too.
Colors that one cannot see but with the mind’s eye. There is no end to
the color, each more fresh than the last, and each unlocking a new
visual perspective, in the same way a blind child is awakened to the
world of art – and in that instant she realizes she has been blind
all her life.</p>
<p>What Sa-yi sees, I cannot tell you – it is inexpressible in our
languages. It is inexpressible not like 1 = 2 (which is illogical but
expressible), but like that which cannot be pictured by in our
minds. All I can give is a projection, like a lower dimensional slice
of a deeper world. This is what she sees:</p>
<div class="line-block">the universe begins. nothing. a planet passes by a star.<br />
its orbit is very long.<br />
lifeforms are born, lifeforms die.<br />
the planet passes again.<br />
nothing happens exactly once. if one were to live long enough, one would see it happen again.<br />
when something happens again it has a frequency.<br />
it need not have a form of course, the form is predetermined because there is only one form<br />
the wave, of course.<br />
the waveform.<br />
<br />
a lake surrounded by mountains.<br />
it was formed once, it will be destroyed, and it will be formed again,<br />
all in tune with the universal frequency, the uberfrequency, as all is.<br />
a stone, the perfect stone is thrown, and the water ripples,<br />
a smooth wave, the perfect wave, propagates from the source (the transmitter).<br />
it is perfectly clear, and perfectly smooth, it is the waveform in shape,<br />
yet nothing but a harmonic of the uberwave.<br />
a pure shape, with a seductive symmetry, an innocence in each gentle curve that<br />
entrances the eye like the pendulum of an intricate grandfather clock.<br />
<br />
the mountains fade smoothly into nothingness and the water stretches<br />
as far as the eye can see.<br />
infinitely many waves from infinitely many imperfect stones hit the water<br />
and the ripples touch each other like tendrils of effect intermingling and intertwining –<br />
and they combine in tune and out of tune into a new wave<br />
one that has not yet been seen before in this universe<br />
but surely will be in another.<br />
in this instant there are enough waves to name a wave for every string in every language,<br />
and in the next instant there are more.<br />
<br />
something is lost when these waves are made,<br />
for they are impure,<br />
and they are hideously imperfect compared to the harmonics of the uberwave.<br />
the intrinsic natures of the component waves yearn to be free,<br />
because nature is smooth and free.<br />
the sudden and sharp are unnatural and binding.<br />
nature is smooth.<br />
nature is smooth but sometimes bent out of shape by the free energies of the universe<br />
but its heart always makes itself known:<br />
ringing artifacts in the fabric of spacetime,<br />
harmonics,<br />
nature screaming out as its spinal cord is shattered into<br />
the gray-coded constellations of the night sky.<br />
<br />
and finally she sees that she is made of water, defined by one great wavefunction,<br />
carefully constructed, with not one error,<br />
by a mechanical monstrosity that throws stones into the lake.<br />
the machine is not of this world; it is of the world above.<br />
it stretches across the sky, but the world is not cast in darkness.<br />
gears and pulleys mash and spin silently.<br />
you would know god too if you saw it.<br />
the machine simulates the world with its energy,<br />
warping and weaving the simple into the complex.<br />
<br />
it is impossible to discern its objective.<br />
it may have none at all but to sculpt its pond to match its algorithmic sense of beauty,<br />
an artistry of symmetry and simplicity and oscillatory aesthetics.<br />
the machine, oscillating at the uberfrequency, must be tormented;<br />
the waves seem to splash and wriggle incessantly.<br />
we can only imagine how awful the harmonics of the sculptures it forms must appear to it –<br />
but we see a beauty in the unintentional imperfections, for the only<br />
complexity our imperfect selves can understand as beautiful is<br />
exactly that which is resonant with our perfect components.<br />
<br />
and finally she sees that<br />
she is always propagating further away from the center of the machine<br />
her one and only birthplace.<br />
everything she has done and will do is merely<br />
a consequence of a perfect component,<br />
some with a period of days,<br />
some longer than she will live and be reborn and die again.<br />
the anxiety of autoscopy is instantly replaced by an overwhelming sense of peace,<br />
knowing that one is<br />
nothing if not predetermined,<br />
nothing if not a drop in the river to heaven.</div>
<p>And her world goes black, pure black. She struggles to open her eyes
only to realize they were already open as she regains feeling in her
limbs. Her proto-vision will not return to her for several days. She feels
as if she’s lost something; whatever it was, she knows it must have
been unimportant. But she has gained something far more important.</p>
<p>The three figures speak again, but she doesn’t hear them; she sees:
three blobs of pattern in three complimentary colors that she finds
immensely pleasing together, as if they’ve been chosen from a
higher-dimensional color wheel.</p>
<p>She knows, somehow, her true name: Na-ha-ze, after the current
epoch, 780. She knows that this ceremony had been performed millions
of times before. She knows everything about her new purpose, and the
world she was born into. She is perfectly aware that most children
were not given the Spectral Blessing; after all, how could they handle
such a thing? Most were handed down some common name and sent on their
way. A few were disposed of. Na-ha-ze feels this is all as it should
be, and what she feels as the new Prima-Intendant is fact.</p>
<p>Somewhere above her, she senses a gate opening, and her field of
vision is washed away by the most beautiful colors she has never seen.</p>
<p>—</p>
<div class="notes">
<ul>
<li>thanks to <a href="https://cgdct.moe">stephen</a> and my friends for reading early drafts</li>
<li>inexpressibility of what gives logic to the world (and is outside
the world) is an idea from <a href="https://www.kfs.org/jonathan/witt/t641en.html">tractatus (6.41)</a></li>
<li>the world being <a href="https://people.idsia.ch/~juergen/computeruniverse.html">simulated</a> by a machine that prioritizes speed,
simplicity, and algorithmic <a href="https://people.idsia.ch/~juergen/beauty.html">beauty</a> is inspired by <a href="https://people.idsia.ch/~juergen/">schmidhuber</a></li>
<li>many allusions are made to a <a href="https://en.wikipedia.org/wiki/Fourier_analysis">fundamental idea</a> about the
decomposition of functions in math and signal processing</li>
</ul>
</div>

  </section>
</article>
]]></description>
    <pubDate>Sun, 25 Feb 2024 00:00:00 UT</pubDate>
    <guid>https://esrh.me/posts/2024-02-25-spectral-blessing.html</guid>
    <dc:creator>Eshan Ramesh</dc:creator>
</item>

    </channel>
</rss>