Video Curation Series #001

Async I/O, the zig way Watch zig’s take on how to implement the async await paradigm without coloring functions, i.e. without adding special behavior or arguments to the functions. How to write async functions without caring what runtime is going to behave as, evented or blocking. Andrew speaks until the 35 minute mark. Watchtime ~35 minutes John Carmack x Lex Fridman Listen to the inspiring journey of John Carmack with gamedev. Definitely watch the sections until 3:08:02 mark. Watchtime ~3 hrs If this is too much, have a crack at, Watchtime ~30-40 minutes How to be a great programmer | John Carmack Best Programming setup and IDE | John Carmack Best Programming Language | John Carmack Programmers aren’t productive anymore - Jonathan Blow A nice and short clip.

Passwords Over GnuPG

Passwords are dangerous Identity on a multi-tenant service, at some point in time, requires you to prove your identity in some form. Passwords are supposed to be restricted knowledge which should be possessed by only a single person. That’s the ideal case and is also true in some cases. With the expanding online lives of humans and dependence on multi-tenant platforms, it’s becoming harder and harder for humans to keep track of that “restricted” knowledge. It’s a very risky practice to use the same passwords at multiple locations for obvious reasons. In case one platform is compromised, by extension, the other is too.

Trust the Certs

Why do you remember certificates As an IT professional, you might have come across this error while browsing sites of setting up your local development environment. As a fix, you would have been recommended to go to the advanced option in this error and accept the risk and allow the website to work. Your browser may still warn you by displaying the lock on the ominbar of your website as red or unsafe, but you choose to ignore it and not deal with it. Why do you see this error? Browsers don’t do a very good job of explaining the error upfront.

Test before you Go and Commit

There is a certain confidence boost when you see that message “All tests pass”, unless you are like me and get lazy, skimping on writing good tests for your logic. There are a lot of tools integrated with github, gitlab and probably other git interfaces that run a set of pre-defined tasks before potentially allowing you to raise a PR or mark it safe for merge. For the uninitiated, it’s know as CI or continuous integration tools. For example, Azure pipelines Github actions CicleCI TravisCI What if you could run those tests, lint checks and other stuff before you push your commit and realize it’s going to fail in your CI pipeline and make you look like a n00b.

I C and .so Does Rust

Distributing software is a tricky thing. If you want to share the functionality with someone you may share the source with them and give them the build instructions and it would all play out good. But that may not be the case if the source is a different language and the consumer is using a different language. For example, there are a lot of libraries that use common functionalities like openssl for crypto operations or network libraries or packages like zlib just because they are reliable and have been tested for years on speed and correctness. You might not want to translate it in the language of your choice.

Go Use Those Traits

Interfaces were popularized by Java but originally came from Objective-C (source).Until a few days ago I did not realize how powerful they were. In my opinion, interfaces have been potrayed in an incomplete manner by all the tutorials. The key idea is correct but it limits the thinking of what it can be used for. I am sure everyone who has written some form of object oriented language would know this example. public interface Animal { public String speak(); } public class Cat implements Animal { public String speak() { return "I am a God !"; } } public class Dog implements Animal { public String speak() { return "Where's my hooman !

Apache Thrift Over Unix Sockets in Rust

Apache Thrift is an interace defintion language and binary communication protocol use for defining and creating services for all the numerous supported languages. It forms an RPC framework avoiding the usual microservices HTTP style messaging making it a bit more efficient avoiding all that HTTP overhead. Thrift was developed at facebook. Now I have some views about facebook due to their primary product which is quite stupid (the users), the social network, not the movie but the website, facebook.com. It has almost no credibility for common people, nothing useful, full of memes (which are hilarious by the way if you find your way to some awesome math meme pages) and a serious time killer.

Re-ally Fast

Lately I have been trying to get into the Rust ecosystem to get a feel of the tools and the language. In the process I came across a few tools that I would highly recommend to try out. ripgrep - A blazing fast alternative to GNU grep alacritty - A GPU accelerated terminal emulator exa - A replacement for ls written in Rust The tools exa is for a more pretty ls, may not appeal to everyone. Similar is the case for alacritty, it is intended to be used by people who are comfortable with tmux as it doesn’t have tabs, kind of a bummer but if you roll with tmux, it should not make any difference anyways.

Boredom during COVID19

After weeks of hunting for something to do (which is actually on-and-off) and on absolutely no demand, I will be trying to write my experiences and fears as a software engineer, or anything that I have learnt or learning. Also, it will let me use this site a personal cache of things that I have learnt and i know where to look instead of doing all of the research again. This may turn into such a disaster that people at ARPA may start contemplating about their work ! Disclaimer These entries are more like logs and not meant for technical depth or accuracy These blog entries would be more like logs and not meant for technical depth on any matter mentioned in the blog and may not guarantee correctness of the subject matter.