Category: Development

  • Using Flexbox and Grid for Everything: the Power Tools for Web Design

    Using Flexbox and Grid for Everything: the Power Tools for Web Design

    Margins and The Early Web In the early days of the web, CSS was invented to design documents. A lot of the early CSS features revolved around styling text, paragraphs, images, tables, margins, borders, padding and other basic features similar to a word processor. These are good enough for documents, articles, and blog posts which…

  • How we streamlined CI pipelines with Gitlab components

    How we streamlined CI pipelines with Gitlab components

    At Bonito, we initially had each project’s gitlab-ci.yml files copy each other for deployment configurations as it was one of the fastest and easiest solutions to implement. We had no problem with this setup at first — that is, until we needed to make major changes to deployments or builds, like when we moved platforms…

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