Abid Omar

Read this first

A primer to Rust Async

This article is not comprehensive on the Rust Async topic but could be an easy overview if you have no idea about Async Programming in Rust or in general. If you are wondering about the new async/await keywords, Futures, and intrigued what Tokio is useful for, then you should feel less clueless by the end.

Rust Async is the new hot thing in Rust’s land. It has been hailed as a big milestone for Rust; especially for people developing highly performant networking applications. The long time for development, the different incompatible versions, and the various libraries; however, might made it not very straightforward to grasp. There is a lot going and it’s not obvious from where to start.

Let’s start from the beginning.

What is Async?

There are several articles, books and videos that goes in depth on Async; but I’ll give you the short version: If you have a single processor and want to...

Continue reading →


The modern web is becoming an unusable, user-hostile wasteland

In one of Gerald Weinberg’s books, probably The Secrets of Consulting, there’s the apocryphal story of the giant multinational hamburger chain where some bright MBA figured out that eliminating just three sesame seeds from a sesame-seed bun would be completely unnoticeable by anyone yet would save the company $126,000 per year. So they do it, and time passes, and another bushy-tailed MBA comes along, and does another study, and concludes that removing another five sesame seeds wouldn’t hurt either, and would save even more money, and so on and so forth, every year or two, the new management trainee looking for ways to save money proposes removing a sesame seed or two, until eventually, they’re shipping hamburger buns with exactly three sesame seeds artfully arranged in a triangle, and nobody buys their hamburgers any more.

Joel Spolsky from There’s no place like 127.0.0.1

As I keep...

Continue reading →


Rust 2020: A better ecosystem

This article is written in a response to A call for blogs 2020.

I’m fairly new to Rust, and thus my perspective is that of someone who is not quite sophisticated with the language. I think Rust is hard to learn but should be manageable for your average software developer given enough persistence.

Once you are over that barrier, you start thinking of building something in Rust. Probably, for the web, or a desktop application, or a mobile application; because that’s largely what many developers are building today.

The problem is, in my opinion, the Rust ecosystem is pretty much under-developed at this point. Especially, if you are targeting web, desktop or mobile. The infrastructure is simply not there. The crates have little maintainers, little documentation, no tutorials, and the tooling is just bad.

So here is how I think this should be approached:

  • Focus on few angles and crates...

Continue reading →


A brief introduction to Rust

This blog post will take a deep dive into the Rust world of mutability. By deep dive, it means the blog post is considerably long. So it will take time to go through the different examples. The topic we will dive through is specific but we will have to go through various Rust concepts: Ownership/Borrowing, Lifetimes, Unsafe, Sync, Closures, Macros and more. This might be intimidating and I think this is where many developers are put off.

This article assumes some familiarity with Rust; that is if you have successfully run a “Hello World” program, then you are qualified! If you have struggled with some of the hard concepts then this article could be a good introduction. It will not go deep for each one of these but will give you enough knowledge to help you understand the bigger picture.


We will start from a reasonably easy problem: We want to access a particular variable from any...

Continue reading →


The VIM Experience

For the Vim crowd, my .vimrc file is available on Github.

I got introduced to Vim 7 years ago. Getting started with Vim was a challenge. I think it was a typical experience: Vim has a steep learning curve and requires lots of customization to hit that nice spot. There is even a cost to start typing actual text. As I’ve never been introduced to a Vim-like model, my intuition for a text editor is to just start typing. When you opt for a new experience to increase your productivity, it is hard to be convinced to hit a key to start typing. It seemed counter-intuitive.

That made me bail of Vim multiple times. But I always had the inklings to give it another shot. I think a part of it is “jealousy”. Seeing other developers wrangling code in unusual ways, I wanted to have that kind of power. Also, carpal tunnel syndrome is real and I needed to relieve my hands of constant switching.

It is...

Continue reading →