🔗 Work 2.0 - the interruptible programmer


This is a good read from Steves String. I discovered this blog from a youtube channel called Internet of Bugs. The post completely changes the way we think about productivity and work, especially when your are at the other end of your 30s.

The post discusses about how it’s not feasible to work for long hours without any interruption. It’s not just about the physical health, but also about the mental health.

And this post discusses about two things: Allowing interruptions, and move the context out of your head as soon as possible (AKA Taking notes before you lose focus).

I love this idea, especially how copilots and all the AI coding tools makes it a second nature to offload all the context to the coding tool, and then revisit it later whenever you want.

I suggest you to read the original post, it’s more than a decade old, but it will still be relevant in 2030s.

Read original ⟶

Jest, ESM, and the Meta Tech Conundrum: A Cautionary Tale


A quick take on why Meta’s development tools can be a double-edged sword. From a painful encounter with Jest’s ESM handling to broader reflections on Meta’s tech ecosystem, this post explores why we should think twice before adopting Facebook-originated tools in our projects. Drawing from personal experiences in Android development and recent projects, it offers both cautionary tales and practical solutions for when you’re stuck with these tools in your work environment.…
Read more ⟶

Code Assistants: Blurring Category Lines


The two main categories of AI coding assistants are evolving beyond their initial specialties, creating a more versatile development ecosystem…
Read more ⟶

The RAG Challenge: A GitHub Copilot Experiment


Recreating Tim Kitchen’s RAG application using GitHub Copilot and exploring how it compares to other AI coding assistants like Aider, Cursor, and Windsurf.…
Read more ⟶

🔗 Software Is Bananas


Kent Beck has shared some good insights in his substack. If I have to start with something, this is probably it. This post takes a short and stingy look around real “aglileness” of software development. Short but quick deployments and closer feedback loops instead of long and drawn out processes. Because at the end of the day, there is one bug lingering only in production enviorment which is waiting to be revealed.

Software is bananas. Buy a banana and you’d better eat it. You’re not going to be happy with the experience in a month.

Interesting to see me using the “rotting food” metaphor in another context. I think I’m trying to sensitize people to the cost of delay. Somehow some folks just don’t feel it.

Read original ⟶

🔗 Choose Boring Technology


Let’s say every company gets about three innovation tokens. You can spend these however you want, but the supply is fixed for a long while. You might get a few more after you achieve a certain level of stability and maturity, but the general tendency is to overestimate the contents of your wallet. Clearly this model is approximate, but I think it helps.

You can replenish the tokens if you can to hire more people who brings new innovation tokens with them.

If you choose to write your website in NodeJS, you just spent one of your innovation tokens. If you choose to use MongoDB, you just spent one of your innovation tokens. If you choose to use service discovery tech that’s existed for a year or less, you just spent one of your innovation tokens. If you choose to write your own database, oh god, you’re in trouble.

Write own database should be worth 9 innovation tokens in this scenario.

Any of those choices might be sensible if you’re a javascript consultancy, or a database company. But you’re probably not. You’re probably working for a company that is at least ostensibly rethinking global commerce or reinventing payments on the web or pursuing some other suitably epic mission. In that context, devoting any of your limited attention to innovating ssh is an excellent way to fail. Or at best, delay success.

Above paragraph is the most important paragraph every company should have printed instead of those innovative inspiring posters.

The nice thing about boringness (so constrained) is that the capabilities of these things are well understood. But more importantly, their failure modes are well understood.

The problem with “best tool for the job” thinking is that it takes a myopic view (aka short term) of the words “best” and “job.” Your job is keeping the company in business, god damn it. And the “best” tool is the one that occupies the “least worst” position for as many of your problems as possible.

Be it elections or tech, chosing least worst is most essential thing we forget or refuse to do…

Read original ⟶

Streamlining Invoice Management with a Serverless Approach


In the realm of contract work, invoicing often feels like a tedious chore that consumes valuable time and mental energy. As a seasoned professional who’s navigated these waters for years, I decided it was time to revolutionize my approach. The result? A serverless invoice management system that transformed a hours-long ordeal into a 5-minute task.…
Read more ⟶

🔗 What Goes Around Comes Around... And Around...


This is an interesting paper I read last month. The notes on this paper gave me an idea of having linkblogs…

Original Paper link

Some quotes

Under 4: Parting comments

ORMs are a vital tool for rapid prototyping. But they often sacrifice the ability to push logic into the DBMS in exchange for interoperability with multiple DBMSs. Developers fall back to writing explicit database queries to override the poor auto-generated queries. This is why using a RDBMS that supports SQL is the better choice.

Echoing my post on ORMs. epmhasis mine

The portion below, under the sections of blockchain is where things get personal…

Shots Fired for blockchains Ofcourse emphasis mine

We are required to place trust in several entities in today’s society. When one sells a house, they trust the title company to manage the transaction. The only applications without real-world trust are dark web interactions (e.g., money laundering). Legitimate businesses are unwilling to pay the performance price (about five orders of magnitude) to use a blockchain DBMS. If organizations trust each other, they can run a shared distributed DBMS more efficiently without wasting time with blockchains. To the best of our knowledge, all the major cryptocurrency exchanges run their businesses off traditional RDBMSs and not blockchain systems.

Blockchain proponents make additional meaningless claims of achieving data resiliency through replication in a peer-to-peer environment. No sensible company would rely on random participants on the Internet as the backup solution for mission-critical databases.

Essentially, Blockchain is a solution looking for a problem. And more ofthen than not, there are always better solutions then what Blockchain offers.

On ability to have a better onboarding DX.

One of the salient selling points of many non-relational DBMSs is a better “out-of-box” experience than RDBMSs. Most SQL systems require one first to create a database and then define their tables before they can load data. This is why data scientists use Python notebooks to analyze data files quickly. Every DBMS should, therefore, make it easy to perform in situ processing of local and cloudstorage files. DuckDB’s rising popularity is partly due to its ability to do this well. (My Note: Didn’t think about this till now…)

Download the paper ⟶

🔗 AI Agentic Workflow Andrew Ng


Youtube Video, via JS Party podcast episode Building LLM agents in JS

Notes

Non Agentic workflow: Do it start to finish. Mostly zero shot prompts.

Agentic workflow: Revise, iterative, reflect, use tools if you need to….

Four design patterns.

1. Reflect: Produce one thing and ask another chat thread with different system prompt to evaluate it. E.g. Create a code, than ask a rubberduck debugger to read it line by line, or run the test suite and provide the result to LLM generated the code to evaluate it. Or write a post, and ask an editor LLM to reflect it, and ask writer LLM to update the post on feedback.

2. Tool Use: Use tools and function calls, there are lot of that, even we have developed one for SourceSailor.

3. Planning: Like give a task to LLM and then ask it to plan the solution step by step, and then ask LLM to execute the plan. Take the task description, create a plan, break a plan to subtasks, and then use aider to execute the plan.

4. Multiagent Collaboration: Create multiple LLMs for one single task, and create an orchestrator LLM to collaborate between them. Like one LLM (Powred by sonnet) for figuring out style, another LLM (Opus) for generating the writing, another LLM (Opus or Gemini or GPT) to do the reflection and a haiku or 4o powered LLM which orchestrates between them.

Watch the talk ⟶

Updates in blog


After more than a year, the blog is getting an update. This is a short summary of what is getting changed…
Read more ⟶

🔗 How does AI impact my jobs


(via)

It’s not their fault. They enrolled in a master’s program to get a job in tech. Why? Let’s be candid: tech has promised job security and agreeable (sometimes borderline perverse) financial returns for a couple of decades. Many tech employers also spin a yarn about “saving the world” and coast on the reputational allure of “if you work here, you’re a genius.” Sounds great, doesn’t it? Except, now that students have invested five figures of money in their tech education1, had their skulls crammed full of ‘invisible hand of the market’ propaganda, and counted on having secured their ticket to the party, they’re seeing layoffs. They’re seeing exposĂ©s. They’re seeing compensation adjustments at the most lucrative tech companies. And they’re seeing a news cycle that oscillates wildly between blaming AI for these changes and extolling it as the solution.

you learn to write Dijkstra’s from a blank editor so you can get the job at Twitter, but once you accept the offer you never actually do that. What you need to do is understand, update, and (optimistically) un***k existing systems written by other people.

Obligatory…

Are large language models gonna cause programmers to lose their jobs? Not anymore than StackOverflow did, in my view. However, it’s going to change them
somewhat.

Read original ⟶

Lessons from the LLM Frontlines: A Developer's Journey


Embark on a wild ride through the LLM-powered development landscape as I spill the beans on my favorite tools, share why I’ve ghosted some popular options, and dish out eight battle-tested tips that’ll turn you into an LLM-whispering code ninja faster than you can say ‘Claude 3.5 Sonnet’…
Read more ⟶

Share specs, Not execution


There should be a clear rule: Share the specs, not the execution. This post tales the tale of why this is important and how two tools, Swagger and Postman, can work with this rule.…
Read more ⟶

Introducing Sourcesailor


SourceSailor is a CLI that helps anyone understand a codebase with the help of LLMs. This post introduces the tool, the features and tells the story how it came to be.…
Read more ⟶

My Adventures With Local LLMs


After toying with GPT based models. I have also explored how we can use these models locally, without internet, having full control. This post describes my process and learnings about my explorations……
Read more ⟶