Blog Posts
Thoughts on software development, architecture, and technology
LangGraph patterns and conventions for building agentic systems
Patterns and conventions I picked up building agent systems with LangGraph, covering pure transformations, state management, and common anti-patterns to avoid.
Reducing path drift in agentic systems with dynamic Few-shot injection
A practical feedback loop that turns validated agent runs into dynamic, query-relevant few-shot examples to make agentic workflows more predictable.
Understanding Google's A2A Protocol: Beyond Traditional HTTP
Explore how Google's Agent-to-Agent protocol revolutionizes AI communication with task-based models, rich events, and persistent connectionsâsolving HTTP's limitations for complex AI interactions.
Understanding Autogen's Distributed agent runtime implementation.
A deep dive into the GRPC-based architecture that powers seamless agent coordination and communication in Autogen.
OpenAI's Realtime API - Intro and Key Learnings
Worked on a personal digital assistant using the Realtime API from Azure OpenAI. Here are some key learnings and insights from the experience.
View your Google timeline information on the Web in 2025
Learn how to view your Google Maps timeline and places information on the web.
Auto function calling with GPT models using Semantic Kernel
Writeup on a sample application that demonstrates how to automatically call functions using GPT models and Semantic Kernel. This notebook
Quota management for DallE API using APIM
This article explores how enterprises can use Azure API Management to implement usage limits and quotas for the DALL-E API, ensuring cost-effective and controlled access to OpenAI's image generation capabilities.
ONDC - India's Digital Commerce Revolution
Drawing upon insights from a recent presentation, I examine ONDC's potential to bridge the digital divide, its network-centric model, and the collaborative push towards a more inclusive digital marketplace.
Autogen - Make your agents to collaborate
Autogen Framework simplifies the construction of complex applications by enabling customizable conversational agents that operate smoothly together to carry out tasks efficiently.
Langchain for LLM application development
This is a personal notes from the course Langchain for LLM application development. This one of the short courses offered by the Deeplearning.ai. Used Azure OpenAI for the workbooks, instead of OpenAI.
Multi architecture builds of Docker images
It is possible to build a docker image for multiple architectures using the same Dockerfile. In this article, will be explaining why you need to do this, how to do it and where to use it.
Huge docker raw file on mac
Docker desktop on Mac creates a huge file (`docker.raw`) in it's data folder. I spent some time in unravelling the mystery, so documenting for future me.
My productivity hacks - gitconfig
Summarizing some of the configuration that i like and follow in managing my git repositories.
Reflections on building an Enterprise POS
I was part of a team that built and rolled out POS machines to around 1000 stores. Sharing some of my key take aways from that engagement.
Experiences with Strangler fig approach using Change Data Capture
Summarizing my experiences in one of my re-platforming project. Keeping the monolith application in tact, we had to slice out a new service and keep the data in sync.
What I did to become AWS certified đ
My experiences and learnings when i worked on to get my AWS certification. I recently passed the AWS SAA certification. Penned down my learnings and experiences along the way
Micro-services Patterns. Saga - to music or to dance?
Saga pattern is useful to trace a distributed transaction across various micro-services. This post summarizes the 2 patterns of saga and explains a event storming for a sample use-case
Slicing Microservices
Some ideas to go about in designing micro-services. How to slice them and some general conventions
Scaling Applications Using Micro-Frontends
When starting a project with Micro-Frontends, here are some typical problem that require solving and some possible solutions.
ACE with React
Atlassian connect express comes by default with handlebars, this post describes how to make it work with a SPA.
Centralized error handling in Express applications.
Handling exceptions in an express application, responding back with standard error response.
Logging in Golang projects
A log abstraction in go-lang projects, that can then be used to log common information. This also hides the log library inclusion, making it easier to swap out the library for a different one.
Add Redux custom middleware dynamically
Redux provides options to add behaviour through middlewares. Here is an example of dynamically adding middleware to the store.
Start nginx when upstream is unavailable
nginx will not start if one of the defined upstreams is not available. Here is a workaround to get through with those situations.
Dealing with SOAP in clojure
Dealing with SOAP in clojure is not very straight-forward due to the lack of framework support. This post explains how to perform SOAP call using basic Java libraries.
Asynchronous calls in React component
React documentation suggests to use componentDidMount for async calls. Here is the explanation of why you shouldn't do in constructor or in componentWillMount.
Flyway migrations in lein clojure
Integrating flyway migrations to compojure apps. Flyway is a popular Java based database migration tool. This post describes about integrating flyway seamlessly with lein compojure ring stack in clojure.
Card slider using CSS Keyframes
Slider animation using css keyframes
Storing a function in the Redux store
Redux state can be very useful to share data across the application. This post is about storing a function inside the redux store.
Mock toLocaleString in Jest
Found an issue while testing toLocaleString and other related JS prototype function. Described here is the way to mock them.
Spring security session timeouts
Setup session timeouts in spring security. This will explain how to setup the idle timeout and also the max timeout for separate sessions.
Angular resource and http interceptor
This post describe about the use of angular resource library along with http interceptor.
Post browser logs to server in an Angular app
This post describes about posting all the browser errors in an angular application to an endpoint. This will be helpful to analyse or debug issues.
Expanding Amazon EBS Volume in a EC2 instance.
Even after increasing the size of the EBS volume in the AWS console, the actual size of the EBS wasn't increased. Have to follow the following steps to grow the EBS size.
Set deployed Git revision using Capistrano 3
While deploying Rails application using Capistrano 3, recording the current deployed git revision to be used by Rails applicaiton.
UrlGenerationError after upgrading to Rails 4.2
On a REST model new action, form_for tag breaks and raises UrlGenerationError after upgrading to Rails 4.2
Integrating CKEditor with Rails asset pipeline.
Integrating CKEditor plugin into rails asset pipeline.
Deploying Jekyll site for Github pages through rake script
Deploying jekyll blog or site for Github pages using rake script.
Integrating Netflix Hystrix to a Spring Application
Hystrix is a latency and fault-tolerance library from Netflix. This post describes how to integrate it with Spring Aspects to make the implementation simpler.
Testing APIary using Dredd.
Test API blueprint mardown files by simply hosting them on GitHub and setting up a pipeline in Travis CI.
Making HTTPS call using Apache HttpClient.
Perform Https calls from server using Apache HttpClient library.
Gradle, Spring MVC App.
A skeleton sample app demostrating gradle set up with Spring MVC along with basic logging and deployment in tomcat environment.
Cross Site HTTP(S) Requests - CORS Issue
Some tried out solutions for the cross site request issue. Should be a good place to look out for which solution to be used under a circumstance.
Re running testNG failed times n times.
Steps to set up re-runn of testNG failed tests for n number of times, using ant task.
Wiring Jasmine 2.0 with Phantom JS
This post describes the steps that are necessary for to wire Jasmine 2.0 test suites with phantomJS.
UTC time in Android device. With NTP server sync.
Using NTP time in the anroid application. This involves calling the SNTP server and also converting the time to UTC format.
What's new in Apple Passbook iOS7
New features in passbook application in the iOS7.
Setting up Cucumber-jvm
Setting up cucumber BDD framework in your Java project.
Link your Sublime Text 2 instances with Dropbox
Sublime text has a key mapping file where it stores all the shortcut. Here is a way to share your preferences and key maps across two machines using a dropbox account.
Scribblings on Socket.io
When i tried out socket.io for the first time, it was quite an interesting learning of few new paradigms and techniques.
Hamcrest conflict in jUnit.
Hamcrest matchers are used in jUnit for assertions. There is a weird problem with the version conflict between Hamcrest and jUnit. The solution is been discussed here.
Handle MaxUpload SizeExceededException in Spring
Handling MaxUploadExceedException in Ajax call with Spring controllers. This exception occurs when the file size greate than what is expected is been uploaded by the user.
Make your NTFS drive writable under Mac Lion
Make your NTFS drive writabe under mac lion.
Slot machine effect using jQuery
A cool widget that looks like a slot machine. Small piece of code and a nice trick to animate the numbers to achieve a slot machine effect.
Writing Custom Tags for JSTLs
Writing a custom JSTL tag and integrating with the application. A sample code to do the same.
Reloading an activity in Android
Refreshing or reloading activity in Android application. This might be important in the case of refreshing data in the activity.
Configuring Context name for an application
Setting up a different context name than the WAR name for the Java application deployed in Tomcat server.
Primary-key @OneToOne mapping in Hibernate
Joining two tables using Primary keys in Hibernate.
Age Of Empires (AOE) Fix in Windows 7
Age of Empires (a popular strategy game) has got some problems with color rendering while played in Window 7. A quick harmless solution for that is here.
Add EditText(s) dynamically and retrieve values - Android
Adding multiple edit text boxes to the android application dynamically through code and controlling them.
Test your Controller's ModelAttribute methods.
Injecting a ModelAttribute to the controller's method in Unit tests using Spring and jUnit.
Hadoop Version in AWS Map Reduce
Performing Map Reduce operation using Amazon AWS interface.
SAX parser characters() method.
Implementing `characters()` method for SAX parsing huge files. With a sample code in Java
FTP Client (Ubuntu)
Download multiple files from authenticated FTP server in Ubuntu.
Stop halting at Assertions
Generally assertions cause the test to halt. But sometimes we need to continue further and evaluate all the asserts and expect a comprehensive report of all the asserts.
Printing multiple divs in a page.
When an user tries to print a HTML page, allow multiple divs from the page to appear in the print and not the entire page. Not using media CSS query
Install Inconsolata.ttf in Ubuntu(Jaunty).
Inconsolata is dev friendly font used by devs for their code. This post is about installing Inconsolata tru type in Ubuntu - Jaunty.
Test SMTP server
How can you set up an SMTP server in your local environment for testing purpose.
First Post
An introductory post to start off my blog.