Note: We created a Ruby gem to easily share the lessons we’ve learned in this article.

We’ve been using Redis with Ruby on Rails’s caching methods for a couple of years at Mrsool and it’s been a great experience. We have particularly been using a function called #delete_matched to delete keys starting with a certain prefix. Let's take a look at an example:

Let’s imagine we have SQL table called stores and each store has many branches, and we need to show store branches near a certain user using their latitude/longitude (with varying degrees of precision), but we have millions…

I was an engineer for most of my career and one day I became a manager and I was quite lost and afraid in the beginning, I realized I hadn’t shared my experiences from back then. I’ve been doing engineering management on and off for the past couple of years and I decided to share a short summary of what I learned.

A lot of this is stuff I learned from books, articles, websites, and some of this is stuff I learned on the job. Full credit to all the resources I learned from is at the bottom in the…

This post is my setup by the end of 2018, I keep my-mac-os repository on GitHub up to date with my latest setup.


Computer: 15" Late 2016 Macbook Pro with Touch bar.

Trackpad: Apple Magic Trackpad 2.

Monitor: BenQ GW2765HT 27-Inch.



I’m slowly transitioning to cross-platform software because I want to be able to use the majority of my apps on any OS.


Alfred — Launcher

  • Alfred is both my launcher, clipboard history manager, and entry point to lots of…

I’ve been using React for more than a year now and a lot of the time things broke, slowed down our build speeds, and didn’t work in the browsers I was transpiling for. I decided to share the lessons I’ve learned in the hopes they might help others out.

Be very careful with importing large libraries

Trying to compile large libraries (like react-plotly or PDF libraries) can take your Webpack compile from seconds to 10 minutes+. If a package is slowing down your compile, consider using a CDN version. We simply used script tags, but there are Webpack plugins that can help with that too:

Try to find a webpack plugin for your dependencies

What is GraphQL?

“A query language for your API.”

Think of it as being able to send queries to an API endpoint to fetch exactly what you want, rather than the traditional REST way of having many endpoints per resource. The way that it personally clicked for me is thinking of it as

Take a look at this example from the GraphQL website to get an idea of how it works.

I recently migrated everything to a personal G Suite account, and I kept facing issues with Google’s services even though I’m in their ecosystem as a paying customer.

There are two main and very irritating issues:

  1. Removing services and data without any notifications whatsoever.
  2. Making it tedious and annoying to enable or try out new services.

I’ll list 3 examples of things that have irritated me quite recently.

Google Maps Timeline

Google Maps Timeline was a feature I was using, but was apparently suddenly disabled just for G Suite users in Saudi Arabia, it works just fine if you use a normal Google…

2017 was the year I grabbed my comfort zone, shoved it towards a corner and beat the heck out of it.

I got married in late 2016, moved to a new city, and at work we started heavily expanding our engineering team and taking on much more ambitious projects. My wife and I never really had a honey moon, but we did enjoy exploring our new home when we first got here. We got two cats (Yuki and Ame) and we sadly lost Yuki to FIP (here’s a blog post about her in Arabic, by my wife).

In the past…

When you enter the dot/full stop character when typing in English, it just works, and you don’t need to think about it dancing around your words and sentences. This isn’t the case in Arabic. Since the full stop character is technically considered a BiDi (bidirectional) character, weird stuff starts to happen. There’s no clear standard on how to render it correctly(as far as I know).

Take a look at this GIF for example:

The dot suddenly went to the beginning of the line (on the right side instead of the left), and the blinking cursor isn’t even moving. Now this…

I constantly keep jumping between web browsers to try and have a powerful workflow, great extensions, syncing across my devices, good performance, and good battery life. Obviously some of those requirements are at odds with each other.

Until recently I was juggling between these three browsers:

I’m on a late 2016 15" MacBook Pro, and I barely get 3–4 hours of battery life with just one of those browsers running. I tried downloading the beta for macOS 10.13 and I was trying out the new features…

Mirror of this post from

In my previous post, I went through parsing PDFs and using Algolia to index them and making them searchable. The end result as that we ended up with a record per paragraph, which meant that we could end up with a very large number of records very fast. At Tam, we were using this on a larger scale in one of our Ruby on Rails projects. …

Omar Bahareth

Sharing my experiences in life and what I come across as a Software Engineer and Lead.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store