Uday Hiwarale
Senior Software Engineer (JS • Go • Dart • Python) / Available for full-time role / thatisuday.comgithub.com/thatisudaythatisuday@gmail.com

No Code Zone

We are surrounded by hundreds of programming languages, but you can’t learn all of them. In this article, I am going to explain a few simple points to consider while choosing your next programming language to learn.

Image for post
Image for post

If you are wondering what programming languages I know, well I wouldn’t exactly say I am good at them but I can write programs in JavaScript, TypeScript, Python, Go, Dart, Bash as well as a little of Java and C/C++. I know TypeScript isn’t exactly a language but after Deno, you can say so. I wouldn’t brag about it but I used to work on PHP in the early days.

So does having the baggage of these many languages worth it? Well, it depends who you ask but my answer is always, Yes. Actually, I am planning to learn Rust next, so enough is never enough for me. However, I don’t encourage this practice in certain contexts. …


Electronjs: package and distribute

In this lesson, we are going to learn how to package an electron application using electron-builder and distribute this application using GitHub releases.

Image for post
Image for post

In the previous lessons, we learned how to create Electron applications and how to use electron-weback to bundle the application source. So far, we haven’t packaged the application as we were only running the application using either the $ electron or $ electron-webpack commands.

In this lesson, we are going to create distribution files for an Electron application such as .dmg or .pkg for macOS or .msi for Windows and host them right on our GitHub repository. This will allow our users to download the platform-specific installation file of the application.

There are many tools to package an Electron application but electron-builder is one of the most popular ones. We are going to use the same old electron-lessons repository we have created that contains the source code of the Electron applications we have created in the previous lessons. …


Electronjs: React, Webpack and HMR

In this lesson, we are going to build a React-based Electron application using the electron-webpack package. This package also provides HMR support out of the box, so we will dive deep into that as well.

Image for post
Image for post

In the previous lessons, we worked on some simple Electron applications. In the introductory lesson, we created an Electron application to display a random image from the internet. In the File IO lesson, we worked on project structure and understood a few important development concepts.

However, during the development of these applications, wherever we made some changes in the source code, we had to rebuild the application by re-executing the $ npm run start command. This happens since $ npm run start command (which internally runs electron . command) does not watch file changes on the disk.

We have two types of processes in an Electron application. The JavaScript running in the main process handles the application state and lifecycle events while JavaScript running in the renderer process handles the user interface of the application through Chromium APIs. …


ElectronJS: File IO

In this lesson, we are going to create an Electron application with a file drag and drop feature. We are also going to see how to manage application-related file storage on the system.

Image for post
Image for post

In the previous lesson, we learned about the anatomy of an Electron application and how main and renderer processes play their role in the lifecycle of the application. We also built a sample app to resize and display a random image from the internet.

⚠️ If you haven’t read the previous lesson, please do. Most of the things explained in this lesson won’t make sense unless you get an overview of how Electron applications work.

In this lesson, we are going to create a sample Electron application with the following objectives:

  1. Add a file(s) to this Electron application using the “Drag and Drop” feature as well as by manually displaying the file explorer (system) dialog to select one or multiple files. …


ElectronJS: Introduction

In this lesson, we are going to take a look at the architecture of Electron and understand how Electron works. Then we are going to set up a sample Electron project and create a simple desktop application using HTML, CSS, and JavaScript.

Image for post
Image for post

Would you believe me if I said Slack, VSCode, Atom, Skype, Discord, and Whatsapp desktop applications you are using right now were written using are HTML, CSS, and JavaScript? Probably not. Because in our day to day lives, we only use these languages for designing websites.

But what if a desktop application internally uses a browser for GUI (what the user sees)? Then we could technically use these languages to render the application UI. This is exactly what’s happening inside the apps above. …


Heroku PaaS

In this lesson, we are going to create a sample image-processing web application using ExpressJs and host it on Heroku.

Image for post
Image for post

Heroku is a PaaS (platform as a service) provider. Using Heroku, we can deploy applications on the cloud in a matter of seconds. It supports many programming languages such as Java, Node.js, Python, PHP, Go, etc.

Things that set Heroku apart from other platforms such as AWS, Google Cloud, or Azure for that matter is the ease of deploying your applications to the cloud. Though Heroku provides enterprise-level features, it is one of the easiest platforms out there to quickly deploy and test your applications.

For example, if you want to deploy the documentation (as a website) of your open-source project named my-project, you can simply create a Heroku application, push the repository code to the Heroku and your application will be deployed at http://my-project.herokuapp.com. …


Docker: Docker Compose

In this lesson, we are going to learn how Docker Compose works and how it can be used to deploy & manage multiple containers in the production environment.

Image for post
Image for post

In the previous lessons, we discussed the basics of Docker. We learned the anatomy of Docker containers, the structure of a Dockerfile, how to create images, how to manage containers, etc. This is just the basic information we need to know in order to operate Docker.

If our application is as simple as an HTTP server, we can run it inside a single Docker container. You can create a custom Docker image, copy the application code to the image, and run a container from it. You can mount a volume for persistent data storage and bind a port on the host to the port on the container to make your service public. That’s it. …


Docker: Networking 101

In this lesson, we are going to understand how host-to-container and container-to-container communication takes place. Since this won’t be an advanced guide, we are only going to explore the surface of networking in Docker.

Image for post
Image for post

In the previous lessons, we learned a great deal about Docker, Dockerfile, Docker images, and Docker containers. We understood the isolated nature of a Docker container and how to connect with a running container using -p (or --publish) flag to map a host port to a container port for network access or -v (or --volume) flag to access files of a container from the host.

In this lesson, we are going to talk about the networking aspect of the containerization process. …


Docker: Docker Tags and Docker Hub

In this lesson, we are going to discuss how to create and manage tags associated with the Docker images. Then we are going to publish a sample Docker image to Docker Hub and consume it on a separate machine.

Image for post
Image for post

In the previous lessons, we learned about the anatomy of Docker images, how Docker containers work, how to create a Docker image from a Dockerfile, and learned a few characteristics of Docker images. However, we did not focus on sharing a Docker image with the world. In this lesson, we are going to learn just that as well as Docker image tags.

For this lesson, we are going to create a simple Docker image that prints a version number to the console when a container is created from it. …


Docker: Entrypoint, CMD, Volumes

In this lesson, we are going to create a docker container that will act as an executable to process some image files. For this, we would be working with Docker VOLUME, ENTRYPOINT, and other Dockerfile instructions.

Image for post
Image for post

In the previous lesson, we learned how to create a Docker image using a Dockerfile as well as creating and managing Docker containers. We discussed a few Dockerfile instructions such as FROM, WORKDIR, ADD, COPY, CMD, etc. and how they contribute to the image-building process.

In this lesson, we are going to discuss the ENTRYPOINT instruction to create a Docker container that acts like an executable. We will also discuss how to share files between a Docker container and the host machine.

For this lesson, we are going to use Go (golang) to write an image processing program. Therefore, we would need a parent image with Go installation. We would be using the golang:1.15.6-alpine3.12

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