3 Minutes Walk-through DNS

Command lines in this article are based on MacOS/Linux though terms should work across other platforms as well. // Hit ifconfig in terminal, you probably see @zoe ~% ifconfig lo0 : ....127.0.01 gif0: en3: bridge0: ap1: utun0: .... Question1: What do they mean in similar structs? Headers like lo0 denote the name of Network Interfaces(Iface), aka. en — Ethernet, lo — Loop. en0 — this interface enable you to read this article; lo0 — internal address which always therewithout wifi connection awdl0 /llw0— airdrop anpi / en3 / en4 — USB-C / lightening bridge0 — literally a bridge to make communications ap1 — hotspot Question2: Why there are so many interfaces? It mainly depends on how you digging around. Bluetooth, Wi-Fi, Airdrop, Docker, VPN, etc are included as long as you turn on the specific over the air connections. Time to into the internet interface Destination Gateway Genmask Iface 192.168.1.0 0.0.0.0 255.255.255.0 eth0 0.0.0.0 192.168.1.1 0.0.0.0 eth0 Destination decides where the data will be passed to. For example, 8.8.8.8(Google.com). But before you are going to visit Google, the computer needs to connect Internet. The router gives you a address like 192.168.1.x (IP), used to visit other ip address. Genmask is like if-else condition to check whether the destination is needed a delivery man or not (beyond reachable range, aka local network). Gateway is like a postman, assisting you sending the parcel to address away from here if it is represented other than 0.0.0.0 0.0.0.0 can match to any address(0~255.0~255.0~255.0~255). For example, if you want to visit Google(8.8.8.8, the destination), Genmask (0.0.0.0) confim it is a match then the Gateway(192.168.1.1) directs you to the Google website. Take-away: If (Destination-Genmask not match) → {Gateway deliver the parcel}; else {Solved in Local Nerwork}.

Things I Learned Only After Stepping Into Robotics

I have been learning software engineering for a while and getting taught in an academic way but not really getting my hands dirty or ready for low-level language practice. Even if the academics do not have enough resources to set up modules for it, I highly encourage people to explore a little bit, and then you might find, just like me afterwards, “I know little about software even if I can created applications from zero.” There are a lot of A-HA moments. Software is composed of various concepts, and application is just one of them. There is always the excitement greater than scareness for me to dive into a new area — Robotics, more exactly Embedded. IoT Communication Protocol I barly thought about how my speaker connect to my phone before I started my first mock task: controlling a humidity sensor by modifying the parameters in the cloud. It was really fun to have a peek at how the home automation works. This one highly depends on the MQTT protocol. Classic. I will go for more details about common protocols in the following articles. A short introduction to MQTT: it creates a bridge for developers to make communications with devices through its unique information. The MQTT library makes things simple as long as the client id, address, etc. are provided. MQTT’s source code helps me understand the logic behind it. Share Messages Forwards Okay. Now I’ve got the details from the device and they should be shared with more audience to have more control over the robot’s movement. Here comes to the core of robotics: ROS2. Another protocol to publish or subscribe to messages under the same Local Area Network(LAN). I appreciate how they make ROS2 documentation tutorial so well-structured. Bon appetit with its open-source repository. DDS is the protocol that ROS2 is built on. They wrap it via DDS(Data Distribution Service) and help developers skip the time-consuming and repetitive steps. For developers, they only need to invoke ROS APIs. Standing on the shoulders of giants. When I was looking for the utlisation of some functions, some of them only exist in ROS1. What’s the difference? Briefly, the milestone is the introduction of DDS, which makes ROS2 more flexible with more nodes, while ROS1 is built on TCP/UDP. ROS2 supports multiple OSes not just limited to Linux like ROS1. Source Code Source code is more important than I thought. It does not look digest-friendly. Using keywords make it much easier to identify the useful messages I’m looking for. If not, the sense of the logic is still wort to taking a look at. I am on my way to getting used to it.

1