My day-to-day work involves open-source projects (databases, messaging systems etc.). In addition to teaching and advocating for these technologies, I contribute back in the form of features, documentation etc.
Some of these include:
LangChain
- amazon-bedrock-langchain-go: langchaingo wrapper implementations for Amazon Bedrock. You can make use of these with existing
langchaingo
components such as LLM and embedding, including chains. - langchain-go-postgresql-vectorstore: langchaingo extension to use PostgreSQL pgvector as a vector database for your Go applications. It uses the pgvector-go. You can use this in your LangChain applications as a standalone vector database or more likely, as part of a chain.
- langchaingo-dynamodb-chat-history: LangChain chat history memory implementation using Amazon DynamoDB.
Testcontainers module for DynamoDB Local
Having a piece of infrastructure supported as a Testcontainers module provides a seamless, plug-and-play experience. The same applies to DynamoDB Local, and that’s where Testcontainers module for DynamoDB Local comes in! It allows you to easily run/test your Go based DynamoDB applications locally using Docker.
Secure your Redis Go apps using AWS IAM authentication
You can use this package to authenticate your Go apps to Amazon MemoryDB (and Amazon ElastiCache) for Redis using AWS IAM.
Here is the blog post that demonstrates this in action
Dapr (CNCF)
Dapr is a portable, event-driven runtime that makes it easy for any developer to build resilient, stateless and stateful applications that run on the cloud and edge and embraces the diversity of languages and developer frameworks.
Contributed a bunch of stuff to the Dapr
project:
- Implemented Azure Event Hubs PubSub component
- Added support for Couchbase as a state store
- Implemented Hazelcast state store feature
- Added support for Aerospike as state store
- Added SASL authentication to Apache Kafka binding
- Implemented NATS Streaming pub-sub
Debezium
Debezium is a set of distributed services to capture changes in your databases so that your applications can see those changes and respond to them. In addition to this, Debezium also provides a ready-to-use application (Debezium Server) that streams change events from a source database to different messaging infrastructures.
Implemented Azure Event Hubs plugin for Debezium Sever that allows you to push stream database change events to Azure Event Hubs.
Kubernetes Event-driven Autoscaling (KEDA) - a CNCF project
KEDA is a Kubernetes-based Event Driven Autoscaler. With KEDA, you can drive the scaling of any container in Kubernetes based on the number of events needing to be processed.
Made several additions and improvements to KEDA
scalers e.g. Kafka, Redis, Event Hubs etc.
Some other things I enjoyed working on
… that a lot of folks found useful!
- kubexpose - A Kubernetes Operator to access your Deployment over the Internet.
- Redis Streams in Action - Go, Rust, Java services to showcase Redis Streams and
RediSearch
. - Kafka on Kubernetes - Series of blog posts that cover Apache Kafka on Kubernetes using the open-source Strimzi Operator.
- funcy - Slack app as a Serverless backend using Go and Azure Functions.