Photo by Todd Quackenbush on Unsplash

Picking the right tools is one of the most important steps to starting any project. This is also the step where most people spend a lot of time, thinking and researching about all the available tools out there.

You cannot predict the future

I think the biggest challenge is making sure that the tools you pick will be able to handle your future use cases. But you cannot predict the future, and so we spend a lot of time researching every new tool out there and finally lose motivation to get started.

Another issue is thinking about scaling while building an MVP. Some tools are…


A guide on how you can break down hard problems and solve them efficiently

Photo by Scott Graham on Unsplash

As software engineers our jobs are mostly breaking down abstract problem statements into code that computers can understand.

I think the biggest challenge here is to simply figure out what to do. How do you convert an abstract problem statement with complex objects, asynchronous data flow, multiple stake holders and complex logic into low level code that a machine can understand?

Break it down — but how?

Break down the problem into smaller steps is common advice that is seen everywhere when talking about problem solving.

But how exactly? Where to start?

I think the best way to go about simplifying a problem is to write…


Diving deep into these programming mindsets, and implementing them into the software development process

Photo by Max Duzij on Unsplash

Recently while reading A Philosophy of Software Design by John Ousterhout I came across the ideas of Strategic and Tactical programming. Both of them can be described as a state of mind while approaching and writing code.

100% credit for the ideas described in this post goes to John Ousterhout and his book, but I just wanted to share my thoughts and elaborate on his ideas. I think this could really help a lot of people, especially those starting out their careers in software engineering.

The tactical mindset is focused on speed of development while the strategic approach is more…


Simple face detection using the Blazeface model in TensorFlow.js.

TensorFlow.js is a great tool to run ML models in your browser, and comes with lots of pre-trained models for us to work with. Today I will be using the Blazeface model to detect faces from the webcam feed on the browser.

Using this, you can crop images to get the face only, detect faces for tagging people in images or this can be the first step towards face recognition.

We can break the process down into 3 steps:

  1. Getting access to the webcam video feed
  2. Perform face detection
  3. Display the result

To run this code, it would be good…


Exploring what makes non-fungible tokens special, why they are so popular, and the future of NFTs

NFTs have been all over the internet for the last few months. The goal of this post is to understand how NFTs work, what they actually are, and finally look at what the future of NFTs could look like.

The Basics — Blockchain

Before we try and understand what an NFT is, we need to be clear on how blockchain works. The goal of blockchain is to allow digital information to be recorded and distributed, but not edited.

Photo by CHUTTERSNAP on Unsplash

A blockchain is like a database, that stores blocks of data. …


Understanding how Cross-Origin Resource sharing and the Single Origin Policy work.

Photo by Sammyayot254 @ https://superadmins.co on Unsplash

If you have ever built a web based project, then I am sure you have come across the very annoying “CORS error” at some point. In this post I will try to break it down, and explain why it is actually quite useful.

CORS stands for Cross-Origin Resource Sharing.

Lets break it down:

Cross-Origin: Origin is basically the domain name from which the request is being called from. Two URLs are said to have the same origin if the protocol, port and host are same for both. Cross origin simply means a different origin.

Resource: Resource is simply whatever is…


Confused between C++ and Python ?

Photo by Kyle Glenn on Unsplash

The most straight forward answer to this question is pick whatever language you are most comfortable with. The only two exceptions to this are — it is not a language specific role, and the language you pick is quite rare/complex and there is a good chance that your interviewer may not be able to follow it.

Interviewers don’t care what language you pick to solve problems. Coding interviews are mainly to test:

  • Problem solving/logical thinking skills
  • Computer science fundamentals — Data Structures and Algorithms, and other concepts/patterns.
  • How quickly you are able to implement the solutions you come up with.


Solving problems should be the focus, everything else is a tool.

Photo by ThisisEngineering RAEng on Unsplash

Do you find yourself overwhelmed by the sheer number of programming languages, libraries, frameworks, databases and platforms that are coming out every day ? Do you struggle to keep up with them? Well, even do.

Hi I am Adarsh, currently working as a Software Engineer. The idea behind this post is to share my thoughts on how I approach all these new things by trying to keep the focus on the problem.

But, why do people create these ? Why bother learning about all these new things when the existing stuff gets work done ?

As humans, we are always…


Photo by Macau Photo Agency on Unsplash

Learn how queues are used in real applications and it’s implementation in Python and C++

Queue is one of the simplest and most useful data structure, not just in computer science, queues are relevant in our day to day life in lot of different fields.

In this post, we will discuss why queues are so important, how they are used in computer science and finally look at its implementation in Python and C++. The goal is to understand the queue pattern, and understand why they exist, this will hopefully help you appreciate queues and want to learn it.

Watch the video version if you prefer that !

Practical Applications

So what makes queues special ? A queue…


You wouldn’t be able to read this now if stacks didn’t exist. Stacks described from a practical perspective for engineers.

Stack is one of the most popular and widely known data structures in computer science, and one of the easiest to learn and understand. But often, maybe because of the way it is introduced or taught, it seems kind of useless and boring to learn.

Stacks are not one of those useless things that you need to learn just to pass your exams or to crack the coding interview, but they are actually used for a lot of things that you do daily on the computer.

Watch the video version if you prefer that :)

Practical Applications

  • They are the building blocks…

I make websites and teach machines to predict stuff. I also make YouTube videos — https://www.youtube.com/adarshmenon

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