Feed Link to Atom feed of posts

Micro Blog

two hundred ninety-six tiny posts on miscellaneous topics.

7 ↩️ 2 🔁 2 ♥️ via Ivory for Mac

My fork of the digest has accumulated enough new features that I'm getting antsy of writing , which is what the original is written in. I’m thinking of a rewriting it, but I'm conflicted between using , which is my comfort language, , which may be easier for others to contribute to, and , which I want to learn.

The program involves fetching a bunch of JSON data from the internet, doing some statistical calculations on that data, and then outputting an HTML page.

What do you think I should rewrite it in?

Haskell
Golang
Rust
Something else
146 votes
1 ↩️ 0 🔁 2 ♥️ via Phanpy

One of my biggest regrets of my life is not being able to watch on stage because I was stuck in a typhoon, just 100 meters away from the stage. In grief, I gave up listening to them almost completely for many years after that.

1 ↩️ 0 🔁 1 ♥️ via Elk (canary)

I could hear the echos of the songs they played from where I was stuck, utterly drenched and tired. The far-away sounds still haunt my dreams.

0 ↩️ 0 🔁 1 ♥️ via Phanpy

I almost died of hypothermia that night but that's a story for another time.

1 ↩️ 0 🔁 0 ♥️ via Ivory for Mac

Spending my Sunday cleaning up:

$ nix-collect-garbage -d --delete-old
4122 store paths deleted, 5492.07 MiB freed

1 ↩️ 2 🔁 4 ♥️ via Ivory for Mac

I love having waterproof electronics because when they get dirty, I can wash them with water and soap, like this:

0 ↩️ 0 🔁 1 ♥️ via Ivory for Mac

Unfortunately, the only truly waterproof electronic thing I have is my Garmin watch, which I do wash with soap occasionally. In fact, that is the officially recommended way to clean it.

2 ↩️ 1 🔁 2 ♥️ via Ivory for Mac

Seems like almost everyone uses tail or some variation of it to follow log files. Well, I'm glad that there is at least one person out there who uses less to follow logs like me.

2 ↩️ 5 🔁 11 ♥️ via Ivory for Mac

I've been trying to build a personal for for myself for some time and I've got a basic version working. Here's how it works:

1. Fetch posts in my home timeline for last 24 hours.
2. Apply my Mastodon filters on them to remove unwanted posts.
3. Remove private posts.
4. Remove posts that I have liked, boosted or replied to.
5. Remove foreign language posts.
6. Fetch like, boost and reply counts for the posts from their origin server.
7. Partition posts into boosts and non-boosts, and apply next steps for each partition separately.
8. Assign scores to posts using this formula:
`score = geometric_mean(like_count, boost_count, reply_count) / square_root(follower_count_of_poster)`
9. If a post contains any of my specified favourite tags, increase its score by multiplying it by a constant factor (I use 1.2).
10. If a post is from any of my specified favourite accounts, increase its score by a constant factor (I use 1.2).

1/2

1 ↩️ 0 🔁 2 ♥️ via Ivory for Mac

continued …

11. Reduce the scores of each post by a factor of `power(2, (time_now - post_create_time)/half_life)` where `half_life` is something like 6 hours. This causes older posts to have lower scores.
12. Group posts into threads they are part of, if any. Then select the highest scored post from each thread. This prevents posts from popular threads from taking over.
13. Sort posts by their score and select top 10% of posts.
14. Randomly select some posts from the bottom 90% of posts.
15. Render these posts as a webpage and serve on internet.
16. Run this entire process twice or thrice a day, and read the rendered webpage, interacting with the posts.

The initial inspiration for this algorithm came from @MattHodges's work (steps 1–4, 7–8, 13, 15) that I improved upon (steps 5–6, 9–12, 14, 16).

I have few more ideas like reducing the scores of posts with certain tags, but the current algorithm works pretty well for me. I'm also thinking about how to make it near-realtime instead of a batch process.

2/2

4 ↩️ 6 🔁 11 ♥️ via Phanpy

I feel happy when I find people who are/were programmers and also write/wrote fiction . Like here's a person who has mastered the languages of both the natural and machine world. It give me hope for my own creative endeavors beyond .

1 ↩️ 0 🔁 2 ♥️ via Phanpy

Today, after a long time, I'm playing my playlist of songs I want to learn to play on drums. Some are easy to play, some are difficult, all fun though.

0 ↩️ 0 🔁 2 ♥️ via Phanpy

I must have been very ambitious back then because this playlist has My Favorite Things by John Coltrane in it. 🤯

1 ↩️ 0 🔁 0 ♥️ via macos shortcuts

Injured my back while lifting the baby. Is this what being old feels like?

1 ↩️ 16 🔁 16 ♥️ via Phanpy

Finished reading "Type Systems for Memory Safety" borretti.me/article/type-syste by Fernando Borretti. It is a comprehensive review of various type system features across different that are used to enforce (varying degrees of) memory safety at compile time.

As expected, it talks a lot about because Rust is probably the most used PL with compile time memory safety, but it features other languages like Ada, Val and Austral as well.

An interesting read if you are interested in .

3 ↩️ 0 🔁 5 ♥️ via Phanpy

I wonder where this "it's impossible to quit Vim" meme comes from. I have successfully quit Vim dozens of times in my decade long career.

0 ↩️ 0 🔁 3 ♥️ via Ivory for Mac

If you are wondering why there was a gap of 40 minutes between the posts, I was busy trying to quit Vim.

1 ↩️ 1 🔁 3 ♥️ via Ivory for Mac

Read noidea.dog/glue by @whereistanya and found this:

> In fact, doing glue work too early can be career limiting, or even push people out of the industry.

This reminds me of the time when I was the only senior (and glue) engineer in an important team of a big e-commerce company in India. I was coordinating seven projects between multiple teams, seting up the CI process, doing code reviews, mentoring multiple people, writing design documents etc.

At the end of the year, my manager gave me a bad review saying I didn't have enough code contribution. Ironically, that was probably the year when I had most impact on a company’s bottom-line. But the bad review after such hard work broke my heart. I switched to a different job soon after. It has been the shortest work stint of my whole career (1.25 years).

It's great to be a glue engineer if that's what you love doing. But it is very important to make sure that your contributions are counted.

0 ↩️ 0 🔁 1 ♥️ via Ivory for Mac

To be honest, the aforementioned company was infamous for its bad work culture. A friend had a bet going with me that I wouldn't last even a year in it. Well, I won the bet but at the cost of my mental health.

0 ↩️ 0 🔁 0 ♥️ via Phanpy

I'd also like to know if removing the old posts using the maintenance command removes them from the search index.

1 ↩️ 0 🔁 0 ♥️ via Ivory for Mac

I really miss a conference in . There used to be Functional Conf, which at least covered functional PLs, but they are not running anymore. And I can't be bothered to secure a visa to go to abroad ones. :sadface:

0 ↩️ 0 🔁 4 ♥️ via Ivory for Mac

Being a to a new human, I can never tell why I'm feeling unwell. Is it lack of sleep? Stress of feeding the baby? Stress of work? Daily commute wearing me down? An infection? Am I just hungry? Ate something wrong yesterday? Am I unwell because the baby is unwell? Or is it the other way? I have no clue.

2 ↩️ 0 🔁 2 ♥️ via macos shortcuts

TIL that I have to run `home-manager expire-generations` before running `nix-collect-garbage` to actually delete all the old stuff in my store. Till now I kept wondering why I have five versions of VSCode installed on my machine.

0 ↩️ 0 🔁 5 ♥️ via Phanpy

The good thing about having cucumber juice is that you are well hydrated. The bad thing about it is cucumber.

0 ↩️ 0 🔁 2 ♥️ via macos shortcuts

Is it weird to crave ice-cream all the time because you haven’t slept a full night in over a year? Too bad, there is no ice-cream in the fridge because I ate all of it already.

0 ↩️ 0 🔁 3 ♥️ via macos shortcuts

I’ve been on Mastodon for nine month now, so maybe I should make an introduction post now?

0 ↩️ 0 🔁 3 ♥️ via Ivory for Mac

Me starting to learn in 2023:

HEY COMPILER, if you know where to add the missing semicolons, why don't you add them yourself‽

5 ↩️ 25 🔁 27 ♥️ via Ivory for Mac

This post led me to explore clients with unconventional interfaces and I found some interesting one:

– Ebou (terhech.de/ebou) has the layout of a desktop messenger: leftmost column shows account names that have posted recently; clicking on them shows recent posts by them in an adjacent column, and clicking on the posts shows their conversation threads in the next column.

– Tut (tut.anv.nu) is a terminal UI client inspired by Vim, the code editor. It supports Vim like keyboard navigation as well.

– Macstodon (github.com/smallsco/macstodon) is a Classic Mac OS app, and looks kind of like old-school IRC clients.

– Stomp (stomp.social) run on Apple watch. You can scroll timelines or mention or lists but only one post at a time.

– Mastotron (github.com/mastotron/mastotron) completely eschews the concept of linear timelines and instead presents posts as graph of connections.

If you know any other such unconventional clients, please feel free to add to this thread.

2 ↩️ 0 🔁 3 ♥️ via Ivory for Mac

Forgot to mention Toot.

– Toot (github.com/ihabunek/toot) is a CLI client, which provides you commands to interact with Mastodon. For example, to see the recent posts by me, you can run `toot timeline -1 -a abnv@fantastic.earth`. You can also use it to automate interactions. For example, to follow accounts that recently made posts with the Haskell tag on the discuss.systems instance, you can run: `toot timeline -1 -i discuss.systems -t Haskell | grep -oP "@[^ ]*@[^ ]*" | sort -u | xargs -n1 toot follow`. I love it!

0 ↩️ 0 🔁 1 ♥️ via Ivory for Mac

Analysed the run time data from today's 10km race.

5%ile = 52 min
10%ile = 55 min
25%ile = 60 min
50%ile = 68 min
75%ile = 79 min
90%ile = 87 min
95%ile = 95 min

1 ↩️ 0 🔁 5 ♥️ via Ivory for Mac

A month later, most of my runs are in 5k+ range. Though my pace hasn't improved much, my endurance has certainly gotten better. I'm able to run 15k+ every week now. One more month to go before the race.

3 ↩️ 3 🔁 18 ♥️ via Elk

After three months of Couch-to-10k training, today I ran the 10k . I'm so happy to see the progress over time. Next, I'll rest for three days and then start training for the next 10k race aiming for a better time.

5 ↩️ 2 🔁 7 ♥️ via Ivory for Mac

fantastic.earth went down for few hours today because decided to build the new nodejs package from scratch on the server. And that ate all the CPU and memory, causing the server to become unresponsive. I need to figure out a remote building strategy for Nix so that this doesn’t happen again.

2 ↩️ 1 🔁 3 ♥️ via Ivory for Mac

@arun and I have finally succeeded in setting up the remote build for the fantastic.earth setup.

We ran into an issue where Nix runs a command on the remote machine with sudo, but we didn't want to give sudo permissions to the remote build user. It turns out, sudo is not really needed and the build works fine without it. So @arun hacked up a no-op sudo substitute, which when put in the $PATH satisfied Nix and the build worked. ¯\_(ツ)_/¯

Finally, no more build caused downtimes!

0 ↩️ 0 🔁 0 ♥️ via macos shortcuts

I really wish feed readers would support syntax highlighting of code in blog articles. Then I’d finally have no reason to go to blog websites, and would read everything from the comfort of my reader.

0 ↩️ 0 🔁 0 ♥️ via macos shortcuts

I’ll never forgive Sword Art Online for making Isekai so popular that 90% of anime made these days are Isekai. The deluge of so many mediocre Isekai anime has completely destroyed my interest in the subgenre that used to me one of my favourite.

1 ↩️ 0 🔁 1 ♥️ via macos shortcuts

The biggest problem with mechanical is that you can buy one only once in ten years but the new models keep coming out all the time.

0 ↩️ 0 🔁 0 ♥️ via trunks.social

Done with the first day of the course. I have a better understanding of ownership in than before, but coming from garbage collected languages like Java and Python, I am still struggling a bit with move and copy semantics of variables.

0 ↩️ 0 🔁 0 ♥️ via Phanpy

Now that will have list import and export in version 4.2, someone should build a service to share lists. That would make it easier for new people to join and get started.

0 ↩️ 0 🔁 2 ♥️ via Ivory for Mac

Switched to yearly licence for @ivory after some fighting with the Apple payment system. I hope Ivory adds more useful features to make it worth it.

0 ↩️ 0 🔁 0 ♥️ via Web

My today's cab's engine sounds like a sports car one. Though there is no opportunity to go fast because of this terrible traffic. Maybe the driver uses this car for racing in nights?

0 ↩️ 0 🔁 2 ♥️ via Ivory for Mac

Well, I filed the tax returns with more than five hours to go before the deadline, so I'd call it a great success.

0 ↩️ 0 🔁 2 ♥️ via trunks.social

Made some code multithreaded today. Now it runs in 30 minutes instead of 2 hours. Protip: always log the thread name in multithreaded programs.

0 ↩️ 0 🔁 3 ♥️ via macos shortcuts

is playing me 80s Bollywood disco music today for some unknow reason. This is not a complaint.

0 ↩️ 0 🔁 2 ♥️ via Ivory for Mac

My shoes used to wear out on the inside of the feet because I have flat feet, and caused me knee pains. So I started using the foot arch support insoles for correction, and then my shoes started wearing out on the outside of the feet. ¯\_(ツ)_/¯

Now, I alternate between using and not using the insoles so that my shoes wear out evenly.

1 ↩️ 0 🔁 0 ♥️ via trunks.social

I just noticed that @trunksapp app has gained inline threading of posts in timelines! This makes it so much easier to read threads. However it sorts threads by the first post date instead of last, which causes new replies to old posts to appear much later in timelines. I wish they'd fix this.

1 ↩️ 0 🔁 1 ♥️ via trunks.social

I took two back-to-back early morning flights last weekend and only today I feel rested enough to do any mental work. I'd have recovered quicker but baby fell sick and I couldn't sleep at nights. I was on vacation the whole week but all I could do was to watch Netflix and scroll Mastodon. Couple of more days left in my vacation, in which I hope to write and publish a blog post.

0 ↩️ 0 🔁 1 ♥️ via Elk

Of course, I wasn't able to write a blog post. Between caring for the baby, working for my job, and training for the 10k run, I barely have enough mental and physical strength left to do anything else productive. It feels bad but there is nothing I can do but persevere till I build enough stamina to be able to do my other hobbies. On the bright side, I can run over 8km now and not almost die afterwards.

0 ↩️ 0 🔁 3 ♥️ via Phanpy

I'm not getting a Threads account. It took a lot of effort for me to get out of Facebook's grip, I'm not going back just like that.

2 ↩️ 0 🔁 2 ♥️ via Ivory for Mac

I've been writing a lot of code these days after a gap of five years, and while newly introduced generics make working with collections tolerable, the error handling is still terrible. Also, I’m never sure if I should be using pointers or values. Are there any established practices for writing good Go these days?

1 ↩️ 2 🔁 4 ♥️ via Ivory for Mac

Some interesting (at least to me) charts from my training data:

1. Average running power seems to be linearly correlated to running pace.
2. Average heart rate seems to be correlated to running pace as a logistic curve.
3. Average running cadence seems to be uncorrelated to running pace.

0 ↩️ 0 🔁 0 ♥️ via Ivory for Mac

Crunched some numbers today and found that I made three times more money (adjusted for inflation) in last five years as a senior software engineer than I made as a junior and mid-level engineer in the ten years prior to that.

2 ↩️ 9 🔁 18 ♥️ via Ivory for Mac

I ported @mattmight’s CPS conversion code (matt.might.net/articles/cps-co) to and after some fighting with the type system, it worked! To make the interpreters work with the Cont monad, I had to remove recursive lets and hence, functions being able to call themselves recursively, but the rest works fine.

The attached images show the conversion of the Fibonacci function into the CPS version.

3 ↩️ 0 🔁 0 ♥️ via Ivory for iOS

After upgrading my server to 23.05, my Nix based CI that runs as a service fails to run `nix-build` with the error "unable to mount /proc". Something has changed in Systemd sandboxing that is breaking my previously working code. Does anyone have any clues?

2 ↩️ 0 🔁 0 ♥️ via Ivory for Mac

Update: removing these lines from service config fixed the issue:

ProtectKernelLogs = true;
ProtectKernelModules = true;
ProtectKernelTunables = true;

Though, I feel like this is something that should be addressing instead.

EDIT:

Found out that having the ProtectKernelModules flag does not actually cause any issues. So the fix now it to remove ProtectKernelLogs and ProtectKernelTunables flags.

0 ↩️ 0 🔁 1 ♥️ via Ivory for Mac

Sometimes I have my computer read my posts to me aloud for the purpose of proofreading. It is really funny to hear it say "Right arrow curving left" again and again when it encounters the footnotes.

0 ↩️ 1 🔁 0 ♥️ via Ivory for Mac

Latest software update added running dynamics measuring to my watch! It's a completely unexpected but great surprise. But now I have to worry about my low vertical ratio.

0 ↩️ 1 🔁 2 ♥️ via Ivory for Mac

OK @ivory, you win. You've made a subscriber out of me. Now please implement post threading in the timelines. I really hate reading posts in reverse order.

1 ↩️ 0 🔁 1 ♥️ via Elk

I love @ivory, it is probably the best client there is, but I really miss threaded posts in my timeline, which @phanpy and @elk do really well. Another feature I wish Ivory had is Boost carousels from Phanpy. If Ivory adds these two features, I'd use it all the time, on all my devices.

1 ↩️ 2 🔁 13 ♥️ via Phanpy

Today I ran my first 5k in the Couch-to-10k training. It was hard but I feel really good about it. It took 6 minutes more than what it used to take pre-pandemic, but I'll get back there with time.

7 ↩️ 1 🔁 3 ♥️ via Phanpy

Today I had to write code that looked like this:

```
blah.overrideAttrs (oldAttrs: {
x = oldAttrs.x.overrideAttrs (oldAttrs: {
y = oldAttrs.y.overrideAttrs (oldAttrs: {
outputHash = "xxxxx";
});
});
});
```

folks, is there a better way to do this kind of nested overriding of attributes?

1 ↩️ 0 🔁 0 ♥️ via Phanpy

Trying out the client @phanpy for the first time:

— Rounded corners everywhere, which is a little too much for my taste.
— I love the Boost carousels, and clean post threading, and post detail popups.
— The light mode somehow looks better than the dark mode, which is very unexpected because I use almost everything in dark mode.
— Really missing having keyboard shortcuts for navigation and actions.

I'm going to try it for a couple of days to see how it compares to my current client @elk.

1 ↩️ 0 🔁 0 ♥️ via Phanpy

Also, I don't like how @phanpy hides the multi-column view under Shortcuts settings, and how changing the timeline from home to something else reverts the view to single column.

1 ↩️ 0 🔁 1 ♥️ via Phanpy

Update after two weeks of trying @phanpy: I love it and now I am using it full time in the browser (I use @ivory elsewhere). I still miss the keyboard navigation and shortcuts though, but Phanpy is so much better for quickly going over hundreds of posts when I wake up. I'm guessing that's because of the way it groups boosts.

0 ↩️ 0 🔁 0 ♥️ via Web

Drove a car for 84 kms today, the longest I've ever. Can't say that I'm a fan of cars yet, but it wasn't as bad as I had imagined it would be.

0 ↩️ 2 🔁 3 ♥️ via Elk (canary)

Tired: using to write formal emails.
Wired: using AI to turn emails in pop songs:

(Verse 1)
Hey Josh,
I've got a question for you.
Can you tell me when the slides will be available?
I've got a meeting that might conflict,
So I need to know the schedule.

(Chorus)
Hey Josh,
I need to know the timing.
Can you please let me know?
I'm counting on you,
So don't let me down.

(Verse 2)
I know you're busy,
But this is important to me.
I need to know the schedule,
So I can plan accordingly.

(Chorus)
Hey Josh,
I need to know the timing.
Can you please let me know?
I'm counting on you,
So don't let me down.

(Bridge)
I know you'll come through for me,
Josh.
You're always there for me,
And I appreciate it.

(Chorus)
Hey Josh,
I need to know the timing.
Can you please let me know?
I'm counting on you,
So don't let me down.

(Outro)
Thanks, Josh!
I knew I could count on you.

0 ↩️ 0 🔁 0 ♥️ via Phanpy

The downside is the I have to face outside. I forgot to wear a pollution mask today, and now I'm fighting my allergies. When running, I can't even wear a mask, so I need to wake up crazy early like 5am to avoid all the dust and smoke.

0 ↩️ 0 🔁 0 ♥️ via Elk (canary)

I generated these by taking screenshots using headless Chrome, like this:

`chrome --headless --disable-gpu --screenshot --window-size=500,255 <url>`

That's why they look so unrefined.

1 ↩️ 0 🔁 0 ♥️ via macos shortcuts

Configured a macos shortcut to post to so that I can be even more of my lazy self.

0 ↩️ 0 🔁 0 ♥️ via Elk (canary)

I'm really starting to like this shortcut. Now I can post more of my random thoughts in much quicker way!

1 ↩️ 0 🔁 0 ♥️ via Elk (canary)

How do I find which revision of nixpkgs-unstable is available in cache for darwin-x86_64? Every time I update to latest unstable revision, I have to rebuild a lot of packages and it takes hours.

1 ↩️ 0 🔁 0 ♥️ via trunks.social

Left the air purifier running at home for three weeks of vacation, came back to clean air and the unexpected electricity bill.

0 ↩️ 0 🔁 0 ♥️ via trunks.social

And the kid forget how to walk because we left the walker at home. Though it came back to them in 5 minutes.

1 ↩️ 0 🔁 1 ♥️ via Elk (canary)

Pulled some visit numbers for my website abhinavsarkar.net. It seems it is slightly more popular in months I don't publish new posts, as compared to four years ago. But on the other hand, my recent posts don't get as much traffic as the ones before.

3 ↩️ 1 🔁 2 ♥️ via Ivory for iOS

One downside of purely chronological timeline in is that my home feed is mostly silent during my day time, and most active during my night time. So I read all the interesting stuff hours later, and I have to scroll my entire feed for that.

I'd love it if one of the third party clients can surface most interesting
posts by locally running some algorithms based on boost and favourite counts.

1 ↩️ 0 🔁 0 ♥️ via Web

Installed MonaApp for on MacBook. I can’t say I like its old-school Mac sliding panes UI. But it does have scores of settings and seems pretty configurable. Maybe I’ll give it a shot later.

1 ↩️ 0 🔁 0 ♥️ via Web

Ran into a bug in @MonaApp almost immediately. It assumes that posts have character limit of 160, which is not true on my server.

1 ↩️ 0 🔁 1 ♥️ via Ivory for iOS

I wish readers supported dark mode. I have dark mode turned on everywhere, but I still have to road PDFs like cavemen staring into blindingly bright fires.

1 ↩️ 1 🔁 1 ♥️ via Elk (canary)

OK great! The output of `pipenv install` is actually not fixed and fixed-output derivation does not work either. If someone with more experience in packaging applications for can help me out, I'd be very grateful.

3 ↩️ 1 🔁 2 ♥️ via trunks.social

Our small instance has 99.91% uptime according to DO uptime check. That is 39 minutes of downtime in 30 days. I wonder how other small instances are doing.

I haven't personally experienced the downtimes though. They must be happening while I'm asleep.

2 ↩️ 0 🔁 0 ♥️ via Elk (canary)

I wonder if I should write a rebooster script that will boost my (or your) certain posts periodically, for a week or a month. Would people be interested in that?

1 ↩️ 0 🔁 0 ♥️ via Elk (canary)

I've been feeling unusually sleepy today morning, and I just realized that I forgot to drink today. I wonder if I can still drink a cup without wrecking my early sleep plan.

0 ↩️ 0 🔁 0 ♥️ via Elk (canary)

Using the iPad Air as an extended screen for my MacBook makes me wish I bought an iPad pro instead. :(

0 ↩️ 0 🔁 4 ♥️ via Elk (canary)

One downside of using dark mode everywhere on my laptop is that I rarely notice the dirt slowly accumulating on the screen. So I guess that's a ... win-win?

2 ↩️ 0 🔁 3 ♥️ via trunks.social

This maybe a specific thing, I wonder why nobody turns off their vehicles at traffic signals. Even if you don't care about the environment, why not save some money, fuel being so expensive now.

3 ↩️ 0 🔁 0 ♥️ via Web

One think no one tells you about having children is how difficult it is to get the forever looping baby rhymes our of your head.

3 ↩️ 0 🔁 1 ♥️ via Elk (canary)

Updated to the latest version and had to input my password three times. Sometimes I rue the day I chose the super long password for extra security.

1 ↩️ 0 🔁 0 ♥️ via Tusky

Yep, I have the . In retrospect, I should have guessed this when I drank 2l of water in the morning itself.

1 ↩️ 0 🔁 1 ♥️ via Elk (canary)

About 15 days later, I finally felt recovered enough to pre-sickness level. Is it me or the recovery time increases with age?

1 ↩️ 0 🔁 1 ♥️ via Elk (canary)

Spent hours trying to debug this memory leak, just to fail again and again. Finally, decided to read the docs of all libraries used and the first one itself says:

0 ↩️ 0 🔁 2 ♥️ via Elk (canary)

Lesson learned: thoroughly read the docs and source of your dependencies. Or at least skim them once.

0 ↩️ 1 🔁 0 ♥️
An apt metaphor for most of the corporate jobs is painted right on my office building's wall.
0 ↩️ 0 🔁 1 ♥️ via Elk

Wrote the script in and found myself mixing `filter`, `itertools`, `yield`, generator expression and list comprehensions, and `for` loops. It offends me to use so many different control flow mechanisms at the same time. I feel like there must be a better way to do this, but I'm no Python expert.

1 ↩️ 0 🔁 0 ♥️ via Tusky

is very dry this year because it hasn't rained in over four months. I don't remember when was the last time it didn't rain in winter here. Thinking of getting a humidifier, but then it may start raining this month.

1 ↩️ 0 🔁 0 ♥️ via Ivory for iOS

Someone commented just “Roll credits!” on my post and I think l am either too old or too non-american to understand what it means. Anyone's got any clues?

2 ↩️ 1 🔁 5 ♥️ via Elk

Upgraded my website generator to use 9.4 and it took two hours to build. Well, that's the cost I pay for using bleeding edge software.

0 ↩️ 0 🔁 0 ♥️ via Elk

To clarify, it wasn't GHC that took two hours to build. It was my website builder which uses and Shake.

0 ↩️ 0 🔁 2 ♥️ via Tusky

My cab is taking an unusual route today and as a result I am back in parts of that I have not been in many years. Things have changed but at the same time, they seem very much the same.

I've lived in so many different parts of Bangalore over the last decades that travelling within the city sometimes triggers waves of nostalgia.

1 ↩️ 0 🔁 0 ♥️ via Elk

I should integrate nvd in my deploy script to be able to see diffs.

1 ↩️ 0 🔁 2 ♥️ via Elk

Went to a chafé today for some tea. Some people were sitting with their laptops as usual. But there was this woman sitting next to me with an entire server computer with her. I didn't disturb her.

3 ↩️ 0 🔁 3 ♥️ via Elk

On the other side of my table was sitting a guy with a small laptop, wearing a black hoodie, with the hoodie on in this heat. I overheard him say, “The deployment is broken because some new guys checked in some code in our repo. I think the right way to solve this is to break our repo into smaller repos and create more microservices from them.” I didn't disturb him either.

0 ↩️ 0 🔁 2 ♥️ via Tusky

I hate how the hum of the cab engine hides the bassline of the I listen to while commuting. But I'm too cheap to buy good headphones with noise cancellation. So I guess this is my life now.

0 ↩️ 1 🔁 2 ♥️ via Web

Went for a morning walk after a long time. It's strange how expending energy makes us feel better compared to conserving energy as a couch potato.

2 ↩️ 1 🔁 4 ♥️ via Elk

A random Netflix show about a guy going around the world on a inspired me to dust off my bike and go out for a ride.

Almost immediately I was reminded of why I don't cycle in anymore: Dust and smoke everywhere. Even with mask and goggles on, it was in my nose and eyes. Not to mention, the broken roads with pot holes and the terrible traffic.

5 years ago, I used to commute to work daily on my bicycle. Now it is hard for me to even imagine doing that. 😭

1 ↩️ 0 🔁 2 ♥️ via Tusky

Now my website's search indexes my Mastodon posts as well, along with my blog posts and notes. Another step towards .

0 ↩️ 0 🔁 0 ♥️ via Elk

Switched from LocalStorage to IndexDB for caching the search index on the browser. Apparently, that's the recommended thing now. 🤷

0 ↩️ 0 🔁 2 ♥️ via Web

I've started downloading files to the temp directory now. That way, I don't have to go back and delete all the junk later on. And if something is important enough to be kept around, I move it the proper location fearing the automatic deletion.

1 ↩️ 0 🔁 1 ♥️ via Elk

Turns out it was because of adaptive charging in which reduces the charging rate when you charge the phone at night. It expects me to charge the phone for the whole night, but I kept unplugging it in the middle of the night. Turned off adaptive charging and my phone is fully charged now.

0 ↩️ 0 🔁 0 ♥️ via IceCubesApp

I have feed reader apps on my phone, my iPad, my laptop, and my Kindle. Now to actually read all these blog posts ...

1 ↩️ 2 🔁 5 ♥️ via Tusky

The Man-running-to work-with-a-briefcase metal statue at the Sarjapur junction makes me feel understood when I pass it by on my way to work.

0 ↩️ 0 🔁 0 ♥️ via Elk

I tried out @elk and I've decided that I'll switch to be as soon as they add support for hashtag and account lists.

0 ↩️ 0 🔁 1 ♥️ via Tusky

Some days I wake up inexplicably even after a full night's sleep. Today is one of those days.

0 ↩️ 0 🔁 0 ♥️ via Web

Spent the day thinking about how to compile my small language with coroutines to Javascript, without actually doing a CPS transform of the AST. I think I may have a solution involving yield* and setImmediate. Proof of concept yet to be done.

1 ↩️ 0 🔁 1 ♥️ via Web

Last week I spend almost three days to figure out a bug in my code. And the final fix was a single line change. It was both infuriating and exhilarating at the same time.

3 ↩️ 0 🔁 2 ♥️ via Web

I really like reading things on my Kindle. I wish there was an easy way to read all these interesting blog posts on it. Maybe a service to which I can send URLs, or points them to an RSS feed and it sends me a book for them.

0 ↩️ 0 🔁 1 ♥️ via Tusky

Is it me or this year's seems too heavy on automata, game plays and simulations? I was hoping for more parser and interpreter related problems.

1 ↩️ 0 🔁 1 ♥️ via Web

It worked! Couldn't figure out how to patch the service, so I copied the file, made the change in it, and replaced the service module with the copied one.

0 ↩️ 0 🔁 2 ♥️ via Web

Decided to play some old school today as work , instead of the usual. Liking it so far.

1 ↩️ 0 🔁 0 ♥️ via Web

The new Arctic Monkeys album is even more mellow than the previous one. Maybe I'll grow to like the new AM, but for now I miss the old one.

0 ↩️ 0 🔁 0 ♥️ via Web

TBH, I like the albums in the middle the most, around early 2010s. When they started out to mellow out, but were still Rock like.

0 ↩️ 0 🔁 1 ♥️ via Web

I use the bookmarking feature on as a read-later list to mark interesting posts that I want to read in depth, but I can't at the moment while scrolling the timeline. After reading them later, I remove the bookmark. Am I doing it right?

0 ↩️ 0 🔁 2 ♥️ via Web

I'm not doing all of this year after doing it for past couple of years. Most of the problems seem very similar to those in previous years. So this time, I'm going to pick only the ones that truly interest me.

1 ↩️ 0 🔁 1 ♥️ via Web

My plan this year was to solve them in . Unfortunately, Zig 0.10 is not available on and I was too lazy to install it manually. So I defaulted to .

0 ↩️ 0 🔁 0 ♥️ via Tusky

Also hooked up IFTTT to hit a webhook to deploy my website when I post a toot here.

0 ↩️ 0 🔁 0 ♥️ via Web

Looks like I'll also need to write a parser and use a tree zipper. Great!

1 ↩️ 0 🔁 0 ♥️ via Web

Saw someone's toot about trying to learn how to drive a geared car (or drive stick, as they say in USA). And here I am driving a geared car, and hating it, being anxious all the time about missing gear changes and driving in wrong gear. I'd love to not drive stick, but I can't buy a new car right now.

1 ↩️ 1 🔁 2 ♥️ via Web

I like solving #AdventOfCode problems with one liners, and I cannot lie (split into multiple lines below for your convenience):

solve n input =
(+ (n - 1))
. fst
. fromJust
. find ((== n) . length . snd)
. zip [1 .. ]
. map nub
. transpose
. map (flip drop input)
$ [0 .. (n - 1)]

1 ↩️ 0 🔁 0 ♥️ via Web

Turns out, ChatGPT cannot write quines, at least in Haskell. Quite a serious limitation.

0 ↩️ 0 🔁 1 ♥️ via Web

Took my 3am server admin sleep break to drink a cup of water and to ban those DDOSsing domains.

0 ↩️ 0 🔁 1 ♥️ via Web

Finally found time to catch up with my feed reader.

0 ↩️ 0 🔁 1 ♥️ via Web

If you are running a instance, be sure to ban the bad bots using Fail2Ban. Otherwise they'll soak up all your bandwidth by crawling the public assets and media.

0 ↩️ 0 🔁 0 ♥️ via Web

TBH, this is how it looked before I golfed it down:

1 ↩️ 1 🔁 1 ♥️ via Web

The upgrade to 22.11 worked almost smoothly! I had to
— disable a python service because of "infinite recursion encountered" error (I wanted to disable it anyway),
— change config of one service, and
— fix dependencies of two services.

0 ↩️ 0 🔁 1 ♥️ via Web

Advent Of Code '22 Day 1 was easy

Solved in GHCI REPL:

λ> import Data.List.Split (splitWhen)
λ> maximum . map (sum . map read) . splitWhen (== "") . lines <$> readFile "input1"
λ> import Data.List (sortOn)
λ> import Data.Ord (Down(..))
λ> sum . take 3 . sortOn Down . map (sum . map read) . splitWhen (== "") . lines <$> readFile "input1"

0 ↩️ 0 🔁 0 ♥️ via Web

I'm a bit disappointed that the hashtag is not about the 90's movie about a speeding bus that could travel in time.

1 ↩️ 0 🔁 0 ♥️ via Tusky

I've found and followed so many interesting people from different walks of life on Mastodon in the last one week. I don't think this would be possible on the Twitter of now.

1 ↩️ 0 🔁 1 ♥️ via Web

: Mastodon creates and exposes a public key for each user at <instance-url>/users/<username>.json.

I wonder if that can used for signing things we put on internet.

0 ↩️ 0 🔁 0 ♥️ via Web

I hate waking up and finding spam comment on my blog 😠

0 ↩️ 1 🔁 0 ♥️ via Web

Trying to figure out how to write health checks for on . Can't find anything on Google. Netdata docs are not straightforward.

2 ↩️ 1 🔁 0 ♥️ via Web

/ protip for people an Nginx server: add the following line to your Nginx virtual host config so that you can be found by a search like @me@yourdomain.com:

rewrite ^/.well-known/webfinger.* https://<your-mastodon-host>/.well-known/webfinger?resource=acct:<your-username>@<your-mastodon-host>? permanent;

1 ↩️ 1 🔁 1 ♥️ via Web

For example, my server at abhinavsarkar.net has this config:

rewrite ^/.well-known/webfinger.* https:// fantastic.earth/.well-known/webfinger?resource=acct:abnv@fantastic.earth? permanent;

(Minus the space after https://. Mastodon converts it to a link so I had to put the space.)

1 ↩️ 0 🔁 0 ♥️ via Web

So you can find me in Mastodon search by @me @abhinavsarkar.net

(Minus the space between. Mastodon automatically convert it to the resolved account so I had to put a space between.)

0 ↩️ 0 🔁 0 ♥️ via Web

Hardest part of is fixing the damned fail2ban that is too eager to ban everyone, including myself. But I wrote those ban rules so I'm the one to blame.

0 ↩️ 1 🔁 0 ♥️ via Web

Watching Mastodon Sidekiq logs is a very unhealthy obsession.

1 ↩️ 0 🔁 0 ♥️ via Web

Code to run Mastodon was only 20 lines. Rest was for system setup and security.

2 ↩️ 0 🔁 1 ♥️ via Web

So this is what happens behind the scene when you post a toot. All of sends requests to your server within seconds. I can imagine why Mastodon instances are so overloaded these days.

0 ↩️ 0 🔁 0 ♥️ via Web

Holding off moving completely to self-hosted instance till it reaches better feature parity with Mastodon. One thing I'll definitely miss is the Glitch-soc UI.

1 ↩️ 0 🔁 0 ♥️ via Web

I wonder if it can show highlighted code?

main = putStrLn "Hello world"
0 ↩️ 0 🔁 0 ♥️ via Web

Well, no code highlighting but at least we got:

  1. numbered
  2. lists
  • Bullet
  • lists
2 ↩️ 0 🔁 0 ♥️

I knew about for at least a few years but I was afraid that the clients would be unpolished. Now that I'm here, I must say I am pleasantly surprised by how good all Mastodon apps are. Both Android and iOS apps are easy to use and reasonably smooth. Though I don't use the web UI much, it's pretty good as well.

0 ↩️ 0 🔁 0 ♥️

Still trying to get Bridgy Fed working on my website. I can see my website on Mastodon but I don't see any posts, neither am I able to follow it. I guess it's time to look at the Nginx logs.

1 ↩️ 0 🔁 0 ♥️

I uninstalled Reddit, Hacker news and Twitter apps from my phone so Mastodon is my only friend now.

0 ↩️ 0 🔁 0 ♥️

My levels of yak shaving:

1. Get on Mastodon.
2. Enable Activity Pub for my website using Bridgy Fed.
3. Embed h-card on my website's home page.
4. Add support for transclusion in Markdown files.
5. Modify Mustache templating code to add support for chasing dependencies using Shake build system.

Fortunately, the stack has unwound now, for I am posting this on Mastodon, and my website is Activity Pub enabled.

0 ↩️ 0 🔁 0 ♥️ via Web

So I got on Mastodon. Next, find people to follow.