newest to oldest (change)
-
Post forwarding
I am typing out this text on my weblog, and when I will hit publish, it will also become a post on my linkedin account. This has two benefits. 1) I get an easily searchable and shareable copy of my social posts on my weblog. 2) I can have linkedin blocked (on both my pc and mobile) and still be able to post stuff, and maybe I can unblock it once a week to check comments. And if someone wants to reach out to me, that too is pretty easy to figure out.
n8n being open source is cool.
-
Sparrow
Today, a sparrow died in front of my eyes partly due to my incompetency. I buried her in the small lawn outside.
She was a brown small sparrow, I don’t know the exact name of that species. That species has a nest on the lemon plant planted in our neighbor’s courtyard, a part of which extends over the wall to our courtyard. But I don’t think they actually live in the nest during night because in morning, because there are dozens of them, and they can’t all fit inside that nest. They mostly play on that tree and the wall on top of which our neighbors place edible seeds for the birds. Our neighbors had gone out of city few days ago and had asked us to put the fill the clay plates resting on the wall with the seeds, after the dawn prayer. Like the previous days, I had filled them today as instructed. It was after the breakfast that I had went outside and noticed the sparrow strangled up very badly in the plant. Lemon plant has small twingled thorny twigs. She was caught a bit up higher part of the plant. I had laid the chaarpai there, but still I had to pull below the branch to bring it up close, and then attempted to cut the tiny branch along which it was strangled, but in this attempt, the whole plant had gotten many jerks and sudden movements, and she stopped flapping, which marked that she was no longer alive. I finally cut the twig and the sparrow fell on the chaarpai, but alas she no longer responded. I couldn’t verify if she was alive or not, so I took it inside in warm room and sprinkled it with water, etc. But after around fifteen minutes, it was clear she was dead. Looking at her tiny legs, it turned out that she was not just strangled in the twigs, but that there was a thread which had been gotten tightened around her leg. That thread also got cut when I cut the twig. Later, I found a long thread tangled very badly in the twigs. It was perhaps fastened on the plant way long ago to hold it to a certain position but later it might have no longer been necessary, but got strangled in the twigs. So, it seems the sparrow somehow got the thread fastened around her leg, but also got stuck in the twigs and a thorn pierced her resulting in the blood. I don’t know how long ago, she had gotten stuck there. But I don’t think so, it was there before the breakfast. So she could have gotten stuck there anywhere between 1 to 30 minutes before I saw her. The unintended jerks to the plant in my careless attempt to cut the twig probably resulted in her death. Upon inspection, however, the piercing didn’t look too deep and the blood was also very little. Her body will now decompose and become part of the trees around which I buried her. I came back to courtyard after burying her. The sparrows were back hopping around, eating and playing by the plant and the wall. I feel bad for the companion that is no longer with them due to my incompetency.
-
Change of environment (alt title: a cool graph)
Change of environment sometimes does wonders.
The last time I spent more than a week in Lahore was when I was working on my thesis. And those were very bad days. I was getting nothing done, and was enjoying myself neither. Getting back at home did improve things a lot.
I knew I would have to come here again for a few days (i.e., in these days — the time of writing this), but when I changed my plan to stay here for a week and a few days, I was getting anxious that I might return to the same state as I was in those thesis days.
I arrived Lahore yester-evening, and I turned out to write two essayish blog posts in two successive days (only a night’s sleep apart). A funnier way to frame this is this:
Few days back I had shared this graph with a friend:

I think my life is this graph on loop, super-imposed on a slightly positively sloped straight line.
So, at the time I had shared it with my friend, I felt like I was at the purple point:

Now, I think that, I was at orange point then1 and now am at the green point.

So yeah, I feel like in the I’m so back phase and the peak has yet to come soon. Also, I realize this graph is a handy tool to share updates with friends. So, sharing this graph here, so that if you wanna share updates with me, you can do so by marking this graph. Thank me later 😂

- And tbh, it was literally so over (details are TMI and hence can’t be shared, but I am not referring to the thesis phase.) ↩︎
-
Logging Movies
Yesterday evening I set out to log all the movies I had watched since 2022. Sometime earlier this year I had added all such movies on an online service for this purpose, but it didn’t had dates, so I set out to log the dates for them as well.
Mainly, I was counting on my laptop activity data collected by ActivityWatch. I thought that maybe I had set it up a very long time ago. But it turned out, I had only set it up on 9 Oct 2024. So, for movies I had watched after that date, I was able to find out the watch dates from there (after a lot of trouble trying to get python running in wsl to connect with ActivityWatch running on main windows. What worked was to quit ActivityWatch and open it again at 0.0.0.0 so that WSL could also reach it). Then, for movies watched before that, my second source was my google browsing history exported from Google Takeout to an excel file. Now, I usually downloaded videos through Brave browser (meaning nothing in google history), but still it worked out for many movies, because in many cases, I used to google something about the video either before or after watching it, specially wikipedia page or related history if any (and sometime explainers) on my main chrome browser. Sadly, however, I had created that export in Apr 2025 and had found it having only data for past 12 months. So the last entry in my excel file is from 8 Apr, 2024. So, for movies watched before that, I had no data. But, I recalled another source. Now, I used to download movies and delete them after watching (because my laptop didn’t had much storage) but for movies that were good enough that I thought I would watch them again some time, I did not delete them. But in somewhere around june this year, I had bought an hdd with case to keep backup of my laptop data and also to offload unnecessary data from laptop. On that, I had also moved those movies. I was worried that when moving the files there, the file created date would have been changed to the date, I had moved it to the hdd because I had copied it through normal windows gui and not through commands that preserve original properties. But I thought to give it a chance, and I connected the hdd. Interestingly, the date created property had modified as I had thought, but the date modified property still showed the same date on which the file was created originally, or you can say the download date. I was able to verify it for the movies I had logged already. So, I got a bunch of more movies from there. I did that till yesternight.
It’s morning now, and just gotten on my laptop, and 37 out of 106 are still remaining to be logged, that are mostly those that I watched before Apr 2024. Now, a few might be actually after Apr, so I might be able to find data for them. As for the rest, I’ll have to extrapolate the dates, by thinking of the conditions and the place where I watched them and the time in which I was in that place. For instance, I remember a movie someone had recommended me when a certain event was happening at out university department. And I can find out the dates for that event, and from there I can get a close estimate of the dates. The idea is you can always get hard bounds for possibility of a certain event to occur, and then you further narrow the bounds as much as you can to get closer to the actual date. Well, let’s see what happens. I’ll add progress here.
So here’s the update. I was able to figure out a few more from the excel and then finally 30 were still remaining. So, I recalled that when I had created Google Takeout export, the history was not actually set to auto delete. So, I checked it again. And lo, the google search history before Apr 2024 still exists. Finding it out made me so happy. But irritating thing is I can’t export. Google Takeout only exports data of last 12 months, though technically it should export all data. So, after very tedious searching I was able to find dates for most of them. Around 10 were those for which I had to conjecture the date based on hard bounds and around which movies I had seen them. But I have a pretty close log now. Last year, I had done a similar dig to log dates of books read (though I had to use different methodology like linking books with reference and place bought and the place read and cues like that to find out the date I had read it).
Well, the final takeaway is that this movie era needs to end soon.
-
I’ve been fooled
My websites are being served from a server in Mumbai, India. But when a user in Pakistan requests a web-resource hosted in India, traffic is first routed to Singapore and then to India (and same path backwards) despite that there are submarine cables directly connecting Mumbai and Karachi. Apparently, there’s an undefined security policy restricting Pakistani ASNs to directly connect to Indian ASNs.
So, had I deployed my server in Singapore instead of Mumbai, it would load (slightly) faster even though Mumbai is geographically closer because it wouldn’t have to cover the extra journey to Mumbai. But the actual fooling thing is that the server location with lowest latency from Pakistan is actually Dubai, and it probably would have been even if we had direct submarine connection with Mumbai (though things would be different if the terrestrial connection with India across Lahore is established).
I guess I’ll have to set up a server in Dubai now1 😭
Quoting this legendary reply:

- Also, I heard Caddy is even faster than NGINX. Maybe, I should experiment with that. ↩︎
-
Move
I keep forgetting again and again, that when my mind is not working as well as it could, more often than not, it is not because my mind is lazy and not exercising well, it’s because my body is lazy and not exercising well.
-
Aaj Ke Hisaab Se v2.0
I had had a period in which I got obsessed learning about financial infrastructure and different investment options in Pakistan and practicalities of it. One weird feature I observed was that literally no one talks or considers about real or inflation-adjusted return. In a country where year-on-year inflation goes swinging like this: 9%, 23%, 31%, 7%, 6% 1, the nominal returns showed by your brokerage firm or mutual fund app give you no idea about how your investments are performing.
So, I brushed up my old PKR inflation adjustment calculator Aaj Ke Hisaab Se and just finished with its v2. The primary feature now is calculating real/ inflation-adjusted returns2. The historic currency conversion feature is also retained, but it is a secondary feature now. And the cool thing is I have automated the data fetching, so it will get updated with new CPI value released by PBS, by itself on 5th of every month.
- Sep values for last 5 years ↩︎
- In the very first version, it was using gold prices as deflator, but that was partly because I was unable to find older CPI data. Using gold for this purpose was not suitable as gold prices have been very volatile, and they haven’t been a good reflection of an average consumer’s purchasing power. But later I was able to hunt historic CPI data, but hadn’t actually updated the calculator. ↩︎
-
RIP SBP Data Authenticity ft. Aaj ke hisaab se
Edit: I later found out the mistake was my own. Details in end.
————-
Today was the first time, the intertemporal currency value converter I had made a while ago came to my use, when during a phone call with my father, I instantaneously converted a past amount he mentioned to its current value, and I told him about this, and he liked the idea. When I told him, that for present value it’s using 2024’s last quarter gold prices to compare against historic gold prices, he asked me to get present gold price updated and share it with him. This time, I figured out extracting data from Business Recorder is pretty straightforward using an AJAX call that the webpage was making under the hood.
Last time, I wasn’t able to find out a good source for recent data. Since, BR had this data since 2011, I thought about comparing it with the data from SBP that I had used in conversion in my converter, and voila, the two data series are not validating each other.
The price growth rates for the two sources are not even remotely close.
And then they say, I am too paranoid about data sources.Now, what am I supposed to do plug in my converter? Does authentic data even exist?——-Edit 14/07/25: So, I found out the data from both sources is actually consistent. The issue was how I was grouping it. The SBP Handbook explicitly mentioned the years were fiscal years. But when grouping BR data to get annual average, I had grouped by annual year instead of fiscal year. When I grouped BR data by fiscal year, it was pretty much the same.PS. None of this matters because I think my decision to use gold prices as deflator was pretty stupid one, because gold prices have increased much more sharply then overall prices, probably because demand for gold was not much high pre-2000 but it increased sharply in the next 2 decades; that’s my hypothesis. But anyways, I have found old CPI data for Pakistan, and will plug it when I find time.
-
Playing the Devil’s Advocate
I noticed on Saturday while talking with a good teacher, that I play something like Devil’s Advocate pretty often. This happens specifically when discussing about things I have given a good enough thought but I have still been unable to form confident conclusion about any particular side.
I think this practice is helpful in the sense that it allows one to explore various points in the explanation-space of a specific problem or phenomenon in order to ultimately find out which point in that complex space is closer to the truth.
-
Ideal Weblog Platform
Blogger is not the right platform for a tech person to use for long-term. It is only good for non-tech people. If someone has the technical expertise the best way is to compose the blog posts as .md files on Obsidian or VS code and have a static site generator convert them into html files to host somewhere.
But there is one major flaw I have seen in all SSGs is their closed look. By default all of these have an index of posts (maybe along with some excerpts) but not an open feed view of the weblog. This exactly is why Blogger felt compelling to me. This old-school bloggish feeling is not just about nostalgia, there’s an open feel to it, because you don’t get a list of posts that you can open if you wish to. Rather, you automatically get a feed of recent posts by which you get to know what the person has been recently upto. Interestingly, Substack also has this feature but this is specifically an issue with the idea of weblog and not essays, it isn’t much useful there.
Consider the experience of reading a book. You randomly swift through pages, and if something catches your attention, you stop and read around. You do not first have to select a topic from the TOC to decide what to read. Weblog should be like this, where entries are open by default, and the homepage should be a feed of atleast around 20 recent entries from which the person can swift through by scrolling. And if someone wants a list of entries, there should be a table of content for that too (which is something blogger is missing).
Also, I still need to think whether I would want /essays or /weblog in subdomain of the site or in the slug. This is difficult to decide.
I am leaning towards latter because the written content is supposed to be the substantial thing on weblog.tamseel.pk/. What else am I thinking of having on my site? I can’t think of anything. So, why not have it under the main site. Because different subdomain is kind of a different site.
Apparently, it seems no pre-cooked solution would satisfy my needs. I will have to tinker with these SSGs to specifically achieve what I want. I can’t tolerate Blogger’s stupidly long permalinks for long.
-
Steins;Gate
Watching Steins;Gate, all I can say is that the following comment by Talha Ashraf (when I had asked him about Serial Experiments Lain) was so right.
looking at the cover for this [Serial Experiments Lain] anime, hell no!
You know I’ve seen sad movies but the thing with dark animes is that the word sad does not cover it. They’re on a whole different level. A dark anime will reach into your chest, squish your heart, pull it out, put it through a meat mincer, twice, and then put it back in its place while you try to grasp what happened.
There couldn’t have been a more apt description.
Funnily, Serial Experiments Lain wasn’t that dark. In a sense, you can say, it kind of was. But not in that way.
-
Busy Day
After spending hours trying to debug a Critical Error on a client’s WordPress site, realized that I was debugging it in the wrong place. I had SSHed into the VM on GCP while I myself had transferred that site out of GCP to my own server when it was impacted by malware. Now, I was in the GCP server seeing woah, there’s malware here, trying to clean it up and then trying to debug, but nothing seemed to change anything, tried everything. Eventually decided I will move this backup stored in wp-content to my own server and then will set up a new site there and restore that backup, and it was after I had copied the backup to my own server, that I realized that site is being served from my server and not GCP’s. Meh
Turns out, it was a theme issue, which got fixed by replacing theme content manually.
Then spent some time streamlining my personal site publishing workflow. Firstly, I created a proper git rep on my local device and version stored the previous versions in git. Then, I added a mechanism to push the changes live on my server (not git) by just executing ./.deploy.sh
That took some time but not much. But then spent hours trying to figure out how to set up conf on my HestiaCP server which is running apache + nginx reverse proxy, to perform the following two seemingly simple functions:-
- Serve respective html document (domain.tld/essay.html) when user visits a non.html url (domain.tld/essay) if it exists
- When user visits url with .html appended (domain.tld/essay.html), redirect to clean version (domain.tld/essay)
What I essentially wanted was a single cleaned url for every piece of content. Because it doesn’t seem a good practice to have two urls serving the same content.
But it wasn’t as simple as it seems, primarily because of my messy HestiaCP apache + nginx setup. I really should move to pure nginx server but I’m being lazy about that. Anyways, when I figured out it should be done in nginx conf and not apache, the issue was I couldn’t edit the main conf rule because HestiaCP rebuilds it every time. So, I had to add to nginx.conf_custom, but somehow it wasn’t working. Realized, they should be added in nginx.ssl.conf_custom since my site has an https redirect.
But now, one rule was working but not the other. That was because we can’t add a new location tag in the custom conf which is being included from the main conf file. So, I had to use a different rule (Even though this took me much time, but thanks to LLMs, I could get the rules atleast, otherwise I would have to spend a whole day understanding rules, which I wouldn’t have spent on it) for that which wasn’t a / location tag.
This worked, but it broke the www to non-www redirect. Figured out that custom conf is included before the redirect conf and that is why, when a redirect rule is matched in custom conf, later rules aren’t applied. So, I added that part (which hestia has separated out) in my custom conf as well, and finally I had it working.
Still, a url such as http://www.tamseel.pk/internet-companions.html is redirecting 4 times before reaching out https://weblog.tamseel.pk/internet-companions which isn’t great and can obviously be fixed, but maybe that’s for another day.
—–
Also, I listened some more part of Henrik’s recent podcast and there was this part where he describes how the book by a mathematician, with title something like proofs and refutations, was helpful in his internalizing of this method of increasing the surface complexity of the problem – no, I guess that’s not a good description. But, I thought of it like as was talking with Talha on how there are no books on how to think. This seemed to be (according to Henrik’s description) a book that was indirectly about how to think.
-
WhatsWrapped!
Since it’s the last semester going on and our degree is about to end, the idea that MUA had shared first 2 years ago, which I had later become disinterested in, resurfaced in my curiosity.
So I did that—analysis of WhatsApp group chat of our class. Here’s the gist of around 4200 messages sent in span of 15 months.





Note: Words message and edited were WhatsApp generated and thus do not count as valid. The 6th most used word (at 8th no.) was a teacher’s name.
These were the charts I sent in the group and asked my fellows if they were curious to know about something else.
One was about message count of others apart from the top 25. This shows us the total distribution.

Another was about who most used the most used words, specifically the most used word class and the teacher name at 8th no.


The funny part was when the class-fellow who was the 3rd (/2nd) person with highest mentions of that teacher asked when she had taken that teacher’s name. So, I filtered the dataframe with her as sender and text containing that teacher’s name, and sent the results. The results included that instance when she was ranking (satirically) various teachers and some other students were provoking her. The texts are very hilarious but can’t be shared here since they contain TMI.

.
The most tedious part in the whole exercise was mapping the missing phone numbers (those not in contacts) to the names of students by searching for any instance when a text containing the roll number or other identifiable information was shared from that number.
Anyways, this was the overview of the group which was formed around 4th semester when morning and replica classes were merged. In the earlier group of morning class, messages were sent in an amount incomprehensible for me. Explains why I had joined that group several months later.

The part that hit the most was when I thought of converting my R script for analysing whatsapp chat export into an R package, and found that someone had already built that 😭. Had I known that before, I wouldn’t have needed to write that script. (Actually, I am not sure. I probably wouldn’t have found this interesting if I wasn’t writing the code. Maybe I would have. Who knows?)
-
Anti Research
So one of our professors assigned us some group presentations. And there was one topic or argument, and he asked a bunch of students to present or debate or give arguments in favor of it (whatever that was) and then to a bunch of other students ask to prepare presentation with arguments against that thing. Then, he explained how you have to consult sources, like research papers, news articles, and this and that in order to form basis of your arguments. Like you have to first review such material and then you use those sources to back your argument.
This pissed me off so much. I asked what if the topic that I have been asked to present in favor of, is something I am against, and same thing can apply vice versa. He didn’t understand my point and said that you have to use sources and blah blah. But I was so angry and I think I couldn’t control my frustration and that’s why I was unable to articulate my point clearly, and it came out something like, ‘it’s not the way it is. Something either is, or it isn’t. How can one pre-decide if it is or it isn’t.’ Yeah, I know it was very weirdly phrased. My voice this time was slightly loud and had some kind of argumentative tone in it. He replied the same blah blah but at the end he said something like, that’s what research is; to find things out. I knew it wasn’t any use. I said nothing.
Two of my friends later told me that sir didn’t understand the question. And on some level, I think that yes he didn’t understand my question, but not because I articulated it badly (my friends were smart enough to understand me, he wasn’t?), it’s because he had been trained and indoctrinated in that manner.
There is an enormous amount of people who don’t understand what research is. They think research or science or whatever the academia is supposed to do, is to find out things (which I think is correct). But their way of finding things out is so wrong. They think of it like finding the right source to quote, or finding the right data to analyze, or the right econometric model to apply, or finding some other right thing to do, and this kind of finding will result in production of some academic work. Yes, it will produce academic work but not valuable work.
What a true researcher simply needs to find is truth. Some overlooked, un-discovered piece of truth. That is the end. Rest are all means. Why don’t people such distinguished understand a matter that simple. You can’t give conclusions to people, and ask them to research arguments in favor of the conclusion because that exactly is the opposite of research. IT’S ANTI-RESEARCH!!
I don’t know to what extent this applies to academia at other places but atleast here, we are all producing an enormous amount of anti-research work.
Thank you for coming to my Rant-Talk.