- My second round at Fortanix was a failure!
- It was a medium leetcode question to be solved inside a browser. Yes, a leetcode for senior roles and that too in a browser! I mostly use vim with a buttload of plugins. Maybe I should start asking if leedcode in browser would be used for evaluation and just say no.
- Review article of a very interesting book. Here is a mindmap from Reddit.
- An old friend, Somya Mani and her husband John, came to visit Monday morning. Flight from Vienna to Bengaluru took almost half day and both of them super tired. Both slept after having breakfast. I got busy with office meeting and they went to their hotel. We may have dinner sometimes this week.
- The engineering workflow that I designed for my current employer might get adopted this week. One of the founders is very interested in it and we refined it over the weekend. Tomorrow I need to sell it to the team. Ideally I should practice the presentation. I will if I get some time in the morning before I drop Ookie to the day care.
- Many of the street lights in my neighborhood don’t have a proper switch. I’d loved a light sensor based but a manual one is also fine since labor is cheap. But the current way is monumentally bad and pretty dangerous.

- I opened account on to learn trading! My niece has been sending me screenshots of how much he is making every day. I made 2500 in half an hour from 10k investment and lost 8k next day. This platform requires constant attention which I don’t have. I’ll probably learn a few more things with very little amount of money and move on. Its not for me. It is pretty addictive though.
Author Archives: dilawarsr
Using `otelcol` (open-telemetry collector) to collect docker logs and send to a self-hosted signoz
Assuming that your self hosted signoz is at http://signoz.example.com:4317 (gRPC) or at http://signoz.example.com:4138 (json), following is a docker compose setup to scrape logs from docker and send them to a self-hosted signoz. Prefer grpc since it is very efficient when it comes to sending logs.
Using Logspout, a log forwarder
I am going to use gliderlabs/logspout. It collects logs from running containers (using docker.sock) and make them available via a tcp socket for otel-collector to read. One can also use fluentd etc. I found this to be a simpler solution for my needs.
Set up the tcp receiver in your otel-collector-config.yaml to listen for logs. I am going to use port 2255.
receivers: tcplog: listen_address: "0.0.0.0:2255"processors: batch: send_batch_size: 512exporters: debug: verbosity: detailed otlp: endpoint: http://signoz.example.com:4317 tls: insecure: trueservice: pipelines: logs: receivers: [tcplog] processors: [batch] exporters: [otlp]extensions: []
Run the Log Forwarder
In the following docker compose file, a service logspout collects logs from docker containers and make them available on port 2255. We then use the above otel configuration files to read logs from the port 2255 and send it to self-hosted signoz.
services: logspout: image: docker.io/gliderlabs/logspout volumes: - /etc/hostname:/etc/host_hostname:ro - /var/run/docker.sock:/var/run/docker.sock networks: - otel depends_on: - otel-collector command: tcp://otel-collector:2255 otel-collector: image: docker.io/otel/opentelemetry-collector-contrib restart: unless-stopped volumes: - ./otel-config.yaml:/etc/otelcol-contrib/config.yaml networks: - otel ports: - 4317:4317 # OTLP gRPC receiver - 4318:4318 # OTLP http receiver - 2255:2255networks: otel: driver: bridge
That’s it. Here is screenshot of collected logs.

Feb 07, 2026: Weekly Notes 2026/06
- I am getting frustrated with a car mechanic for not fixing my Tata Nano’s gearbox. It has been with him for four months now. Unless I call him, he doesn’t provide any updates. I ended up pinging the person who recommended him who is a genuinely a very warm and nice guy!
- Apparently (he told me), all car mechanics do this. They never proactively update you unless you ask.
- He reassured me that the mechanic is very good at what he does and that the car should be fixed in a few more weeks.
- I felt bad about involving him.
- My impression of the mechanic is that he’s a good guy and understands what he’s doing, but he doesn’t keep me in the loop.
- I’ve started migrating away from Notion to other open-source or self-hosted tools. For example, WordPress (this site) is now my platform for blogging. My notes are in Joplin now. I still need to find a good tool for to-do, web clippings, and task management—perhaps Zoho?!
- Yesterday, we went to Aditya’s place to meet a common friend. The “Hound of Madurai” was in town and feeling extremely lovey-dovey about meeting old friends. Why not? It took only 90 minutes to drive 20 km.
- Kaalu was so tired after the whole “meeting friends” affair that she slept the entire night in one position. Usually, she keeps changing her sleeping spots throughout the night!

20 km in just 90 minutes. Driving in Bengaluru!
- I have interviews scheduled for a senior role early next week at Fortanix. I had a manager screening yesterday which I think went well. I felt alive talking about security and the SaaS services built around it. I liked that they started with manager screening for a senior role. So that we both could easily decide if we want to invest further time in the interview process. I had to say no to the HP Enterprise interview because they start with a technical interview first and I am not feeling motivated to prepare for it without knowing what their plans are!
- I bought this saw for pruning branches. It’s a good saw—very sharp. The pole is quite long and the overall build is fine, but it could be much better. In particular, the grip on the loosening/tightening joints isn’t great. The saw also didn’t come with a safety cover.
- I used it to cut most of the lantana trees growing in an empty plot next to my house and trimmed some branches from the mango and Jamun trees that were blocking light. My neighbor also enjoyed trimming branches that were blocking his security camera’s view. All in all, a good purchase.
Enumerate applications listening to a computer port
How to figure which application/process is already using a port?
For example, below apache is failing to start because port 80 is already taken by some other application.
Apr 11 21:08:13 ip-172-26-0-194 systemd[1]: Starting The Apache HTTP Server...Apr 11 21:08:13 ip-172-26-0-194 apachectl[17997]: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:80Apr 11 21:08:13 ip-172-26-0-194 apachectl[17997]: (98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
Here is a script which can help you find this info.
# list out the processes using a port.# This script does not give the exact answer but potential solutions. It uses# three tools one after another.## - lsof# - netstat# - ssset -ePORT="$1"echo "Looking for application using port $PORT"if command -v lsof &> /dev/nullthen sudo lsof -i :$PORTfiif command -v netstat &> /dev/nullthen netstat -tulpn | grep ":$PORT" exit;fiif command -v ss &> /dev/nullthen sudo ss -tulp | grep ":$PORT" exit;fi
Awesome papers (developer focused)
This summary is touched-up by AI.
On the Criteria to Be Used in Decomposing Systems into Modules
Paper: criteria_for_modularization
This paper introduced information hiding as the fundamental principle for modular design. Instead of breaking systems apart by what they do i.e. mapping a flowchart onto modules, it argues we should decompose them by what design decisions are likely to change i.e. one module per decision which is likely to change.
Impact: This idea underpins encapsulation, stable APIs, and modern system boundaries — from object-oriented design to microservices. Nearly every discussion about maintainability traces back here, whether explicitly or not.
A Note on Distributed Computing
This paper explains why distributed systems are not just “local systems with a network.” It highlights hidden assumptions—like zero latency or perfect reliability—that break down immediately once computation is spread across machines.
Impact: It became a foundational text for distributed systems thinking. The ideas influenced RPC design, cloud architecture, and the now-famous fallacies of distributed computing.
The Next 700 Programming Languages
Rather than proposing a new language, this paper introduced a framework for describing programming languages using mathematical foundations. It showed that languages could be reasoned about formally, not just implemented ad hoc.
Impact:
This work shaped the field of programming language theory and semantics. Many modern functional and hybrid languages owe their conceptual clarity to ideas introduced here.
Can Programming Be Liberated from the von Neumann Style?
This paper critiques imperative, state-heavy programming and argues for a functional alternative built around composition and mathematical reasoning rather than mutable state.
Impact:
It helped legitimize functional programming as a serious alternative, influencing languages, compilers, and parallel programming models.
Reflections on Trusting Trust
This paper demonstrates how a compiler can be maliciously modified to insert backdoors—even when the compiler’s source code appears clean. It shows that trust in software cannot rely solely on source inspection.
Impact:
It permanently changed how we think about trust, compilers, and software supply chains. The ideas are still central to discussions about reproducible builds and secure toolchains.
Lisp: Good News, Bad News, How to Win Big
This essay reflects on why technically superior systems often lose to simpler, more pragmatic ones. It contrasts ideal design with real-world adoption pressures.
Impact:
It popularized the “worse is better” philosophy, influencing how engineers think about trade-offs, simplicity, and adoption.
An Experimental Evaluation of the Assumption of Independence in Multiversion Programming
This paper experimentally challenges the idea that independently developed software versions fail independently—a key assumption in fault-tolerant system design.

Abstract of “AN EXPERIMENTAL EVALUATION OF THE ASSUMPTION OF INDEPENDENCE IN MULTI-VERSION PROGRAMMING”
Impact:
It forced a reevaluation of N-version programming and influenced how safety-critical systems are designed, tested, and certified.
Arguments and Results
This paper reframes design patterns not as code recipes, but as arguments—ways to reason about design trade-offs and communicate intent.
Impact:
It shifted how patterns are taught and discussed, emphasizing design rationale over mechanical reuse.
A Laboratory for Teaching Object-Oriented Thinking
This paper advocates teaching object-oriented design through experimentation, feedback, and responsibility-driven design rather than rigid theory.
Impact:
Its ideas influenced OO pedagogy, agile practices, and test-driven development.
Programming as an Experience: The Inspiration for Self
This paper focuses on programming as a human experience, emphasizing simplicity, immediacy, and live exploration rather than static abstractions.
Impact:
It influenced IDE design, live programming environments, and dynamic languages that prioritize developer experience.
February 01, 2026 – Weekly Notes
- I spent last month (Jan 2026) interviewing and job hunting. I have one offer that feels good, and I may receive another by the end of this week. I also have one interview left that starts next week.
- I really enjoyed Veeam’s interview process. The Toyota interview went great as well. I was a bit disappointed with Cloudflare’s process—I was expecting them to reschedule after I missed the second round.
- Kaalu is now officially overweight. She weighs 25 kg; her ideal weight is 20 kg. Dieting doesn’t work since the whole neighbourhood feeds her, and she eats competitively outside.
- I’m thinking of migrating from Notion to WordPress. Notion is great at what it does, but the publishing options are less than ideal. I’m also reluctant to pay $12 per month for it. They should bring back the $5 personal plan! It feels like they’re moving more toward enterprise users.
Drainage Dogs
For the last few years, occasionally, I witness a curious behavior from some street dogs. When they see me, they don’t bark or wag tail (often both together) but quickly run away and hide in road side drainage. A bit like rats!
I think I know what’s going on.
The municipality has aggressively been neutering dogs in my locality. Road-side drainage provides an escape from the capture from neutering. Any strategy that helps dogs survive the neutering is being selected for.
Drainage in any Indian city are usually in bad shape, unkempt and usually not covered. Most days they do not have flowing water. Dogs can enter and exit these drainage easily, sleep inside them, and also raise their pups. A non-zero percentage of dogs that are now breeding heavily are using these drainage effectively.
No wonder that their pups have learnt this behavior. Instead of barking at me or interacting with me in more benign ways, they quietly run to their shelter like a rat when they see unknown humans approaching them. This keeps them safe from neutering from municipality staff to breed another day.
January 10, 2026: Weekly Notes 2026/02
- I’m trying to set up an engineering workflow at Dognosis (my current employer). After brainstorming with ChatGPT, I ended up with a template: Engineering Workflow Rhythm for a 20–100 Person Startup.
- I clearly spelled out what I was looking for in the prompt—and what I didn’t want:
- The first thing in the week is a short meeting; everyone should know they’ll work independently for the rest of the week.
- Every Friday, we review work, update status, and report to stakeholders.
- During the week, no cat herding. Each engineer acts like a professional and is treated like one (I don’t ask for updates).
- Write before talking. Every meeting must have a written agenda.
- I did the same exercise with Gemini. The results were not to my liking. ChatGPT’s responses were short, pointed, and—most importantly—felt implementable. Gemini, on the other hand, used language I don’t usually hear from good engineers. It added phrases that would make a PHB from Dilbert proud.
- You may also like this post:Small projects, clear scope | Swizec Teller, along with his other posts on related topics.
- I used to think
std::movewas C++’s way of implementing Rust-like move semantics. Turns out it’s another confusing monstrosity created by the committee that doesn’t do what it sounds like (f**king RAII?). std::move doesn’t move anything: A deep dive into value categories. Academic-type people should never be in charge of a language—or anything used by many people. Get a few normal programmers onto the committee, you C++ 😡. - 💡 Suddenly there’s a lot of incoming interest in my resume. Either the job market is heating up, or my resume is finally making sense to people. I spent over three months tweaking it (revisiting once a week). Talking to AI about my resume helped a lot.
- 💬 I gave a few interviews this week.
🚗 Toyota Connected is almost done. It’s Rust + firmware + software-defined vehicle work, which I’m pretty excited about. The interview itself was very pleasant: the technical team asked relevant questions and were very friendly. I felt comfortable after the first five minutes and didn’t suffer from brain fog. - Another interview was with a seemingly good company working in the secure computation domain. Senior leadership described the role one way, while the interviewer described it differently. The interviewer was very focused on dotting i’s and crossing t’s on a LeetCode question—and asked me to write code in Google Docs! I’m not really sure what he wanted to see. You meet every kind.
- I had a first round with Cloudflare. I applied for a zero-trust and data-protection–focused role. They have the network, they have the edge—I wouldn’t be surprised if they start offering secure enclaves and other services where “trust” is explicitly computed.
- A few surprising moments in the first round: I wasn’t expecting a technical screening but rather a discussion about the role and engineering problems with a manager. It turned out I’m in their general hiring pipeline, which means a phone screen by a manager first. Perhaps I’ll talk to the relevant team later. Not great, but not a deal-breaker.
- I went through the round and felt I did average. I said a few very dumb things and had some brain fog. We finished early, which I really liked. +1 to the manager for keeping the agenda tight and being professional. I wasn’t very surprised when I was moved to the next round.
- After that, I did something embarrassing. I made an off-by-one error in real life and ended up missing my second round 😢. I scheduled it for early Saturday morning (00:00 hrs) but marked my desk calendar for Sunday morning. Strong DND settings on both my phone and desktop made it impossible to error-correct—there was no persistent notification. Very unprofessional on my part, though I’m not mad at DND at all.
- I sent an apology to the interviewer and asked to reschedule, but I’m not sure if this error is recoverable. Let’s see.
- Three more opportunities are in the pipeline—all incoming interest, and all pretty interesting: hardware/algorithm development for space satellites, Windows security kernel development, and a data backup and protection SaaS.
January 3, 2026: Weekly Notes 2026/01
- 🏃 🏾🎉 Finished 1000 km run last year. Wrote a brag post on LinkedIn about it
- I will try to do a retrospective of last year. 2025 was a year of loss!
- Enroll – Reverse-engineering servers into Ansible is an interesting tool. It can generate ansible script from current state of your system! Pretty neat!
- 💯 SE Radio 701: Max Guernsey, III and Luniel de Beer on on Readiness in Software Engineering – Software Engineering Radio was a good podcast. There are some nugget of wisdom for early stage startups.
- 💯 AddyOsmani.com – 21 Lessons From 14 Years at Google was a great read! I am going to share it many times 🙂
December 27, 2025: Weekly Notes 2025/28
- This will be the last weekly notes this year. I started writing them this year about 29 weeks ago.
- I’ve been living by “If I am not doing it the rest of my life, I am doing it a few times” (professionally). Let’s see how it stands up to the midlife crisis I am supposed to get in a few years.
- I had to drive to Hyderabad and back to Bangalore this week because of a semi medical emergency. Kaalu The Fifth did well in the car. My No access also did very well. It gave me ~19 km/l mileage on highway. Driving experience was much better this time. This time I drove 90-100 km/hr speed during night without any issue. Though I prefer day-time driving, but two-wheeler and auto-drivers make life miserable on the highway since they can come from any-side anytime.
I missed three days of running because of driving, but I’ll manage to finish 1000km in a couple of days
.
- Three months ago, I won a 1 gram gold coin from Spinny when I bought a car from them. But it’s not enough motivation to drive to Tanishque store. I won’t be surprised if I won’t collect it in time. Why can’t these people just transfer the money! Who has time to run around for gold?
- I used to complain to my co-founder about something similar a lot, who’d have preferred to hire someone “senior” who doesn’t use their hands on the code-base. It’s really sad how many “senior” folks you meet during interviews who really don’t really “work on” the project they “manage” or “lead”.
December 20, 2025: Weekly Notes 2025/27
Last week I did not write my weekly note December 13, 2025: Weekly Notes 2025/26
- 🏃🏾 I am well on track to finish my 1000 km run this year.
- Some good reads over last couple of weeks.
- 📗 Misconceptions about rust lifetime was a good read.
- I need to read Good conversations have lots of doorknobs a few more times.
- Found author’s draft on domain driven design Microsoft Word _ Book_AfterFinal_doc – Evans03.pdf
. Domain Driven Design brings team communication to the center. I am a sucker for any idea that improves communication across teams. - 🤯 TIL that you can use either public or private key to encrypt/decrypt message.
I used to think only private key can be used for encryption. I know, I know, LOL indeed.
Since certificates contain the public key of a CA, you can decrypt encrypted messages sent from them using it.
BackupOnDelete: A Windows Minifilter And User Space App
When a file is deleted by any means possible, you want to ensure a backup of the file before its get permanently deleted. This post describes a windows minifilter and a user-space app working in tandem with minifilter to implement a working solution.
It is not a tutorial. You can browse the code and check if the patterns I’ve used make sense for your project. Additionally, you may like to have a look at the build system, packaging (nsis based installer) and application code.
Later I rewrote the application in Rust but that is not part of this project’s GitHub Repository.
Architectural summary
- The minifilter monitors certain events in filesystem that says ‘delete this file’ (on close!).
- Instead of letting kernel delete the file, the minifilter ask the kernel to rename the file (move it to a temporary space) and hide it. For example, if file
D:\MyDocuments\important.pdfis being deleted, it will be moved toC:\ProgramData\Minifilter\D:^^MyDocument^^__??important.pdf??__and then marked hidden. Minifilter also ensures that new file is not renamed by anyone. - Original filepath is converted to a special valid filename (filename!) e.g.
D:\MyDocuments\important.pdftoD__^^MyDocument^^??important.pdf??. As long as you can recover the original filepath from new filename unambigously, we are good to go. You can also use base64 encoded paths as filename. I used a simpler scheme since decoding base64 encoded path inside a kernel minifilter was quite a lot of work. - The new path is sent to user-space application which backs it in a bucket and then send a message a kernel minifilter to delete the file.
- When delete this file request come from the user-space application, the minifilter doesn’t modify the delete-file event and let is go down the kernel stack. The kernel delete the file for sure this time.
Minifilter
This kernel minifilter is a cmake based project that also create a nsis based installer and sign it using your personal key. Note that you need to get the minifilter signed by MS or MS approved vendors before you can publish it. To load the minifilter into your machine, you should follow the official guide https://learn.microsoft.com/en-us/windows-hardware/drivers/ifs/development-and-testing-tools
- The minifilter captures required filesystem events:
CONST FLT_OPERATION_REGISTRATION Callbacks[] = {
{ IRP_MJ_CREATE, 0, BackupOnDeleteShield, NULL },
// IRP_MJ_SET_INFORMATION is sent whenever file is marked for deletion.
{ IRP_MJ_SET_INFORMATION,
FLTFL_OPERATION_REGISTRATION_SKIP_PAGING_IO,
BackupOnDeleteShield,
NULL },
{ IRP_MJ_OPERATION_END }
}; - See https://github.com/dilawar/minifilter-backup-before-delete/blob/e61e9c5fbfd9df51749d0de98acfbad7b7a6290b/minifilter/src/main.cpp#L396 for the definition of
BackupOnDeleteShieldfunction. - If the delete request has come from kenel mode application, let is pass. And if the user-space app is not connected with minifilter (more on it later), don’t do anything.
if (Data->RequestorMode == KernelMode) {
// if the requestor is kernel mode, pass the request on uninterrupted
ret = FLT_PREOP_SUCCESS_NO_CALLBACK;
goto CleanUp;
}//
// If no client is connected to create backups then there is no point using
// the shield.
//
if (!IsUserAppConnected()) {
DFLOG(ERROR, "Shield>" __FUNCTION__ ": No backup client connected.\n");
ret = FLT_PREOP_SUCCESS_NO_CALLBACK;
goto CleanUp;
} For an user-space app to talk to minifilter, the minifilter must create a channel to listen to. The port is opened by minifilter ‣. The channel is created using https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/fltkernel/nf-fltkernel-fltcreatecommunicationport
PORT_STATE
InitializeServerPort(IN PUNICODE_STRING CommunicationPortName,
IN PFLT_FILTER Filter)
{
NTSTATUS status = STATUS_SUCCESS;
gServerPortState = PORT_STATE::UnInitialized;
PSECURITY_DESCRIPTOR SecurityDescriptor;
OBJECT_ATTRIBUTES ObjectAttributes;
PAGED_CODE();
DFLOG(ERROR,
"Shield>" __FUNCTION__ ": Trying opening port: '%wZ'.\n",
CommunicationPortName);
//
// Create communication descriptor.
//
status = FltBuildDefaultSecurityDescriptor(&SecurityDescriptor,
FLT_PORT_ALL_ACCESS);
if (!NT_SUCCESS(status)) {
DFLOG(
ERROR,
"Shield>" __FUNCTION__ " : Port is not initialized. Error "
"FltBuildDefaultSecurityDescriptor - %X.\n",
status);
gServerPortState = PORT_STATE::UnInitialized;
goto CleanUp;
}
InitializeObjectAttributes(&ObjectAttributes,
CommunicationPortName,
OBJ_KERNEL_HANDLE | OBJ_CASE_INSENSITIVE,
NULL,
SecurityDescriptor);
status = FltCreateCommunicationPort(
Filter,
&gServerPort,
&ObjectAttributes,
NULL,
ShieldConnect, // Connect notify callback
ShieldDisconnect, // Disconnect notify callback.
ShieldMessage, // message notify callback.
MAX_CLIENTS);
if (!NT_SUCCESS(status)) {
DFLOG(ERROR,
"Shield>" __FUNCTION__ " : Port is not initialized. Error "
"FltCreateCommunicationPort - %X.\n",
status);
gServerPortState = PORT_STATE::UnInitialized;
goto CleanUp;
}
DFLOG(ERROR,
"Shield>" __FUNCTION__ ": opened server port handle 0x%p.\n",
gServerPort);
gServerPortState = PORT_STATE::Initialized;
CleanUp:
if (SecurityDescriptor)
FltFreeSecurityDescriptor(SecurityDescriptor);
return gServerPortState;
}
User-space app
How to connect a user-space app to communicate with minifilter? We opened a port with a name. Use the same name to connect to the port (minifilter). See the app directory in the repository.
voidShieldClient::connect(){ port_ = INVALID_HANDLE_VALUE; HRESULT hr = S_OK;# COMMUNICATION_IN_SYNC_MODE // // port in sync mode. We don't have to use Overlapped structure here. // TODO: Not sure about the performance. // PLOGI << "Connecting to " << portname_ << " in SYNC mode."; hr = FilterConnectCommunicationPort( portname_.c_str(), FLT_PORT_FLAG_SYNC_HANDLE, NULL, 0, NULL, &port_);# // port in async mode. This is the preferred way. Use with completion port. PLOGI << "Connecting to " << portname_ << " in ASYNC mode."; hr = FilterConnectCommunicationPort( portname_.c_str(), 0, NULL, 0, NULL, &port_);# if (FAILED(hr)) { PLOGW << "Failed to connect to Shield: Error: 0x" << std::hex << hr; connected_ = false; goto MAIN_EXIT; } completion_port_ = CreateIoCompletionPort(port_, NULL, 0, 2 /* 2 user threads */); if (NULL == completion_port_) { hr = HRESULT_FROM_WIN32(GetLastError()); PLOGW << "Error in creating completion port. Code: 0x" << std::hex << hr; goto MAIN_EXIT; } PLOGI << " ... Successfully connected."; connected_ = true;MAIN_EXIT: if (!connected_ && INVALID_HANDLE_VALUE != port_) { CloseHandle(port_); }}
Messaging
To keep it simple,
- Each messages has first two bytes of it designated as message code.
- Next 4 bytes are the size of the message, and rest is the message.
December 6, 2025: Weekly Notes 2025/25
- 💻I migrates some more code to HTMX — really enjoying working with HTMX.
- 🔐I was curious if anyone is using Probably Approximately Correct Learning (PAC Learning,
PAC: Valiant84.pdf ) in cyber-security. Its not yet mainstream but some folks have been proposing it as an alternative to classical ϵδ
ϵδ-differential privacy
[2210.03458] PAC Privacy: Automatic Privacy Measurement and Control of Data Processing (summary in
Trip report: ‘CWI Lectures on Secure Computation’ (Amsterdam, NL) | Roseman Labs Tech Blog). I liked it! PAC gives you lower bounds for free so in many situation, you don’t have to assume or compute the worst-case scenario youself which are great for proving guarantees. - 🦀 I also bookmarked 🦀 Patterns for Defensive Programming in Rust | corrode Rust Consulting
- 📝Found a another good piece by No access E.W.Dijkstra Archive: The undeserved status of the pigeon-hole principle (EWD 1094)
- 📕Beej has a new book Beej’s Guide to Learning Computer Science
Updating UI after a successful HTMX request
- 👎🏾Reload the page. Send response header
HX-Refershwhich ensures that page is reloaded afters successful request. This is not the greatest of options because refreshing page causes UI to move./** * Add HX-Refresh header to response. The client will refresh the page. */ private function addRefreshHeader(): void { $this->response->setHeader('HX-Refresh', "true"); } - 👍🏾 Trigger another HTMX read request that fetches the content on success. If you are coming from react/vue, this will feel natural. Send a header like
HX-Trigger: HX-Update-My-Tableand setup ahx-getto be triggered on this event e.g.
<h2>My Table</h2> ... <tbody id="mytable-table" hx-get="/read/my-table" hx-trigger="HX-Update-My-Table from:body"> ... </tbody> </table> <form hx-put="/put/my-table"> <label> Name <input name="key" type="text"> </label> <label> Email <input name="value" type="text"> </label> </form> -
There are more interesting options https://htmx.org/examples/update-other-content/
November 29, 2025: Weekly Notes 2025/24
124 km more to go to finish 1000 km run this year. Pretty doable in 32 days!
I am increasing my use of HTMX. A few things I loved about HTMX
- I can use server to manage my app’s state. The client does not have to do any state management which is a huge win.
- I don’t have to use TS/JS everywhere, especially on servers. I can write as little JS as possible.
- I don’t have to update client when I update my app. Decoupling is easy to achieve!
- I can use server to manage my app’s state. The client does not have to do any state management which is a huge win.
I gleefully watched South Africa trashing India 2-0 in home test series. Except for Jadeja, not a single player showed any fight or even some grit.
- Also not giving Bumrah captaincy when Gill was out of the series reinforces the accusation that bowlers are a lower caste in Indian cricket. Even the great spinner Ashwin has to pose with a bat for this autobiography. For the f**k sake!!

- Also not giving Bumrah captaincy when Gill was out of the series reinforces the accusation that bowlers are a lower caste in Indian cricket. Even the great spinner Ashwin has to pose with a bat for this autobiography. For the f**k sake!!
Plur1bus is an interesting series. Well done!
November 22, 2025: Weekly Notes 2025/23
- I think I’ll be able to complete 1000 km of run this year without putting any special effort 🤞🏾.
- Eating outside for food, like movies, is becoming a luxury. Thankfully the traditional South Indian restaurants are still standing strong.
- Covid had a negative impact on restaurants and car hygiene. We have not recovered from it yet.
- Weird how things become worse slowly and then get normalized — like garbage in Bengaluru?
- I applied at a few places for my next startup. I don’t think I did an outstanding job at the application, but time was short.
- I decided to go through them pretty late. I feel most alive in the driver seat.
- It doesn’t have to be a startup. An open source project gives me the same feeling.
You make decisions and you are responsible for everything! You only deal with your own BS 🙂!
- I meant to write about what went wrong at the previous one. I don’t think I can still write about it, I’ll try soon though.
- I like EF, Antler, and South Park Commons–like programs. They let you, even encourage you, to walk in from the front door. For someone like me, who never had social capital or connections, this is something to be supported and cherished.
- I read a funny story on this thread RE: What’s so cool about Scheme?
The venerable master Qc Na was walking with his student, Anton. Hoping to prompt the master into a discussion,
Anton said, “Master, I have heard that objects are a very good thing – is this true?”
Qc Na looked pityingly at his student and replied, “Foolish pupil – objects are merely a poor man’s closures.”Chastised, Anton took his leave from his master and returned to his cell, intent on studying closures.
He carefully read the entire “Lambda: The Ultimate…” series of papers and its cousins,
and implemented a small Scheme interpreter with a closure-based object system.
He learned much, and looked forward to informing his master of his progress.On his next walk with Qc Na, Anton attempted to impress his master by saying,
“Master, I have diligently studied the matter, and now understand that objects are truly a poor man’s closures.”
Qc Na responded by hitting Anton with his stick, saying,
“When will you learn? Closures are a poor man’s object.”
At that moment, Anton became enlightened.
- I added two more articles about OOP to my reading list.
- OOP is shifting between domains, not disappearing — many comments on this article are edifying; for example, OOP is great at managing shared state (e.g. GUIs), while the functional approach is better at linear data flow.
- Nice to see the community trying to make C a bit more secure: Giving C a Superpower: custom header file (safe_c.h) and projects like https://github.com/pizlonator/fil-c.
November 15, 2025: Weekly Notes 2025/22
Last week note November 8, 2025: Weekly Notes 2025/21
- How to tolerate annoying things | Psyche Guides was recently discussed on HN. From a comment, I learnt about an interesting book on similar lines https://www.amazon.in/Mud-Lotus-Thich-Nhat-Hanh/dp/1937006859.
- E.W.Dijkstra Archive: On the foolishness of “natural language programming”. (EWD 667) and Programming as theory building : Naur.pdf are two articles that kill AI for programming vibes. These are very good auto-complete tools.
- Swizec Teller newsletter is a joy to read. I love how each article gets to the point so quickly. Let’s see how much I learn from him.
- Now, I am almost convinced that OOP was a bad idea. I am preparing a reading list to learn a bit more about OOP, but my focus is now on its shortcomings, e.g. Subtyping, Subclassing, and Trouble with OOP and When did people favor composition over inheritance?. I also learnt about https://en.wikipedia.org/wiki/Barbara_Liskov who avoided inheritance.
- I’ll try Mergiraf: syntax-aware merging for Git [LWN.net] this week.
- November 16, 2025 I wasted quite a lot of time watching the 3rd day of the first test match between India and South Africa. It was a fast moving test. It was nice to see bowlers dominating for once. Always a joy to watch Bumrah bowling. Siraj is a very fine bowler, but his body-language — he is fluent in many dialects — is often rude and unnecessary hostile. Liked Jansen spell. He was calm, composed and very menacing. It was sad that only of couple of Indian batter showed any grit in the last innings.
- This weekend, I fixed a broken pipeline of Smoldyn simulator. I am planning to spend some time modernizing it GUI.
November 8, 2025: Weekly Notes 2025/21
Last week; November 1, 2025: Weekly Notes, 2025/20
- Ookie is very interested in bubbles🫧 these days. Soap bubbles are nice but they don’t last long and burst easily. You can add quite a bit a sugar t solution to make bubble that bounce and don’t burst easily. In fact you can go further Physicists determine the optimal soap recipe for blowing gigantic bubbles – Ars Technica.
- Quite a lot of software building is about figuring out the list for invariants and taking care of them. ****Some languages makes is easier to work with invariants e.g. Haskell and Rust type systems are great of enforcing invariants that would require a lot of asserts and manual enforcing in Python etc. Thinking clearly about software
- I keep coming back to (Quite) A Few Words About Async every time I see a popular post on HN about async. May be my long term memory is getting worse. Perhaps I need to write a blog to understand it properly and drill it into my head.
- What is the best resolution screen for programming Resolution limit of the eye — how many pixels can we see? | Nature Communications has some hints now. If you keep your screen 50cm away like I do, anything above 275 PPI is an overkill.
November 1, 2025: Weekly Notes, 2025/20
Last week
October 25, 2025: Weekly Notes 2025/19
-
Implementing a moderate-size form is a difficult problem. The UI is probably the easiest part.
It’s the state management along with UX that makes it hard.
It gives me the same vibe as working with spreadsheets—easy to get started, looks very simple
until the data it handles becomes complex.
Not to mention when relationships among columns or schema changes break almost everything. - I think what I am trying to say is that local changes have global effects and the blast radius is very high.
-
The more I learn the way of HTMX, the more I seem to like it.
I should spend more time writing a few blog posts or examples of HTMX. -
I am searching for solutions that stop rats from entering the car.
I learned that ultrasound solutions do not work effectively since rats become habituated to them.
Some folks suggest peppermint spray, tobacco leaves, etc.
I park the car in the open, which usually keeps the rats out since street dogs attack them,
but sometimes I still find rat droppings under the car. -
Here is a quick way to clean your seat-belt:
October 25, 2025: Weekly Notes 2025/19
-
How to label issues for a small team or rather manage boards?
I found
Ticket Lifecycle According to Scrum | Scrum.org
— a good thread.
-
Paying attention to the structure of communication and work is a full-time job.
I hope more folks write about it in the context of small teams.
There is a lot of documentation and advice for enterprise-like environments. -
I’ve started playing with HTMX a little. I used it at work lately.
Instead of sending JSON from the server, I am sending HTML using HTMX.
It feels weird at first—but it is not!
I am still not sure how far I can go with it.
Note that I have a PHP 8 monolith at work rather than a JSON API + Vue/React app. -
You can read about it here:
https://htmx.org/essays/hateoas/
.
Note that you can find an equal number of decent articles suggesting why this is a bad idea! -
It’s been a while since we heard from Evan.
I’ve been itching to try Elm for a while.
The frontend is a complex problem, and many folks recommend Elm to deal with it.
-
Which is a better input to an AI—text or pixels?
Many believe pixels to be better:
https://news.ycombinator.com/item?id=45658928
.
Karpathy worked (works?) at Tesla, which has its driving system entirely based on camera inputs! -
I find pixels to be a more “natural” input in biological systems than language—for example,
mammalian vision systems.
Olfaction and haptics are equally natural.
All of these modalities look very different from each other to me,
even though they create final representations in neural activity.
A bit like how Haskell and TeX are different even though they run on the same processor!! -
I don’t think there is something terribly common in these two modalities,
even if there are correlates or similarities in neural representation.
Perhaps vision is much more complex than other modalities and
More Is Different | Science
.
