Blog Posts

My Cloud-Based Obsidian Encryption SetupDecember 05, 2020I 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…
The correct way to work with Python on macOSNovember 02, 2020Yesterday, 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…
A Complete Guide to Testing React HooksJuly 23, 2020Hooks 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…
Rendering JSON-LD data in NextJS and ReactJSMarch 05, 2020Rendering 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…
Practical Software Testing IdeasFebruary 22, 2020Testing 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…
stale-while-revalidate data fetching with React HooksJanuary 31, 2020Leveraging 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…
Accessing Dokku apps internallyJanuary 17, 2020I 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…
How to get guidance and mentorship as a Computer Science fresherDecember 29, 2019I 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…
Introduction to Functional Programming in JavaScriptOctober 25, 2019Functional 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…
Making a React drop file zone from scratchSeptember 11, 2019In 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…
Using a Country and State field with FormikFebruary 06, 2019Formik 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…
2018 Year ReviewDecember 31, 2018Following 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…
Startup #1: YourNote - a user-first notes appDecember 21, 2018YourNote 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…
Life update: Dead-end 🚧December 06, 2018I 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…
Insights on Chattt's excellent Product Hunt launchJune 06, 2018chattt_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…
Introducing Chattt - an open source CLI chat clientMay 11, 2018So 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…
Tabs v/s Spaces: An analysis on why tabs are betterJune 07, 2017Tabs 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…
My GSoC 2016 StoryOctober 17, 2016Google 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…
Getting started with Docker ComposeAugust 20, 2016In 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…
Small Docker images using Alpine LinuxAugust 16, 2016Everyone 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…
Writing your first DockerfileAugust 11, 2016In 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…
Dynamically marshalling output in Flask RestplusAugust 04, 2016Do 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…
Testing Docker Deployment using TravisAugust 03, 2016Hello. This post is about how to setup automated tests to check if your application's docker deployment is working or not. I used it extensively while working on the Docker deployment of the Open Event Server. In this tutorial, we will use Travis…
Downloading Files from URLs in PythonJuly 28, 2016This post is about how to efficiently/correctly download files from URLs using Python. I will be using the god-send library requests for it. I will write about methods to correctly download binaries from URLs and set their filenames. Let's start with…
Import/Export feature of Open Event - ChallengesJuly 25, 2016We have developed a nice import/export feature as a part of our GSoC project Open Event. It allows user to export an event and then further import it back. Event contains data like tracks, sessions, microlocations etc. When I was developing the basic…
Setting up Celery with FlaskJuly 15, 2016In this article, I will explain how to use Celery with a Flask application. Celery requires a broker to run. The most famous of the brokers is Redis. So to start using Celery with Flask, first we will have to setup the Redis broker. Redis can be…
Ideas on using Celery in Flask for background tasksJuly 13, 2016Simply put, Celery is a background task runner. It can run time-intensive tasks in the background so that your application can focus on the stuff that matters the most. In context of a Flask application, the stuff that matters the most is listening…
Introduction to JWTJuly 02, 2016In this post, I will try to explain what is JWT, what are its advantages and why you should be using it. JWT stands for JSON Web Tokens. Let me explain what each word means. Tokens - Token is in tech terms a piece of data (claim) which gives access…
Using S3 for cloud storageJune 24, 2016In this post, I will talk about how we can use the Amazon S3 (Simple Storage Service) for cloud storage. As you may know, S3 is a no-fuss, super easy cloud storage service based on the IaaS model. There is no limit on the size of file or the amount…
Paginated APIs in FlaskJune 19, 2016Week 2 of GSoC I had the task of implementing paginated APIs in Open Event project. I was aware that DRF provided such feature in Django so I looked through the Internet to find some library for Flask. Luckily, I didn't find any so I decided to make…
Better fields and validation in Flask RestplusJune 12, 2016We at Open Event Server project are using flask-restplus for API. Apart from auto-generating of Swagger specification, another great plus point of restplus is how easily we can set input and output models and the same is automatically shown in…
REST API Authentication in FlaskJune 06, 2016Recently I had the challenge of restricting unauthorized personnel from accessing some views in Flask. Sure the naive way will be asking the username and password in the json itself and checking the records in the database. The request will be…
So it begins. An introduction to my GSoC projectMay 27, 2016These days are getting so worked up. For the first time in my life, I have to attend to around 40 emails a day. If you count the replies with them, it will be well over 150. Things have got so busy. Let me tell you about the work we are doing these…
Hello FOSSASIA, GSoC 16May 08, 2016How it Started I completely ignored GSoC 15 because of lack of knowledge of popular development languages like Python and Node. By 2016 I was comfortable with Python and had working knowledge of NodeJS and other popular languages. But still I was not…
Emojis offlineSeptember 02, 2015I am often in need of some emojis when committing on my github repos. As I don't have an always on Internet connection, I had to sacrifice them when I was not online. I tried saving the http://emoji.muan.co/ page but that didn't work. So I wrote a…
Shortcut virus fixAugust 25, 2015In recent days, a lot of my classmates had problems with their pendrives where a virus seem to have taken over and all of the drive contents where converted to shortcuts. I saw the hidden system files and concluded that this was a work of a windows…
Getting back to Clipjump DevelopmentFebruary 17, 2015Clipjump's last public release was in 26/08/14. And it's been 6 months now, without any significant commiting. Shit! In the meanwhile, I got admitted in college and I am a much better coder now. I learned new languages like C, C++, Python and these…
C# Sublime BuildFebruary 08, 2015If you want to code in C# using Sublime Text, then this post is for you. After this post you will be able to use Ctrl+B to build a .cs file and Ctrl+Shift+B to run the exe through the terminal. The Steps Find the C-Sharp Compiler on your system…
The new flat designJanuary 07, 2015I just realized my blog was looking somewhat bloated with all the text holders floating on both the sides so I decided to redesign it. The last time I wrote about this blog, it had a centered content container with left side occupied by a boneless…
CapsLock status notifierDecember 30, 2014My new laptop didn't had a CapsLock LED so I decided to make a little tool (in AutoHotkey) which shows the caps-lock status in the system tray. The Caps-lock ON and OFF icons are distributed as single icon files so you can edit them to suit your…
Duplicate PureText with ClipjumpAugust 07, 2014You can use the pre-distributed NoFormatting Paste plugin to paste text without formatting. To set up the Win+V shortcut combination, you will have to use ClipjumpCustom.ini. Here is an example code - Now pressing Win+V will paste the current…
Simple CSS notification boxes without using any iconAugust 04, 2014This post will show you how to create message/notification boxes using CSS without using a image/icon/font icon. So for creating icons, we will use CSS border-radius property and some unicode text if needed. The four icons in question are and…
About the themeJuly 10, 2014This theme has been customized from the Solar theme by @redwallhp. Various features of theme are as follows - Seamless Disqus integration Just specify disqus_id, the forumname of your site in the _config.yml file and the disqus will be integrated to…
Set max clip limits for any channel in ClipjumpJune 28, 2014Clipjump by default only allows channel 0 (Default) to have limits on maximum number of clips that can be accomodated in it. In all channel other than 0, unlimited clips can be stored without resrictions. This post explains how one can impose a…
Disable Clipjump for a particular shortcutJune 09, 2014The plugin CJ Disabled Shortcut can be used to disable clipjump when pressing shortcuts like Clip Note in CintaNotes and similar features in Evernote, OneNote and other note-taking applications. Basically this plugin disables clipjump around the span…
The old Poole themeApril 30, 2014This theme has been derived from Mark Otto's project poole. I needed a theme to suit both blogs and project pages and @mdo's themes where just the perfect thing to start off with. Thank you mdo !! This post mainly contains notes for myself and should…
Creating Win Shortcut in ClipjumpApril 26, 2014You may have noticed that creating shortcut having the Win key is not possible with the Settings editor. If you are really keen on utilizing those un-used Win keys , you can use the ClipjumpCustom.ini feature. All you have to do is get the…
SmartGit, Portable Git ClientJanuary 26, 2014I was looking for a portable Git GUI Client and I finally have found what I wanted, it is SmartGit. SmartGit is a smart, intuitive and easy Git client much suited for beginners like me. It has a rich interface full of features, is light on disk and…