The just released #haskell book Production Haskell looks great for making the jump from the forever beginner/intermediate level to professional level. https://leanpub.com/production-haskell
Micro Blog
one hundred eight tiny posts on miscellaneous topics
.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. #bangalore
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. #bangalore
The tea was okayish and very overpriced. ~fin~
I hate how the hum of the cab engine hides the bassline of the #music 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.
What's a reasonably priced and good RSS feed to email #newsletter service that I can use to send my #blog posts to my twelve subscribers?
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.
A random Netflix show about a guy going around the world on a #bicycle 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 #bangalore 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. 😭
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.
Pulled in the posts from my types.pl Mastodon account to my website's microblog page https://abnv.me/mb. Next, add the posts from my Twitter archive.
#indieweb
Now my website's search indexes my Mastodon posts as well, along with my blog posts and notes. Another step towards #indieweb.
Switched from LocalStorage to IndexDB for caching the search index on the browser. Apparently, that's the recommended thing now. 🤷
When in #Japan, take a bullet train and make a video.
I need to be more patient with phone charging.

Turns out it was because of adaptive charging in #Android 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.
Set up a mesh router in my house. Finally I can read Reddit in each of my washrooms.
I have feed reader apps on my phone, my iPad, my laptop, and my Kindle. Now to actually read all these blog posts ...
Tell me #Fediverse, should I swap a Google Pixel 4a phone for an Apple iPhone 12 mini? #Android vs. #ios.
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. #bangalore

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.
I must say, I have an unreasonable amount of excitement for being able to simulate logic gates in a #programming language of my own invention.

Some days I wake up inexplicably #tired even after a full night's sleep. Today is one of those days.
I've got to fix my #bicycle and go for a ride one of these days. The weather has been lovely in #bangalore.
Some interesting #blog posts I read last month: https://notes.abhinavsarkar.net/2023/links-22-12
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.
I wrote a #blog post about implementing a small interpreted #programming language with #coroutines: https://abhinavsarkar.net/posts/implementing-co-1/
#ProgrammingLanguages #plt #haskell
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. #programming
2022 has not been very good for me in terms of physical activities. Hoping that 2023 will be much better. #running #YearInReview #QuantifiedSelf

I'm so glad I deleted my #Lastpass account years ago when they had their first breaches.
Here's the entire saga of the https://fantastic.earth #Mastodon instance's struggle with disk space, summarized in one image:
#mastoadmin

I've got an estimated billion things to read and instead of actually doing that, I'm here tooting about it. 🤷
#reading #procrastination
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 #Kindle book for them.
#reading
Is it me or this year's #AdventOfCode seems too heavy on automata, game plays and simulations? I was hoping for more parser and interpreter related problems.
I wrote a note about patching #Mastodon on #NixOS for removing old user avatars and headers https://notes.abhinavsarkar.net/2022/patching-mastodon
Trying to patch #Mastodon source to get the header and avatar cleanup PR running on my instance. Should not be very difficult with #NixOS. #mastoadmin
It worked! Couldn't figure out how to patch the #NixOS service, so I copied the file, made the change in it, and replaced the service module with the copied one.
#mastoadmin

So tempted to drink 5 cups of #coffee today.
I wrote a new #blog post: Writing a Static Site Generator Using Shake https://abhinavsarkar.net/posts/static-site-generator-using-shake/
@pratul शुभ जन्मदिवस ब्रो
A reminder that you can pull your posts from your #Mastodon server using the RSS feed or the JSON API, and put them on your own website, like I did: https://abhinavsarkar.net/microblog/
I use the bookmarking feature on #Mastodon 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?
Nobody told me that subscribing to relays will make my server's disk usage rate 10x. Sigh. #mastoadmin

It's finally under getting under control after I reduced the caching time to one day. #mastoadmin

Thinking of doing my next personal project in #Clojure. It's been a while.
I wrote a post about how to populate small #Mastodon Instances using #FakeRelay: https://notes.abhinavsarkar.net/2022/fake-relay
I'm not doing all of #AdventOfCode 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.
Throwback to when I visited the graveyard of chairs. #photography

Moved to @abnv@fantastic.earth.
I've been using https://github.com/pwm/nixkell for managing my #Haskell projects with #Nix, but it doesn't support Nix flakes. So I decided to try out a new template for my new project. I tried https://github.com/input-output-hk/haskell.nix but it started to compile GHC from source, so I ditched it. Now, I'm using https://github.com/srid/haskell-template and it works flawlessly. Well, at least till now. #programming
Finally, the #Mastodon GC and #NixOS GC are freeing up enough disk space to make the server sustainable. #mastoadmin

I solved #AdventOfCode day 7 in #Haskell with parsers, zippers and interpreters, and wrote a note about it: https://notes.abhinavsarkar.net/2022/aoc-7
I'm gonna have to read this multiple times over the next few days to understand it completely, but for now, it sounds awesome: https://ziglang.org/news/goodbye-cpp/
#programming #zig #compilers
Time to catch up with #AdventOfCode problems of this week.
My plan this year was to solve them in #Zig. Unfortunately, Zig 0.10 is not available on #Nix and I was too lazy to install it manually. So I defaulted to #Haskell.
Finally a challenge that requires writing an interpreter. Solving #AdventOfCode day 7 will be fun.
Looks like I'll also need to write a parser and use a tree zipper. Great!
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. #Music
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.
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.
Added a Micro Blog page on my website that syndicates from my #Mastodon toots. https://abhinavsarkar.net/microblog/
#indieweb
Also hooked up IFTTT to hit a webhook to deploy my website when I post a toot here.
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)]
Is it just me or 80% of songs in #Spotify's Best of Indie India sounds like Prateek Kuhad songs? WDYT @s3thi?
My website is on #Fediverse now, thanks to https://fed.brid.gy. Follow my blog posts at @abhinavsarkar.net.
Turns out, ChatGPT cannot write quines, at least in Haskell. Quite a serious limitation.
Took my 3am server admin sleep break to drink a cup of water and to ban those DDOSsing domains. #mastoadmin
Finally found time to catch up with my feed reader.
Today's #AdventOfCode was easy in #Haskell:

If you are running a #Mastodon 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. #mastodonadmin
I solved today's #AdventOfCode challenge in type-level #Haskell https://notes.abhinavsarkar.net/2022/type-level-rps. #programming
Construction site #photography

TFW you write #Haskell like C. #AdventOfCode day 2

Is this why people hate using Haskell?
TBH, this is how it looked before I golfed it down:

Upgraded the https://fantastic.earth #mastodon server to #NixOS 22.11. Went without a hitch. Took 12 minutes. #mastodonadmin
🤷

Going to try to upgrade my VPS to #NixOS 22.11.
The upgrade to #NixOS 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.
I wrote a note about implementing A* #algorithm in #Haskell https://notes.abhinavsarkar.net/2022/astar
#programming

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"
@deobald Have you?

I agree that I'm a bit slow at discovering music but you don't have to rub it in #Spotify. #spotifywrapped

TFW you finally delete garbage on a #NixOS machine:

I'm a bit disappointed that the #Matrix hashtag is not about the 90's movie about a speeding bus that could travel in time.
Took this many years ago somewhere in Meghalaya #India. #photography

Wrote some user style #CSS to make my 6 column #mastodon interface look better on small and large displays:

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.
@Preethi Sup. How's the winter going? Also: https://pruvisto.org/debirdify/
#TIL: 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.
I hate waking up and finding spam comment on my blog 😠
Today I learned how to replace #NixOS modules: https://gist.github.com/LnL7/bd05394218033cff17ec20eb93a44a4a
Just found out about https://fedi.directory. Followed a bunch of interesting people and accounts from there.
@arun Welcome to this earth.
Trying to figure out how to write health checks for #Netdata on #NixOS. Can't find anything on Google. Netdata docs are not straightforward.
@Preethi Welcome to the fantastic earth!
#Mastodon / #fediverse protip for people #selfhosting 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;
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.)
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.)
I just moved my #Mastodon account from @abnv@types.pl to @abnv. I can't believe how smooth it was. Took 5 minutes!
Hardest part of #selfhosting 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.
Watching Mastodon Sidekiq logs is a very unhealthy obsession.
Welcome message
@deobald welcome
Got a #Mastodon server up and running in 2 hours with 240 lines of #NixOS code. Nix is amazing!
Code to run Mastodon was only 20 lines. Rest was for system setup and security.
I live on a ball of dirt going really fast around a ball of fire.
So this is what happens behind the scene when you post a toot. All of #fediverse sends requests to your server within seconds. I can imagine why Mastodon instances are so overloaded these days.

I wrote a note: "Self-hosting GoToSocial on NixOS" https://notes.abhinavsarkar.net/2022/gotosocial-on-nixos
I've been running Debirdify every day and it's nice to see my following numbers climbing with each day. #mastodonmigration
Gonna try to self-host #Pinafore and #GotoSocial on my #NixOS VPS. #selfhosting
#gotosocial on #nixos is happening!

Success! I'm @abnv@abnv.me now, running on #gotosocial on #nixos. Took only 170 line of code.

Holding off moving completely to self-hosted #gotosocial instance till it reaches better feature parity with Mastodon. One thing I'll definitely miss is the Glitch-soc UI.
I hear read that Mastodon supports Markdown
.
I wonder if it can show highlighted code?
main = putStrLn "Hello world"
Well, no code highlighting but at least we got:
- numbered
- lists
- Bullet
- lists
I wrote a note: "Monitoring VPS Network Usage with vnStat and NixOS" https://notes.abhinavsarkar.net/2022/vnstat-dashboard

This Tweag article on staged programming with typeclasses in #Haskell is pretty cool https://tweag.io/blog/2022-11-15-unrolling-with-typeclasses/
My website has been my biggest personal project so far, ongoing for more than five years. It has accumulated so many features by now that I had to make a list today (for mostly myself): https://abhinavsarkar.net/about#features
I knew about #Mastodon 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.
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.
I uninstalled Reddit, Hacker news and Twitter apps from my phone so Mastodon is my only friend now.
@deobald say something Steven
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.
So I got on Mastodon. Next, find people to follow.