Category: Development

  • Why the Data team loves Clojure

    Why the Data team loves Clojure

    Where we use Clojure Here at Sakay, the Data team’s tools are primarily written in Clojure (and Clojurescript). The biggest codebase written in this language is hOTPot. What exactly is hOTPot? If you have experience working with transport data, the spelling may have already given you a hint. hOTPot is our API proxy that normalizes…

  • Debugging and Patching NodeJS Dependencies

    Debugging and Patching NodeJS Dependencies

    While working on a Shopify project, we employed Prettier for formatting our JavaScript, HTML, and CSS files. Shopify however, uses Liquid for templates which Prettier does not support out of the box but fortunately, Shopify developed a Liquid Prettier plugin to handle Liquid files. When using it, we noticed that the formatting of Prettier on…

  • Multiple Service Sanity with ClojureScript Part 1 – An Introduction to Protocols

    Multiple Service Sanity with ClojureScript Part 1 – An Introduction to Protocols

    Introduction In early 2018, Google announced a change in the pricing of their maps services, and finally implemented it half a year later. The new prices would have been prohibitively expensive for many tech companies (think thousands of U.S. dollars a month), and many scrambled to find alternatives. Along with everyone else who was affected,…

  • Updating Averages and Variances Incrementally

    Updating Averages and Variances Incrementally

    Given a list of numbers, there are multiple ways of computing the average and variance (including the standard deviation). A blog entry by Dr. Cook outlines various ways computing them, as well as their characteristics. One particular method that I would like to focus on, is the iterative method detailed here. It’s a wonderful algorithm…

  • Minimal Bounding Circle Area of Lon/Lat Coordinates

    Minimal Bounding Circle Area of Lon/Lat Coordinates

    How do you check if the GPS trajectory stays around an area for a certain amount of time? While working with GPS data in Sakay, this is the problem we’ve encountered when trying to detect if a vehicle is not moving. There are many ways to do this, but we decided to check if the…

  • Setting Up Your Apple Silicon MacBook as a DevOps Engineer in 5 Minutes

    Setting Up Your Apple Silicon MacBook as a DevOps Engineer in 5 Minutes

    Getting your M1 (Apple silicon)-based MacBook ready for DevOps with iTerm, AWS, and Google Cloud Note: This post was written by a developer on an M1 MacBook. However, the same steps apply to all other M1 or M2 machines. Introduction As a DevOps engineer, you know the importance of having a reliable and efficient development…