<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<id>https://rmathew.com/</id>
<title>rmathew.com</title>
<link rel="self" href="https://rmathew.com/atom.xml"/>
<link rel="alternate" href="https://rmathew.com/"/>
<author>
<name>Ranjit Mathew</name>
<email>rmathew@gmail.com</email>
<uri>https://rmathew.com/</uri>
</author>
<updated>2025-12-31T20:10:05+05:30</updated>
<entry>
<id>https://rmathew.com/2025/trf.html</id>
<title type="html">&amp;ldquo;The Rose Field&amp;rdquo;</title>
<updated>2025-12-31T00:00:00+05:30</updated>
<link rel="alternate" href="https://rmathew.com/2025/trf.html"/>
<content type="html">
&lt;p&gt;
I was eagerly waiting to read &amp;ldquo;&lt;a
href=&quot;https://en.wikipedia.org/wiki/The_Rose_Field&quot;&gt;The Rose Field&lt;/a&gt;&amp;rdquo;
by &lt;a href=&quot;https://en.wikipedia.org/wiki/Philip_Pullman&quot;&gt;Philip Pullman&lt;/a&gt;
after having read &amp;ldquo;&lt;a href=&quot;../2022/seccmn.html&quot;&gt;The
Secret Commonwealth&lt;/a&gt;&amp;rdquo;, which had ended on a cliff-hanger. This is the
third book in the &amp;ldquo;&lt;a
href=&quot;https://en.wikipedia.org/wiki/The_Book_of_Dust&quot;&gt;The Book Of
Dust&lt;/a&gt;&amp;rdquo; trilogy of books, which followed the &amp;ldquo;&lt;a
href=&quot;https://en.wikipedia.org/wiki/His_Dark_Materials&quot;&gt;His Dark
Materials&lt;/a&gt;&amp;rdquo; trilogy of books. I have been a fan of this series of
fantasy fiction books, so I was a little disappointed in how this book ended
this trilogy.
&lt;div class=&quot;book_display&quot;&gt;
&lt;img src=&quot;trf.jpg&quot; alt=&quot;Cover of &amp;amp;ldquo;The Rose Field&amp;amp;rdquo;.&quot;&gt;
&lt;br&gt;
&lt;a href=&quot;https://www.amazon.com/gp/product/0593306635?ie=UTF8&amp;amp;tag=rmathew-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0593306635&quot;
style=&quot;text-decoration: none;&quot;&gt;&lt;img
src=&quot;../books/buy_amz_us.gif&quot; width=&quot;120&quot; height=&quot;28&quot;
alt=&quot;Buy from Amazon.com&quot; style=&quot;margin: auto;&quot;&gt;&lt;/a&gt;&lt;img
src=&quot;https://ir-na.amazon-adsystem.com/e/ir?t=rmathew-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0593306635&quot;
width=&quot;1&quot; height=&quot;1&quot; alt=&quot;&quot; style=&quot;border:none; margin:0px;&quot;&gt;
&lt;br&gt;
&lt;a href=&quot;https://www.amazon.in/gp/product/0241458706&quot;
style=&quot;text-decoration: none;&quot;&gt;&lt;img
src=&quot;../books/buy_amz_in.gif&quot; width=&quot;120&quot; height=&quot;28&quot;
alt=&quot;Buy from Amazon.in&quot; style=&quot;margin: auto;&quot;&gt;&lt;/a&gt;
&lt;br&gt;
&lt;p style=&quot;font-size: 85%;&quot;&gt;
&lt;a href=&quot;../caveats.html#aff&quot;&gt;Affiliate Links&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;
The book follows the heroine &lt;a
href=&quot;https://en.wikipedia.org/wiki/Lyra_Belacqua&quot;&gt;Lyra Belacqua&lt;/a&gt; (now known
as Lyra Silvertongue) on her quest to reunite with her &lt;a
href=&quot;https://en.wikipedia.org/wiki/D%C3%A6mon_(His_Dark_Materials)&quot;&gt;daemon&lt;/a&gt;
Pantalaimon, who in turn is on a quest to recover Lyra&amp;rsquo;s
&amp;ldquo;imagination&amp;rdquo; from a mysterious red building in a far off desert.
Their world is in turmoil as the head of the religious body Magisterium seeks to
tighten its control over the world while unknown forces are &amp;ldquo;destroying
the air and the seasons&amp;rdquo; and money is losing its value. Several openings
have been discovered across the world by the Magisterium that are gateways into
other worlds and the Magisterium is intent on blasting these openings into
oblivion to stop them from corrupting their world (as they claim it).
&lt;p&gt;
Lyra and Pantalaimon (separately) go through several adventures in their
respective quests, aided by several characters and creatures while being
pursued by several others determined to thwart them. They have overcome the
disappointment and the distrust that caused them to go their separate ways. The
book is the saga of these adventures and the eventual reunion in the climax.
&lt;p&gt;
The book is paced well and explores the complex personalities of several of the
characters. Since it has been two and a half years after I read the last book, I
initially found it a bit hard to recall names and events. However, this
confusion lasted only a short while as the book does well to fill you in on the
details that you might have forgotten. At 500+ pages, the book still keeps you
engaged and keeps advancing the narrative.
&lt;p&gt;
The book ties together several narrative arcs from the previous books. Some of
these get closures, while some are left open. In particular, the ending of the
book seemed a little abrupt and somewhat incomplete to me. I still have so many
questions that remain unanswered after I finished the book. It is almost as if
the author got tired of writing this book and decided to just wrap it up. This
is why the book was a little disappointing to me as the final book in this
trilogy.
&lt;p&gt;
If you are a fan of this series of books and the fantasy world it builds out,
you owe it to yourself to read this book. If you are not such a fan, I would
recommend to stick to the &amp;ldquo;His Dark Materials&amp;rdquo; trilogy of books.
That trilogy still remains fantastic.
&lt;p&gt;
</content>
</entry>
<entry>
<id>https://rmathew.com/2025/icfpc25.html</id>
<title type="html">ICFPC 2025</title>
<updated>2025-09-08T00:00:00+05:30</updated>
<link rel="alternate" href="https://rmathew.com/2025/icfpc25.html"/>
<content type="html">
&lt;p&gt;
I just finished taking part in &lt;a
href=&quot;https://icfpcontest2025.github.io/&quot;&gt;ICFPC 2025&lt;/a&gt; over the weekend. This
was a nice contest with a deceptively simple task that turned out to be quite
hard. It did not require &lt;em&gt;any&lt;/em&gt; familiarity with &lt;a
href=&quot;https://en.wikipedia.org/wiki/Functional_programming&quot;&gt;Functional
Programming&lt;/a&gt; concepts. I had a lot of fun during the contest, but did not
have any breakthrough in actually solving the problems. In other words, I
continue the glorious tradition from past years.
&lt;p&gt;
The &lt;a href=&quot;https://icfpcontest2025.github.io/task.html&quot;&gt;task&lt;/a&gt; this year
was inspired by the novel &amp;ldquo;&lt;a href=&quot;../2018/nameofrose.html&quot;&gt;The
Name Of The Rose&lt;/a&gt;&amp;rdquo; by Umberto Eco &amp;ndash; William of &lt;a
href=&quot;https://en.wikipedia.org/wiki/John_Backus&quot;&gt;Backus&lt;/a&gt; and Adso of &lt;a
href=&quot;https://en.wikipedia.org/wiki/Robin_Milner&quot;&gt;Milner&lt;/a&gt; travel to the
monastery of St. &lt;a
href=&quot;https://en.wikipedia.org/wiki/Stephen_Cole_Kleene&quot;&gt;Kleene&lt;/a&gt;, where
they would like to map out the renowned Library Of Lambdas despite the
machinations of the jealous librarian &lt;a
href=&quot;https://en.wikipedia.org/wiki/Alonzo_Church&quot;&gt;Alonzo&lt;/a&gt; of &lt;a
href=&quot;https://en.wikipedia.org/wiki/Haskell_Curry&quot;&gt;Curry&lt;/a&gt;. (Yes, there are
&lt;em&gt;so many&lt;/em&gt; references to famous people in Functional Programming.) They
must map out the library during surreptitious expeditions at night based on
planned traversals through its rooms and only partial records of the
room-labels. They had to minimize the number of such expeditions, as each
expedition incurred a risk of getting caught.
&lt;p&gt;
I chose to solve the problem this year using Go. I was able to solve the
sample problem both manually and programmatically in a day, but only because it
used distinct room-labels. The complications of distinct rooms having the same
room-label, doors leading back to the same room or even back to themselves, the
randomization of the problem during each attempt, etc. meant that the task was
quite difficult to solve reliably. In the end, I committed a broken
implementation because I could not continue beyond the contest-end due to the
server being turned down (probably to limit AWS bills for the organizers). That
was a bummer. Despite that sorry end to the contest, I had loads of fun trying
to come up with heuristics to solve this task during the given time.
&lt;p&gt;
For each attempt, I just generated a single plan of the maximum allowed length
comprising traversals through random doors of whichever room I found myself in.
If I was lucky, I would get enough information back through the recorded
room-labels to reconstruct a map that was equivalent to the original map of the
library. To reconstruct the map using the recorded observations, I initially
marked each observation as a potentially distinct &amp;ldquo;phantom&amp;rdquo; room.
Then I turned each exit discrepancy into a &amp;ldquo;real&amp;rdquo; room (e.g. if you
see that the door numbered &lt;code&gt;x&lt;/code&gt; in a room labeled &lt;code&gt;A&lt;/code&gt; leads
to a room labeled &lt;code&gt;B&lt;/code&gt; in one instance, but one labeled &lt;code&gt;C&lt;/code&gt;
in another, they must be distinct rooms). Then I tried to find common sub-paths
of a certain minimum length in the overall traversal that strongly hinted at a
the same set of rooms being visited (e.g. you see &lt;code&gt;A2B3C2D1A&lt;/code&gt; once
and then again the same pattern a while later). I wanted to use these findings
to reduce the number of phantom rooms by clustering more and more of them
together, but I ran out of time (and access to the server).
&lt;p&gt;
One of the weird things about this year&amp;rsquo;s contest was that initially there
was no limit on the lengths of the expedition and the number of attempts to
solve a given problem. This meant that several teams got &amp;ldquo;perfect&amp;rdquo;
scores during the Lightning Round by just trying out different route-plans until
they got lucky in making a correct guess. The organizers then put a limit of
&lt;code&gt;18&amp;times;n&lt;/code&gt; on the length of the expedition (where &lt;code&gt;n&lt;/code&gt;
was the size of the problem), which made it harder to get lucky. For the
problems in the General Round from the Addendum, the limit was further reduced
to &lt;code&gt;6&amp;times;n&lt;/code&gt; &lt;em&gt;and&lt;/em&gt; they could only be solved by employing
additional markers for the room-labels, which made it even harder to get lucky
with the right guess.
&lt;p&gt;
Another weird thing about this year&amp;rsquo;s contest was that there was a single
person who was the primary organizer of contest, but they had some obligations
during this period that made them take at least two long-distance flights (about
15 hours). This severely limited their availability, although there was a
secondary organizer available to address contestant queries. Thankfully there
were no major issues during this period.
&lt;p&gt;
Continuing my experiment from &lt;a href=&quot;../2024/icfpc24.html&quot;&gt;last
year&lt;/a&gt;, I once again tried to see if ChatGPT, Gemini, et al could help me
come up with a better solution. The models were a bit more helpful this time,
but I ended up having to do the bulk of the work myself. More than a year of
progress, but their utility on such problems has only improved marginally. (Or
maybe I just have not improved in my prompting skills &amp;ndash; I am still
&amp;ldquo;holding it wrong&amp;rdquo;, as they say.)
&lt;p&gt;
Interestingly, some of the contestants reported success with using a &lt;a
href=&quot;https://en.wikipedia.org/wiki/SAT_solver&quot;&gt;SAT Solver&lt;/a&gt; (including
multi-year champions &lt;a href=&quot;https://icfpc-unagi.github.io/&quot;&gt;Team Unagi&lt;/a&gt;,
who uploaded their Rust-based solution &lt;a
href=&quot;https://github.com/icfpc-unagi/icfpc2025&quot;&gt;here&lt;/a&gt;. Others tried to use
random walks with &lt;a
href=&quot;https://en.wikipedia.org/wiki/Simulated_annealing&quot;&gt;Simulated Annealing&lt;/a&gt;
(including regular participants and winners like &lt;a
href=&quot;https://github.com/murmour/icfpc-2025-wbm&quot;&gt;Wild Bashkort Mages&lt;/a&gt; and &lt;a
href=&quot;http://www.sawicki.us/icfp/2025/&quot;&gt;Frictionless Bananas&lt;/a&gt;).
&lt;p&gt;
As a sign of the times, &lt;a href=&quot;https://discord.gg/HtXttgvCeP&quot;&gt;Discord&lt;/a&gt; was
once again the primary mechanism for communicating with the organizers and with
other contestants. There were a few announcements and teasers on Twitter and on
BlueSky for sure, but nothing substantial beyond that. The &lt;a
href=&quot;https://old.reddit.com/r/icfpcontest/&quot;&gt;/r/icfpcontest&lt;/a&gt; sub-Reddit has
sadly been effectively dead for the past couple of years or so. There were no
mailing-lists set up this year.
&lt;p&gt;
The source-code for my attempt this year can be found &lt;a
href=&quot;https://github.com/rmathew/icfpc/&quot;&gt;on GitHub&lt;/a&gt;, &lt;a
href=&quot;https://gitlab.com/rmathew/ICFPC&quot;&gt;on GitLab&lt;/a&gt;, and &lt;a
href=&quot;https://bitbucket.org/rmathew/icfpc/src&quot;&gt;on Bitbucket&lt;/a&gt;.
</content>
</entry>
<entry>
<id>https://rmathew.com/2024/http_yes.html</id>
<title type="html">HTTP Yes</title>
<updated>2024-12-28T00:00:00+05:30</updated>
<link rel="alternate" href="https://rmathew.com/2024/http_yes.html"/>
<content type="html">
&lt;p&gt;
At long last, I have somewhat grudgingly enabled pervasive HTTPS on this
web-site. I do not agree with the scaremongering around HTTP-only personal
web-sites, but I was tired of having to constantly fight an uphill battle
against the penalties on vanilla HTTP-only web-sites imposed by the current web
ecosystem. As another one bites the HTTPS dust, please do let me know if you
face any issues with accessing this web-site over HTTPS.
&lt;p&gt;
While I appreciate the enhanced security provided by HTTPS for web-sites that
deal with sensitive information, I think the current overzealous push towards
only HTTPS by browsers, search-engines, &amp;ldquo;thought leaders&amp;rdquo;, et al
even for personal web-sites is an overkill. If you have an HTTP-only web-site,
browsers scare off vistors when they try to visit your web-site, search-engines
down-rank your web-site (making it harder for you to reach your audience), etc.
HTTPS comes with additional costs and maintenance-burden for personal web-sites
and provides disproportionately little in extra benefits. You only get
encryption, but not identity-verification, from HTTPS by using the
commonly-given suggestions for enabling it for personal web-sites.
&lt;p&gt;
The usual reasons given for having HTTPS, even for personal web-sites, is that
otherwise someone malicious in the middle can tamper with the contents (e.g.
change it or inject advertisements) or inspect the web-traffic. First off, you
should never trust a rando like me on the Internet, whether they use HTTPS or
not. Second, I am not publishing anything sensitive here &amp;ldquo;for your eyes
only&amp;rdquo; that no one else should see. Third, you can still see loads of
advertisements and trackers on web-sites, even if they use HTTPS.
&lt;p&gt;
On the other hand, until recently the shift from a static HTTP-only web-site to
an HTTPS-based web-site meant an increase in the costs and maintenance-burden.
For a static HTTP-only web-site, you only need to upload a bunch of HTML and
other files to a shared web-server, usually provided for free by many web-hosts,
and then forget about it. Having to acquire, publish, and update SSL
certificates for an HTTPS-based web-site increases your costs and drastically
reduces your choices. It creates an additional hurdle for regular people to
have their own web-sites, going against the goals of the original World Wide
Web.
&lt;p&gt;
Thankfully we now have &lt;a href=&quot;https://letsencrypt.org/&quot;&gt;Let&amp;rsquo;s Encrypt&lt;/a&gt;
to provide free SSL certificates to everyone. However, even they are moving
towards ever shorter certificate-validity (from a short 90 days to just &lt;a
href=&quot;https://letsencrypt.org/2024/12/11/eoy-letter-2024/&quot;&gt;six days&lt;/a&gt;,
because moar security), which means you need to have &lt;em&gt;reliable
automation&lt;/em&gt; in place to keep updating your SSL certificates. This is not
easy for ordinary folks, or even for regular software engineers.
&lt;p&gt;
Luckily in my case, I discovered that &lt;a
href=&quot;https://www.50webs.com/&quot;&gt;50Webs&lt;/a&gt;, the free web-hosting service that I
have been using since 2008 (thank you folks!), now provides an option to
integrate with Let&amp;rsquo;s Encrypt and to auto-renew it before expiry, &lt;em&gt;even
in their Free Plan&lt;/em&gt;. This is really nice of them. This was enough for me to
finally make the switch to using HTTPS on this web-site, since 50Webs has
managed to keep the maintenance-burden low even for freeloaders like yours
truly. Kudos 50Web!
&lt;p&gt;
As an aside, I wanted to use pervasive HTTPS (redirect HTTP to HTTPS) and
canonicalize the bare domain (strip &amp;ldquo;www&amp;rdquo; from the URL, if
specified) on this web-site. The only way I could reliably do this was to use
the following &lt;a
href=&quot;https://httpd.apache.org/docs/current/mod/mod_rewrite.html&quot;&gt;mod_rewrite&lt;/a&gt;
configuration in my &lt;code&gt;.htaccess&lt;/code&gt; file:
&lt;pre&gt;
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [NE,L,R=301]
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^(www\.)(.+)$ [NC]
RewriteRule ^ https://%2%{REQUEST_URI} [NE,L,R=301]
&lt;/pre&gt;
&lt;p&gt;
This seems ugly, but this is what I cobbled together based on trial and error
and by reading the documentation.
</content>
</entry>
<entry>
<id>https://rmathew.com/2024/crucial.html</id>
<title type="html">&amp;ldquo;Crucial Conversations&amp;rdquo;</title>
<updated>2024-12-27T00:00:00+05:30</updated>
<link rel="alternate" href="https://rmathew.com/2024/crucial.html"/>
<content type="html">
&lt;p&gt;
&amp;ldquo;&lt;a
href=&quot;https://en.wikipedia.org/wiki/Crucial_Conversations:_Tools_for_Talking_When_Stakes_Are_High&quot;&gt;Crucial
Conversations&lt;/a&gt;&amp;rdquo; by Kerry Patterson, et al, was recommended to me by &lt;a
href=&quot;https://selfishaltruist.in/&quot;&gt;a former boss&lt;/a&gt;. It took me a while to get
around to reading this book, but I finally did and am glad that I did. The book
teaches you how to engage in conversations at work or in personal life that are
difficult, but important, and that most of us do not handle well. Even though
the book is firmly in the self-help mold, it actually has useful information to
give you if you can set aside your cynicism for this genre of books.
&lt;div class=&quot;book_display&quot;&gt;
&lt;img src=&quot;crucial.jpg&quot; alt=&quot;Cover of &amp;amp;ldquo;Crucial Conversations&amp;amp;rdquo;.&quot;&gt;
&lt;br&gt;
&lt;a href=&quot;https://www.amazon.com/gp/product/1260474216?ie=UTF8&amp;amp;tag=rmathew-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=1260474216&quot;
style=&quot;text-decoration: none;&quot;&gt;&lt;img
src=&quot;../books/buy_amz_us.gif&quot; width=&quot;120&quot; height=&quot;28&quot;
alt=&quot;Buy from Amazon.com&quot; style=&quot;margin: auto;&quot;&gt;&lt;/a&gt;&lt;img
src=&quot;https://ir-na.amazon-adsystem.com/e/ir?t=rmathew-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=1260474216&quot;
width=&quot;1&quot; height=&quot;1&quot; alt=&quot;&quot; style=&quot;border:none; margin:0px;&quot;&gt;
&lt;br&gt;
&lt;a href=&quot;https://www.amazon.in/gp/product/9355323352&quot;
style=&quot;text-decoration: none;&quot;&gt;&lt;img
src=&quot;../books/buy_amz_in.gif&quot; width=&quot;120&quot; height=&quot;28&quot;
alt=&quot;Buy from Amazon.in&quot; style=&quot;margin: auto;&quot;&gt;&lt;/a&gt;
&lt;br&gt;
&lt;p style=&quot;font-size: 85%;&quot;&gt;
&lt;a href=&quot;../caveats.html#aff&quot;&gt;Affiliate Links&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;
So what exactly is a &amp;ldquo;crucial conversation&amp;rdquo;? The authors define it
as a conversation or a dialogue where people have opposing opinions, the stakes
are high for one or both the parties, and strong emotions are involved. For
example, this could be about giving difficult feedback to a colleague, a
life-partner, or a child, discussing a hike in your pay, negotiating with
striking workers, etc. Even conversations that start off as regular
conversations can turn into crucial conversations when someone makes a hurtful
remark, for example. The authors want us to develop the skills needed to
recognize when we find ourselves in such a crucial conversation and to conduct
ourselves in a way that makes it a productive conversation that strengthens
mutual trust.
&lt;p&gt;
The book is divided into three parts. The first part deals with how to prepare
for such a conversation, including choosing the right topic, identifying what
you &lt;em&gt;really&lt;/em&gt; want from the conversation, and keeping your emotions in
check throughout the conversation. The second part deals with how to have such
a conversation, including making it a safe environment for both parties, how to
talk persuasively without being abrasive or condescending, how to listen
properly, and how to stay in control while absorbing feedback. The third part
deals with how to make such conversations actionable and ensure that you get
meaningful results as a follow-up. It also talks about how to apply this
framework to really difficult cases, since it is perfectly valid to be
skeptical of the broad applicability of such self-help advice. Each part is
divided into focussed chapters that tackle a particular aspect. Each such
chapter starts by providing an overview, gets into the details (with several
interleaving anecdotes sprinkled throughout), and ends by providing a short
summary of what we learned in the chapter. I admit that this is the usual
template for self-help books these days, but it is actually quite effective
here. (That said, the anecdotes seem unreal and the dialogues do not sound like
how normal people talk, once again just like in other self-help books.)
&lt;p&gt;
One of the nice devices that the authors use is a &amp;ldquo;path to action&amp;rdquo;
model. You see or hear something, you tell yourselves a story based on that
(even if it happens in an instant and you are not aware of it), you form
emotions based on that story, and finally you act based on those emotions. The
most important skills in having crucial conversations is being able to identify
and control this path in ourselves and in those with whom we are having such a
conversation. Of course, this is much easier said than done, so the authors
provide you various techniques to help with that. Even after that, I remain a
bit skeptical on how ordinary people can muster the self-awareness and
discipline required to master these skills.
&lt;p&gt;
What I didn&amp;rsquo;t like here is the irritating &amp;ldquo;pool of meaning&amp;rdquo;
metaphor that the authors keep using throughout the book. The authors also fall
prey to the usual self-help book trope of using cutesy acronyms
(&amp;ldquo;CRIB&amp;rdquo;, &amp;ldquo;STATE&amp;rdquo;, &amp;ldquo;AMPP&amp;rdquo;, etc.) that
immediately make me suspicious of what they are leaving out or shoving in so
that they could get these acronyms. I guess authors want to provide mnemonics
to their readers to help absorb their message, but I always find these more
irritating than helpful. However, yes, this definitely is a book that merits
reflection and possibly note-taking, not something that you just read cover to
cover and never revisit. I will surely come back to this book like I plan to do
with &lt;a href=&quot;../2019/gtd.html&quot;&gt;Getting Things Done&lt;/a&gt;.
&lt;p&gt;
As with many popular self-help books, the authors have courses and spin-off
books based on the &amp;ldquo;crucial&amp;rdquo; theme. You can find these and other
additional resources referenced from this book on &lt;a
href=&quot;https://cruciallearning.com/&quot;&gt;their web-site&lt;/a&gt;. Even if you do not use
those additional resources, you can get something useful out of this book (if
you can set aside your skepticism, if any, for self-help books). I am grateful
to my former boss for having recommended this book.
</content>
</entry>
<entry>
<id>https://rmathew.com/2024/icfpc24.html</id>
<title type="html">ICFPC 2024</title>
<updated>2024-07-02T00:00:00+05:30</updated>
<link rel="alternate" href="https://rmathew.com/2024/icfpc24.html"/>
<content type="html">
&lt;p&gt;
I took part in &lt;a href=&quot;https://icfpcontest2024.github.io/&quot;&gt;ICFPC 2024&lt;/a&gt; the
past weekend. This was a really nice contest that combined the best elements of
the classic contests from &lt;a href=&quot;../2006/icfpc-2006.html&quot;&gt;2006&lt;/a&gt;
and &lt;a href=&quot;../2007/icfpc-2007.html&quot;&gt;2007&lt;/a&gt;. As usual, I had a lot
of fun during the contest, but did not have any breakthrough in actually
solving the problems.
&lt;p&gt;
The &lt;a href=&quot;https://icfpcontest2024.github.io/task.html&quot;&gt;task&lt;/a&gt; this year
was to decipher programs written in a functional programming &lt;a
href=&quot;https://icfpcontest2024.github.io/icfp.html&quot;&gt;language&lt;/a&gt; in order to
solve problems of increasing difficulty. You begin by implementing a parser
and an interpreter for this language and then use it to communicate with a
web-server hosted by the organizers. You pretend to do an on-line course to
learn more and more about an alien civilization by fetching documents
associated with different keywords. When you solve problems, you unlock more
and more of these special keywords.
&lt;p&gt;
I chose to solve the problems this year using Python, simply because it was
easy to get started and iterate from there. Its &amp;ldquo;batteries included&amp;rdquo;
standard library contains almost everything I needed to get going. I
implemented a simple REPL that allowed me to decode the alien language and poke
around the remote server. That said, I kept running into efficient evaluation
issues in the interpreter that made it crash on certain degenerate problems.
Unfortunately, I could not solve these by the end of the contest and I did not
get the time to follow up after that.
&lt;p&gt;
An experiment I tried this time was to see if ChatGPT, Gemini, et al could help
me create the basic evaluator faster, so that I could concentrate on the core
problems. As has been my experience elsewhere, these LLMs spewed plausible
looking solutions that actually contained some blatant and some subtle bugs.
Finding and resolving these bugs took more time that the initial saving in
creating the program. On the whole, the experience was a bit promising at the
begining and frustrating in the end. I do not know how others find LLMs so
useful for coding, since this has consistently been my experience with them so
far. Maybe I am not prompting them properly.
&lt;p&gt;
Shortly after the contest ended, the organizers kindly shared &lt;a
href=&quot;https://github.com/icfpcontest2024/icfpc2024&quot;&gt;a repository&lt;/a&gt; containing
&lt;em&gt;everything&lt;/em&gt; related to the contest (task-description, problems,
server-implementation in Haskell, etc.). Technically, this allows you to
continue to play with the problems by running your own server, tweaking things,
etc.
&lt;p&gt;
The source-code for my attempt this year can be found &lt;a
href=&quot;https://github.com/rmathew/icfpc/&quot;&gt;on GitHub&lt;/a&gt;, &lt;a
href=&quot;https://gitlab.com/rmathew/ICFPC&quot;&gt;on GitLab&lt;/a&gt;, and &lt;a
href=&quot;https://bitbucket.org/rmathew/icfpc/src&quot;&gt;on Bitbucket&lt;/a&gt;. You can find
links to some other write-ups &lt;a
href=&quot;https://icfpcontest2024.github.io/writeups.html&quot;&gt;here&lt;/a&gt; on the contest
web-site. Weirdly, &lt;a
href=&quot;https://old.reddit.com/r/icfpcontest/&quot;&gt;/r/icfpcontest&lt;/a&gt; was quite quiet
during the contest this year. I wonder if that sub-reddit is dying out. Sad.
</content>
</entry>
</feed>
