Posts

How AI Agents Transform the Day-to-Day Life of an Engineering Manager

Image
I know there are plenty of posts and materials about using GenAI in software development, especially how it can act as a junior software engineer working alongside you. However, I haven’t found enough examples of how GenAI can assist managers who lead software development teams—a.k.a Engineering Managers. This post is a quick summary of how I’ve been using GenAI in my day-to-day work to stay ahead of the game. Please share any additional use cases you’ve found helpful for engineering managers in the comments! Early Adoption of GenAI at Amazon In late 2023 and early 2024, Amazon developed numerous internal tools, primarily built on Anthropic Claude models, to assist with daily work. It started with simple ChatGPT-like utilities for correcting grammar and rephrasing and summarizing text based on prompts. I realized it was no longer acceptable to make silly grammatical errors in written communication (whether in emails or Slack messages) when tools like these were readily available. My f...

Are Communication Skills Impacting Your Career Progression in Software Engineering?

Recently, while reading Marshall Goldsmith's " What Got You Here Won't Get You There ," I found myself reflecting on my journey in Software Engineering. As we progress in our careers, we often need to adapt to new expectations and roles. Yet, one aspect remains constant: communication. Clear expression of ideas is crucial, regardless of career stage. I learned this lesson firsthand over my 20-year tenure in software engineering. I thought to share a glimpse into my experience. Growing up in rural Sri Lanka, English wasn't a part of my daily life. When I moved to Colombo for school, I struggled with basic language skills while my peers excelled. Avoiding English classes led to poor grades and a fear of speaking the language. This fear persisted into my professional life. My first encounter with a foreign client left me terrified. Despite my technical contributions, communication held me back. Even on-site appointments became daunting because of language barriers. I...

Revamping My Tech Blog

Image
After nearly a decade of inactivity, I thought to revive my blog. I created this blog in 2006 while I was a core contributor to Apache open source projects. In those days when social channels like YouTube and Stack overflow were not readily available for software developers to assist in technical subject matters, bloggers like me became reference materials for open source software troubleshooting. Some posts in this blog generated 1k+ daily hits and tech enthusiasts reached me via various channels and engaged in productive discussions.   I quit contributing to open source software since I joined Amazon in 2014. Since then, I was not active in the blogosphere primarily because of the proprietary technologies that I have been using at Amazon and the restrictions on sharing confidential information. Over the last 8 years, I advanced my career at Amazon by transitioning from an individual contributor to Engineering Management role. In this process, I gained a wealth of experience ...

How to enforce a default HTTP Content-Type for requests in WSO2 ESB

Occasionally, you will get requests from legacy client applications that do not include HTTP Content-Type header. WSO2 ESB proceeds with the mediation flow only after building the relevant SOAP infoset using the message builders registered against the Content-Type of the incoming request. In case the Content-Type is blank, you will experience an error similar to the following in the log. ERROR - RelayUtils Error while building Passthrough stream java.lang.StringIndexOutOfBoundsException: String index out of range: -1  If modification of client applications to include the mandatory Content-Type HTTP header in POST requests is out of your control, we should be able to set a default content type for such incoming requests. In WSO2 ESB, you can use the following property to set a default Content-Type for the incoming requests in case the HTTP request does not have Content-Type header. i.e:- <parameter name="DEFAULT_REQUEST_CONTENT_TYPE" locked="false...

Handling JSON responses in Apache JMeter

Image
There are various types of post processor elements that we can use out of the box when handling responses in a JMeter test plan. For example, Regular Expression Extractor can be used to capture a specific value or set of values from a XML, HTML or JSON response. However, handling JSON responses through the default regular expression extractor will be a daunting task when the JSON response becomes complex. When handling complex XML responses, Xpath extractor is the obvious choice in JMeter. Similarly, it will be quite efficient to have a similar post processor element to handle complex JSON responses. JSONPath is a way to extract parts of a given JSON document and is now available in many programming languages. In this simple post, we will look at how we can use JSONPath expressions to extract values from JSON responses in JMeter. Pre-Requisites: Download and install JMeter version 2.8 or later Step 1 Download this JMeter plugin library and unzip JMeterPlugins-ExtrasL...

Common mistakes to avoid in WSO2 API Manager - "ERROR - APIAuthenticationHandler API authentication failure" for a API call with valid access token

Image
In the third post of the common mistakes to avoid in WSO2 Carbon platform blog series, I'm going to look at another frequently raised question.  I have been struggling to get rid of this issue for few hours recently and figured out the fix by consulting one of my colleagues, Nuwan Let's look at the problem in detail. Problem Suppose I'm calling a REST API hosted in WSO2 API Manager with a set of query parameters as shown below. GET http://192.168.1.10:8280/qa/1.0/GetData?name=charitha&city=colombo HTTP/1.1 In order to match with the GET URL/query parameters, I define the url-pattern in API publisher as shown below. Note**** We cannot define a uri-template in API publisher UI in the latest version of API Manager (At the time of writing, it is API Manager 1.6.0). However, the specified url-pattern, /GetData/* does not match with the request URL since my API call contains a set of query parameters. Thus, I open the API configuration file which...

Common mistakes to avoid in WSO2 Carbon - 2 - "java.sql.SQLException: Total number of available connections are less than the total number of closed connections"

This is the second post of common mistakes blog series which I'm planning to share with you. In this post, we are looking into another common mistake which we do when working with WSO2 Carbon platform. Registry mounting is a way of federating the registry space across multiple servers in a product cluster. For example, if you have a WSO2 ESB cluster, you can use a single registry space to store all configuration data common to cluster nodes. There are 3 different registry spaces provided by each WSO2 Carbon product; local, configuration and governance. You can find more details about these spaces in here . We have to keep in mind a few important concepts when building a shared registry setup. You cannot share the local registry space among multiple cluster nodes. The local registry space is used to store node-specific data hence it should not be shared among other nodes in the cluster. However, we mistakenly do this when configuring shared registry setups and experience many...