CADing and 3D printing like a software engineer, part 1 - baby step with an overengineered webcam raiser
Like many of you nerds, a nerd like me when I was a little kid, I enjoyed tearing down stuff, putting it back together, and ensuring it worked. Somehow, I naturally desire to understand how things work and build stuff. One of my favorite books is The Way Things Work:
Highly recommended, by the way.
Just tearing down things and putting them back cannot contain my desire to build stuff at some point, so I became obsessed with programming. Over the decades, I felt very comfortable building things in the virtual world, but it’s becoming too comfortable. For now, I have the confidence to build almost any large-scale complex software system from the ground up by myself or with a team. Nevertheless, I still want to build something I can touch in the real world.
However, building things in the real world is challenging because the real world is messy, unlike the virtual world, which is usually binary. Although I don’t hate handcrafting stuff, there needs to be a significant improvement in the translation from idea to reality. Time consumption is also an essential factor. That all changed after 3D printers became more and more popular. You can print things as you designed. However, the problem with 3D printers is that I have heard that there are so many problems when you try to print something with it. I don’t want to spend most of my time troubleshooting printing problems; I want something that just works and focuses on design and iterations.
As you can see from my previous article, I built a mini-PC-based bare metal Kubernetes cluster with USB4 as the high-speed networking interface. Since then, the cluster has been sitting on the corner of the floor in my office, and it organically extended with different devices and got a bit messy over time. Cooling is also a concern because the three nodes stack together. There needs to be more room for good ventilation.
To improve the situation for my cluster, I had the idea of using a 3D printer to build my modular mini server rack. A while back, I realized that the 3D printers community recommends printers from Bambu Lab a lot. Most of them claimed it’s finally out-of-box and print. Then I wondered
Okay, maybe it’s the time. Let me build this! 🤔
However, since the money-saving spirit is hardwired in my DNA, I’m always jealous of YouTubers who get free stuff to review. Old school dinosaurs like me, who only write articles instead of making fancy videos, wondered why not ask them for sponsorship of my mini PC server rack project. So I asked. And YES, today I am happy to announce that this article is sponsored by … um…. nobody but myself once again!
So yeah, no, they didn’t reply 😂
Okay, fine. Who am I to ask for a sponsorship from? Since then, I have buried the idea deep down in my mind until recently, when I saw there’s a black Friday discount. Given that they aren’t sponsoring my tiny project, I have no choice but to punish them with money. So I did. Sorry, just being salty.
Since then, I have printed some little stuff and learned a little about CAD (Computer-aided Design). Surprisingly, my software engineer experience could translate into CAD. Today, I would like to share my experience of playing with 3D printers and also learning CAD from a software engineer’s perspective. This would be a series of articles sharing my experience moving toward the goal of building my cluster’s modular server rack. Hope you will like it, and here we go!
...
Read the full articleHow I discovered a 9.8 critical security vulnerability in ZeroMQ with mostly pure luck and my two cents about xz backdoor
If you work in the tech industry, I bet you have heard the crazy story of the XZ backdoor. Long story short, an open-source contributor known as Jia Tan contributed to the XZ library. After spending more than two years gaining the trust of the original author, that person (or persona) patched the software with layers of obfuscation and batch scripts extracted from seemingly harmless testing binary files. Eventually, a backdoor was injected into sshd, allowing the attacker to execute remote code. If you are interested in the story, you can read more about it, you can read the following articles:
The backdoor was discovered by a principal software engineer working for Microsoft who happened to be testing PostgreSQL performance and noticed abnormal CPU usage after updating his Linux system. More importantly, he looked into why that was and found that backdoor.
Not as intensive as XZ backdoor story, but today, I would like to share my story of how I found CVE-2019-13132, a critical security vulnerability with a CVSS 3 score of 9.8 in ZeroMQ, primarily because of pure luck, and also my two cents about this xz backdoor event.
...
Read the full articleHigh-speed 10Gbps full-mesh network based on USB4 for just $47.98
As a software engineer, software is part of your job title; thus, it almost feels like you should only know software. However, in the decades of building software, I realized that gaining knowledge about hardware is equally important to learning code. Although I might never be as good as an expert in hardware, I want to expand myself beyond just software. So, I never shy away from getting my hands dirty with hardware.
To reduce the cost of my AWS cloud service, I recently decided to move some less mission-critical services into my bare-metal servers. Therefore, I got to learn how to build a bare-metal Kubernetes cluster and set up the network for it. After some research, trial, and error, I finally built and ran a relatively low-cost cluster with a high-speed full-mesh interconnected network. The most interesting part is that the networking is based on a USB4 ethernet bridge instead of a conventional ethernet switch and cables. I tested the network speed, and it can hit 11Gbps. The cost of making the network is only $47.98 USD! Today, I would like to share my experience of building it.
...
Read the full articleWhy I built a self-serving advertisement solution for myself
Orignally posted in PolisNetwork’s blog
Selling a product is never easy. As an experienced software engineer myself, building a software product is much easier than selling it. Actually, I can build and maintain multiple ones simultaneously, but it will only do good if I find customers interested in using them and paying for them. Therefore, marketing plays a key role here to success.
There are many ways to market. Buying ads sounds like an easy solution for early customer acquisition, but it has problems. Here are some of the issues:
- It could be a substantial financial burden for early-stage products to keep burning cash before making any money.
- You need to learn how to operate ads efficiently. That requires some trial and error, which can be stressful under financial burden.
- Click fraud is hard to avoid. It would be hard to tell how much of your money is going to it.
- Most ad networks out there raise serious privacy concerns, and more and more people are installing ad blockers to protect their privacy.
With these in mind, I’m not too fond of buying ads for customer acquisition for my products. Certainly, buying ads has some pros, but I like approaches that can grow organic traffic in the long run. Building useful free online tools can also bring organic traffic in the long run. Or content marketing is also one of them.
For example, I made the online Beancount formatter tool for selling BeanHub. Another example is that I built Avataaars Generator in 2017 as a hobby project, which became very popular. If you search “avatar generator,” it shows as the number one place in the search result in Google:
It brings in some organic traffic every day without spending a single penny.
...
Read the full article