Interruption Driven Development



In theory, at a job, work is passed down to you. You don't have to figure out what to do next, your manager will line up your next task. In reality, we don't live in a vacuum. Developers are perfectly capable of identifying pain points in the application. They can make a case on why they should work on these issues.

I rarely find myself without anything to do at work. There is always a task in my mind that I know I can work on but don't have the time to. I currently work at a start up, and my queue is filled with things I should work on. Completing them would make our service more stable, improve team work, and most probably help us generate more money. But like most startups, my real work comes from the daily interruptions.

These are things that we have not anticipated. Customers reaching out and asking for a feature, misunderstanding in the way the product works, and unexpected bugs. We all want to create great product with amazing features, but as long as interruptions are still common, they are the priority.

The Job is your training



"School is where they teach you how to think."

I've tried to believe that statement, but I just can't. In college, every time the professor turned to us and said: "Any questions?" The question that followed was the same. A student will raise his hand and ask, "Is this going to be on the test?"

School is where you learn to get good grades. The moment I started to use real-world methods in class, I was accused of cheating. Since I haven't used any bubble sort and red and black trees in a real job, I spent my time learning about software.

The most underrated skill I learned on the job is installing software. In the beginning of my career, I would spend days if not weeks pestering the lead developer. We would spend time together trying to figure out how to get the project up and running. Installing tools and dependencies, setting up configurations and environment variables, and understanding the developer workflow. No class in school will prepare you for this.

Project tasks do not come as word problem format. Schools obsess over creating theoretical situations. "Jack and Jill each have a set of N numbers where 1 < n < 10^24. They are considering merging their two sets while ignoring all duplicate..." No task comes in this format. When they are coming from a manager, sometimes they just say "The top link on the homepage is broken"

You have to conduct your own investigation, replicate the problem and then solve it. To correct the maxim: Jobs teach you how to think.

When a fire ravages a city



When the fire is put out, the people who once lived in these ruins come back to assess the damages. They see their family home destroyed. They see their apartment and all its content leveled to the ground. And most importantly, they see each other.

When nature strikes, people have this unrelenting ability to stand up together. As a community. They can put their differences aside and work together to rebuild.

But what happens when the fire was not of natural cause. What if some people lit the city on fire. What if people died in the fire. All of the sudden, this spirit of community is gone.

The fire may have been put out, but the resentment stays. The city may rebuild in time, but suspicion stays. Trust is thrown out the window. Everyone knows that their next-door neighbor is capable of lighting the city on fire once more. The city will never be the same again.

This is what Donald Trump did to America. Even if he loses, he already lit people's mind on fire. He turned people against each other. He dismantled the trust people once had towards one another. He damaged the country's ideals for his own gain.

A Biden presidency may roll a few of the laws back, but the damage has already been done. You cannot make people forget. America lost a limb. All it can do now is learn to live as an amputee.

The Perfect Application



Every time I want to start a project, I look for the perfect project tracker I could use. There are hundreds of To-Do apps in the market, but I can never find the one for me. I tried using Trello but haven't logged in for more than a year. I've even tried Jira, I can't get myself to log in.

But I have managed to complete many projects without ever finding a solution to my problem. It is this time of year again, and I am finding myself returning to my same trusted temporary solution. I always end with "OK, I'll put everything in a text file until I figure out the best solution." After so many years, simple .txt files are what I have been relying on to track my time and projects.

Maybe someday I'll find the best tool for the job. But for now, I can rely on a simple text file that is easily searchable to track my time.

If you find yourself with the same dilemma, trust in simplicity. Some day you will find the right software, for now save your thoughts in a simple text file.

Daily Work



When the impostor syndrome kicks in, the first thing that comes to my mind is how terrible I am at my job. It is only a matter of time before I get caught. I'm a fraud. The work is too easy, and anyone can do it. I'll get replaced by a junior developer.

The syndrome occurs every time I have to explain to someone else what I do. The more I talk about my work, the less special I feel about myself. Yet, the person I am talking to seems amazed by it. The more we know about a subject, the more we downplay its importance.

Here is an expression that used to sound obvious to me: It's as easy as walking and chewing. What this implies is that walking is easy. Chewing is also easy. Walking and chewing at the same time require no effort. But then, I watched my two sons learning how to walk. Their little feet wobbled. They fell on their buns. They fell on their faces. When they managed to stand up, the littlest breeze or sound will knock them back down.

Walking and Chewing is easy when you have mastered both over a long period of time.

Now the question is, how do you master anything to the point that it becomes second nature. The answer to that is that you have to practice it every day. When you go outside, you rarely see any able person struggling to walk. It's because they walk every day. You don't see anyone sitting in a restaurant and fighting to chew their meal. They eat every day.

When I find myself typing code and ignoring everything around me, it's not because it's easy. It's because I practice it every day. To be good at anything, you have to practice it every day. Make it your daily work.

What do you want to be when you grow up?



Is this still a valid question? When I was five, I wanted to be a banker. I had once been in a bank and the clerk pointed at this giant vault. He said that this was where they kept all the money in the world. So naturally when I grew up, I became a tech support agent in a non-profit organization.

But then, I wasn't done growing up. A few years later, I was a web developer. And then a couple of years went by and I became an entrepreneur in online real estate. A couple of years ago, I started working as an AI software engineer. Now I'm contemplating writing.

I thought it could be a generational thing. I asked my mother what she wanted to be when she was a child. She answered, "a doctor." Instead, she became a history professor, then turned into an import/export businesswoman. My father was academically an engineer, so he worked as a diplomat all his adult life.

I asked my 8 year old niece, "what do you want to be when you grow up?" She answered: "I want to be a YouTuber right now!"

No one keeps the job the set out to have in the beginning. You can't trust the words of your younger self to guide your future.

As a big kid, I have no idea what I want to be. But I'm hoping for an interesting future.




summer ice cream

Does it feel like summer? I'm not sure what summer is supposed to be. On TV, they show people going to the beach, eating ice cream, bathing in the hot sun. I was born and raised in a desert. It has always been hot in my life. I've always lived a couple of miles from the beach. For some reason, I don't associate the heat and sand between toes with Summer.

My summer was that time you didn't go to school. You woke up, brushed your teeth, then went on to play. You didn't think about school or homework all day long. And your mother doesn’t have to chase you to come back home. It was summer.

Now that I am not a child and don't have to go to school, what is summer? My kids are one year old. They are happy if I take them to the balcony and play with them. They are not asking for much yet. But somehow I feel it. I feel like it is summer. I don't work as much right now. I don't even write on the blog anymore. It's like this inner feeling in me that makes me slow down with work and lets me enjoy my time.

It's not the sun, the heat, the ice cream. It's the free time I get.

It is summer.

Favors aren't win win by nature



When you read about success or entrepreneurship, you will inevitably read about favors. The common premise is to only do favors that will advance your own cause. Only give your time to those who can give you back something in return. Do something for them now, that will turn into a benefit for you later. These are the opposite of a favor.

A favor is something you do without the expectation of reward. Anything else is a paid service.

You do someone a favor to help them. You use your precious time to do something for someone else. You inconvenience yourself a bit for the sake of someone else. That's what a favor is.

When you do something for someone only when it is convenient for you, that's not a favor.

If you focus on the exceptions, you'll never program



You can't use regex to parse HTML. If you want to match all valid emails with regex, this is the most valid pattern:


If you use the latest JavaScript features, chances are it will fail many devices.

If you want to properly display people's name, you'll have to support Unicode. If you plan to use toUppowerCase() or toLowerCase() to capitalize a name, you have to think about the names that are not written in ASCII.

If you want to support emojis, you have to update all the functions that check the length of a text. Does it support counting multi-byte characters?

If you write in Object Oriented Programming, will you switch to functional to save memory?

If your website runs slow with five thousand database records, how would you deal with 5 million records?

If your users turn off JavaScript, can they still use your website?

If you focus on all these exceptions and the many more I haven't included, chances are you will never start programming. The key is to build stuff anyway and face each problem as they come to life.

Honesty can only get you so far



The first time I was featured on BBC, I had hundreds of journalists contact me. Only a few decided to publish my words after we had spoken. I realized that many of them came to me with ready made quotes. They were hoping I would repeat those words so they can quote me:

  • Journalist: So would you say that "every company should avoid using AI like the plague?"  
  • Me: No, I wouldn't say that.  
  • Journalist: So what would you say companies should do about AI?  
  • Me: (long explanation about how we are all discovering this together and we are learning as we go)  
  • Journalist: I see, so they should avoid it at all costs because we don't understand it.
  • Me: ...sigh...  

Being honest and telling the truth is rarely dramatic. For example, if you correctly label some systems as Automated Systems instead of AI, few people will want to talk to you. The truth is more down to earth, it's less flashy, it is the truth. But the truth is not sexy.  

I wanted to avoid this mistake this time around. A new round of journalists called me after my latest article on BBC. But, what is the alternative? If I don't tell the truth, what do I say? Do I blatantly lie? What's the alternative to dry, yeastless factuality?

I found out that if you don't tell the truth, the alternative is not to lie. Rather than tell them that what they are referring to as AI, is merely a sophisticated stack of if-and-elses, I'd tell them about the utility of such software. With racial tensions, when they ask if I had been bullied as the only black programmer in my team, my answer is to explain the effect of being the only black programmer. There are many ways black people have been treated unfairly without getting lynched. In itself this is a much more interesting story then bullied vs not bullied.

When honesty can only get you so far, the alternative is to stop lying.