Power of Eloquence

Mastering the Art of Technical Craftsmanship

Maximizing GitHub Copilot CLI: A Senior Engineer's Guide to AI-Powered Development

| Comments

Generated AI image by Microsoft Bing Image Creator

Introduction

As software engineers, we’re constantly seeking ways to streamline our workflows and boost productivity. GitHub Copilot CLI has emerged as a powerful tool that brings AI assistance directly into your terminal, transforming how we interact with code across different stacks. This comprehensive guide will walk you through setting up an effective AI-powered development workflow with GitHub Copilot CLI, whether you’re building front-end applications, back-end services, data pipelines, or cloud infrastructure.

Note: GitHub Copilot CLI is currently in public preview and features are subject to change. Always refer to the official GitHub documentation for the most up-to-date information.

What Makes Copilot CLI Different?

Unlike traditional code assistants, Copilot CLI is terminal-native and agentic—it doesn’t just answer questions, it can act as your coding partner. You can delegate tasks, and Copilot will autonomously execute them while you maintain oversight through explicit approval mechanisms.

GitHub Copilot AI Models: A Developer's Guide to Choosing the Right Model

| Comments

Generated AI image by Microsoft Bing Image Creator

Introduction

GitHub Copilot now supports multiple AI models from leading providers including OpenAI, Anthropic, Google, and xAI, giving developers unprecedented flexibility to choose the right tool for their specific coding scenarios. Understanding the strengths and trade-offs of each model can significantly improve your productivity and code quality. This guide breaks down when to use each model and provides practical tips for getting the most out of GitHub Copilot in 2026.

Building Modern CI/CD Pipelines with GitHub Actions: A Complete Guide to Docker, LocalStack, and AWS Glue Testing

| Comments

Generated AI image by Microsoft Bing Image Creator

Introduction

Since my last post on setting local AWS Glue using Docker, one of the potential extensions I mentioned is to setup Github Actions CI/CD pipeline for it. In modern data engineering, testing cloud-native applications locally before deployment is very crucial for rapid iteration and cost efficiency. Thus, as part of this exploratory exercise, I want my CI/CD pipeline to achieve the following outcomes(in scope):

  • Automate testing of AWS Glue jobs in a local environment
  • Use Docker to containerize the Glue runtime
  • Leverage LocalStack to simulate AWS services locally
  • Integrate with GitHub Actions for continuous integration and delivery
  • Ensure code quality with SonarCloud and Codecov

Not in scope for this pipeline:

  • Terraform or infrastructure-as-code testing
  • Deployment to actual AWS environments
  • Advanced security hardening for enterprise compliance

This guide walks you through building very robust (if not production-ready) CI/CD pipeline using GitHub Actions that integrates Docker containerization, LocalStack for AWS service emulation, and comprehensive testing for AWS Glue jobs.

The Future of the AI Era for Developers: What 2026 Really Means for Software Builders

| Comments

Generated AI image by Microsoft Bing Image Creator

Introduction

First off.

Happy New Year to all! Every engineer of various specialisations (ie front-end, back-end, data, devops, cloud, mobile, etc) would come to realise by now how much AI has heavily shaped and redefined our ways of engineering practices since ChatGPT made major headlines back in late 2022.

More than 3 years on with plethora of evolving AI tools at engineers’ disposals , I arrive with this conclusion.

“AI didn’t replace my love for software engineering — it gave it back to me.”

In 2016 (and beyond), being a software developer or engineer no longer means fighting every line of code alone.

It means having an intelligent collaborator that helps you think, build, refactor, document, test, and ship — faster and with more confidence than ever before.

For me personally, this shift became real the moment I subscribed to GitHub Copilot Pro for my own pet projects.

I reopened application repositories that I hadn’t touched in years, especially starting off with this one as an example. It’s a classic space invaders game written purely in Vanilla JS.

When looking into this repo for the first time, it came with my immediate reactions.

  • Old ideas.
  • Half-finished tools.
  • Abandoned experiments.

And suddenly.

Using AI — instead of feeling overwhelmed — I felt energized.

Beyond Prompt Engineering: From Code Coverage to Code Confidence, Master Unit Tests with GitHub Copilot Agent

| Comments

Generated AI image by Microsoft Bing Image Creator

Introduction

As we bring 2025 to a close, software engineers like myself find themselves immersed in all things AI from every direction—left, right, and dead center: Medium blogs, AI forums like Rundown AI, AI meetups, etc.—all in a constant state of flux. The message couldn’t be clearer: ignoring AI is no longer an option. Those who resist embracing these tools risk falling drastically behind in an industry moving at lightning speed. The greatest folly isn’t experimenting with AI and making mistakes — it’s refusing to adapt at all.

But here’s the critical insight most engineers miss: it’s not about using AI; it’s about using AI systematically.

Setting up Local AWS Glue Development Environment with Docker

| Comments

Generated AI image by Microsoft Bing Image Creator

Introduction

If you’re like me, you’ve probably experienced the frustration of developing any AWS applications in the cloud especially such as lambda, cloudfront, S3, etc using tools like SAM, CloudFormation etc.. Now that I’ve been delving into the world of data engineering, AWS Glue jobs is one of the main AWS data engineering tooling offerings, the frustrations in having to push Glue jobs directly in the cloud—waiting for job runs, nitty gritty AWS Glue binaries setup, dealing with slow feedback loops, and watching your AWS bill creep up with every test iteration. I’ve been there, and it’s not fun.

That’s why I built this local development environment. After experimenting with different approaches, I’ve put together a Docker-based setup that lets me develop and test Glue jobs on my laptop before deploying to AWS. The best part? It includes all the real-world components I actually use in actual cloud envs: Kafka for streaming data, Iceberg for my data lake tables, and LocalStack to simulate AWS services.

Tips and Tricks for Working with Arrays of Objects in Javascript and Typescript

| Comments

Generated AI image by Microsoft Bing Image Creator

Introduction:

Since my new types of interesting engineering work have been mostly tied with backend and data engineering as of late, I’ve been earger to do a check in on what’s been happening lately in the web browser space and how much the world of web and front end development has changed since stepping away little over 18 months at the time of writing, particularly when working and manipulating with arrays of objects.

Sure enough, modern JavaScript and TypeScript, powered by the latest ECMAScript features, are loaded with powerful tools for working with arrays of objects. They enable concise, readable, and efficient code, making it simpler to manage, search, filter, and transform data structures. In this blog post, I’ll cover actionable tips and tricks to level up your expertise in handling arrays of objects, starting with some refresher basics up to something more advanced takes.

How My Ultra-Wide Curved Monitor Supercharged My Productivity as a Software Engineer

| Comments

Generated AI image by Microsoft Bing Image Creator

Introduction:

First off - have a Happy New Year of 2025 everyone! :)

What a busy and challenging year of 2024 it’s been.

Looking back, I’ve been wondering what can I look forward in uplifting my personal productivity when in comes to staying lazer-focus, maintain strong context aware of code repositories without losing to context switching, which I have been struggling to achieve for some considerable time.

Especially when it comes to having the decent monitor screen size as my external display to check out code, read code, write code, submit PRs, review PRs etc.

Hence the purpose of this writing up this blog post - describing my recent experience of installing ultra-wide curved monitor for my WFH setup.

Bye Bye Heroku, Hello Render! Migrating My Personal Apps from Heroku to Render: A Comprehensive Guide

| Comments

Generated AI image by Microsoft Bing Image Creator

In the early days of my software development career, I relied on Heroku to host all of my personal apps without incurring any costs. However, over the years, Heroku has gradually shifted from a free model to a subscription-based service. As a software developer, I’m always on the lookout for platforms that offer better performance, scalability, and ease of use for hosting my applications while continuing to manage my projects on budget. After careful consideration and evaluation, I’ve decided to migrate all of my personal apps from Heroku to Render. In this guide, I’ll walk you through the migration process and explain the reasons behind my decision.

Demystifying Common Design Patterns in Modern Software Development

| Comments

Generated AI image by Microsoft Bing Image Creator

Introduction

In my previous post, I mentioned the usefulness of apply software patterns for scalable Javascript applications so far. I thought of revisiting this again because after working as a software engineer/developer for a while, I always found myself that design patterns are heavily applied across all projects (outside of Javascript domain) I have seen. Those projects were anything around Java, PHP, Python, C++, etc, thus I found there’s a common notion that design patterns are ubiquitous when applying to solve interesting and challenging software problems in our modern times.