Key Industries
Our team has over a decade of experience creating solutions and transforming businesses through technology. We have a wide range of expertise, and here are some of our core strengths.
Public
Transportation
We’ve dedicated years to mastering the ins and outs of public transportation, thanks to our award-winning flagship app, Sakay.ph.
If it has to do with mass transport, we’ve probably built an app for it.
Whether you need to track your fleet, optimize your routes, or just get the word out to the public about your services, we have you covered.
Retail &
Ecommerce
We’ve become the go-to for many retailers looking to build an online presence and expand their business.
Whether it’s choosing an online solution, designing your web storefront, making sense of your product inventory, or figuring out how to get from conversion to fulfillment, we are here to help.
Focus on your business and let us help you expand online.
Small & Midsized Enterprises (SME)
We’ve spent a lot of time working with governments and big corporations — but we’re a small operation at heart, and we understand the push-and-pull of being a little enterprise that wants to achieve big things.
Much of our design and strategy sense comes from helping SMEs and small business owners use technology to magnify their advantages and become competitive in the digital sphere.
Key Technologies and Expertise
We are a Multi-technology company, but we have expertise and competence on the following key technologies.
Software Development
iOS and Android, the two most prominent mobile platforms, have changed dramatically over the years. iOS development was originally based on Objective-C, a language it shared with macOS. These two platforms differed mainly in their application frameworks: UIKit for iOS, and AppKit for MacOS. Apple has since shifted focus to Swift as the programming lingua franca for iOS and macOS. Android on the other hand, followed a similar path, starting from Java and eventually moving to Kotlin as the preferred development language. All of these changes were at least in part undertaken to support modern programming language features such as rich enums, tuples, and modern control flows, which enables more maintainable and secure software.
The steady divergence and evolution of mobile app development makes the maintenance of an app on two different platforms an increasingly difficult challenge. This has led to the rise in various cross-platform mobile application development frameworks like Ionic, Xamarin, React Native, and now Flutter. Flutter is a cross-platform application development framework on top of the Dart programming language, mainly focusing on iOS and Android but support for web and desktop is rapidly growing.
We have have been developing mobile applications for more than 10 years now, using various platforms and frameworks: Objective-C/UIKit, Cordova with Angular, ReactNative, and finally Swift for iOS, and Java, Scala, and Kotlin for Android. More recently, we have been developing Flutter mobile applications for clients that want to support Android and iOS with a single highly maintainable and performant codebase.
We have also traveled off the beaten path and can work with other mobile platforms. In years gone-by, we created Pipeline, the first Dropbox Client for now-discontinued Samsung Bada mobile platform.
C and C++ has been the bread-and-butter for native development on Windows, Linux, and embedded platforms (though Rust has been making headways into this area). The low-level nature of C and C++ allows us to interface directly with the operating system, making access to hardware resources such as memory and peripherals in a more straightforward manner than though higher-level languages such as JavaScript. Moreover, since the resulting binaries from these languages run directly on the CPU without intermediate processing (e.g. through an interpreter or virtual machine), the programs usually also run faster.
We have experience in working with the Win32API, WxWidgets, Qt GUI framework, and graphics API such as OpenGL and DirectX by virtue of creating games when we first started this business. In recent years, we have used C++ on the more performance-intensive parts of Sakay such as map-matching for GPS processing.
Any business (or enterprise) has resources that must be managed and processes that must be tracked—purchase and sales orders, invoices, and deliveries that affect inventory, or hiring, salaries, and promotions that affect your employees. As companies grow, there comes a point where Excel just doesn’t cut it anymore, and things start breaking down. Enterprise Resource Planning (ERP) software is purpose-built for this domain, and helps businesses operate more efficiently by digitizing processes and helping you track resources.
There are numerous ERP solutions out in the wild catering to businesses of different sizes. While SAP and Oracle cater to multi-nationals, we chose ERPnext, a solution that caters to Small and Mid-sized Enterprises (SME) with a simpler interface and lower operation cost compared to its heavyweight cousins. As a relative newcomer to the space, it boasts some fresh ideas and a highly extendable architecture. We use it ourselves, and have experience in modifying it to suit our needs. We can probably do the same for you.
Web development is a complex landscape comprising multiple technologies. What was once just simple CSS, JavaScript (ECMAScript), and HTML has exploded to multiple technologies that attempt to increase developer productivity and enable complex features that was difficult or impossible to do in the past. This is in conjunction with the increased demand for interactivity (web apps vs website) and form factors (Desktop, Mobile, Tablet, and TV).
We are flexible in the web stacks that we use and adapt to client preference, though if consulted, we have recommendations. We have built front end code bases in Vue, React/NextJS, vanilla JS with JQuery, Flutter, and ClojureScript with Luminus (Sakay.ph web runs on this). For the backend, we have worked with Go, Java, C#, JavaScript (NodeJS), Python, Clojure, and C++. For API communication, we usually default to REST, but we have used GraphQL and gRPC (which uses Protobuf).
That said, our go-to stack has been Go for the backend, PostgreSQL for the database, REST for communication (with a bit of GraphQL thanks to Hasura), and React or ClojureScript for the frontend.
Software Design
At the heart of every successful product is a user-centric design. Our team has over a decade of experience studying users and putting business products in their contexts.
From user research, to brainstorming, to design, prototyping, and testing — our team applies a design thinking methodology to ensure that products solve user problems.
We use both qualitative and quantitative methods to uncover user needs, and approach from both an attitudinal or behavioural perspective, depending on the situation. Our ultimate goal is creating a product that users will be delighted to use.
While often lumped together with UX, UI is related but ultimately distinct from UX. While UX focuses on how the user uses and interacts with a product, UI focuses on the look and feel. This step comes after the higher-level product view of UX, and makes sure that all the i’s are dotted and all the t’s are crossed.
Our team has extensive experience designing beautiful, clean, and polished products. From prototyping, to design creation on figma and other similar tools, to auditing already-implemented designs, our team ensures that your product has a beautiful product that adheres to your brand identity and goals.
Geo Spatial
GIS incorporates location data into your existing data systems and analyses. QGIS, PostGIS, Google Maps, Google Earth, Shapefiles, KML, and other key tools are commonly leveraged to deliver GIS needs.
We utilize GIS to enable location-based analyses and visualizations like identifying foot traffic hotspots, gauging the desirability of a location for a particular purpose, and associating GPS signals to transport routes. This enables our clients to gain spatial awareness of their data and improve location-based businesses like public transportation, multi-branch franchises, or land development.
With GIS we help government and urban planners organize their geospatial data such as those pertaining to land use, population, and geography.
See one of our GIS analysis for Sakay here.
Improving the operations of a transport fleet requires empirical data to make effective decisions. Mapping public transport systems require more than just knowing where along the road the vehicles travel but also their fares, stops, time tables, accessibility, etc. One such data format that encapsulates the data model needed for public transport is GTFS, a recognized standard used by Google and the US Department of Transportation, as well as advocated by the World Bank, to name a few.
We have proven expertise and tooling for using this data to enable analysis across the mobility network, as well as coordinating with government to quickly respond to disruptions and disseminate information to their stakeholders, empowering them with maps, route editors, and live GPS tracking.
Infrastructure
Managing multiple services, ensuring uptime and rapid deployment is a challenge when using traditional system administration. Kubernetes is an orchestration tool that manages the deployments of containers with those goals in mind. With Terraform, Grafana, and Prometheus, they form a suite for deployment and monitoring of services.
We leverage Kubernetes to manage the deployment of services on projects like Sakay. Together with complementary technologies, we are able to ensure uptime scaling with demand. Moreover, we are able increase developer productivity by enabling multiple deployment environments for development and testing, and isolating production, all while providing Continuous Development and Integration. This allows developers to deploy to various environments simply by pushing to Gitlab or executing merge requests.
Linux has been the mainstay and de-facto operating system for web servers connected to the internet. There are multiple Linux distributions ranging from the bleeding edge distros like ArchLinux to production-stable ones like Debian Stable. Being free and open-source software (FOSS), Linux has very low startup cost while offering commercial support through multiple providers.
We have been managing Linux servers with various iterations, from vanilla deployment, to scripted ones using Puppet or Ansible, to fully orchestrated ones like Kubernetes. Sakay.ph, for instance, has evolved from a single-machine deployment with a JAR file and NGINX, to a scripted scalable deployment of the routing service using Ansible, to a fully orchestrated microservice system using Kubernetes with CI/CD.
We have proven expertise and tooling for using this data to enable analysis across the mobility network, as well as coordinating with government to quickly respond to disruptions and disseminate information to their stakeholders, empowering them with maps, route editors, and live GPS tracking.
Apache Kafka is a persistent queue technology that is used for many applications where data production or processing happens at different speeds, or where an event log needs to be maintained for event-based systems. It’s powerful, but tricky to develop on and manage. For instance, figuring out what keys a message should have (since it may affect partitioning), how to organize topics, how the brokers are configured, how many partitions to allocate, and what is the partitioning scheme are some of the many decisions to think about when using Kafka.
Our experience in Kafka comes from developing data systems around GPS processing for Sakay and some of our clients. Using Kafka, we have been able to robustly process data even when the rate of production and process are different. The system is able to withstand sudden influxes of data and processor restarts
This is Google’s Cloud offering that has an array of cloud services which cater to various IT needs like object storage (GCS), virtual private servers (GCE), serverless functions (Cloud Functions), Kubernetes hosting (GKE), simple application hosting (GAE), PostgreSQL and MySQL hosting (Cloud SQL), hosted data processing orchestration (Cloud Composer), Big Data analytical engine (BigQuery), etc. While each service has their purpose, the menu may be confusing as many of them seem to do the same thing, which can be challenging for companies looking to adopt Google Cloud services.
We have over 5 years of experience developing solutions on the Google Cloud Platform leveraging its various services. For instance, Sakay.ph
- runs on Google Kubernetes Engine (GKE),
- stores GTFS files and various reports in Google Cloud Storage (GCS),
- uses Cloud SQL for high-availability database with backup,
- uses Cloud Scheduler for triggering scheduled tasks such as managing GKE clusters…
- that runs on Google Cloud functions,
- and much more.
We can tap our extensive experience to help you navigate the GCP ecosystem with our GCP-certified engineers, get projects safely set up, and maximize bang for your buck.
Languages
Clojure is a functional programming language and dialect of LISP, implemented on top of the Java virtual machine (JVM). Its feature set makes it a powerful tool for concurrent programming and manipulation of semi-structured data, and its REPL allows for rapid iteration and a unique developer experience. Although it is niche, it has found it way into various applications like aeronautics and banking.
We have experience in using Clojure for web development — in fact, Sakay.ph’s webapp and API proxy are both written in Clojure. Together with its sister dialect ClojureScript (which compiles to JavaScript), Clojure has allowed us to write cross-platform code that can work as well on the server as it does on the browser.
Things we particularly like
- Functional Programming – Most programs can be written functionally, and where mutability is required, it can usually be isolated to a few easily controlled and monitored areas. While this is a technique and style that can employed in almost any other language, this is embedded deep in Clojure’s DNA, from compiler warnings to its data structures. This virtually eliminates an entire class of bugs.
- Dead Code Elimination – This comes out of the box thanks to immutability-by-default and its adherence to the functional programming paradigm. Most projects don’t use 100% of the code in the libraries they depend on. With Clojure’s DCE, production builds can be far leaner than you would expect from any other language.
- REPL – Almost like a shell or browser console inside your server-side program! This is not unique to Clojure, and is a typical feature of LISPs. This is the sort of thing that allowed NASA engineers to remotely troubleshoot space probes thousands of kilometers away. We have used this to great effect in inspect internal states of our servers to figure out when something unexpected happens.
- Async – Clojure’s asynchrony story is inspired by Go Lang, and in fact its fundamental concurrency block is called
go
. While a little challenging to understand if one is coming from a callback-paradigm, it ultimately helps the developer create more ergonomic and maintainable code. JavaScript took years to get toasync
await
, (which is superficially similar) while Clojure had go blocks from the get-go.
A statically typed, compiled language designed by Robert Griesemer, Rob Pike, Ken Thompson (co-creator of the C language) which has found itself in server backends and CLI tooling. It has a good feature set which made it compelling to use:
- ease of cross-compilation (being able to compile for Linux while on Windows), relatively small distribution size,
- easy-to-distribute binaries (just a single binary without any additional runtime requirement)
- a good concurrency model (goroutines and channels),
- and a rich standard library which includes string manipulation, cryptography, compression, JSON encoding/decoding, file manipulation, HTTP, templating, and more.
Go enabled us to rapidly implement features via microservices that’s easy to deploy. Sakay.ph’s GPS processing pipeline is, in fact, comprised of multiple Go services. We have used it in a Kubernetes cluster, as a function in Google Cloud Function, as a standalone web server, and as a CLI tool that’s runnable without need for additional runtime.
Data Engineering
Data, even if it’s not “Big Data”, can be hard to deal with. Small to Medium enterprises can benefit from modeling and developing their databases to speed up processes, reduce errors, and gain new insights into their enterprise. Have dozens of Excel files scattered across different computers in your business? We can help you organize then into a central repository, for proper reference and analysis. Or we can help you sanitize those Excel files, and import them into a proper relational database for more power.
We developed the driver and franchise database for the execution of the Service Contracting Program under the Land Transportation Franchising and Regulatory Board (LTFRB). For this program, we created a data model, implemented validations, and helped the LTFRB encode over 50,000 entities accurately.
PostgreSQL is a powerful free and open source database that rivals the feature set of database heavyweights like MSSQL and Oracle at a fraction of the cost.
We have over a decade of experience in developing software systems around PostgreSQL in many contexts: whether startup, SME, or Government. Among our projects is a data system around PostgreSQL that tracks millions of GPS data points generated by vehicles that is stored for fleet management purposes. All of that handled by a database that costs under $150 per month to maintain and operate.
Python is our tool of choice for data engineering and analysis, with a vibrant ecosystem that facilitates data manipulation and cleanup, statistical analysis and visualization. Hand in hand with the digital transformation of previously-manual processes, we build tools that can do analysis at scale—this lets us validate policy assumptions against facts on the ground, and allows stakeholders to make decisions backed by real data.
For Sakay, we built a tool for predicting MRT-3 congestion based on historical data, and published our own analysis of transit accessibility during the COVID-19 Community Quarantine, and our partnerships have given us the opportunity to build them custom dashboards and data visualizations to give them near-real-time updates on their business operations, audit their processing pipeline to ensure quality and integrity, and do deep dive analyses to surface bottlenecks and service gaps.