I was thinking of using Obsidian for journalling but I can't really do that as it stores data in plaintext. Moreover, cloud storage providers like Dropbox have openly admitted that they read our files. I would prefer no one reads them except me. So I had to do something here. Otherwise, using Obsidian would have been out of the question. Here is the solution I came to after trying many different…
Yesterday, I was looking into a Python side-project after 2 years. It was using pipenv so I thought the process of getting it to build will be easy. But that wasn't the case. The pipenv installation was all broken because the Python version had changed on my system. Fixing this let me down a rabbit hole of understanding the ecosystem of Python distribution and how to avoid this problem in the…
Many non-devs in tech call GitHub the new resume for developers. As a developer, you know that is not true since a lot of the work we do is behind the walls, i.e., closed source. We cannot even share snippets of that work. Many experienced developers don't even have a GitHub profile either. But recruiters don't care about that since GitHub is their best metric of vetting developers. So they check…
Hooks were introduced in React 16.8 in late 2018. They are functions that hook into a functional component and allow us to use state and component features like componentDidUpdate, componentDidMount, and more. This was not possible before. Also, hooks allow us to reuse component and state logic across different components. This was tricky to do before. Therefore, hooks have been a game-changer.…
In the last email, I talked about why and how to build original products. Today I want to talk about how to share them. The thing is, if you want to have fun and go above and beyond in building side-projects, you need to have users. After all, they are the ones that will thank you for your product, give you feedback, send you cash, and finally encourage you to make it even better. How do I get…
Recently, I posted on my LinkedIn about using projects to get experience. Now, the term "project" is a broad brush. It covers everything from - full-product clones like clones of Facebook to small bash scripts to original creations. Clones are a great way to try your hands in software development. You can use them to learn what concepts are used in a real product. Eg - Want to get an Android…
Rendering JSON-LD data in NextJS and ReactJS is quite straight-forward. Here are the steps involved. Organize data in a plain JavaScript Object. Serialize it using JSON.stringify. Include the data in the script tag using dangerouslySetInnerHTML. Optional but recommended - Attach a key. The first step is creating the JSON Object. I used this in GoRemote which is a job-listing site. Here is the…
Testing is one of the most important practices in software development. And with automated test runners like Travis, there’s no reason not to write tests. In this article, I talk about the testing ideas that have helped me in my developer life. Test external dependencies periodically External APIs can break anytime. They don’t actually "break" but the API you expect it to provide and the API it…
I see many new developers and even some senior developers going by a .in or even a .tk for their websites. But this is short-sighted. Why? Because you might move out of India. Or you might work for US and UK companies remotely. In that case, .in is not the ideal TLD you want for your domain. And .tk is not even worth a mention. It’s available for free and it doesn’t make a good impression of you…
I see many people want to do remote jobs. But in my experience, there are some things that you need before you can have a great remote work career. Consider it as the smallest definite checklist. Note that these might be true for office jobs as well but there, the requirements are relaxed. For example - You can do well even if your communication skills are poor. You might get promoted as well.…
Leveraging the stale-while-revalidate HTTP Cache-Control extension is a popular technique. It involves using cached (stale) assets if they are found in the cache, and then revalidating the cache and updating it with a newer version of the asset if needed. Hence the name stale-while-revalidate. How stale-while-revalidate Works When a request is sent for the first time, it's cached by the browser…
I was working on a NextJS project recently. For those who don't know, NextJS is the most popular React framework with in-built SSR support. Now, people use SSR for many reasons but the most common ones are as follows. To render pages on the server-side and hence reduce latency on the client-side. To protect their APIs. I needed NextJS and SSR for the 2nd benefit that is, protecting my API. I had…
As programmers, we have superpowers. The superpower to do things faster than non-programmers by using the proper technology and coding skills. We should use it whenever we get the chance. I realized that after I had been doing an operation in a very slow way and I could have easily done that 100 times faster. What happened was I was working on a legacy PHP system. We deployed it to the server…
I get some requests from students asking for guidance and mentorship. But I don’t have the time. So I am writing a post which will be more valuable than any mentorship I can give, provided you follow it. It involves learning using free online resources. So there’s no reason why you can’t do this. We will be using only three websites for our learning needs. Let’s go! 0. Learn a programming…
Many business owners reach out to me on LinkedIn for offering me jobs. It’s great. Except that they think of me as a good Indian engineer. Nothing is wrong with it. But Indian engineer implies that you are a good software engineer living in India. India here is a subset of the world. So, being a good Indian software engineer < being a good software engineer. Many people might be furious by the…
I posted a tweet about how investing time learning Bash scripting and various command-line tools is always worth it. Every time I learn a command-line tool, I am like how did I work without this. Command-line tools are awesome. In this email, I will talk about a few bash scripts or aliases I use regularly. You should find a few of them useful in your digital life. Preventing system sleep in Mac…
Burnout. Chances are, most of you are familiar with it. But for someone new to this career, an introduction is due. Burnout is a state of mental, physical and emotional exhaustion. Often you don’t realize when it starts happening. Finding why it is happening is even harder. It is very common in our field of work. Our jobs require us to work from a computer, 8 hours a day, 5 days a week. Humans…
I posted this tweet on Twitter about a trending JS library 🤷🏻♂️ called Immer. Immer is a small library that helps to work with immutable data in JavaScript. Its main purpose is helping create immutable objects which are a big pain point in the language. That’s because objects are copied and compared by reference. Hence it’s easy to do something wrong when working with them. Take a look below…
Podcasts are great. They give you raw, unfiltered content from people. That’s because people give out their thoughts in the heat of the moment. I don’t know of any podcaster or podcast guest who prepares for the questions they are going to be asked or prepares a written speech for what they are going to speak on. They say whatever comes to their mind. In contrast, a book has filtered, restricted…
Functional Programming is a paradigm of building computer programs using expressions and functions without mutating state and data. By respecting these restrictions, functional programming aims to write code that is clearer to understand and bug resistant. This is achieved by avoiding using flow-control statements (for, while, break, continue, goto) which make the code harder to follow. Also…
In this article, we will talk about creating a file drop feature in React without using any libraries. The HTML spec provides us with an ondrop event handler for this. We can use the same in React by setting the onDrop attribute (notice the camelCase). But this is not enough. HTML also supports dragging events and if you try to drag & drop an element, the drag event takes precedence which opens…
Formik is an awesome library for handling forms in React. As part of my contract work, I recently came into a problem which required me to use a country - state selector in a form handled by Formik. A quick Google search shows the react-country-region-selector package. It's very straight-forward to use. Here is a sample code. To keep this article brief, I am only showing the country component. My…
Following Pat Walls and Lenilson, I am writing this 2018 year review. I don't tweet a lot so don't expect everything to be backed by tweets. Let's see how it goes. 2018 has been a long year by all standards. In fact, many people I know are saying the same, I don't know why. It's so long I feel my whole life has been 2018. It all started with getting selected in Toptal. I remember Toptal was the…
YourNote is my first attempt at becoming a developer who writes their own checks. It's a note-taking app that allows extreme user control of the data. For example, with YourNote you can be sure that no one is looking into your data, and that no one can take that data away from you. Yes, this is easily possible by just storing your data offline but if you want to access your data (here, notes) on…
I have quit the startup that I founded with my friends. It was fun while it lasted but I realized this wasn't for me so it wasn't right going forward. What's next? I am looking to explore more into life now. This means visiting new places and trying out different things. Don't get me wrong, my main domain of experimentation still remains tech and related areas but I want to do more as I did back…
Motivation - Something that we all struggle with, and we all want to solve. Being motivated through the entirety of your life sounds like a dream goal, right? If you could only manage that, you can achieve anything in life. But motivation is tricky. You have watched all the GaryVee videos online and you are still not where you want to be. You might be wondering why that is? In that case, a better…
In the last couple of years, I have tried different careers as a programmer. First, I tried a part-time office job for some time and then I went remote in the same company. Then, I did some freelancing and now I am trying to do freelancing + entrepreneurship. It's interesting that all this happened is less than 2 years. After going through each of the career models and trying to find my fit, I…
I started developing Clipjump in March 2013, and by the same month, next year, it had 100k+ downloads. And just so you know, this was done without any marketing or outreach. I had no contacts, no industry experience and I was still in school. But the product found love and it kind of grew organically. This is Clipjump's story. How it all started? Back in 2012, I decided to learn to program and…
Most of us have plans to do our own business at some point in our lives, right? Let's be our own boss for once! But make no mistake, starting your own thing is not easy and that's the reason most of us are stuck in our daily jobs. The only way to start a business in the current scenario seems like resigning from the job or dropping out of college and going all in. Sure, there are people have made…
Google Summer of Code - I am sure every undergrad has the dream of being selected in it one day. And the good news is that anyone can do so with some effort. By anyone, I mean any person with some appetite for coding and a strong resolve. Seriously, GSoC is not really tough. You just need to follow a good, organized strategy and you can get selected. Especially, Indians have performed…
I don't know about other fields of study but making is of paramount importance in Computer Science. Making means creating something. That is, putting your knowledge into practice. Let's try to understand why is putting knowledge into practice important. But first, why is knowledge important? That is, why do you learn? Why do you educate yourself? To make yourself more employable, to earn more, to…
This Dev Letter is a bit different. Today, we have Navneet Nandan, who is a Data Science professional and he is sharing some insights about his career. Data Science is a fantastic discipline with almost unlimited possibilities, and I am sure, like me, you are also interested in learning how it feels to be a professional in the same. What do you do? I am an NLP engineer at Mettl, a company which…
I wrote this Medium post of wanting to become a digital nomad. There I discussed why the digital nomad lifestyle appealed to me and how I wanted to accomplish this dream of mine. Wannabe Digital Nomad The last step in that article was getting selected into Toptal. Mind you, I hadn't applied to Toptal back then and just thought that if I could do it, it would make my dream of becoming a nomad so…
The more I go through trying to build my career, the more I realize finding your dream "career" is way simpler than it looks. I will give an example. Almost everyone wants to be startup founders, you know, running a million/billion dollar business like Elon Musk or Mark Zuckerburg. But do you really want to be like them? That is, are you ready to take the 16 hour work days their work requires…
I started Competitive Programming as soon as I got into college, around 2014. And I seriously continued with Competitive Programming(CP) till 2015. My career was only for a year. But I learned a lot during that time since it was my #1 priority. Before we go any further, you might be thinking why I left CP. This was because I got interested in open source back then, and creating cool GitHub…
How do I manage time for other activities while going to college? How do I complete this side course on React when I have a full-time job and a family? After mentoring 1000s of students through the Udacity platform and spending 4 years in college, I have been asked these questions many times. When asked, I have often replied with what came first to my mind, since it was all so tiring and all…
I first started Competitive Programming(CP) in the first year of undergrad college. I should have started sooner. CP has played an important role in my career so far. In fact, it was the major reason I got the freelance contract (Toptal) that I am doing. Simply speaking, being good in Competitive or Sports Programming allowed me to outrank other programmers by a large margin. So yes, CP is…
I was recently asked by a Computer Science college fresher about plans and advice for this new adventure of theirs. Here is the exact reply I sent. Hi Slim, I don't know if this will be a self-fulfilling answer. But here it goes. The truth is, you can't really plan a lot. At least, that's what I believe in. Instead, find something that you are interested in, and do it. Like, for example, at first…
People have really a hard-time paying for software, online courses, digital subscriptions, and other similar online stuff. This really saddens me. We have reached this point in our civilization where software (or any code-backed product) are commonplace like any physical goods. So why the discrimination? I will tell you why. People know that software, songs, courses etc can be easily mass…
I have been asked this many times. How do I get into freelance? Honestly, it's not that easy. Freelancing comes with downtimes where you won't get a client for a period of time which can be quite nerving if you are just starting out (and don't have any savings). But all in all, freelancing is quite a good career option in the long run. Why? Many reasons - Ability to choose your work Location…
Move Fast and Break Things - such a popular saying in the startup world. Some are so in favor of it that they sing it everyday while there are others that absolutely loathe it. I, for one, used to be not much of a strong believer in this. But then, through my own life experiences, I realized how this works. There are two components to it - (1) Move Fast The first idea is pretty simple. You move…
The new languages coming out these days are amazing, especially when coming from the C's and Java's. Go is super fast and a pleasure to code in, thanks to its static typing. Rust has a syntax we all know and love but in bonus, with the speed of C. Dart is nice too, and thanks to Flutter, we can make beautiful native mobile apps using it. And that too, cross-platform. But that's not what is most…
chattt_logo_256 Repository aviaryan/chattt and aviaryan/chattt-backend Introduction For those who don't know, Chattt is an open source CLI based chat application that I created in my free time. I recently launched it on Product Hunt and it was able to reach the 7th position for the day, with 288 upvotes. In this article, I will share my expertise on how I got there, and how you can do it too. PS…
So the past 2 months I was slowly working on my hobby project called "Chattt" and I just did the v0.2 release recently. It's quite ready for public use now so I thought I should share it with everyone. So what is Chattt? Chattt is an open source terminal based chat system. Its selling point is that it is very simple to use and it doesn't require much technical knowledge. I created it because I…
Tabs v/s Spaces. I am sure you have encountered this dilemma in your coding career time and again. I prefer tabs. There are some people who prefer spaces instead. Today I would like to discuss why tabs are better than spaces. I am only going to use rational points here. Please spend 5 minutes on this article and then make a decision. First, I would like to point out the major argument why people…
Google Summer of Code is probably the most prestigious internship that a college undergrad can get into these days. Millions of students over the world apply and only a thousand are selected. I too wanted to give it a shot. By the end of February this year (26th to be exact), we had the organizations list for GSoC. I was not confident in my abilities so I didn't want to send in a proposal. But I…
In this post, I will talk about running multiple containers at once using Docker Compose. The problem ? Suppose you have a complex app with Database containers, Redis and what not. How are you going to start the app ? One way is to write a shell script that starts the containers one by one. Now suppose these containers have lots of configurations (links, volumes, ports, environment variables)…
Everyone likes optimization, small file sizes and such.. Won't it be great if you are able to reduce your Docker image sizes by a factor of 2 or more. Say hello to Alpine Linux. It is a minimal Linux distro weighing just 5 MBs. It also has basic linux tools and a nice package manager APK. APK is quite stable and has a considerable amount of packages. In this post, my main motto is how to squeeze…
In this tutorial, I will show you how to write your first Dockerfile. I got to learn Docker because I had to implement a Docker deployment for our GSoC project Open Event Server. First up, what is Docker ? Basically saying, Docker is an open platform for people to build, ship and run applications anytime and anywhere. Using Docker, your app will be able to run on any platform that supports Docker…
Do you use Flask-Restplus ? Have you felt the need of dynamically modifying API output according to condition. If yes, then this post is for you. In this post, I will show how to use decorators to restrict GET API output. So let's start. This is the basic code to create an API. Here we have created a get_speaker API to get a single item from Speaker model. Now our need is to change the returned…