Trying new apps

There are so many apps out there and I always get tempted to try them! Especially those fixing one small thing that’s been itching me for some time. The latest one of those apps is Linear. It looks like a good app for project management, especially given I have a lot of side projects, and I can really see it fit my use case.

However, I didn’t make the jump. Whenever I feel I’m adding another app, it looks like opening a pandora’s box.

Any tool I add to my toolbox means a new dependency. I need to figure out how to connect it to the other tools I use, make it part of my daily/weekly routine… And in general, invest so much time in it.

That’s why I try to use the apps already in my toolbox to the fullest. The project management stuff is already covered by Todoist, especially their Boards view. It’s not the best app for this, but it works fine. And this means one less app I should add to my toolbox.

I don’t have a problem trying new apps. I enjoy the process of onboarding, the UX… It inspires me and keeps me in the loop of what’s happening around. The only difference is I only commit to a few.

A non-growing to-do list

We all know what’s the problem with to-do lists: They grow bigger and bigger every day. Few months in, and you’ll end up with a long list you may never complete in your lifetime.

Seeing such a list every day will be exhausting for you and your mental health. That’s why I deliberately keep my to-do list as small as possible. At the time of writing this, my work to-do list is 20 tasks, with 5 recurring tasks. My personal to-do list is 39 tasks, with 25 recurring tasks. My work list never goes beyond 25 tasks and my personal list never beyond 50 tasks (usually when doing groceries). Knowing these limits keeps me at ease whenever I open my to-do app.

How do I do it? Two steps:

  1. Review the list weekly (usually Sunday before sleep)
  2. Heartless deletion

The first part is easy to explain. Every week, I go over my to-do list and see if I need to update something. That’s why it’s good to have a small list so you can go over it quickly.

But the second part is what really makes this process worth it. Don’t get attached to your tasks. If the task doesn’t make sense anymore, delete it. If you’re not excited about it, delete it. If no date is attached to it, delete it. If you are not sure about it, spend some time thinking about it, and then either delete it or commit to it. Keep your list small at all costs.

My to-do list is sacred. Unlike a calendar where anyone can add anything, and at any time. I’m the only person adding stuff to my to-do list.

The incorrect idea of hustling

I’ve seen there is a new generation of people who think hustling is just summarizing other people’s work, post a Twitter thread, pray it goes viral, and then brag about the new followers count.

So I wanted to summarize how the Internet looks right now, for those in the entrepreneurship cycle:

  • Category 1: The makers. They are people doing stuff. Building things, creating value…
  • Category 2: People talking about category 1 via Twitter threads, YouTube videos, blog posts…
  • Category 3: People summarizing what category 2 said. Also via Twitter threads, YouTube videos, blog posts…
  • Category 4: People doing meta summaries about summaries from category 3 using the same mediums
  • etc

The makers from category 1 don’t go viral in general. They rarely write Twitter threads that go viral, YouTube videos with millions of views, or something in between. They are too busy working and hustling. People from other categories, however, enjoy fame from their viral threads and posts.

Why? People are attracted to ideas like “40 things Elon Musk does to be successful”, “6 lessons from the last X acquisition”, “How X made millions online”, etc. Most of them think they can replicate the success by following those lessons/ideas while others consume this content for entertainment.

This idea of going viral, having multiple likes, millions of views… is an illusion trap. People doing this think they are “hustling” and need attention as those in category 1. In reality, they are only entertainers.

There is nothing wrong in being an entertainer. But I’m sure this is not what they had in mind while doing so. Posting online and going viral will definitely help you get more followers, but does it help you achieve your goal? Is your goal to always write viral tweets? Because that’s the audience you’re attracting – those who like viral tweets -.

Getting new followers and making viral tweets is not hustling. Building something is.

Daily manifesto

For me, life is a never-ending process of trying to be better than yesterday and a lot of people agree with this.

Where people start to disagree is the meaning of “being better”. Should I read every day to feel I’m better? Am I a bad person if I skip a day? What about the weekends?

It may sound crazy, but that’s how the personal development “gurus” present it: Read every day. Meditate every day. Journal every day… They present it in a way that if you miss one of these things, you’ll feel terrible about yourself.

This is terrible advice.

For me, being better doesn’t mean it only involves you. Helping your community, being nice to others, remembering your loved one’s birthdays, are all types of being better. When you keep personal development only personal, you turn into a fanatic. You start thinking you’re better than others, or you’re inches away from being the next Naval. Both destructive ideas.

I have a daily manifesto of 4 areas I want to improve at every day. I have a daily task in my tasks manager named “Daily Manifesto”. I consider it done when I achieve something in one of those areas, not one in each area, I leave that for the fanatics.

Wiser

I want to keep my mind working. I want to read, write, and learn new things. I consider this done if I: Read something, learn something new, doing a DIY project, develop a new skill or write.

Healthier

We only have one body and we should keep it working properly. I consider this done if: I cook a healthy meal, do a workout or take one of my stupid walks.

Happier

This is something that’s different between folks as the definition of “happy” isn’t the same for everyone. But there are sources linking happiness with being around people you love. And I believe that’s true for me too. I consider happiness to be tied to the quality of my human relations. I consider this done if: I spend time with family, getting a coffee with a friend, do a call with a distant friend, helping someone, or giving advice when requested.

Wealthier

Being wealthy is something I’ve been pursuing for a long time and is my ultimate goal. I consider this done if: I post on the blog, work on side projects, work on ideas, or connecting with like-minded people.


Each day, I’m either wiser, healthier, happier, or wealthier. And that’s all I need.

Stupid walk

One of the most rewarding things I’ve been doing lately is walking.

I don’t do it for a specific reason. I walk, for walking. I don’t want to reach a specific destination, have a pre-defined route in mind, or do it to conserve steps streak on a health app. I just walk. And when I feel tired, I go back home. That’s it.

I call it a stupid walk, and you’ll usually hear me saying “I need to take my stupid walk”. If I spend too much time without it, I feel I need to take one to recharge.

Walking is the activity that engages my brain the least. I don’t need to think about how I’m going to walk. My feet move on their own. It’s a repetitive task that I actually enjoy and I don’t mind doing it each day. I put music on my ears and begin moving.

My brain starts thinking about different things. Sometimes dancing to the music. Other times thinking about the future. Reflecting about the past. Enjoying the moment. Or simply analyzing my surrounding.

I get most of my ideas from my stupid walks. I don’t know why, but it works for me.

There is however something I still don’t understand. Even if my brain works during the whole walk, I feel rested and energized after it. I have no idea why. But as long as it’s a good thing, I don’t want to know why.

Lockdown lesson #2: Family first

When it comes to priorities in life, we all have our own, and there is no one-fit-all solution.

I remember how my priorities switched a lot in the past few years. From wanting to work at Google, starting my own company, doing freelance, having a six-pack body… you know.

On the other hand, there is one priority occupying the mind of every Moroccan: Leaving Morocco. Nearly all my friends left Morocco, with the majority for France. All in search of a better life, better opportunities, and more money.

I don’t blame them, they are probably right. Quality of life is probably better, more opportunities for sure, and better pay in the majority of cases.
I was one of those who wanted to leave Morocco too. And it seemed like the best decision I can make for my life. But I always thought about family and how we have a few moments left to spend with them.

During the lockdown, this was something I was thinking about a lot. Even if I couldn’t visit my family for a long time, just the fact that I knew I can whenever I want was enough for me. I couldn’t imagine myself in another country during that period as that would be stressful.

During the lockdown, I knew for sure that my decision to stay in Morocco is a good one. And I’m also grateful that I can live and work from anywhere, which means I can spend more time with family. Which isn’t true for everyone.

Getting paid to write

Since the start of my career, I got paid to do one thing: making software. It is so far, the only knowledge I was able to learn and sell. And I’m thankful to the Internet and anyone who helped me go this far.

In addition to software making, I was into writing. I started this blog a while ago and I kept moving it between different platforms. Few articles were lost between each transition, but I’m happy I kept it around all this time.

In 2018, I started another blog, remote.ma. I was just starting this “working remotely” thing and I wanted to help others who are trying to do the same. I get questions from the readers every week and I’m happy to see the reach of these posts.


Since I started writing, I did it for free. All my blogs were free and I want them to be free forever. But the last December, I announced I’ll be working on my first paid ebook Make it Legal. An ebook for creatives working online and interested in making their work legal.

It feels weird to ask for money for something you’ve been doing for free. And it’s hard to convince people to open their wallets and pay you their well-earned money. But I know the value they’ll get from this content will be worth it. Anyone who is working remotely and wants to make things legal will get the ebook’s money back on the first month of operating, guaranteed.

Writing will be the second thing I’ll be getting paid to do since starting my career, and I’m excited about this new chapter. Here, I’ll share with you why I am asking for money in the first place:

Writing is hard

The time it takes to write one article for remote.ma is enormous. I usually spend at least 3 nights on one article. One night for dumping ideas out of my head, another night for writing, and the last one to check for typos and finalize the last version. Of course, this is not taking into account the work I do to get ideas on what I should write, research, and everything else.

Having a daily job in addition to this isn’t sustainable. Especially that I know with time, I’ll have less time to spend on it. My plan with paid content is to make it possible to spend more time on writing without worrying about paying the bills.

Answering questions isn’t scalable

I get questions every week from different channels. And even if I want to answer and help everyone, sometimes it’s not possible. For the one asking, it feels like “oh I’ll send him 2 questions, and he will spend less than 5 min answering them”. For me, I get questions from 10 different folks every week, answering them with the details everyone is expecting is a full-time job.

My idea is to take the most asked questions and transform them into an ebook that anyone can read and learn from. You’ll tell me, but why not make it free? I’ll tell you why.

People don’t value free content

A lot of the people asking questions online are lazy and not ready to do the work. More than half of the questions I get are already answered in the blog. But few people read them all, they want the easiest way to get their answer, so they reach out directly.

Sending someone a DM or email is free, and it’s being abused. The ebook will push people to invest first. Once they got the ebook, they’ll spend time trying to understand it, because they paid for it. And given the main audience for the ebook are creatives already working online, the price of the ebook (starting at 29$) is not a problem here.

If someone doesn’t understand something after reading the ebook and reach out to me, at least I know they spent time trying to understand on their own. In that case, it’s an opportunity to learn from their experience and make the ebook better for everyone.

It’s worth noting that I’m not banning other people who are willing to do the work on their own. I’m not going in the direction of: either you’ll pay me or you’ll get no information. I’ll keep publishing free content in the future as I used to do before.


The book writing is going well and I hope you’ll enjoy it once it’s finished. I started with 3 chapters in mind, but I ended up with 5 chapters and few bonus ones. There is a lot to cover, and I’ll do my best to cover it all.

The ebook will be published on March 30, 2021. If you pre-order it now, you’ll get it first in addition to the bonuses. You can pre-order the ebook from Gumroad.

Thank you!

Lockdown lesson #1: Reducing grocery waste

I’ve been working from home since 2018, so you can say I was “used to” working from home when the lockdown happened in 2020. But no, that was different. It was brutal. It sucked. And it was lonely and stressful.

We all have bad memories of that period, but I have a few good ones too. The first one is reducing my food waste. Which helped me reduce a lot of my stress.

Before the lockdown, whenever I go grocery shopping, I get back with a lot of vegetables, fruits, milk, etc. Seeing a full fridge at home was a satisfactory thing for me.

But a few days later, I usually end up throwing away the majority of it. Rotten vegetables and fruits, expired products, opened milk bottles, you name it. And whenever I throw something, I feel bad about it.

I feel bad because 1) I’m wasting resources that other people would benefit from, 2) I’m not helping the environment and just adding more waste.

That started to change during the lockdown. With fewer “travels” to the grocery store, I needed to change my behavior and better manage my groceries.

Cooking at home during the lockdown helped in that a lot. I started using most of the groceries while cooking, and finding the recipes that use the same ingredients.

A few weeks later, I started throwing empty boxes, empty bottles and finishing most of the products. It felt so good! I still feel immense joy whenever I throw an empty box.

After the lockdown finished, and restaurants were open again. I started eating less at home. But that doesn’t mean I got back to my previous “throw-away” life.

Instead, I started buying only what I need every two to three days. No more groceries for the whole week. That means fresh vegetables, fruits, meat, etc. for every meal. Which is awesome!

Having a supermarket within walking distance really helps. But I’m sure everyone can adapt this to their need and use case.

In summary, I started eating more fresh food. Throwing away less to no food. And as a bonus, I reduced my grocery bill.

Remote.ma: from a blog to a platform

It’s been two years since I started remote.ma, but I didn’t share why I started it before. So today, I’m going to share this with you. It all started when I wanted to work remotely:

The story

I applied to Automattic for three reasons:

  • I wanted to work on something with an impact. And for someone who loves writing, working on WordPress is a dream.
  • I wanted to take ownership of my tasks. I hate micro-managing.
  • I wanted to work remotely.

Few interviews and code tests later, I got the job.

Up to that point, I had no idea how I was going to do this legally, but I knew there should be a solution. I’m not the first one working remotely from Morocco right?

So I did what every millennial do: I searched for answers on Google. And to my surprise, there was nothing! I couldn’t find a single blog post, article, or forum speaking about this.

It was that time when I decided that once I figure out how to do this, I’ll write about it. And that’s how everything started.

Few meetings with an accountant, and a few weeks of preparation, I got everything sorted out. That’s when I wanted to write about it. But I only had this blog.

At first, I was going to use this blog for them, but then I thought this should be a separate blog about remote work. There is none in Morocco anyway! And this is when I started looking for domain names.

I remember I was excited when I searched for remote.ma domain and it was free. I bought it right away. I also bought make.ma the same day.

That’s it. I got the domain and I started writing.

Fast forward to now, those legal blog posts helped a lot of people. I still respond to questions about them to this day. It’s crazy how an evergreen post can still serve years after its writing.

What’s next?

I have plans for remote.ma. Yes, it started as a blog, but it shouldn’t be like that forever. I want it to be home for anyone working from home. Remote workers, freelancers, entrepreneurs… There are few of them now, but I believe we’ll see a surge shortly.

remote.ma will be a platform for training, jobs, consulting, a closed community… Some of this is already live like the job board. And others are in the work, like the closed community.

Some of this will be surely paid to support the growth, but more on that later 🙂

Is it bad practice to choose your own document ID in Firestore or a NoSQL database?

What if you’re left to choose the IDs of your documents on a NoSQL database like Firestore? Will you use a random string for your IDs, or try to use a combination of your document fields?

Let’s take books for example. A good candidate for a unique ID is the ISBN, it’s a book identifier and is supposed to be unique. Until now, using the ISBN as an ID looks promising. But what happens if you start supporting self-published (e)books? Or local books? Or old books with no ISBN? Well… things can be tough!

Whenever you use a document property, like ISBN, book title, etc… as a unique id for your document, you’ll quickly hit some edge cases down the road. This without talking about what happens if you change a property due to a typo for example? Will you go and change the ID everywhere?

All this sounds like you should never use a document property as a unique ID, and it’s true. But what should you use instead? A random string? It may sound strange, but that’s the safest option.

Using long, random strings, make IDs independent from the document itself. This will help you avoid a collision (two documents or more sharing the same ID) and you’ll not need to update the ID if you change something in the document.

How to choose unique IDs?

Well, you can choose a random ID if you want. But if you’re using Firestore, you can let it do the work for you. By default, Firestore can create strong unique IDs for your documents if you don’t force your own IDs. When creating a new document, just insert it directly to the collection of documents. This will automatically create a new ID for it:

// This is how it looks with Firestore for the Web
const res = await db.collection('books').add({
  name: 'The Book Of Good Dogs',
  country: 'Morocco',
  isbn: '123456890',
  price: 0
});

// To get the id of the document
console.log( res.id );

Other examples for other platforms can be found in the official documentation.

If you still want to generate a random ID yourself, you will need to use doc() before:

const randomId = generateSomeRandomId();
const res = await db.collection('books').doc( randomId ).set({
	name: 'The Book Of Good Dogs',
  country: 'Morocco',
  isbn: '123456890',
  price: 0
});

That’s it! Next time you’re tempted to come with a way of creating new IDs for your document, stop what you’re doing, and use random strings.

Do not miss my next post! Drop your email in the box below and get it straight to your inbox: