Git Reset Lifeline

Whoops! I got myself into a Git pickle yesterday. I was trying to pull some updates from upstream into my feature branch, a normal part of my workflow. But before I knew it, things spiralled out of control. Merges going every which way, commits piling up, extra branches multiplying like rabbits. After 7 or 8 hours of working time, I somehow ended up with 5 extraneous branches! 😅

Anyway, I decided to take a beat, have some chamomile tea, and turn this Git debacle into a teaching moment. Because if it happened to me, it can happen to you! So here’s the scoop on how to hit the reset button on a branch when things go awry.

Hitting the Git Reset Button: A Chill Tutorial

Say you want to revert a branch back to a previous state. The easiest way is to do a hard reset. Just make sure you know what commit you want to revert to first! Here’s how:

  1. Check out the troubled branch:
git checkout branch-backup
  1. Reset it to the desired commit to erase all changes after that point. Sayonara, buggy code!
git checkout main
git reset --hard branch-backup
  1. If you already pushed the branch, you’ve got to force push the changes:
git push origin main --force

And you’re done! Branch restored to commit bliss.

Just be cautious with that last step—it rewrites history, so use sparingly. And you may need to give your teammates a heads up.

Now I’m off to relax after my Git escapade with some more calming tea and a peanut butter toast.


Racing Against the Machine

The pace of new technology seems to get faster every year. In my job doing automation engineering, I’ve seen how once all the parts of a system are ready, progress can explode exponentially. I’m worried as AI and agent swarms get closer to generalized intelligence, they will quickly make many jobs and skills obsolete – including my own.

Just last week, I was telling my parents I’m concerned I may not have unique skills to offer anymore. Right now, connecting all the pieces of AI into a fully autonomous system is still complicated. But not for long. When those last key elements like agent coordination arrive, everything will work together and we’ll see sudden rapid advancement.

I’m not sure if most people are ready for this pace of change. I’m not even sure if I’m ready myself.

Multiple exponential technologies will boost each other, speeding things up even more. There may come an abrupt point where progress becomes so fast it’s hard to control and uses enormous resources.

I worry about new graduates entering a job market changed by AI. But I also know we humans don’t understand exponential change well. The future may look very different than we expect.

For now, I’m reassured that building AGI is like making an engine – it needs all parts to work seamlessly together. We still lack some essential pieces.

For now.

But once that last piece clicks into place, the engine of AI will roar to life and race ahead faster than we can foresee today. My goal is to enjoy the ride, and adapt my skills to stay ahead of the tech changes as long as I can.


From Coding to Customer Focus

Juggling between a development role and product management can be challenging. I have seen many developers make the transition to become product managers over the years. However, it’s important to understand that project management and product management are very different disciplines.

As a project manager, you’re focused on delivering defined requirements and managing scope, schedule, and resources. But product management is all about understanding customer needs, defining strategy, and delivering value. The mindsets are almost opposites.

When I first started spending part of my time on product management responsibilities, I really struggled with the differences. I often fell back into thinking like a software engineer focused on technical solutions. I had to go through an unlearning and relearning process:

Unlearn:

  • Viewing requirements primarily through a technical lens. I was used to focusing on elegant architectural solutions rather than customer needs.
  • Jumping to technical architecture without gathering actual user needs. I had to stop assuming I knew what users wanted.
  • Getting excited about new technologies that didn’t offer clear value to customers. I had to shift my mindset to prioritize customer ROI over tech for tech’s sake.

Relearn:

  • Looking at requirements from the customer’s perspective first. I needed empathy to understand what users really needed.
  • Communicating with customers to gather requirements that address real problems or desires. This knowledge was powerful in defining valuable products.
  • Driving products forward based on functionality and experience, not technical implementation. I focused on the “what” first, then the “how.”
  • Considering how every product decision could improve value to the customer and business. I learned to think bigger picture about product strategy.
  • Influencing without formal authority by storytelling and selling vision. Technical excellence was no longer enough.

The unlearning and relearning were challenging but ultimately helped me evolve into a much more well-rounded product manager.

For example, I initially got excited about using new bleeding-edge frameworks and technology, even if they didn’t align with our user needs. I had to train myself to always link back to concrete value for customers, rather than just what was innovative. This meant developing skills like user empathy, storytelling, and selling vision – very different from my past specialized technical work.

The transition was especially tricky because I was still embedded in the same development team. If I could do it over again, I would try to switch products or join a different company when making the shift. Getting outside of my existing engineer mindset would have been easier.

Overall, moving from development to product management required me to fundamentally change how I thought about requirements and prioritization. I had to learn to put customer’s perspective first, and then think about technical implementation. It was a challenging but rewarding shift that made me a much more well-rounded contributor over time.

A dwarf miner sitting at stone craved desk @SomberSaurus


Embracing imperfection

Today is a little special and emotional for me.

It has been eight years since I started my spiritual journey, devoted to zen life and culture, with the intent of sharing “wabi-sabi” or “the beauty of life” in its natural form.

A long time ago, I was the Firdaus who are complaining a lot. I hate the fact that living has so many limitations and imperfections. The imperfection of life is something that upsets me and didn’t like it at all.

— why do we need to sleep? Why do we feel not enough? Why do we have to be born and die? Why do I get treatment such and such? Why do we need to work? I ask many questions, until one day I hit a very rock bottom and realized that I was living life on auto-pilot.

It was people around me — my father, my mother, my good friends who made me realize that I needed to accept the fact and focus on learning how to embrace it, instead of trying to fight against it. I was so frustrated with everything around me, that I didn’t know how to love.

— I learned to love. Why, some of you may ask? Because I had to learn to appreciate what is given to me in this life.

That was the time I fully accept myself as a human. Human is not perfect and never has been. Then I found out life is something that should be lived as it is. Life should be appreciated as it is.

That is what makes us human. and also that’s the beauty of becoming a human.

There’s time that we feel ready to conquer the world. There are also times we feel sorrow. We have ups and downs, but that is natural. We have to trust ourselves that we’ll be ready for the next challenge, or for the u-turn of life. We are all imperfect, but it is what makes us human.

— did you say? … or did you say that I should fight against the imperfection of life? … I don’t think so. I think we should accept it. Zero perfection, zero infinity.

That’s humbled me. To embrace imperfection is to see with new eyes. It is to appreciate the “red thread” that connects all things and people around you, in a web of spirals.

So, I started to observe my shortcomings and imperfections with the same admiration as the beauty of nature. This is where I learnt about the concept of embracing imperfection. This concept has bred empathy.

Wall decoration of York Minster. York, England (Jul 2018)

I’ve seen greed, jealousy, bad faith, revenge and much more.

It consumes us. It counteracts us to pessimism. But it is very difficult to let it go. I have learnt that with empathy we can let go of it with a less painful experience. When we feel the pain, but also the understanding of our betrayal or pain, that feeling can be less harsh and juster.

This has helped me to progress in life. Tremendously.

Embracing imperfection is humbling. It’s understanding that we are all the same and it’s what makes us human. It’s finding the beauty in your experiences, good and bad.

It’s seeing beauty in our experiences, good and bad. It’s understanding that life is a paradox, a moving reflection of nature.

Wabi-Sabi.

It is a simple idea that appreciates imperfection, naturalness and impermanence. It is the idea that sees life as it is, not as what we want it to be. Wabi-sabi is an ancient aesthetic philosophy rooted in Zen Buddhism. The Japanese philosophy celebrates beauty in what’s natural, flaws and all.

I feel this beautiful belief can be used in many ways for many purposes.

I have been witnessing the pasts, the progress of our world and my own personal growth — both as a person and as an entrepreneur — thanks to the unique perspective of “wabi-sabi” — an aesthetic design perspective.

With all the experiences, I came to consider how much I love this concept. It’s something simple, but it’s amazing how much it has grown in me over the years.

In our culture, “simplicity” often codes for a life that’s organized or for spare, boutique perfection.

— We confuse it with virtue, simplicity with happiness. The reality is that life’s messy. It’s not simple.

Lambanana. Albert Dock, Liverpool (Jul 2017).

But what could be more radically simple than acceptance of rust and imperfection? I embrace the beauty in that that is perfectly imperfect, and I can embrace the fingerprints, scars, and lines of my life, too.

I find the idea of abandoning “perfect” and even “be good enough” irresistibly tempting.

I may not be the brightest, but I can let go of the best and most extraordinary to seek pleasure in the quotidian, let alone the simple.

Wabi-Sabi is a philosophy I accept wholeheartedly, and the further I celebrate it, the more it inspires me of freedom. I embrace wabi-sabi with its own elements of nature, aesthetics, and spirituality. All are linked in the universe. All are linked to each other.

— Wabi means things that are new and unprocessed. It evokes feelings of peace and tranquilly, as well as rustic charm. It encompasses both naturally occurring and artificially created objects.

— Sabi is a Japanese word that refers to an object’s beauty that comes with age. The patina of the object and its impermanence are both evident in its appearance.

I am a Wabi, not perfect, and that’s what I want for my life. I want to live in a world that’s imperfect, but full of beauty, and not just in its imperfections.

Kintsugi. Photo by Wikimedia Commons (CC BY-SA 4.0)

I believe that being imperfect is a gift. Wabi-Sabi is not just a belief or an idea. It is a way of life: to embrace imperfection. To embrace imperfection is to see with new eyes and to appreciate what we never noticed before. I hope to live a life of simplicity, not perfection, and to embrace the imperfections of life, even if they are my own.

I am so grateful for all the people who have approached me to share their thoughts and opinions. They have taught me so much about myself and how I was perceiving my environment — art, design, people… it is such a privilege to be able to talk about this with someone else.


Deliberate practice is powerful

https://xkcd.com/189/

For anyone who aspires to learn something new, deliberate practice is essential. It is also a key component of success in life. Most people think of deliberate practice as being synonymous with hard work. In fact, there is much more to it than that. Deliberate practice is a way of thinking. It is a mindset. It is a method of learning.

Why am I telling you this? It means that if you want to become better at anything, you need to put in the hours. If you want to become a better writer, you need to write every day. If you want to get better at playing the guitar, you need to practice every day.

According to Gladwell, you need 10,000 hours of deliberate practice to become world-class in any field. It takes 417 days’ worth of hours, or 3 hours a day, for 3,333 days. That is equivalent to over 5 years of a full-time job! If that’s the case, no one has the time to invest in learning, isn’t it?

But there’s a problem. Most people don’t have the time to dedicate to practising. They’re too busy working, spending time with friends, watching TV, etc. However, they achieved greatness by doing less than they are capable of achieving. You can’t be mediocre and expect to achieve great things.

So how do you fit in the necessary hours of practice into your life? Allow me to break down the benefit of deliberate practice.

Deliberate practice does not feel like work. It feels like play. Some say it is a state of the Flow. You might even say it is self-imposed fun. Michael Jordan said: “I’ve missed more than 9000 shots in my career. I’ve lost almost 300 games. 26 times, I’ve been trusted to take the game winning shot and missed. I’ve failed over and over and over again in my life. And that is why I succeed.”

Deliberate practice is more about quality than quantity. It is about strengthening your weaknesses rather than improving what you are already good at. It is about constantly pushing yourself to do better. It means that you are constantly facing challenges that are just out of your reach.

Deliberate practice is more about repetition than it is about hard work. I have heard that one should practise a little bit every day, rather than spending hours at a time once a week. The key here is to not overdo it but to do just enough to build up your skill.

In all the research I have done on deliberate practice, I have been led to a few conclusions;

  • Go small — Break down large tasks into small ones that you can accomplish easily.
  • Don’t procrastinate — Do it now instead of later.
  • Avoid distractions — Turn off the TV, disable the Internet, silence the phone, etc.
  • Get feedback — Know what you’re doing right and wrong.
  • Keep it simple — Don’t complicate the above.
  • Set achievable goals — You can’t accomplish everything at once.
  • Keep a daily practice routine — Go through the whole process every day to see your progress and improve it further.

Josh Kaufman mentioned that it only takes 20 hours for rapid skill acquisition and pick up new skills as fast as humanly possible. You can go from knowing absolutely nothing to becoming proficient in 20 hours. It won’t make you an expert, but surely it can help you to improve specific things that you want to be better at.

What about reading? You can read more if you have dedicated time for it, say 20 minutes every day. Or during your lunch hour. Deliberate practice can also be applied to many other things like exercise, writing, drawing, playing the guitar, lifting weights, speaking in public or anything that you want to learn or become better at.

Is it possible to learn anything in 20 hours? While the learning curve for different skills differs tremendously, Kauffman found that most skills can be acquired, at least at a basic level, within just 20 hours. In order to develop basic proficiency in any new skill, only 20 hours of deliberate, focused practise are necessary.

Photo by Olya Kobruseva from Pexels

The author of the 4-Hour Work Week, Tim Ferriss, has developed a system to learn any skill in the shortest amount of time possible. He has successfully used it to master cooking, language acquisition, tango dancing, martial arts, and a wide variety of other skills. The DSSS method works for nearly any subject. Almost anything can be learned with it, from language to math to coding. The key is determining which 20% of the skill will deliver the greatest bang for your buck.

In essence, deliberate practice is about staying focused. It is about doing one thing at a time and getting it done. It is not about avoiding distractions and unpleasantness. Plenty of tips and tricks exist that will help you do this.

One thing to remember about learning new skills is that you will change and grow as a person. When you work hard to learn anything, including a new skill, you will find yourself changing and growing as a person. You’ll become more confident and self-aware as well as more capable in general.


Technology should serve people, not the other way around

This essay is a repost from a Medium story.

I’ve known computers since I was about 5 or 6. It was the year 1995. My father’s workplace was the only place I could see computers at the time. Paperboy, Prince of Persia, and Oregon Trail were among the MS-DOS games he introduced me to. But it wasn’t the games or interactive graphics that drew me in, but rather the machine itself. I recall being enthralled by Windows. I’m fascinated by how it looked, how it worked, and the simple yet effective applications it contained. In 1998, we finally got our own computer with a dial-up internet connection.

For me, the computer was my only means of self-expression. With text, images, and sounds, I could create whatever I wanted. With audio files like .mp3 and .wav, as well as video files like Quicktime and Windows Media, I could listen to whatever music I wanted. mIRC was the only way I could communicate with people from all over the world. Even if they were in another country, I was able to share my thoughts and opinions with them. I didn’t have many friends in school back then because I preferred interacting with the keyboard.

The internet and technology have become obsessions for us. PCs, mobile phones, laptops, and smart devices have exploded in popularity over the last two or three decades. From the classroom to the bedroom, the internet had spread. We spend the majority of our time in front of a computer or on a mobile device. The majority of people spend far more time in front of a screen than they do outdoors.

True, technology is altering our lifestyles, but it also requires us to alter our lifestyles. It’s exhausting to be told that technology is working for us, not against us, all of the time. It’s all too easy to fall into this mindset and fail to recognise that it’s illogical.

We worship technology so much that we sometimes lose sight of its purpose. What can technology help me with? Is it possible for it to assist me in expressing myself more effectively? Is it capable of assisting me in interacting with people I have never met before anywhere in the world? Is it possible for technology to manipulate, control, and shape people’s lives? Yes, that is correct.

We are the product in the economy of attention. We are the resource that technology is consuming. By using technology such as the internet, we are giving up our privacy and freedom. Technology is working for us rather than against us. With each passing year, it gains more and more control over our lives, but we are completely unaware of it.

We are distracted from what we are doing right now by notifications, apps, and alerts on our mobile devices and computers. These are meant to draw our attention away from the rest of the world. Our focus is broken down into very small chunks. On our mobile devices and computers, we divide our attention between various notifications, apps, and alerts, or even multiples of each. Finally, being online has become an obsession for us. We just can’t seem to stop ourselves. We now try to avoid interacting with people in real life as much as possible.

And we don’t realise how much of our attention and technology we give away until we lose something. One of the most prominent examples is social media. We quickly share the most memorable events in our lives with others. That is, after all, what it is supposed to be. Some people, on the other hand, only share their happiest moments online in order to make others believe they are doing well.

We should not be defined by technology, but rather by how we use it and what we can accomplish with it. To put it another way, technology must be centred on humans rather than the other way around.

Allow yourself to be free.

Photo by Julian Jagtenberg from Pexels

The power of Now

Time is a powerful thing. We all have it, and not enough of it. It is precious. The best moments happen in the Now, because when we’re in Now, we’re truly living our lives to the fullest.

Not every day do we feel motivated or “feel it”. The trick is to just spends 5 minutes on it. Let’s have a scratch or two on it. That 5 minutes is all we need. Loosen up all the expectations.

Usually, that 5 minutes will be 10 or 15 minutes. Just let that sink in.

Later that you know, you are one hour clock in.

You just accomplished one task.

I’m not saying we should never work on projects or learn, but we should let projects and learning go when we feel it. That way, we will only feel the emotion of joy and passion when we’re in the Now.

The more we give attention to Now, the more we can be happy and appreciate it every time we remember it, even if only for 5 minutes.

Here you go, that’s my five minutes post.


Separation of Concerns

The separation of concern refers to the division of tasks within a broader function or responsibility to separate different functions. The process is often used in management and business, where it allows for specialization of functions according to their area of expertise.

In software engineering, software modules whose functionality have been separated into concerns should be design-time interchangeable. A module that is designed with concerns in mind is also said to be modularised. The idea of separation of concern is particularly relevant in object-oriented programming, where the concerns are often the same class.

The same can be said for complex enterprise applications building blocks. Separating the various concerns into different systems or layers simplifies code navigation and maintenance. When changes are implemented, the effects and regressions on other areas are minimised, and a healthier and more adaptable programme emerges.

Let’s visit how the same philosophy can be applied in business.

Decentralisation of control

In business, decentralisation of control refers to the distribution of decision-making power away from one central authority. Decentralisation can have positive and negative effects. It can be used to foster creativity and innovation, but it can also lead to infighting, inefficiency, slow decision-making, inconsistent policies, and poor-quality decisions.

In the context of software engineering, decentralization of control can be applied in two ways:

  1. In a module-based architecture, a module specifies a set of concerns and the way they interact. If a module provides a good abstraction and has its internal implementation sufficiently separate from the next module, then it can be exchanged for another module, and the internal implementation can be changed wholesale without affecting any external behaviours.
  2. In a layered architecture, the lower level layers implement the bare minimum to support all the higher-level layers. Ideally, the lower level does not need to be concerned about higher-level functionality. It can be designed independently of them and independently evolve over time.

Decoupling

Decoupling is the ability of two parts that are connected or related to function independently from each other. A good example of decoupling is putting a car engine in a boat to make it faster. Decoupling can be used without damaging the system itself.

In OOP, decoupling is often considered cohesiveness. High cohesion occurs when the elements of a module are well related to each other. Low cohesion means that the elements are not closely related to each other.


The philosophy behind this concept for the business is that by keeping functional areas, such as accounting and management, separate and independent from each other, the enterprise can function more efficiently. The same principle applies to software development for modularity and reusability.

This disconnection is intended to prevent repetition and redundancy. So that the segment or section can perform the best. It same philosophy behind microservice architecture. By avoiding functions duplication, any errors found will only need to be fixed once. Changes to one area of code will not have unintended effects on other areas of the programme.

One way separation of concerns or decentralization of control be implemented is by having a different leader for different areas, and having one leader who overlaps the other leaders.

How the SOC benefits the design business

The separation of concerns helps to keep the department clean, accessible and highly reusable. The modularity in business is designed into different areas so that it can be easily modified and changed to cope with business changes. Modular operation is structured, well structured and easily navigate. There is a positive effect in communication and coordination between different business departments through this strategy.

The benefit of modularity is the separation of concerns, which involves different concepts such as abstraction, coupling and cohesion. We can view the department as like code and classes in a program. Divide and conquer, decentralization or whatever we may call it, has a positive impact on conducting an independent operation.

Like software engineering, it helps with the reuse of different parts without having to write tedious procedures for each part, save time and effort when it comes to diagnostic. It also provides a simple method for building blocks, allowing the system to be re-used in different projects with minimal effort. The separation of concerns also aids in continuous integration and feedback, both of which are critical when developing the business.


Frugality

Frugality is a virtue that involves moderation in the use of money, materials, time and energy. Although there are many definitions of frugality, the definition by Merriam-Webster defines it as “the quality or state of being frugal”.

One benefit that business has by maintaining frugality is its ability to maintain high standards while keeping an eye on expenses. An organization can also become more competitive if they are able to keep their costs low. Finally, an organization that maintains frugal practices is more likely to maintain innovative practices.

In startups, there are several positives to frugality. Startups must be able to control their expenses to survive, so they should take advantage of any opportunity that can save them money. A startup may also save money by using less energy by using solar energy or even saving electricity. Finally, there is the issue of not eating out as much as one might do in a larger company because it saves money.

Get rid of the office if you have to. If you can’t, at least have it be more for the show for the outside world. Make sure people are taking advantage of all of your facilities.

Frugality comes with many disadvantages for startups because there are risks involved with cutting corners. Being cheap is good, but never compromise with quality.

An organization can become more competitive if they are able to keep their costs low. In addition, an organization that maintains frugal practices is more likely to maintain innovative practices.

Check where the top 3 resources are and expenses go to. Technology is an important resource in startups. The same frugality rules apply to technology as the other resources stated above. The main purpose of obtaining technology for a startup is to save money and time.

Finally, in today’s highly competitive market, startups must be able to demonstrate monetization in order to attract investors. One way to demonstrate that they are profitable is to avoid paying for unnecessary services. If a startup does not have any employees, for example, there are numerous free software tools available. Keep it, however, if the tools can double productivity and output.

The difference between startups and normal companies is their struggle to survive. To prevent this the startup should be strict with expenses and make sure people make money in order for them to survive.

Startups should be frugal to stay competitive, but they need to have a budget for particular areas where they will have to spend their money. The budget can help speed up certain processes and allows startups to focus on what is most important.


Graph-powered BI

The first generation of business intelligence tools focused on reporting and OLAP cubes, which organised and analysed historical financial, sales, and manufacturing data. Despite being extremely useful, it only provides a backwards view of the world.

Second-generation business intelligence was all about real-time, allowing executives to view timely data while quickly adjusting and interacting with such views. This is where we are now, gradually.

Third-generation business intelligence, rather than just historical enterprise data, will generate data and analytics for decision-making based on the qualitative (real) world, such as finance sentiment, economics, and social information such as what key leaders have said in the past and present. It would be fantastic if we could link this data.

The next generation of BI will most likely have integration of these two components;

  • Enrichment – the ability to contextualise internal business data by enriching it with external “intelligence”;
  • Correlation – identifies relationships between internal and external data/logs.

A knowledge graph is a database that contains information about people, places, things, and events. It’s similar to a map that shows how things are related to one another. It facilitates us in comprehending the relationships between various entities in the real world. It can be used to power applications like dashboards, reports, and scorecards in business analytics.

The goal is to comprehend the world around us in a broader and more interconnected manner.