Printd: On-site Code Printing for Toph Contests
We built Printd at Furqan Software for Toph to let on-site contest participants request printed copies of their code directly from the contest UI. In team contests where members share one machine, a competitor can request a printout, debug on paper away from the screen, and let teammates continue solving other problems, without any per-computer printer setup.
Why It Matters Installing network printers and configuring client machines can be time-consuming. Relying on volunteers can make this process even more fragile, leading to unnecessary delays and complications.
Building Blink: A Documentation Scraper for Toph
Programming contests present unique challenges that often require creative solutions. When Toph, our competitive programming platform, needed to provide offline access to programming language documentation during contests, we faced a few specific problems that existing solutions couldn’t quite solve. It led to the creation of Blink, a specialized tool for scraping and mirroring programming language documentation.
The Problem Competitive programming contests, especially on-site events, operate under strict network restrictions. Participants typically only have access to the contest platform (toph.
Cypress Automated Tests for Toph
Automated tests are like the brakes of your car. Without brakes, you wouldn’t feel comfortable driving at higher speeds.
The year 2021 started great for Toph in terms of development. Aside from launching some of the community’s favorite features, a lot of work has been done to improve the codebase and internal frameworks.
During this time, it was becoming increasingly infeasible to test Toph manually before deploying updates. Although Toph already has unit tests covering the critical parts (something to be covered in a future engineering blog post), they are not replacements for well-written end-to-end tests.
Stash: A Go Package for Disk-based Blob Cache
Web services like Amazon S3 or Google Cloud Storage make file storage so trivial that you can’t help but fall in love with them.
Although, they make your life easier when it comes to storage, for most real applications you still need to transfer files back and forth between the storage service and your application.
How the BACS Contest Helped Us Improve Toph
Bangladesh Advanced Computing Society (BACS) recently hosted their regional programming camps selection contest on Toph. There were 1792 registrants, of which 1043 participated in the contest. During the contest day, a whopping 2500 unique users were on the site.
These numbers may not sound very large, but they were large enough to help us identify a lot of bottlenecks and areas where Toph could be improved.
Based on what we learned during the contest and the feedback that we received from the participants, we have enhanced a few things in Toph.
8 Things We Did to Make Our Website Super Fast
Before we started revamping our website, we asked ourselves: What defines us better? A website that tests our visitors’ patience? Or, a website that’s lightning fast?
We don’t like slow websites, and we know no fancy loading spinner can make up for the frustration that such a website delivers. To make sure our website load fast on your device, we leveraged these 8 effective web performance techniques.
What Is This?
Javascript can be a pretty illusive language. It gives you objects, but it is not what traditional object-oriented programming languages are like. It gives you arrays, but their typeof is not "array". With enough time spent learning and using Javascript, these nuances start to feel natural. But for anyone who is new to this programming language, things can get quite frustrating very fast. In Javascript, the keyword this is quite different from how this same keyword behaves in other programming languages.
In this article, we will take a look at how the keyword this behaves in Javascript in different contexts and in different modes.
Hello, World!
With the launch of our website, we are introducing our very own blog. By focusing on building quality software, we go through some of the most amazing engineering and development experiences. Through this blog, we intend to share those experiences with everyone, be it through an article on implementing a large-scale microservice architecture, something as simple as a toy web application, or even an overview of some technology that we have come to love.