HNHacker News
TopNewBestAskShowJobs

jbhoot

36 karma · joined September 4, 2024

I live with my partner in a hilly city. A cat and a dog live in our house. Or we live in theirs. The ownership is becoming murky.

• Website: <https://bhoot.dev> • GitHub: <https://github.com/jbhoot> • Lobsters: <https://lobste.rs/~bhoot> • LinkedIn: <https://linkedin.com/in/jbhoot> • Bluesky: <https://bsky.app/profile/bhoot.dev>

submissionscomments
jbhoot··on A16z-backed Doublespeed hacked, revealing what its AI-generated accounts promote
Andreessen's true colours have often flared up. I noticed it when India banned Facebook's Free Basics scheme. He had needlessly, without provocation, lashed out like a child who was denied an ice-cream cone. I will never forget his now-deleted tweet:

> Anti-colonialism has been economically catastrophic for the Indian people for decades. Why stop now?

https://www.bbc.com/news/blogs-trending-35542497

jbhoot··on Introduction to Indian English
Almost every Indian I know (including me) mixes at least two languages in their daily conversations seamlessly, that too within a sentence. Westerners may find that Indians talking among themselves in their native language(s) drop English words out of nowhere. Again, I can't imagine this to be a uniquely Indian phenomenon. Multilingual people would be doing this.

Lingual purists may find it irritating, but I love such mix-ups!

jbhoot··on Introduction to Indian English
In my experience, at least some aspects of the Indian English exists because we Indians often mentally translate what we want to say from our native language (which are plentiful) to English before it comes out of our mouth.

I don't imagine this is a uniquely Indian phenomenon – other non-native English speakers would be doing the same.

jbhoot··on Introduction to Indian English
Not exactly Indian English, but my favourite English word with an Indian origin is Juggernaut.

Its a morphed version of the name of an Indian deity – Jagannath.

From https://en.wikipedia.org/wiki/Juggernaut:

> A juggernaut, in current English usage, is a literal or metaphorical force regarded as merciless, destructive, and unstoppable. > This English usage originates in the mid-nineteenth century. Juggernaut is the early rendering in English of Jagannath, an important deity in the Hindu traditions of eastern and north-eastern India. The meaning originates from the Hindu temple cars, which are chariots, often huge, used in processions or religious parades for Jagannath and other deities, the largest of which, once set into motion, are difficult to stop, steer or control by humans, on account of their massive weight.

jbhoot··on `Git stage` over `Git add`
True. I use a few (oversmart) aliases for most frequently used git commands:

  alias gist='git status'
  alias stagit='git stage'
  alias gitcom='git commit'  # also toying with comgit
For the rest, I just use the full commands to avoid accidents.
jbhoot··on The highest-ranking personal blogs of Hacker News
Heh. For me, a British ambassador to Spain has all three of you beat (probably due to my frequent visits to gov.uk design system and nhs.uk).
jbhoot··on Kill your Feeds – Stop letting algorithms dictate what you think
Yes! This so much! In my circles, I have seen a tendency to perceive fiction as a kind of low-brow, less intellectual reading. But then these people go on and pick up self-help non-fiction books.

Fiction has so much more to offer! On top of what you wrote, fiction helps you to develop an ability to put yourself in others' shoes. Empathy is anyway scarce in this politically-charged and ragebait-filled world.

Fiction has helped me develop empathy and to stay empathetic. It has helped me develop my philosophy of life; morals and values I strive to stay close to. The fictional characters have given me courage during hard times. And so much more.

Lot of people prefer to start with self-help kind of non-fiction which is, IMO, the least helpful category of books. I don't know what draw people to it.

jbhoot··on Forget Twitter threads and write a blog post instead (2021)
Yep. I like to post my learnings, learning processes, distillation of life experiences. My only criterion is "This feels like a good blog post".
jbhoot··on Forget Twitter threads and write a blog post instead (2021)
After I publish a blog post, I sit back and look at the published post. At that point, I feel a lasting moment of fulfillment. Whether or not I get views on that post doesn't matter. I write for this feeling of fulfillment.

I don't get that feeling after I put out a post on Bluesky.

jbhoot··on One year after switching from Java to Go
I think CharlieDigital's point is that a bad payload will fail right at the serialisation boundary in case of .NET. We know the problem right there. Now we only need to fix the bad payload.

For TypeScript with only types and without validation, a bad payload gets through, and there is no telling where in the workflow it will explode. This could waste more time and developer resources in debugging.

jbhoot··on Show HN: I Made an iOS Podcast Player with Racket
Makes sense. Thanks for the tip!
jbhoot··on Show HN: I Made an iOS Podcast Player with Racket
Thank you!

In my PoC (https://github.com/jbhoot/poc-ocaml-logic-native-ui) - a tiny hello world CLI on macOS, that has a Swift "frontend" and OCaml "backend" - I followed a similar model:

- Both sides pass messages to each other. Both of them talk through C ABI. My model was synchronous though. Async is certainly better. - I used the protobuf binary protocol for message passing. Faster and probably more efficient than, say, JSON. But both sides may have copies of the same data for this reason.

I've written down my approach, which roughly aligns with yours, in the project's README.

What I wanted to do was for OCaml side to allocate data in memory, and for Swift to access the same memory through some commonly agreed upon protocol (protobuf itself maybe?). But I haven't yet explored how difficult this could be with GC coming in play. I think OCaml does have a few tricks to tell GC to not collect objects being shared through C ABI (https://ocaml.org/manual/5.3/intfc.html#s:c-gc-harmony), but I haven't looked into this enough to be sure.

Your projects will sure help me figure out the concepts!

jbhoot··on Show HN: I Made an iOS Podcast Player with Racket
That makes sense. Do you keep the in-memory data in Racket data structures? I imagine keeping the data fed to Swift UI in sync with data maintained by GC'd Racket would involve some work.

Have you used https://github.com/Bogdanp/Noise? I assume serde would take up memory on both sides (Racket and Swift).

Sorry for a barrage of questions. I am quite curious about how all of this works. I am mulling over using OCaml for what you've used Racket for.

jbhoot··on Show HN: I Made an iOS Podcast Player with Racket
> Database management > syncing with the backend server

Do features like these, when implemented in Racket, consume more resources (battery, CPU, etc.) than if they were implemented using the native API equivalents (e.g., NSURLSession or whichever is more applicable)?

In the larger context of cross-platform apps with a common core written in a non-native programming stack, I often wonder this about network and disk I/O management. I understand using the native APIs for other "I/O" like UI, hardware interfaces (bluetooth, accelerometer, etc.), because they often don't have an equivalent API in the programming stack used to implement the common core.

As far as I know, Capacitor wraps over the native APIs.

jbhoot··on 8 months of OCaml after 8 years of Haskell in production (2023)
As the other commenter mentioned, its a mistranslation. I read string_of_int as "string out of int" to make it better.
jbhoot··on A mental model for Linux file, hard and soft links
OP here.

Thank you for posting this here, and for all the corrections. I have updated the post with them.

My idea behind a mental model is to describe how I visualise a concept in my mind when I think about it.

The level of abstraction of a mental model is supposed to keep out the details of implementation, ensuring which I failed at. Because the deeper you dig from this level, the more inaccurate things will turn out to be.

A mental model for me is meant to be only a starting point for a concept.

In other words, the aim is such that when you think about a concept, its mental model should put you into the right perspective. Right, this is how something works, now let's check out the manual to see how I can put it to use.

I've now configured my site to add this explainer to a post classified under Mental model.

jbhoot··on A mental model for Linux file, hard and soft links
There is also "cp -P".

My purpose for the I/O sub-section was only to have a convenient logic of memorising how I/O operations work on soft links by default. Memorising techniques don't really gun for technical accuracy. However, I have struck it out because the logic is also blatantly inaccurate and has been rightly called out here.

jbhoot··on A mental model for Linux file, hard and soft links
Sorry about that! I hand-wrote the whole post on my tablet. More motivation for me to write more legibly next time!
jbhoot··on Svelte 5 Released
The marketing has kept changing.

I have always found state management easier in React if I keep it out of React.

jbhoot··on Svelte 5 Released
> all data manipulation (∆) happens outside of React components,

I do something similar. State and its management lives outside the React components, which only consume this state via hooks. Keeping the state in chunks, and outside the tree lets me access a chunk of state only in the components that need it.

This results into minimum amount of re-rendering of components. Component code also looks cleaner and easier to read.

jbhoot··on Poor man's signals – tiny vanilla JavaScript signals implementation
`okcontract/cells` seems to be missing one of the two FRP primitives though: streams (of events).

One of the best FRP environment for JavaScript is/was FlapJax: https://en.m.wikipedia.org/wiki/Flapjax, which incorporates both the primitives and their operations.