Category: Development

  • Finding and Fixing bugs in PHP Source Code

    Finding and Fixing bugs in PHP Source Code

    All software development projects are built on top of existing solutions, from databases, frameworks and libraries; to compilers, interpreters, and operating systems. When things go wrong, it is often the user of the solution that is causing the bug, rather than the solution itself, especially when the solution is mature and has existed for quite…

  • Build a RAG Chatbot in Minutes: No Coding Required

    Build a RAG Chatbot in Minutes: No Coding Required

    Introduction From IBM Watson to OpenAI’s ChatGPT, today’s developments in Artificial intelligence are now being put to work, built on increasingly capable foundation models trained on swathes of data far across human knowledge. AI agents can answer frequently-asked questions, help with programming, and classify input according to different criteria. OpenAI Assistants allow us to build…

  • How to Serve a Svelte Site on WordPress and Why You Shouldn’t

    How to Serve a Svelte Site on WordPress and Why You Shouldn’t

    Say you want to build a site that has a dynamic front page and a blog. Then, due to varying factors (client requirements, cost, preference of content managers, etc.), the web site should be done in WordPress. WordPress can do both?it’s good at doing the blog thing, but writing a fancy front page especially will…

  • How We Reduced our Mapping costs by 90% using Protomaps and Cloudflare

    How We Reduced our Mapping costs by 90% using Protomaps and Cloudflare

    One of our internal goals in Sakay is reducing its operating expenses. One cost center in particular is mapping since as a transport app, we display maps pretty much everywhere in our application, as well as web pages. We initially used Google Maps and with its generous free tier, the costs were manageable. However when…

  • Basic Python Memory Management and Diagnostics: A Real-World Example

    Basic Python Memory Management and Diagnostics: A Real-World Example

    By design, Python tries to make memory management simple for its users. While Python is usually implemented with C, it does away with the need for manual memory allocation and deallocation that C is famous (or infamous) for. However, just because Python makes memory management simple, it doesn’t mean that best practices can completely be…

  • Secure Your APIs with Firebase and Automate Testing Like a Pro

    Secure Your APIs with Firebase and Automate Testing Like a Pro

    In order to secure our APIs, we often use Firebase Authentication. This provides us an easy start while providing flexibility in our token verification methods. Something not covered in their documentation however is how to go about testing our API with these security measures in place. Testing requires generating tokens and while Firebase does provide…

  • From OpenFAAS to Fly.io: My Migrating Misadventures and How Gunicorn Saved the Day!

    From OpenFAAS to Fly.io: My Migrating Misadventures and How Gunicorn Saved the Day!

    As a junior dev, sometimes the simplest problems are the hardest to solve. This was one of those times. We were in the process of migrating our OpenFAAS function to another platform. Our initial choice was Google’s Cloud Functions because of: It seemed like a straightforward migration. Unfortunately we later on discovered that because the…

  • 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,…