Author: Mohsen

  • Why I can’t get this sh*t done?

    Why I can’t get this sh*t done?

    I was talking with my therapist about why I can’t get my things done and always feel behind in my life. I started by talking about my ADHD and some of its related characteristics, like Black-and-white thinking, all-or-nothing thinking, and so on. So I was explaining myself and my feelings, which is why I have a roller-coaster feeling about productivity. Sometimes, I’m very productive, and other times, I’m very useless.
    This makes my life very frustrating. I know the reality of life; for example, there is some difference between expectations and reality. There is an expectation of other people around me, which may mean they will not experience this roller coaster and have more of this straight line in their thoughts.

    So she asked, “What is the thing that makes you feel this difference?”

    The first thing on my mind was creating an example to explain the process in my mind that will prevent me from doing stuff that I want.

    What is the difference here?

    In my observation there are two types of people, imagine there is a pail of LEGO blocks without any structure, most people will have a quick thinking about what they want then will start putting blocks without planing about what will come next in details, but for me it will start with looking at the table of blocks for a long time and planing every move (What will be the final shape that will be made? What is the steps? What will take me? What time takes for me? and lots of endless questions…) and at the end, I will have pot of thought without any real result but the other type will have a result which is can be not perfect but at least there is something.

    Illustration by @roya_hghg

    Then I remember a the story in my work, which my mindset with a Whole Picture view alongside an Actionable version mindset of my college made the project go with success because it was balanced, But also there was a project which gone only with action and failed at the end and my mindset picture and failed at the start.

    This is very hard to process, which you think about it but you can’t do it very well. For example, I know I must have both these qualities in myself to create a balance. Mosn#1 is the version who sees the whole picture and thinks about every move and overthinks it and sees all or nothing; Mosn#2 is the version who does actions and puts the first block without thinking about the very unknown. But I can’t achieve the #2 version because I don’t know how they do it and what their mindset is.

    “Actually, you know their mindset, but you are synced with #1 version, so with more experience on that, you will not get yourself chance for the #1 version” my therapist said at that moment. It was the moment which I realised oh, sh*t maybe there is the exactly my whole picture version seige the actionable version and make it impossible for me, and It’s like (You don’t know every thing about this version, you should know it more, …). So I had all tools and should try the second version by mimicking my college, and try it for a while.

    My notes on session

    And here we go, this is the first post that I decided to write in this way, and maybe it doesn’t reach my standards 🫠 but at least I did it and I know this is huge step for me.

  • Working with Figma on iPad

    Working with Figma on iPad

    If you are a designer, there are often situations in which you should change designs on the way or in travel. In these cases, always having a laptop with you is a headache, especially if you do backpacking adventures like me.

    A iPad with mouse and keyboard on a wood desk.
    iPad with mouse and keyboard

    But I often carry an iPad with me, which is lighter and more compact. Yep, as designer we don’t use only figma, there are other tools like Notion, G Suite, … which are our tools, but most of them are workable on iPad, but the story is different about Figma. So I had the idea of working with Figma on iPad and I face a lot of challenges because the formal Figma app for iPad doesn’t support editing and you can only view the files and prototypes which is sucks.

    In this note, I want to share my foundings and tell you how I solved my problem. There are multiple methods to access Figma on this device but every one of them have some flaws and advantage which will be review in the following.

    Method 1: Use Figma App

    Screenshot of Figma App on iPad

    Figma has a native application for both iOS and Android also a separate app for FigJam on iPad which has been more tailored for touch screen but the Figma app does not support file editing and you can only do:

    • Browse the files and view them
    • Comment on files and review comments
    • View and use the prototypes
    • Mirroring designed and check real-time changes

    So, If you want to do the work which is listed above, easy, to use the app on your iPad and FigJam app on iPad is awesome and I use it very frequently, However, most of us need to edit files but there is no option to edit Figma files on this method.

    Method 2: Use a browser to use Figma

    Screenshot of Figma web application on iPad Safari

    Since Figma is web-based, you can access it through any browser on your iPad, allowing you to edit files. However, installing and using custom fonts is near impossible for the web on an iPad.

    On newer iPads, running iPadOS, you can install custom fonts using tools like iFont or through the built-in settings (Settings -> General -> Fonts). But even after installing fonts, browsers like Safari or Chrome can’t access them, and the Figma web app won’t list them. Figma only supports Google Fonts and a few other popular fonts by default. If you’re using Figma’s Organization plan, you can import custom fonts organization-wide, which might solve this issue.

    Screenshot of text setting and fonts list on Figma

    If your design files only use Google Fonts, this method works fine. But if your files rely on custom fonts, you won’t be able to edit text or text-related elements. You can still move objects and perform other tasks, but text editing will be off-limits.

    Method 3: Use Figurative Software

    A third-party app called Figurative offers a solution to the limitations of the official Figma app. It’s a free app for iPad that allows you to install custom fonts and provides better support for Apple Pencil, keyboard, and mouse interactions.

    Screenshot from https://figurative.design
    Source: https://figurative.design

    How to use it?

    After downloading and opening Figurative, you’ll need to log in to your Figma account. Then, click on more options (…) at the top-right corner to access the menu, which includes a basic guide on using Figurative. To install custom fonts, you’ll need to download an additional app called Fontcase. Follow the steps in Fontcase to install the necessary font profiles, and you’ll be able to edit text with custom fonts in your Figma files.

    Conclusion

    I use Figurative (Method 3) to edit Figma files on my iPad, but it’s important to remember that the iPad has limited resources, and iOS’s resource management can cause issues when editing large files or publishing them. You might run into RAM-related problems. For this reason, I don’t recommend using an iPad as your primary design tool, but as a backup device, it can be extremely handy.

  • Google Signal Broke GA4 Server Measurement Protocol 👀!!!

    Google Signal Broke GA4 Server Measurement Protocol 👀!!!

    We use Google Analytics 4 (GA4) for user tracking and send certain user events through the GA4 Measurement Protocol using HTTP requests from our servers. However, we suddenly stopped receiving any events for a while. After investigating, we discovered that Google Signals was the cause. BUT HOW?

    Yeah, that was exactly my reaction. Let’s dive into how this happened and why.

    What was the problem?

    First, let me explain how the GA4 Measurement Protocol works. When you set up a data stream in GA4, you can activate an option in the stream settings that provides you with an API secret key. This key allows you to send custom events to GA4 via HTTP requests.

    We used an HTTP request like the one below, which triggered an event in GA4, just as you would send events using Tag Manager or other methods (more info here). You can also create sample requests with this GA Event Builder tool.

    curl --location 'https://www.google-analytics.com/mp/collect?measurement_id=G-xxxx&api_secret=xxxx' \
    --header 'Content-Type: application/json' \
    --data '{
      "client_id": "OUR_CUSTOM_UUID_FOR_OUR_USERS",
      "user_id": "OUR_CUSTOM_UUID_FOR_OUR_USERS,
    
      "non_personalized_ads": false,
      "events": [
        {
          "name": "OUR_EVENT_NAME",
          "params": {
            "PARAMETERS_1": "VALUE",
            "PARAMETERS_2": "VALUE"
          }
        }
      ]
    }'

    Suddenly, we noticed that events for that specific name were no longer being recorded. This was a very strange issue.

    Screen shot of Event Drop in GA4

    We began investigating, initially thinking that something in our backend code had changed, but there were no modifications. Frustrated, I searched online but found no relevant information. However, I thought that something might have changed in the analytics setup. I checked the GA4 Property Change History (Admin → Property → Property Change History), and found that on the exact date when the events stopped, Google Signals was activated by one of our team members (it’s inactive by default).

    Screen shot of Google Analytics property change history related to Google Signal

    How to solve it?

    At first, I thought that simply disabling Google Signals would solve the problem. But after disabling it, the issue persisted. I began to dig deeper and found threads like this one, but they were not helpful for our specific case.

    I revisited the change history and noticed something important: once you deactivate Google Signals, some settings do not revert. Specifically, the “User-provided-data collection for User-ID” remains active. This change, as seen below, cannot be undone.

    Screen shot showing change details for user id setting

    This was a new lead. After further research, I discovered that the “user_id” and “client_id” parameters in our event calls were causing the issue. Let me explain.

    According to Google documentation for User-ID and Event Payload also this article “Unveil GA4 user insights: User ID, Client ID, and Google signals compared” from LOADER, I understand which because Google Signal is more focused on privacy and can work between a variety of Google Ads tools it’s required to generate its own created user-id to can track better.

    According to Google’s documentation on User-ID and Event Payload, as well as this article from Louder, Google Signals prioritizes privacy. It can work across various Google Ads tools and requires its own generated user ID to track users effectively.

    Final Solution

    To resolve this issue, we updated our HTTP request for event calls by removing the “user_id” parameter, allowing GA4 to generate it automatically. We also sent our custom customer ID through user properties in the event payload, as shown below:

    curl --location 'https: //www.google-analytics.com/mp/collect?measurement_id=G-xxxx&api_secret=xxxx' \
    --header 'Content-Type: application/json' \
    --data '{
      "client_id": "OUR_CUSTOM_UUID_FOR_OUR_USERS",
    
      "non_personalized_ads": false,
      "user_properties": {
        "domestic_user_id": {
          "value": "OUR_CUSTOM_UUID_FOR_OUR_USERS"
        }
      },
      "events": [
        {
          "name": "OUR_EVENT_NAME",
          "params": {
            "PARAMETERS_1": "VALUE",
            "PARAMETERS_2": "VALUE",
          }
        }
      ]
    }'

    Hooray! 🎉 Our event records started flowing again.