Mahmud Ridwan, Go Developer in Dhaka, Dhaka Division, Bangladesh
Mahmud Ridwan

Go Developer in Dhaka, Dhaka Division, Bangladesh

Member since December 31, 2013
Mahmud is a software developer with a knack for efficiency, scalability, and stable solutions. With years of experience working with a wide range of technologies, he is still interested in exploring, encountering, and solving new and exciting programming problems.
Mahmud is now available for hire

Portfolio

Experience

Location

Dhaka, Dhaka Division, Bangladesh

Availability

Part-time

Preferred Environment

Linux, Go

The most amazing...

...app I've built is a programming contest platform with a Linux namespace and cgroups-based sandbox for arbitrary code execution. Both are built with Go.

Employment

  • Lead Editor for Engineering Blog

    2015 - 2021
    Toptal
    • Helped others author rich technical content for the Toptal Engineering Blog and Toptal Resources.
    • Developed Battlescripts - a bot-vs-bot Battleships web game.
    • Developed Hopper - a prototype deployment automation tool.
    • Developed Arteegee - a simple implementation of the popular game Connect Four over WebRTC.
    Technologies: WebRTC, Go, Node.js, Software, Linux, Redis, Writing & Editing
  • Software Engineer

    2012 - 2015
    Mukto Software Ltd
    • Built a web-based ERP using Python and Django.
    • Created a web-based interface for Kettle (an ETL app) using PHP and Yii.
    • Built a programming and bot contest hosting platform using Node.js.
    • Created a data analysis and reporting web app using Node.js.
    • Developed a web-based interface for Teiid (a virtual database app) using PHP and Yii.
    Technologies: Python, Node.js, JavaScript
  • Full-stack Developer

    2014 - 2014
    Mainsocial (via Toptal)
    • Created a number of services in a micro-architecture fashion.
    • Created an authentication service with single-sign-on capabilities.
    • Created a central service for storing sports statistics, with revision history and reversion support.
    • Created a fantasy sports game involving baseball.
    • Created a real-time fantasy sports game involving ice hockey.
    Technologies: Firebase, AngularJS, Underscore.js, CoffeeScript, Express.js, MongoDB, Node.js
  • Researcher

    2012 - 2014
    Computer Vision and Cybernetics Group
    • Prototyped machine learning algorithms using MATLAB.
    • Implemented and benchmarked a number of offline signature verification algorithms.
    • Implemented efficient object detection, recognition, and path finding algorithms.
    • Implemented a tool for doing binary sentiment analysis on tweets.
    • Implemented a semi-supervised algorithm for document classification.
    Technologies: Python, MATLAB
  • Web Developer

    2010 - 2011
    Mochie Enterprise
    • Built an URL obfuscation web app.
    • Created a poetry kit-like web app for product title generation.
    • Developed a product details webpage scraper featuring automated translation from non-english websites.
    • Implemented Paypal and eBay integration for product sales monitoring.
    • Handled auction management and planning software.
    Technologies: AppEngine, JavaScript, Python

Experience

  • Toph — A Competitive Programming Platform (Development)
    https://toph.co

    I built Toph with Go, MongoDB, Redis, RabbitMQ, and S3-like object storage. The platform has been built with scalability and resiliency in mind. Code submitted by users is processed in a custom-built sandbox (also in Go) that uses Linux Namespaces and Cgroups to isolate the process and limit resources.

    To date (May 2021), Toph has 30k users, processed 700k submissions, hosted 400+ programming contests, most of them by the 50+ academic institutions that Toph has collaborated with.

  • Redsync — A Redis-based Distributed Lock (Development)
    https://github.com/go-redsync/redsync

    Redsync provides a Redis-based distributed mutual exclusion lock implementation for Go as described in the following post: https://redis.io/topics/distlock.

    The locking algorithm is safer than using a single instance of Redis.

  • Brdgd (Development)
    https://github.com/hjr265/brdgd

    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 (Development)
    https://github.com/hjr265/dots

    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.

  • CodeMarshal (Development)
    https://codemarshal.com

    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.

  • Saber (Development)

    Saber is a code compile-run daemon with ptrace-based sandboxing capabilities. This is being used both in CodeMarshal. 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.

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

Skills

  • Languages

    JavaScript, CoffeeScript, Go, Python, PHP, Bash, SQL, C, C++
  • Frameworks

    Express.js, Laravel, Django, AngularJS
  • Libraries/APIs

    Node.js, React, Underscore.js, WebRTC
  • Platforms

    Firebase, Google App Engine, WordPress, Linux, Heroku, Docker
  • Storage

    MongoDB, Redis, PostgreSQL, MySQL, Memcached, NoSQL, AWS S3
  • Other

    Front-end Development, Distributed Systems, Writing & Editing, Machine Learning, Namespaces, AppEngine, Software
  • Tools

    Git, MATLAB, Mercurial, RabbitMQ, Nginx, Cgroups
  • Paradigms

    Test-driven Development (TDD), Concurrent Programming, MapReduce, Model View Controller (MVC)

Education

  • Bachelor's degree in Computer Science
    2008 - 2012
    North South University - Dhaka, Bangladesh

To view more profiles

Join Toptal
Share it with others