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.
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.
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 .
Over this weekend I drove over 1000 km. First to Bellary and then to Hyderabad and back to Bengaluru. Sandur is pretty nice in the morning during late monsoon. https://maps.app.goo.gl/hr6ij18By1aSgrQo8
I roughly got 16 17 km/l mileage from Nissan Micra XV CVT Micra XV CVT. I usually drive between 80 to 100 km/hr speed on the highway. The Bengaluru – Hyderabad is pretty OK but patches are pretty sub-standard.
The AC keeps malfunctioning â the cooling is pretty mild. The local mechanic on the way told me that something is wrong with expansion valve since gas pressure and compressor is working fine. The car is in warranty (from Spinny | Buy and Sell Used Cars). Their experience manager tried his best to schedule a visit in Hyderabad workshop but canât find a slot since it is Diwali time.
I drove back October 25, 2025 night so that I donât need a fully functional AC. Driving during the day with Kalu without proper functioning ac would be a nightmare for both of us.
It took me 9 hours to come back and had to sleep for half an hour on the roadside. Kalu slept during the later two third of the journey. The mild rain helped with temperature.
The trucks on the highway are much more well behaved than cars.
Drinking coffee to stay awake while driving is not the greatest of the idea. It kinda works but I always feel a âcrashâ after a while which is probably worse.
I still donât know if there is a good solution to driving when feeling sleepy. If it is a long drive, you should just pull off and sleep in a lodge. But what to do when only couple of hours of driving is left? Some temporary solution may not be the worst of the idea!
I liked how packagist pull from the repository and update the package itself when a new release is published.
I installed https://www.amazon.in/gp/product/B094CY2WLG?smid=A37FKLI2UKJ1AA&th=1as dash-cam as well as reverse camera. I am yet to connect the reverse camera to the reverse line. The display is pretty broad. I like that I can switch front, back, and both display together with easy to access UI. I gives a very good view of the back of the car which is great for reversing and parking the car.
Nissan Micra XVT can give ~20 km/l mileage on the highway. Inside Bangalore, I rarely get above 9 km/l (the speed barely goes about 30 km/h). Nano is hard to beat inside the city!
In next 3 months, I need to run roughly 340 km to finish 1000 km this year. Doable!
I finally bought a used car from Spinny | Buy and Sell Used Cars. The experience was good. Test drives were on time and manager was extremely responsive. The car was delivered on time as promised.
I got a Nissan Micra which came with Spinny buyback insurance, i.e. they will buy it back for a fixed amount anytime for next 2 years. This car has a CVT automatic transmission, which is pretty smooth. It’s much better than AMT I am used to. The ride quality is nice, though I have no decent experience in other cars.
Yesterday, I went to meet a friend in this car. I got a mileage of 7km/l in Bengaluru traffic with AC on. I am hoping to get a >15km/l mileage on the highway and 10km/l in city (I donât think it is possible in Bengaluru).
I found an excellent channel to learn more about working of cars.
This plant is now ubiquitous â its everywhere in my neighborhood. Kaalu likes to eat its leaves. Ookie is fond of its green berries. Now, I am alarmed and thinking of cutting down most of them in my neighborhood.
Replacing the AMT unit of my Tata Nano XTA will cost me :rupee:1,30,000 which is a bit crazy. A local mechanic Gajendra (Vinayaka Motors) seems to found a cheaper solution which is affordable. Letâs see how it goes.
Nano is getting a bit smaller for me now. I usually travel with 3 people (including me), one medium size dog and luggage. Nano is barely enough. I am looking for spacious car with good safety rating. Looks like Tata Tiago may be a good candidate.
I did some browsing on https://www.spinny.com/ and OLX for comparing prices of second hand cars. Spinny is a good place to buy a car but for selling. Iâll probably sell Tata Nano XTA using the mechanic and buy one from Spinny. I am still not buying a new car!
I am at age when the proverb âcanât teach an old new tricksâ is more and more applicable. Also working with a different age group is becoming a challenge since weights on values changes with age. The young can spend 10x time on the a task due to bad planning or execution, redo is four time, waste a lot of time and still declare it a âwinâ. I guess it is what is it đ€·đŸ.
How can you judge a programmer from her resume? Its not hard.
Lemma: How you do anything is the way you do everything!
Means carelessness you show in your resume will also be present in the code you are going to write. If your resume is careless written, has typos, and handing sentence, your code will have similar bugs. It shows you donât care about your work!
If your resume is verbose, disjointed and have bad formatting, means your code will also be similar. It also shows, you donât think about âwhyâ. If you write and send your resume without asking âwhyâ this resume for this job, you are going to do the same thing at job. You will write code without every asking âwhyâ. If may be fine for some people!
I personally give a lot of weight to formatting and presentation, perhaps as much as I give to the content. If you donât format and layout your resume neatly, that means you are not into UX or DX. Working with you is going to be a lot of pain. You code will probably work but a few folks will be able to read and understand it. You lack empathy! Be kind to your reader. Make your resume easy on eyes â pick right font, use non-hostile layout and keep is short.
The first person TVS Roadside Assistant assigned the ticket didnât show up at my place. He would never tell me the time. He supposed to come at 5pm. But at 11:30pm he was still 20 km away but claiming to be at the shared locationđ . Finally they arranged someone who can read the map.
Install a tow hook in your car and/or find out where it is. Also keep a small cable with you.
I still donât have experience with Adishakti Cars. Letâs see how it goes.
I found BBC Radio 4 – In Our Time podcast. So far, I am really enjoying it. I listened to a few old podcasts. Work in 20th century was excellent. I like the soft spoken host and his style. He invites a few experts to the studio and discuss a grand theme with them. The town square of European and American public discourse seem to be so vastly different. While intellectuals seems to be more common in Europian public discussions, no one seems to give a shit about what they think in the USA! By no mean, I mean to suggest that it a bad or a good thing.
When you onboard a new member to your team, how long does it take for them to become productive? Especially when they are not familiar with tooling. I suspect the negative compounding effect to be very strong. They will spend a lot of time dealing with papercuts from not knowing tools, frameworks and possessing tribal knowledge of the codebase. Also the story of the codebase is not an easy thing to acquire.
I ordered https://www.oreilly.com/library/view/typescript-cookbook/9781098136642/ early this week. The packaging smelled like kerosene so I returned it. Today, I got a less-stinky replacement. Whey did they wrap the book in such a stinky paper! The book is great. Its my second book on TS after https://effectivetypescript.com/ Canât wait to read it. Already referred to it on Enum which are pretty finicky in TS.
It’s very impressive how much typescript can do while maintaining such a great compatibility with JS.
I am more and more concerned about stability of OS on my laptop. Which is funny because during my college days, Iâd spend whole week on installing different login manager, window manager and OSes. I had Gentoo on the lab desktop and a Puppy Linux pen-drive with me all the time. These days, if anything is slightly different than muscle memory, I gets annoyed.
I am very close to replace my OpenSUSE TW with Debian 13 today. I want a robust base. Appimage is pretty good these days and I donât see any reason for using a bleeding edge OS. OpenSUSE is a great OS but I wish zypper ref was faster and parallel download is available a year ago.
I may have to install Windows on my laptop since a few software (like Notion) has no good app on Linux. Also some of the consultancy work I do needs Windows e.g. kernel mini-filter etc. Also the sound quality in meetings is not very great on Linux. Not really a fault of Linux when vendors donât spend anything on Linux.
Are there startups where folks worked 9 to 5 and succeeded?
Context switching is very hard. I feel it. And everyone seem to agree. Apparently, it takes roughly 23 minutes to recover after âhey, got one minute?â interruption. Surprisingly, there is very little in written literature to back this â23 minsâ number https://news.ycombinator.com/item?id=44999373.
My car (Tata Nano XTA) refused to start a couple of weeks ago. I thought old battery but turns out broken rubber pipes, rusted and leaking metal pipes causing engine to go âcoldâ. Until a few years ago, Tata cars used to suffer from metal rusting, but according to r/carsindia, they are much better these days. Anyway the car spent a week in garage and I spent roughly 14,000 (Car Didnât Start) to fix it. The car being out in the open is also making things worse. I donât park it inside the building since rat chewed wires a couple of times.
I am going to do something terrible â store videos in a SQL database!
I have some requirements that makes it an acceptable plan. I am building a âstream storeâ S. Once videos are stored in S, users should be able to fetch a video segment (in color or grayscale) between two given timestamps at a given FPS. One should also be able to annotate frame later e.g., âthis frame has a face in itâ. Iâll read the incoming video stream and save data as frames to a database (in addition to storing raw videos on a backup server).
The primary job of S is to provide frames for CV analysis, so serving pixel-perfect video stream is not a requirement.
The stored frames should be âgood enoughâ can our CV algorithms/pipeline works without a performance drop.
The cost of storing frames should be as low as possible as long as the above requirement is met.
I am going to extract frames from video as JPEG â a lossy compression format. But what should be the quality of JPEG?
Experiments
I downloaded a sample mkv file â 1080p at 30 FPS to do simple analysis.
I wrote a script that extract frames from the mkv using ffmpeg. The argument -qscale:v set the quality of frames: 2 is the best and 32 is the worst.
ffmpeg -i ../sample_1280x720.mkv '%04d.png' generates PNG folder which is 1.3 GB, almost 78x of original size. PNG is a lossless format. This is as bad as its get.
ffmpeg -i ../sample_1280x720.mkv '%04d.jpg' generates JPEG with default quality picked by ffmpeg. It generates 33 MB of data. Almost 1.94x more. Great!
ffmpeg -i ../sample_1280x720.mkv -qscale:v 2 '%04d.jpg' generates JPEG with best possible quality. The generated size is 188 MB (almost 11x more!).
I did the same on a different file recorded at 60fps (original size . The data is below.
A video recorded at 60FPS takes more than twice the size compared to fps=30 case. Note video are using codec H264 (MPEG-4 AVC (part 10) (avc1)) which AFAIK compresses pretty well if two consecutive frames donât differ too much. So this is expected.
Our recordings have the same feature. The interesting events happens rarely. We might drop many frames from the database after doing a quick analysis to figure out if they contain something interesting or not. So in the end, we donât even have to store so many frame.
I think qscale:v=20 is a good default for my use case. Also I donât have to extract frames at the same rate as they are recording. I am interested in events at the timescale of ~100ms and anything faster than 20FPS is overkill. i can just extract at 30 fps.
ffmpeg has a handy cli option -filter:v "fps=30" to fix the extraction fps to 30. Here is bonus rust code that does this. Donât copy-paste blindly, it may not work.
/// Explode the given video into JPEG frames.
///
/// - *path*: Path of video file
/// - *fps*: Extract these many frames per seconds. The video may contain
/// more or less frames in a second.
pub fn extract_jpegs<P: AsRef<Path> + std::fmt::Debug>(
path: P,
fps: u16,
recording_start_timestamp_ms: i64
) -> anyhow::Result<usize> {
anyhow::ensure!(path.as_ref().exists(), "{:?} does not exists", path);
tracing::debug!(
"Extracting frames from {:?} for fps={fps} and jpg qscale {:?}.",
path.as_ref(),
self.qscale
);
let inst = Instant::now();
let mut cmd = std::process::Command::new(&self.ffmpeg_bin_path);
cmd.arg("-i").arg(path.as_ref());
// Extract at a given fps. Thanks <https://askubuntu.com/a/1019417/39035>.
cmd.arg("-filter:v").arg(format!("fps={fps}"));
if let Some(qscale) = self.qscale {
tracing::debug!("Setting qscale to {qscale}");
cmd.arg("-quality:v");
cmd.arg(qscale.to_string());
}
cmd.arg(self.frame_directory.join("%05d.jpg"));
let output = cmd.output()?;
anyhow::ensure!(
output.status.success(),
"Command failed\n.{}\n{}",
String::from_utf8_lossy(&output.stdout),
String::from_utf8_lossy(&output.stderr)
);
tracing::debug!(
"Extraction to {:?} is complete, took {:?}.",
&self.frame_directory,
inst.elapsed()
);
}
Ookie daycare has independence day celebration. Anu found a costume for her.
Notion raised the Plus plan’s monthly cost from $5 to $12, which I grudgingly paid. I guess time to ask for a raise đ. Even though AI is often pushed down my throat, Notion is very good at what it does. I use it for nearly all of my work.
It was is just too much hassle in migrating to Joplin or Obsidian. Besides publishing and syncing services cost roughly the same.
Notion is mostly being built in a high-income country and I am in a medium income country. I understand that I need to pay this price. We need more software and service that are built and used by folks in same income range like Zoho is for business. Only if they have something good for personal use.
I can wish all I want but I am unlikely to see such great homegrown solution unless we have homegrown customer willing to spend money on such solutions (Innovation starts with consumers, not academia).
At work, I am more willing to take responsibilities and ownership â lead role. I was reluctant before and wanted to remain IC for a while to avoid dealing with people problems. I was naive, people problems always find you!
And I didnât do any planned work on my personal projects. Perhaps time has come to make peace with the fact and I can do only one or a few things in life properly.
How important are people to the success of your startup? I believe the answer to be somewhere in between of âveryâ and âwhat else is thereâ. And so startups go hunting for rock-star, or 10x programmers.
Do you really need to hire a few 10x engineers to succeed? Of course not! One of my favorite band âIndian Oceanâ has average musicians and yet they make great music. Afghanistan and New Zeeland cricket team has done remarkably well without having rock-stars. I firmly believe that a programmer who is barely 10% better at day to day chores is at least twice or thrice a productive as normal engineer over a course of a year! The reason is the non-linearity called compounding.
You may have felt it in school. A kid who puts 5-10% extra effort every day may become twice as accomplished at the end of the year. Folks who do well at competitive exams seem to understand this very well, though they articulate it as discipline (and hard work). A fund with 5% compounding interests doubles every 14 years, with 10% every 7 years, with 15% every 5 years. A mere 10% change in day to day activity can reduce the timelines by 10 years (and vice versa)!
I firmly believe that many day-to-day activities related to software development have strong compounding effect on its completion or quality, or both.
Finding force-multipliers
When I was in college, Prof. H. Narayanan told me once, âYou are creative, but you should also be right!â I didnât think much of it that time. When you like working with computers, you canât stop appreciating how hard it is to get it ârightâ.
Is it possible to get hard problems right in the first or second try? Eventually yes. I mean, anyone can make good progress on anything given âenoughâ time with consistent effort! But if we are a startup, we don’t have the luxury of spending years. I think we can get it right in first or second attempt if you do the âplanningâ. You could break the hard problem down to simpler problems that your team and solve with minimal supervision. If you canât, find someone who can!
Let me put it more concretely. Let’s say I can solve a class A problem 50% of time, class B 90% of time, and class C almost always, i.e., 99% of times. What are my chances of solving a problem if I can break it into two problems of class A, or four class B, or eight class C problems?
Class of sub-problems
Chance of solving one problem of this class
# Problems
Chance of solving all
A
50
2 of class A
25%
B
75
4 of class B
31%
C
99
8 of class C
92%
You have two options. Find someone who can solve the master problem with 92% chance, or find someone who can break it into eight class C problems. I always seek out the later type of people when I conduct interviews. People who can partition a problem into multiple simpler problems that can be delegated to others. These folks are force multiplier (positive compounding, that is)!
This leads to a corollary that 10x engineers are not necessary. Iâve not met one yet, let alone hiring one. There is an easier way. Search for normal devs who show signs of positive compounding. These folks are usually disciplined in some way, and excellent with tools. Add a force multiplier to the team, and you are done.
None of the musicians in the band Indian Ocean is what Iâd call a 10x musician, but their work is of great quality and value. Why can’t start up teams be like that?
Managing Peopleware
A lot has been written about managing teams. You hire talented and energetic people, and they start off very well. You think everything is great but suddenly after a year or so, things are lukewarm at best. What is going on?
In case of young hires, the reason can be pretty really simple. It not always the case that management is evil. When you start a new job (or a PhD program), there is a sense of anticipation. And when you finish a hard project, there is a sense of accomplishment. At these stages, one feels good and life is good. It’s the middle years â after anticipation is over and before accomplishment â that are taxing. If you donât want to spend time motivating your young hires then just donât hire anyone under 30s. Though, Iâd recommend hiring talented young folks but ensure that they leave for greener pasture in a year or two on good terms.
For experienced hires, perhaps the reason is equally simple. Everyone has a different set of values, and what you value most may not be on the top of their list. You may value product-market-fit and customer-satisfaction, or the next fund-raise above everything else, but the developer just wants to write Rust and clean up tech-debt rather than thinking about any of that! Can you figure out how to work with your peopleware without asking them to sort their values according to your list?
Small things also matter a lot. Programming is a form of writing, and writing is primarily a solitary activity. If someone is good at it, they must have enjoyed spending a considerable time alone learning the craft. Donât disturb them every couple of hours by sending notifications and emails. Schedule your communication effectively. These minor irritant compounds negatively on a developer psyche, much like “Scar Tissues Make Relationships Wear Out” â John Ousterhout.
I know some very good programmers who are good at talking, and even documentation, but I havenât seen one yet who loves being a social-butterfly all the time, and doesnât hate context-switching.
Leadership ensures âEveryone Going In the Same Directionâ
There is much more to leadership, but I am very much content with this view. It is effective enough for managing a project, if not the whole organization! Therefore, the primary job of team leadership is communicating to ensure that everybody going in the same direction.
While I love setting up processes and workflows, I do recognize the creativity comes from people and not from processes. So there must be some channels for expressing creativity. But beware! I think creativity always conflict with that boring thing called âgetting things doneâ. Being creative is nice, but âcreative thinkingâ or thinking outside the box always leads to a different path than what youâve charted, else it wonât be called creative.
The hardest part for leadership is to say ânoâ to seemingly good ideas that could lead the startup astray. I donât feel very comfortable saying no to people for ideas, so I just donât encourage âcreativeâ ideas in most of the meetings. Like a young Ph.D. student, startup will do well not to indulge into âcreativeâ things. The benefits are imaginary if any, but the cost (time spent) is real! There is time for being creative when youâve not charted your course.
Also, I am a big fan of incremental improvements. The important meetings must be well-structured and focused, and any attempt to steal the focus should meet with a friendly frown and discouragement.
There is another indispensable aspect of leadership which is required to overcome problems discussed in A Group is Its Own Worst Enemy by Clay Shirky. If you are in this situation, then good luck. You must act decisively or give the position to someone who can. Leadership becomes a bit like using a toilet: you either shit or get off the seat!
If you are in a local environment, how do you figure out available bandwidth? Use cases: copying large files from one internal machine to another internal machine? Or running a local streaming service.
You can usehttps://iperf.fr/. You need two machines capable or running iperf3.
To test WiFi speed, at least one of connected via Wi-Fi. Both can also be connected by WiFi (worst case). My recommendation is to test in both cases.
Install iperf3 on both machines A and B.
Run iperf3 -s on machine A or use iperf3 -s -D to keep it running as daemon. Handy if you plan to test periodically.
Run iperf3 -c <ip_of_A> on machine B.
Sample output
Here is sample output at my home when both devices are connected by WiFi.
On a machine with IP 191.168.1.142, I run iperf3 in server mode.
August 9, 2025 is Rakshabandhan which is a big festival. For many years, it has stopped being exciting for me, just like Holi and Diwali. When I was a kid, Rakhi used to be an exciting day. My three buas will visit us, stay over for a day or two and bring sweets and of course rakhi for their brother (my dad). The sweet of the season was ghevar. I donât find that kind of ghevar here in Bengaluru. Perhaps you wonât find it in any big city unless you search for it. The sweets made in the villages and town are cheap. There is just not enough margin for shopkeepers/online platform to sell them.
I finally got a hard copy of one of my all-time favorite book. When I read this book last time a few years ago, I had no strong feeling about project management. This time the intentions are different. The reread is a very different experience.
Ninety-five, [perhaps] 99% of the applications on the planet are and should remain monoliths. Full stop, end of story… I mean, I love distributed systems. I’ve lived in it for about 25 years, and, like, I just get joy from doing this kind of thing. And I read the papers, and, like, I find it super exciting⊠The vast majority of you should only be dragged kicking and screaming into distributed systems rather than starting from the beginning.â â Randy Shoup
I need to plan my weekends a bit more seriously. Last three weekends were not very productive.
I wrote a few (wip) design docs at work. Doing a good job at them is really hard and time-consuming! Totally agree with Writing a good design document and many comments on HN on this topic.
> Think of a design document like a proof in mathematics. The goal of a proof is to convince the reader that the theorem is true. The goal of a design document is to convince the reader the design is optimal given the situation. The most important person to convince is the author. The act of writing a design document helps to add rigor to what are otherwise vague intuitions. Writing reveals how sloppy your thinking was (and later, code will show how sloppy your writing was).
My energy is coming back after a couple of weeks of mild flu like symptoms. I still have occasional cough. I have 500km left to run to complete 1000km of run this year i.e. 5 months and 500km. Not bad!
This week was pretty boring, work-wise, routine CRUD stuff. Creating a UI that can CRUD a database properly turns out to be much harder than I expected. I am not yet sure what I did wrong. This maybe in the nature of the problem. Iâve selected a few courses/reading material on database design in hope to discover more. My working hypothesis is that it was inevitable because we simultaneously build and used the portal â waterfall model is from the days when web-development was mostly about this kind of work.
I did a couple of interviews at work. One candidate was passable, but his CTC demands were way too high. Canât blame a guy for trying!
Please keep your JD to the point and âboringâ. If you add fluff, you invite fluff! I imagine a very few engineer who enjoys development getting excited about other things. You can mention anything else at the end. Especially if you donât want to read unrelated things in a resume, keep them out of JD as well.
While reviewing a candidate profile, I ended up logging to leetcode after so many years. One this led to another, and I ended up doing a few problems this week. Not gonna lie, I thoroughly enjoyed it. I won’t be surprised if I end up spending more time there! That mean my project of writing a parser for netlist file will get delayed a bit.
For the last couple of weeks, Ookie has been going to a day-care for a few hours. She gets to play with other kids there. âPlaying with other kidsâ has been the reason for sending her there. After a few days of fuss, she now seems to be enjoying her time there. My very friendly neighbors think that she is too young to go to day-care!
Somehow I managed to run 400 km so far! My pace has been slowest. I still need to complete 600 km in the second half of the year.
Iâve started paying for RUNALYZE. It is nice that more and more services are offering purchase-parity plan for subscription for Indian users. Iâve been using jonasoreland/runnerup: A open source run tracker for a long time to sync my runs with Runalyze/Strava. One dollar=Rs 100, but it is roughly Rs 30 in purchase parity, so you have to reduce the pricing by third for Indian users! If you are doing this, Iâd be happy to work for you for a purchase parity adjusted salaryđ.
I had a minor meltdown at work đ. Not proud of it. It’s hard to keep cool when many co-workers write almost empty email without a subject/body to report bugs. Iâve been trying to get them to use GitLab issues for a few months now. Either, I need to disengage from work a little at this workplace, or find a place where co-workers are adults and not only they come to work but also know how to structure and plan it.
I read Programming as theory building : Naur.pdf and found it illuminating. I am pretty sure Iâd have yawned reading it some 10 years ago. This article â written a year before I was born â put âprogrammersâ at the center of software development. I donât think I can reduce this article to soundbites. Do read. I learnt about this article from HN.
– I wrote another small utility to remind me that a LWN article has finally become open. I am not able to pay for LWN subscription due to HDFC Bank related issues and I forget to revisit the link when it is open. Perhaps I can rent a VPS in this money and read the article two weeks later?! LWN is a great resource and I feel bad for not paying for it though!
– My Wallet from Budgetbakers is no longer syncing with HDFC Bank. Their support is working on the issue. HDFC seem to have changed their login flow again! My another bank, DBS Bank, doesnât have saving account APIđ€Ł. I opened account here thinking that they are âtech-savvyâ!
– Iâve been thinking about hiring a lot these days. At my current company which is an early stage startup, they have been struggling to hire a dev for the last 5 months! I was part of a few interviews â some went well and most were meh, but not able to hire for 5 months feels a bit extreme!
– Both mango trees in my street has mangoes this year! Here is my daughter Ookie playing with her friend. Fortunately, like many streets in Bengaluru, this street is a dead end and have no traffic.
Iâve been a little sick this whole week â a mild cold and occasional coughing. Running was a bit slow, and it took some effort to go out and run. Perhaps some flu.
Almost everyone I knew from college has left or about to leave my neighborhood â for search of job, education, status, money or other foo and bars. Sometimes I wonder if there is a point anymore in investing time in people these days?! I wish I am wrong. I have cultivated a few good relationships with my neighbors. Making friends become harder and harder as you age. Looks like it is a universal problem in industrial part of our civilization â at least major newspapers often write articles about it.
I am thinking of writing down what I learnt about hiring for a startup (in Indian context) in a blog post. A lot of advice I find on internet is not very effective in our style of society.
Iâve been itching to pickup combinatorics â every problem requires a different trick, and the subject doesnât require ten courses before making any progress. Like linear algebra, it is very computer friendly. One can do it a hobby or as profession.
I plan to implement some routing algorithms for PCB routing to integrate into KiCAD. https://github.com/freerouting/freerouting the inspiration. Of course, it is in Rust with Python bindings generated using PyO3.