Haisum's Blog It's not a bug, it's a feature.

Let's talk about passwords

I was frustrated at setting up password for my bank’s internet banking portal. It’s frustrating to come up with passwords that follow annoying rules of having particular set of combinations to get a strong password. It’s even more difficult to remember such passwords. It doesn’t even solve problem of making passwords strong. P@ssword1 is considered strong by such rules but it takes seconds to get cracked with good password dictionary. Such composition based rules for password strength have been discouraged in latest IANS password guidelines.

Rants on Freedom in Pakistani Culture

I fell in love last year. She was beautiful, intelligent, understanding and everything I had ever hoped for in a perfect girl for myself. Year and half later it was best relationship one could hope for, despite that we are no longer together because our society didn’t approve of our relationship. I have a million questions against religion but I am afraid to express or discuss them with anyone, or even officially declare that I no longer beleive in religion because I may actually be killed for speaking against faith. I have worked hard to become what I am today. Coming from a small town school where we were taught writing A B and C till grade 6 and becoming a regular reader/writer wasn’t an easy task. My inspiration for hardwork was to be able to do all cool things other people in world can do like travelling the world, buying awesome cars, dream homes and most of all to have freedom of doing whatever I wanted to do with my life. Now that I can do that, my parents and siblings look toward me to support them, which I will but does that leave room for my own dreams? I don’t blame them, that’s how it has always been in our society. One person out of four does all the hardwork and then feeds three not so hardworking people. Half of our workforce (women) never work, putting all burden of work on men. Since women don’t work, they don’t know how hard it is to earn money and make it even more difficult for men to earn enough to satisfy them. I don’t blame women, in most of cases they can’t work even if they wished to, thanks to our culture. Kudos to women who fight against this culture and get out to work. You’re a hope for this society’s future. There are a million other things I could rant about right now, it’s 3 AM here and I just feel angry and may regret this post later, but screw it I will rant about all what bugs me right now so I can take a peaceful nap.

RPC, JSON-RPC examples in Golang

I discussed about RPC for message passing in last post. Here we take a practical look at it using golang, my favorite language nowadays.

Using RPC for message passing in distributed systems

My last post discussed about distributed systems and their problems. The most important and fundamental requirement in distributed systems is message passing between different processes so they can coordinate on a single task. We want such communication to happen in an standardized and reliable way. Fortunately, because of years of research and real world usage we have a number of reliable protocols to meet our needs. SOAP, Thrift, REST APIs, message queues such as RabbitMQ, key value stores such as Etcd are examples of tools and protocols we may use to enable two processes to communicate. One of reliable and frequently used protocols is RPC.

A Primer on Distributed Systems

Days of Moore’s law, that number of transistors in an integrated circuit double every two years, are arguably numbered. Our modern world grows and demands computing needs faster than Moore’s law. We have complex applications and big data which simply can not be processed and stored by a single computer, no matter if that’s the fastest computer in world or has maximum possible hard drives attached. A modern scalable application consists of several processes. A process, as I use here, may represent a physical computer, a virtual machine, a container, or a thread in a concurrent system. A fundamental problem in such a hybrid architecture is that each process needs to communicate and coordinate with other processes to work on some task. Such processes may be distributed as containers or virtual machines on same server or be on separate server nodes in same datacenter or even distributed to separate distant datacenters connected with secure networks. We call such systems by names such as Distributed Software Systems, Distributed Architecture and Microservices etc.