And could cause frustrations sometime if you don’t acknowledge it

Image for post
Image for post
Photo by Annie Spratt on Unsplash

It was an afternoon break. I met Justin, a colleague of mine, appearing a bit thoughtful in the pantry. He is a smart junior developer who did amazingly in our project.

“Hey Justin, how are you doing?”

“Not so good. Well, I can’t remember what I did besides meetings today.”

“Wow, what a busy meeting day, hah?”

“Not really.” Justin paused for a while. “I have three meetings. The longest one is for an hour. The other two are just half an hour for each. They are about 2 hours in total. …


We can apply them in other areas as well

Image for post
Image for post

Bao Khoi, my 3-year-old son, is a chatty kid. He loves to play and talks with others all the time. A year ago, he saw my wife and me as the whole world. He followed and obeyed us a hundred percent. As he grew up, he figured out many other exciting things and started to negotiate, argue, or even ignore my words. “The crisis of three years” is the common term people called kids at that age.

Keeping my son sleep in regular time was my focus. Many articles pointed out the benefit for kids if they have a consistent bedtime. …


Instead of generating zip file and transfer it from your server, why not download data and zip them in your browsers?

Image for post
Image for post

I recently worked on a side project, which generates reports per user’s request. For each request, our backend will generate a report, upload it to Amazon S3 storage, and return its URL to the client. Since generating a report takes a while, the output files are stored and the server caches their URLs by request params. If a user orders the same thing, the backend will return the URL of the existing file.

A few days ago, I had a new requirement. Instead of individual files, I needed to download a zip file containing hundreds of reports. …


Attached the TTY for a command that required input, then detach it to run in the background

Image for post
Image for post

A few days ago, I created my own remote signer for the Tezos blockchain. For those who are not familiar with Tezos, a signer is a process that holds users’ credentials and signs all transactions on behalf of them. Thanks to Tezos’s docker repository, the setup has gone smoothly. What I have to do is pull the docker image, and run its command.

$ docker run --net=host tezos/tezos:carthagenet tezos-signer launch socket signer -a 127.0.0.1 -p 22000 -W

Everything went well in the test environment when I added a testing key in plain text. For production, I need to introduce some encryption. A simple way is to use Tezos’s default encryption, which will require me to enter a password whenever I start the process. …


Note: I’ve published an open-source library go-cloudfunction-auth for this purpose. If you run into the same need, you can just go ahead with the library (see the sample here). In the scope of this post, I will talk more about how I investigate and resolve the problem.

A few weeks ago, I needed to integrate my backend with another service deployed on Cloud Function. Originally, I thought that this integration should be straight forward since my backend and the new service are both backed by Google’s services. Authenticating to Cloud Function should be straight forward using my google service accounts.

This assumption is, at least, correct with Javascript. google-auth-libary works pretty well to support this case. …


Sometimes, you may find currying hard to understand and wonder about its application. In this post, I will list some tips which may helpful for you

Image for post
Image for post

In this post, I assume that you already know Currying in Javascript. If you do not, I would recommend you to go through my previous post about currying prior to this post.

Curry in the right order

If you plan to use curried functions for function composition, remember to curry in the right order. The last primary input, which will be traveling along with the composition chain, should be put in the last function. …


Image for post
Image for post

Currying is sometimes hard to understand or confusing for actual usage. In this article, I will explain what it is and some use cases.

What is currying?

Currying is the process of transforming a function that takes multiple parameters into a sequence of functions, each of them taking one parameter at a time. It’s a special type of Partial Function Application. In pure functional programming language such as ML or Haskell, functions are defined in curried form by default. Let’s see how it work in Javascript.


// A normal JS function
const sum = (a, b) => a + b
sum(1, 2) //…


Especially when the Covid-19 pandemic is covering the world

Image for post
Image for post

Having all teammates located in the same office is the most efficient and productive way for work. However, you will find yourself required to work remotely from home in some cases, especially when the Covid-19 pandemic is covering the world. Below are my tips to boost your productivity.

Find a non-disruptive and quiet place

Concentration is the key to productivity. While working at home, there are a ton of possible interruptions that can distract you. Your spouse talks, baby cries, others watch your favorite tv shows, etc. Those kinds of activities can destroy your day. Living room, where other people do lots of their stuff, is not the best choice for a working place. My advice is, if possible, find yourself a non-disruptive and quiet place. It could be a private room or a separate corner. Don’t forget to tell others that you are working. …


Image for post
Image for post

Logging is an important part and has a long history developed for different types of applications. Software development changes rapidly from all of its aspects. Logging is not an exception. In the old days, enterprise application developers used to focus mostly on output location, rotation, and rollover. Nowadays, as we are moving to cloud deployment, logging also comes with its new standards.

According to The Twelve-Factor App, cloud native apps should log as event streams and never concern itself with routing or storage. The log will still be handled somewhere else by the cloud provider or another process. …


Image for post
Image for post

Carefulness is important part to shows your responsibility and heart at work. I used to be a very careful person. In high school, my teacher once punished the whole class for not writing explanation for multi-choices homework, except 2 students. I’m one. From my opinion, carefulness is very important and it gains you many benefit:

  • It shows your quality at work
  • It gains you trust from bosses and clients
  • It makes you proud. No one is happy if they are blamed for silly mistakes

It’s definitely right that carefulness is one of the most important aspects of a good work. …

About

Ngô Việt Khánh Huy

Senior Software Developer, Mentor

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