A long time ago, researchers from the United States have invented a way to send messages across the world without using papers or pigeons. Nowadays, people know about it as the Internet. With the advent of TCP/IP protocol and submarine cable, a person from Vietnam can effectively visit a website hosted in the US. If only that person can remember the website IP address which is a combination of four numbers (e.g. 142.250.204.142) or in 2050, it would be a combination of eight hexadecimal numbers (e.g. 2001:0db8:0000:0000:0000:8a2e:0370:7334). Why was the Internet designed this way? Why wouldn’t website address be something…


A recent DNS hijack attack on blockchain DeFi protocol PancakeSwap and Cream Finance has replaced their website interface with a fake one that requires users to submit seed phrases. Even though their smart contracts are audited and still secured to this day, the attacker was cunning enough to exploit the other aspect of the projects, namely the website domain. This has shown us that DeFi security doesn’t just lie on the on-chain smart contracts or admin keys but is much more wider than that.

To understand how DNS hijack works, let’s first learn about DNS. DNS stands for domain name…


At some point in writing API application or microservice, we have probably struggled with code architecture and organization. Modern technologies for building backend applications like Node.js or Go don’t even have any idiomatic way for project structure. That gives us the freedom of designing the most suitable architecture for our use case but also makes it easy to shoot ourselves in the foot.

In this blog post, I am going to introduce a new approach: Directed Acyclic Graph, also known as DAG. For a formal definition, better to take it from Wikipedia:

A directed acyclic graph (DAG) is a directed…


Photo by Kristina Balić on Unsplash

Storing and securing secrets has always been a headache of software engineering. Secrets are private information that you don’t want the world to know like SSH keys, API tokens, passwords,… If your application is small, a few environment variables on your local machine would suffice. At enterprisey level, you probably want a highly-available Vault cluster backed by a highly-available Consul cluster. However, what if your scope is somewhere in between? You have too many secrets to manage by hand but not that many to justify a Vault installation. …


And it was one of the best trips in my life. It was the first time I went to a conference, and even more so, I went there as a speaker.

It all began with my participation in Google Summer of Code 2019. For those who didn’t know, Google Summer of Code is an annual program for undergrad and grad students. Students will work remotely, receive mentorship and get paid to complete a certain open-source project. I worked with Jenkins and my project was Remoting over Apache Kafka with Kubernetes features.

After successfully completed the project, I was honored to…


We all know that Docker is awesome, but when it comes to separating deployment configs, there is little to no strict guideline. In this article, I will try to explain one of the most popular techniques which is using docker-compose with environment variables. There is also an example with Node.js at the end.

Why do we even need different configuration for each environment?

In a software development lifecycle, there may be as little deployment environments as just development and production. However, there may also be as many as development, integration, testing, staging and production. These environments are different by nature and thus require some slight (or considerable) change of factors.


Kết quả thi N3 tháng 7/2017 của mình, full điểm đọc

Hiện nay có khá nhiều lộ trình tự học tiếng Nhật. Bản thân mình có cách học hơi khác người (kanji first) nhưng lại tỏ ra khá hiệu quả trong việc thi N và cải thiện khả năng reading. Thông thường thì các bạn sẽ học theo giáo trình Minna/Genki, với mỗi bài sẽ học một lượng từ vựng và ngữ pháp cố định đồng thời tập đọc và nghe. Còn cách học của mình là cram thật nhiều kanji với từ vựng trước, rồi học ngữ pháp, rồi mới luyện các kỹ năng đọc và nghe.

Giai đoạn 1: Học hiragana và katakana (khoảng 2–4 tuần).

  • Chú ý tập…


What is competitive programming?

Sites like CodeForces, TopCoder, HackerRank, CodeChef,… ACM-ICPC, Olympiad in Informatics (for high school students), Google Code Jam, Facebook Hacker Cup,…
Anything involves solving short problems in 2–5 hours by code using algorithms and data structures.

Requirements

  • High coding speed.
  • One-click compile and run for one source file.
  • Automatic linting
  • C++ (though Java and Python are viable, C++ is still preferable for superior performance).
  • Debugging

Why VSCode?

Lightweight, customizable, big userbase, open-source and has an awesome community.

Limitations

I still haven’t been able to figure out how to debug, even after reading VSCode’s official guide. …

Nguyen Le Vu Long

Software Engineer in Vietnam: https://longis.me/

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