Saber is a code compile-run daemon with ptrace-based sandboxing capabilities. This is being used both in CodeMarshal and Toph. It allows one to queue codes written in various programming languages to be compiled and run. It can run those programs under strict system resource limitations. Saber was written in Go (primarily) and Python.
CodeMarshal is a programming contest hosting platform. It was built on Node.js and Python. The platform was able to successfully host the preliminary mock, preliminary, and semi-live contests of the ACM ICPC 2013 Dhaka Regional.
Brdgd (pronounced "bridged") is an extremely simple p2p file transfer web app. It depends on PeerJS to manage the p2p connections. The web app, in rare cases, uses a turn server to relay the connection in cases where the peers cannot reach each other due to certain obvious reasons.
Dots is a simple networking utility web application built with Node.js. It supports DNS, rDNS, WHOIS, and geo queries on domains and IP addresses.
Winry is an app for real-time face recognition, text extraction, and voice feedback using Microsoft Kinect for aiding visually impaired people. Winry is built using Python and a few open source tools (like OpenCV).
Toph is a sport programming platform. It is built on a pure Go-based back-end.
Going Real-Time with Redis Pub/Sub (Publication)
Real-time applications have already started to dominate the landscape of the Internet. With modern frameworks and standardization of the necessary client-side features, building a real-time web application has become a breeze. However, such web applications still pose unique scalability challenges.
In this article, Toptal engineer Mahmud Ridwan explores the architecture of a simple real-time web application that works using Redis Pub/Sub and doesn't compromise its horizontal scalability.
Simplified NGINX Load Balancing with Loadcat (Publication)
NGINX, a sophisticated web server, offers high performance load balancing features, among many other capabilities. Like most other web server software for Unix-based systems, NGINX can be configured easily by writing simple text files. However, there is something interesting about tools that configure other tools, and it may be even easier to configure an NGINX load balancer if there was a tool for it.
In this article, Toptal engineer Mahmud Ridwan demonstrates how easy it is to build a simple tool with a web-based GUI capable of configuring NGINX as a load balancer.
Taming WebRTC with PeerJS: Making a Simple P2P Web Game (Publication)
WebRTC has opened doors to all kinds of new peer-to-peer web applications and games that can run in the browser without the need of additional plugins. However, being a relatively new technology, it still poses some unique challenges to developers. PeerJS aims to tackle some of those challenges by providing an elegant API and insulating developers from WebRTC’s implementation differences. In this article, Toptal engineer Mahmud Ridwan provides an introductory tutorial to building a simple, peer-to-peer web game using PeerJS.
Introducing Battlescripts: Bots, Ships, Mayhem! (Publication)
Programming is about having fun and enjoying the process of creating something cool. That is why we decided to build a bot-vs-bot game platform around Battleship and make it open source. In this article, we take a look at the code and mechanics of the extensible engine behind this platform.
Deploy Web Applications Automatically Using GitHub Webhooks (Publication)
Deploying instances of a web application to one or more servers manually can often be a monotonous process, and take up a significant amount of your time. With little effort, it is possible to automate the process of deploying your web application with almost zero human intervention. This article outlines a simple approach to automating web application deployments using GitHub webhooks, buildpacks, and Procfiles.
Top 8 Most Common Mistakes That Backbone.js Developers Make (Publication)
Backbone.js equips the developer with an array of tools that are minimal but extremely flexible. This gives developers the option to design the applications the way they want, but also introduces a number of way things can go wrong. This article outlines a few common mistakes that Backbone.js developers can make, and how they may avoid them.
The Top 10 Most Common Mistakes That Node.js Developers Make (Publication)
Node.js, the cross-platform runtime environment, has seen its fair share of praise and criticism for what it offers to developers. Often, reasons for such criticisms are rooted in how developers use/misuse the language.
This article explores ten common mistakes that Node.js developers make and how to avoid them.
Predicting Likes: Inside A Simple Recommendation Engine's Algorithms (Publication)
The Internet is becoming “smarter” every day. The video-sharing website that you frequently visit seems to know exactly what you will like, even before you have seen it. The online shopping cart holding your items almost magically figures out the one thing that you may have missed or intended to add before checking out. It’s as if these web services are reading your mind - or are they?
Turns out, predicting a user’s likes involves more math than magic. In this article we will explore one of the many ways of building a recommendation engine that is both simple to implement and understand.
Separation Anxiety: A Tutorial for Isolating Your System with Linux Namespaces (Publication)
Linux namespaces make it possible to run a whole range of applications on a single real machine and ensure no two of them can interfere with each other, without having to resort to using virtual machines. In a single-user computer, a single system environment may be fine. But on a server, where you may want to run multiple services, it is essential to security and stability that the services are as isolated from each other as possible.