Skype sender as a web service

I used the fantastic Python module Skpy to setup a ‘Skype sender’ as a web service. I did this work because I wanted to make it as easy to programmatically post to a Skype channel as it is to programmatically post to a Slack channel. If you know your channel id and have an API key, then posting a message […]

Writing a Skype listener using skpy

I implemented a Skype listener service that listens to messages posted on our common Skype channels. The Skype listener is written using an excellent Python module skpy. This listener serves as a building block for a few AI-based internal applications. This post outlines the implementation details. I hope it helps companies that still use Skype as their instant messaging tool. […]

Mocking an AWS SQS queue using moto

This post shows you a short example of how to use the Python module moto to mock a SQS queue. This technique is useful when writing code level tests for applications hosted on an AWS stack. We will work with a method that takes a string as an input, processes the string and then writes it to an SQS queue. […]

Returning repeatable data patterns from a HTTP endpoint

In this post, I outline a technique to create repeatable data patterns that I have used when testing algorithms that operate on streaming data. Imagine an API endpoint that returns the value of a real time metric. Examples of such metrics would be CPU load or stock price or the glucose levels of a patient. An application integrating with such […]

Bad gateway error for a Flask app deployed using Elastic Beanstalk

This is a super short post that outlines one specific solution for anyone trying to deploy a simple Flask application using AWS Elastic Beanstalk and hitting a bad gateway error. Solution The Internet has some good stuff on helping you if you made a mistake elsewhere, but I did not find this basic check being mentioned anywhere. Make sure that […]

Early employees and company growth

Early employees – here is what your founder might not tell you. This post outlines some thoughts I had shared with my early employees on what to expect as we grow. There are several ideas (e.g.: employees should not be loyal to a company) that many founders cannot talk openly about. I understand that some things listed are not applicable […]

Peer-checkins to combat loneliness in a fully remote company

In this post, I am sharing the concept of ‘peer-checkins’ that Qxf2 (a fully remote company) has been using to combat the loneliness that comes from working fully-remote. A ‘peer-checkin’ is a 15-30 minute/week talk with a group of colleagues that is completely non-technical. It is similar to a water-cooler conversation at a co-located office. I am outlining the rules […]

Pytest, argparse.ArgumentError and the -V: conflicting option

The CI tests for our open sourced framework suddenly started failing with: argparse.ArgumentError: argument -V/–ver: conflicting option string: -V. Pytest was clearly telling us that the -V option was being used elsewhere. But it was not clear about where the ‘used elsewhere’ was located. Further, while we knew what the error meant but could not understand why the error would […]

Clearing springy.js graphs

I recently used springy.js as part of writing a web application. I chose springy.js because it made it super simple to draw directed graph network. However, I ran into a problem when I updated the graph via an ajax call. The graph flickered and sometimes displayed the data from the previous ajax request. This post outlines how I ended up […]

Banning 1:1 technical communication

I banned 1:1 communication for anything technical within Qxf2. This post outlines a) the motivation behind the decision b) new rules for technical communication c) the fallout of the decision d) adjustments we made since introducing the ban Motivation Qxf2 is a fully remote company that offers software testing services to startups. We have been a small company for many […]