It definitely took a while but as promised, this is hero counters for the DPS role. If you haven’t checked out the previous one for the Tank role, you can read it here. Going with alphabetical order, first up we have Ashe.

While there are many lists of hero counters you can find online, as a newer player, you might not understand why a certain hero is stronger/weaker against another hero. In this 3-part series article, I’ll try my best to make up my list of hero counters and explain why I think so. However, more so than focusing on the list itself, thinking about why a hero counters another hero is more important. I’m by no means a high-ranked player and this is simply based on my knowledge and analysis I’ve gathered. After all, hero counters just give an advantage but…

When I first picked up Overwatch back in 2016, I was only a quick player and don’t really know what the game is all about. I loved the art style, concept and gameplay of combining FPS and MOBA together but never actually got into the game partly because of my bad internet at that time and the lack of a buddy to play the game with. It was until late 2020 when I finally decided to pick up the game again to play with my good friend who had suddenly gained an interest in it.

At first, I was still…

Hello everyone! Today I’ll be sharing what I’ve built for hackathon I attended recently and how I’ve built it. Ok, so without further ado, let’s get started!


Have you ever wondered how you spend your time on your computer and how your productivity sessions look like? Well, I definitely did and so I decided to research about some desktop time trackers and found this. Unfortunately, arbtt doesn’t provide any kind of UI for you to be able to see your stats the way you want it to. …

Improving the scalability of a JavaScript app

Photo from Redux-Saga.

Many of you who are reading this probably have some experience with using Redux Thunk, know what it does, and are perhaps thinking of switching to Redux-Saga.

Just for a quick refresher, let’s consult Redux Thunk’s docs:

“With a plain basic Redux store, you can only do simple synchronous updates by dispatching an action. Middleware extends the store’s abilities and lets you write async logic that interacts with the store.

Redux Thunk middleware allows you to write action creators that return a function instead of an action. …

This article is dedicated to all of you JavaScript programmers out there. To learn a new language can be quite daunting and time consuming, but talking from first-hand experience, learning TypeScript coming from a JavaScript background is as easy as learning how to add bigger numbers when you already know how to add small numbers. Yes, TypeScript is not a completely different language as I once thought myself (the reason why I keep procrastinating to learn it…), but it’s really just JavaScript with added features to make the language more powerful, cleaner, and easier to maintain in the long run.

So What is TypeScript?

So I decided to build a desktop time tracker using arbtt, the automatic, rule-based time tracker to start collecting some statistics about myself and how I spend my time.

The motivation behind this project was actually me simply wanting to use this cool Recharts library but realized that collecting insightful data about myself became the bigger reason. Because of this, I’m thinking of expanding this project in the future to log my web activities as well and perhaps make a separate article for it, but for now, it’s just desktop programs.

Without further ado, let’s get started.

Installing arbtt

First, we’ll need…

Understanding the internals of recommendation engines

PyTorch logo
PyTorch logo
Photo from Pytorch.

Why a Recommendation Engine?

As a developer who barely knows anything about ML (machine learning), I find building a recommendation engine one of the easiest projects to get started with ML. It is practical and not that difficult to understand for beginners with no machine learning background to jump right into.

Getting Started

Before we get started with the actual implementation, I’ll briefly go over some concepts that you might find helpful to build a recommendation engine.

There are essentially three types of algorithms that your recommendation engine could use when recommending an item to a user:

1. Demographic filtering

This type of filtering looks at the general trends…

Getting started with using Redux and Redux Thunk in your React app

As your react application gets larger, it gets harder and harder to keep track and maintain your states. This is where Redux can come in to help; it is a state management library that provides you with a central state (called the store), eliminating the need to pass props between components.

A quick run through of how Redux works:

  1. Create the store
  2. Passing in a reducer as an argument
  3. Reducer update states accordingly based on the type of actions that are dispatched

If you don’t already know what…

A step-by-step guide to getting started with web scraping in Python

Photo by Carlos Muza on Unsplash


Although this guide will use mostly basic Python and HTML, because they are very beginner-friendly languages that resembles English, there is really no need to know anything about these languages. However, for the final part, you do need to understand basic CSS, and if you don’t, feel free to skip it. Anyways, without further ado, let’s started!

What is Web Scraping?

Just like how it sounds, web scraping is a method of extracting data from a website, where the scraped data would then be saved into a tabular (spreadsheet) format, often for further…

Steffy Lo

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store