Blog

Getting Started with Burpless: Writing Cucumber Tests in Clojure

No matter how rapidly the world of software development may change, one constant is the need to ensure the quality, functionality, and reliability of our software applications. As our demand for more and more complex applications continues to increase, so does the risk, not only that developers might program something incorrectly thereby introducing bugs, but that they might “correctly” build the wrong thing, due to having misunderstood the requirements! Worse than having bugs is having built something that is not…

An ML tale: From notebook to production

Data Scientists spend their days working in Jupyter notebooks, which are then passed to an implementation team to prepare for production. This post guides you through that process, emphasizing iterative refinement. I will be using the scikit-learn and XGBoost libraries, but other ML libraries could be swapped in. While scikit-learn offers a comprehensive library of algorithms and tools that simplify data analysis and model building, it doesn’t impose a strict framework for organizing projects. This flexibility can be advantageous, but…

Cost Optimizing an ML Feature Store

A client recently started building a new machine learning (ML) architecture with a feature store as one of the key pieces. The feature store was already burning through a lot of money on AWS Elasticache and it wasn’t even scaled up in production yet! The project was in danger of being shelved without serious cost reductions so I was asked to take a look and see what could be done. What is a Feature Store? Simply put, a feature store…

Websockets feeding Kinesis

We recently explored a project to retrieve data from a third-party service. They didn’t offer any push capabilities such as writing to a Kafka or Kinesis stream, or even a web-hook. But they did offer a WebSocket interface, so we explored whether we could use that as our streaming source. We didn’t go that route, but I was intrigued by the idea enough to make a proof-of-concept.

Automate the Boring Stuff with AI

My motivation for creating tools often stems from a desire to get familiar with new technologies. This project was no different; I wanted to deepen my understanding of Generative AI. However, this wasn’t the primary reason for its creation. The real driving force was a persistent gap in my workflow that I couldn’t ignore any longer. Every so often I’ll encounter a task that makes me think, “If only this one thing was more like this,” or “If I could…

A Practical Way to Improve Javascript Code using Dependency Injection

We have all seen endless articles and walkthroughs for implementing The Greatest Design Pattern Ever™. The one failing many of them seem to have in common is that they all assume a user is starting with a new project. It’s relatively easy to set up an ideal theoretical project, and implement a design pattern, but how many of us get that luxury in our jobs?  Many, if not most of us, are stuck maintaining other people’s code, sometimes decades old….

Lambda Four Ways, a Rosetta Stone for AWS

When I write Lambdas professionally, Python is my preferred language. It offers decent performance, a straightforward syntax, and high developer productivity. I’ve also used Java, both in demonstration apps and actual client work. But while I have some familiarity with other languages supported by the platform, I’ve never used them. So, with some downtime, I decided to implement the same Lambda in four different languages: Python, Java, JavaScript, and Go, to get a better sense of their strengths and weaknesses.

Scaling Effortlessly: How Jenkins, Karpenter and EKS Redefines CI/CD

Jenkins has served as the backbone of the CI/CD landscape for over a decade. Throughout these years, CI/CD practices have transformed from jobs executed in companies’ own data centers to those running in the cloud. Jenkins has adapted and evolved throughout this time, remaining a workhorse in the ever-changing CI/CD domain. If you looked at a typical AWS-based Jenkins setup, you would probably see a master Jenkins node running in EC2. When initiating a job, the master node dynamically spawns…

Integrating Touch Support to Drag-and-Drop Interfaces

In the previous blog post, we went over how to use the HTML Drag-and-Drop interface, which is a well-supported web API that’s available to use across major web browsers. Here, we will go over how we can extend our previous demo to support touch interactions so that our application can be used across various devices but still provide the same functionality the user expects. For demonstration purposes I will be simulating a virtual mobile device using the Chrome Developer Tools…

Mastering the HTML Drag And Drop API

For web developers, creating intuitive and interactive user interfaces is essential to providing a great user experience. One feature that significantly enhances the user experience is drag-and-drop functionality. This feature allows users to manipulate elements on the screen in a natural and interactive way. In this article, we will explore the HTML Drag and Drop API and how to implement it in a web project. Why Drag and Drop? There are a multiple scenarios where a drag-and-drop like feature is…

1 2 52

How can we help your company with your development needs?

Contact Us