Our Thoughts

Closing in on Clojure - Using Clojure in Production

Functional Programming, Clojure, Hammock Driven Development, Dynamic programming language • We at Ajira successfully delivered our first project in Clojure recently.We were able to deliver some complex features with ease because of the outstanding data-oriented programming features provided by Clojure. This blog post summarizes our experiences and learnings. • read more

Leveraging Property Based Testing

Property Based Testing • Property-based testing is one of the powerful technique to unit test the code. Unlike the example-based testing (where we Arrange a set of example inputs to Assert the system under test), Property based testing enable us to focus on what we wanted to test and liberate us from doing mundane work on coming up with sample inputs. Recently, I got a chance to use Property based testing in an open source library that I am developing to use Suave in Azure Functions. I felt very productive and it was a such a joy to write the unit tests. In this blog post, you are going to learn how Property-based testing has helped me and why you need to consider using(or learning) it • read more

Managing Data in Golang Using Gorm - Part 2

Golang • In my previous blog post, we have seen how to use the create and find function in gorm along with use-case driven approach. In this blog post, we will be extending our blogging platform gomidway by implementing an another interesting use case • read more

Managing Data in Golang Using Gorm - Part 1

Golang • We have been using gorm as a primary tool to interact with PostgreSQL from golang for almost a year now. Gorm does an excellent job as an ORM library, and we enjoyed using it in our projects. Through this blog post series, I will be sharing our experiences on how we leveraged gorm to solve our client’s needs • read more

Leveraging Interfaces in Golang - Part 2

Golang • In my previous blog post, we have seen how interfaces in golang can help us to come up with a cleaner design. In this blog post, we are going to see an another interesting use case of applying golang’s interfaces in creating adapters • read more

Leveraging Interfaces in Golang - Part 1

Golang • In my previous blog post on using golang in production, I have mentioned that interfaces are my favorite feature in golang. As a follow-up of this comment, I would like to share how we are using (my current project is also in golang!) the interfaces to keep our code clean and consistent through a series of three blog posts. This blog post series assumes that you are familiar with the basics of interfaces in golang. If would like to know what it brings to the table, I strongly recommend to check out this well-written article by Yan Cui. Let me start the series with a solution that we have implemented a few days back • read more

Using GoLang in production My Experiences

Golang • For the last one year, I was working with the development team of a leading media entertainment company in India and developed a cloud platform to distribute the DCPs across the globe in a uniform, scalable and cost-effective manner. We built the entire platform using golang and event-driven microservices architecture. It was an exciting journey, and this blog post summarizes my experiences of using golang in this project. • read more

Scale Up Azure Functions in F# Using Suave

Functional Programming, F# • In this blog post, you are going to experience a scaled up version of Azure Functions in F# using Suave • read more

Langton's Ant in F#

Functional Programming, F# • Some steps of my journey to discover functional programming. I used F#, which i know at a very basic level, to ramp up my Functional Programming and F# skills • read more

Jasmine or Mocha

Automated Testing, Mocha, Jasmine • So, the story goes like this. We have a big codebase, and a clean slate to write tests. We had Jasmine tests in the past, but those became unmaintained and stale. So, we got rid of it all, and started afresh • read more

Building an OData service in F# using Entity Framework and Suave

Programming, F# • OData (Open Data Protocol) is an OASIS standard that defines the best practice for building and consuming RESTful APIs. In this article, you are going to learn how to implement an OData service in F# using Entity Framework and Suave. • read more

Expressing Business Logic With F#'s Partial Active Patterns

F#, Clean code • Checking the state of the system and performing a requested action only if certain conditions met, is an indispensable requirement in most of the software we write. Though it is a straightforward thing to do, things will get complex/messier when we need to check multiple conditions. • read more

Rubber Ducking

Problem solving • Sometimes, the Samurai in you is wading through a big hot desert with no sight of water in the horizon. • read more

Sad state of XYZ — or What happens when you pick shiny new stuff

Programming, DevOps, Web Development • Sometimes, the Samurai in you is wading through a big hot desert with no sight of water in the horizon. • read more

‘Step’ into your cucumber feature

VIM, CUCUMBER • This post is about a way to reduce your inconvenience when writing step definitions in cucumber using Vim. • read more

Docker for Development: Common Problems and Solutions

Docker, DevOps • Started using Docker from Dev to Prod yet? Here are some hacky solutions to common problems during development. • read more

Docker image with Tor, Privoxy and a process manager under 15 MB

Docker, DevOps • At a time when we're obsessed with saving minutes (sometimes seconds) in build/test/deploy times, container image sizes are an elephant in the room • read more

ES 5-6-7: From Callbacks to Promises to Generators to Async/await

Javascript, NodeJS • Let's take a real life use case with the request library and convert it from callback style to promises to generators to async/await • read more

Distractions are good at work

Agile • This is not about the fulltime chatter boxes. At work, than always switching my windows to code and test and browse, I find it better and lively to spend sometime in interactions over the table • read more

The beginners guide to Infrastructure Automation

DevOps • Everything you wanted to know about Infrastructure Automation, from task runners to configuration management to containers • read more

Why I chose Golang?

Golang • There are hundreds of posts to explain when to use golang, whats awesome about it etc. The fundamentals on the choice • read more

Ruby in Production: Lessons Learned

DevOps, Ruby • Tips for a better Ruby production experience, along with automation scripts for Vagrant, Ansible and Docker • read more


API, REST • REST is supposed to simplify URLs. But guess what? Most people do it the other way around. Here are a top list of annoyances • read more

People are missing the whole point of Pair Programming

Agile • Pair Programming is always being touted as a tool to improve quality, but there is a completely different aspect to it • read more