Rajiv Prabhakar

software.rajivprab.com · Personal blog · on HN since 2018

Rajiv Prabhakar, a software engineer, writes about CPU caches, testing, hiring, feature flags, and financial independence.

What HN saysHN links it for the CPU cache myths post, which people tie to volatile and race conditions, and for his financial independence essay.
27HN people shared it
5linked it in comments
110stories submitted
3.2Kstory points
3 months agolast shared
2018people per year2026

Most-shared posts

  1. 1
    Myths Programmers Believe about CPU Caches (2018)
    6 people · 642 points · first shared 2018 · 119 comments on HN
  2. 2
    Experiences Working with an Outsourced Dev Shop
    6 people · 21 points · first shared 2021 · 1 comments on HN
  3. 3
    Hiring Is Broken?
    5 people · 199 points · first shared 2019 · 189 comments on HN
  4. 4
  5. 5
    When feature flags do and don’t make sense (2019)
    4 people · 112 points · first shared 2019 · 40 comments on HN
  6. 6
    Preventing Software Rot
    4 people · 11 points · first shared 2020 · discussion on HN
  7. 7
  8. 8
    My Path to Financial Independence as a Software Engineer
    2 people · 368 points · first shared 2021 · 560 comments on HN
  9. 9
  10. 10
    The Law of Net Design Costs
    2 people · 62 points · first shared 2021 · 12 comments on HN
  11. 11
    Nuances of Overloading and Overriding in Java
    2 people · 15 points · first shared 2019 · discussion on HN
  12. 12
    Cracking the Senior Software Interview
    2 people · 13 points · first shared 2019 · discussion on HN
  13. 13
    Don’t Be an Evolutionary Programmer
    2 people · 10 points · first shared 2020 · discussion on HN
  14. 14
    Alert Fast
    2 people · 10 points · first shared 2019 · discussion on HN
  15. 15
    An Alternative to Dependency Injection Frameworks
    2 people · 9 points · first shared 2018 · discussion on HN

What HN people wrote when they linked it

whack · 2020-12-06
This sounds like a classic case of "simplicity is in the eye of the beholder". If you're someone who has experience with, or can easily grok concepts such as "pointer to a pointer", then the second snippet seems obviously simpler. After all, there are fewer branches to consider. Unfortunately, as someone who stopped working with pointers a long time ago, my mind has to work in overdrive to understand any implementation that relies on a "pointer to a pointer". Hence why the first implementation is far easier for me to understand. I'm sure we'll see many debates around which solution is simpler, but these debates will never reach a resolution. Depending on the skills and experiences you bring to the table, different people will objectively benefit from very different implementations. https://software.rajivprab.com/2019/08/29/abstractions-are-in-the-eye-…
okareaman · 2019-11-21
There was just an interesting article mentioning the correct use of volatile on r/programming https://software.rajivprab.com/2018/04/29/myths-programmers-believe-ab…
noego · 2019-10-03
I'm not surprised that there are vast numbers of latent low-probability race conditions in the linux kernel or any major software project. Having seen the testing process in both hardware and software projects, the two are not even comparable. The testing process in most software projects is dominated by fully deterministic unit tests that are very simple in nature, and make large numbers of assumptions about the behaviors and interactions with other components. Low-probability race conditions between different components is exactly the outcome I would expect from this testing process. https://software.rajivprab.com/2019/04/28/rethinking-software-testing-…

Keyboard shortcuts

/Search
j kNext / previous blog
EnterOpen selected blog
vVisit the blog site
fFollow / unfollow
lSwitch grid / list view
dSwitch dark mode
g hHome
g pTop posts
g tTopics
g fFollowing
g lLiked
g yHistory
g qFAQ
EscBack / close