Writing on programming, what I've done and what I'm doing

All of my long-form thoughts on programming, design patterns, and more, collected in chronological order.

🚀 Backend in Vercel

ဒါကကျွန်တော် Vercel ပေါ်မှာ Deploy ထားတဲ့ Backend Application တွေဖြစ်ပါတယ်။ ဒီကတော်တော်များများက Serverless Configuration မချတတ်တာကြောင့်သိပ်ပြီးတော့ Vercel ပေါ်မတင်တတ်ကြပါဘူး။

Leveraging RabbitMQ and Kafka for Efficient Saga and Pub-Sub Integration

Sagas and pub-sub are two important patterns in distributed systems. Sagas allow for complex transactions to be coordinated across multiple services, while pub-sub provides a way to decouple services and communicate asynchronously. RabbitMQ and Kafka are two popular messaging systems that can be used to implement sagas and pub-sub. However, each system has its own strengths and weaknesses.

Sync Microservices System Design in Nustshell

When I first learned about the system we had to implement, it appeared deceptively simple and concise. However, the reality was far from straightforward. The organization's diverse branches had their databases, and this forced us to reconsider how we would approach the design and development of the system.

Research and Develop Thinking for UI/UX

UX တွေကို R&D များများလုပ်ခိုင်းဖို့လိုပါတယ်။

Avoid DDD to overwrap Laravel App

Laravel လို Structured ရှိပြီးသား Framework တွေမှာ DDD Apply ရတာနည်းနည်း Handy ဖြစ်တယ်။ Namespace သပ်သပ်ခွဲထုတ်တာထက်၊ Domain တွေက Application Layer Level ဖြစ်တာကြောင့် App Directory အောက်မှာဝင်ရေးတာပိုအဆင်ပြေတယ်။

Plug and Play in Microservices

Mail Notification တွေကို Service ခွဲထားတာက Application တစ်ခုတည်းမှာနှစ်ခုလုပ်ခိုင်းတာထက်ပိုပြီး Effective ဖြစ်တယ်။ Mail ချည်းသက်သက် Scale Out လို့ရတယ်။

Laravel Folio and Volt (Alpha Stage Review)

Laravel နဲ့ Inertia ကိုသုံးရတဲ့ Vibe ထက် Livewire သုံးရတာသဘောပိုကျတယ်။ Inertia သုံးတဲ့အခါမှာ React or Vue ရတဲ့ Laravel သမားတွေအတွက်အဆင်ပြေတယ်ခံစားရပေမဲ့ PHP နဲ့ JavaScript Prop Passing လုပ်ရတဲ့ Feel က Messy ဖြစ်တယ်လို့ခံစားရတယ်။ ဒါပေမဲ့ Frontend Routing ကိုသေချာမရတဲ့သူတွေအတွက် Inertia က Full stack ရေးလို့ကောင်းတယ်။

State Management in Micro Frontend

Micro Frontend မှာ State ထိန်းရတာခက်တယ်ဆိုတယ်ဆိုတာက Single Global Store ဆိုပြီးတွေးတဲ့ Mindset ကိုဖျောက်ဖို့လိုအပ်တယ်။ အဲ့တာက Everything is AWS ဆိုပြီးတွေးသလိုမျိုးပဲ။ Google Cloud, Azure ဒီကောင်တွေကိုမေ့ထားသလိုပေါ့။

Bounded Context in Microservices

Micro Service မှာက Service တွေရဲ့ Context ကို‌ သေချာနားလည်ထားဖို့ကတကယ်အရေးကြီးတယ်။ မိုးပျံလန်နေအောင်လို့ရေးထားလို့ Context လွဲနေရင်မှန်တယ်လို့ပြောလို့မရဘူး။

Micro Frontend with React

Enterprise Level React Application တွေက Modular Monolithic မဟုတ်ရင်၊ Micro Frontend ဖြစ်သင့်တယ်။ Interactive ဖြစ်တဲ့ State တွေက Server Side ပေါ်မှာတင်ထားသင့်တယ်။ SSC လိုမျိုး။ Modular Monolithic ဖြစ်တဲ့အခါမှာလည်း FDD ကိုသုံးသင့်တယ်လို့ယူဆတယ်။

Unleash the Power of Neovim Configuration with Confidence

Imagine a world where your text editor not only empowers you to write code flawlessly but also ignites a spark of creativity every time you use it. Picture a tool that embodies the wisdom of Uncle Bob himself – a tool that champions simplicity, efficiency, and fearlessness in the face of complex codebases. This is the journey I embarked upon in November 2022, resulting in a paradigm-shifting development: the FearlessNVim Config Framework.

Leveling Up: Navigating the Junior to Senior Software Engineering Journey in Lara Camp Conference

လာမယ့် Lara Camp Conference မှာ DDD with Laravel ပြောဖို့အစကတွေးထားပေမဲ့ ခုက Field ထဲမှာ Junior Level မှာ Stuck နေတဲ့သူတွေအတွက်ကော၊ Mid Senior တွေအတွက် Level Up ဖို့အတွက် “Leveling Up: Navigating the Junior to Senior Software Engineering Journey” Topic ကိုပြောဖို့ ရှိပါတယ်။

How to read Software Engineering Books?

စာအုပ်ဘယ်လိုဖတ်မလဲပေါ့။ Technical စာအုပ်ဖတ်တဲ့အခါမှာဘယ်ကနေစဖတ်ရမလဲဆိုတာကိုသိဖို့လိုပါတယ်။ ကိုယ်ကအခုဘာသိချင်တာလဲပေါ့။ ဘာလို့ဒီစာအုပ်ကိုဖတ်မှာလဲ။ ဒီစာအုပ်ရဲ့ Domain ဖြစ်တဲ့ Result ကကိုယ့်ရဲ့ Needs ကိုဖြေရှင်းပေးနိုင်လားပေါ့။

Paradigm Shift in Software Engineering

ဘာလို့ Developer တွေက Language တစ်ခုထဲမှာ Stuck နေတာလဲဆိုရင် Willing To Learn မဖြစ်ကြလို့ချည်းပဲပြောရင်လည်းမှားတယ်လို့ပြောလို့ရသလို Paradigm Shift လို့ခေါ်တဲ့‌ တွေးခေါ်နည်းပုံစံ အသစ်ကိုလိုက်မပြောင်းနိုင်ကြလို့လည်းပါတယ်လို့ပြောလို့ရတယ်။

The Four Pillars of Object Oriented Programming

SOLID ကိုစမလေ့လာခင် Abstraction, Encapsulation, Inheritance, Polymorphism ဆိုတဲ့ Object Oriented ရဲ့ ထောက်တိုင်တွေကိုအရင်သိထားဖို့လိုပါတယ်။ Four Pillars လို့‌ ခေါ်ပါတယ်။

Architectural Problems in Nutshell

Problem ကိုဘယ်လို Solve ရမလဲပေါ့။ SWE တွေဖြစ်တာကြောင့် Code ရေးပြီး Solve မှာပေါ့။ ရှင်းပါပြီတဲ့။ ဒီ Solution ဟာ Reliable ဖြစ်ရဲ့လား။ နောက်တစ်ယောက်ကို Handover လုပ်တဲ့အခါမှာအဆင်ပြေရဲ့လား။ ဘယ်သူကမှ ဘာမှန်းမသိတဲ့ Code တွေကိုမရေးချင်သလိုဖတ်လည်းမဖတ်ချင်ကြပါဘူး။ Reliable ဖြစ်လား၊ မဖြစ်လားဆိုတာက တာဝန်ယူမှု၊ တာဝန်ခံမှု နဲ့တိုက်ရိုက်အချိုးကျတယ်။ ခုပြဿနာကိုလောလောဆယ်ရှင်းသွားပေမဲ့နောက်နေ့ကြတော့ဒီကောင်ကကန့်လန့်ကြီးခံနေတယ်ဆိုရင် Architectural Problem ဖြစ်နေပါပြီ။

DDD and CQRS

Domains Driven ဆိုတာက Modeling Technique လို့ပြောလို့ရတယ်။ Data တွေကိုဘယ်လို Modeling လုပ်မလဲပေါ့။ DDD ကိုသုံးတဲ့အခါမှာ Bounded Contexts တွေကိုသိဖို့လိုတယ်။ Sub Domain တွေပေါ့ သူတို့က။ ဆိုပါစို့ E Commerce Website တစ်ခုလုပ်တယ်ဆိုရင် သူက Problem ဖြစ်တယ်။ ပြဿနာဆိုတာက DDD မှာ Business Domain ပဲဖြစ်တယ်။ ဒီတော့ဒီပြဿနာကိုဘယ်လိုရှင်းမလဲ။

Generalist over Specialist

Language/Framework တစ်ခုထဲရရင်ဖြစ်သလားပေါ့။။ မရပါဘူး။ ရပ်တည်ရခက်တယ်။ Imposter Syndrome ဝင်ဖို့လည်းလွယ်တယ်။ Right Problem ကို Right Tool နဲ့ Resolve လုပ်နိုင်ဖို့ကြိုးစားဖို့လိုအပ်တယ်။ PHP ရတဲ့သူဆိုရင် ငါတို့ PHP မှာ Laravel ရှိနေသားပဲဆိုပြီးတော့တခြား Curated ဖြစ်တဲ့ Slim လို၊ Symfony လိုကောင်တွေမကြည့်ချင်တော့ဘူး။ ကြည့်ဖို့မတတ်နိုင်တာလဲပါတယ်။ ဘာကြောင့်ဆိုရင် Language ကိုသေချာဂဃဏနမတတ်ကြလို့ပဲ။

How to pick a career in the Web Development

Web Development Field ထဲမှာဘယ် Career ကိုရွေးမလဲပေါ့။ Web Development ထဲမှာ Frontend, Backend, Full stack ဆိုပြီးအကြမ်းအားဖြင့်သုံးမျိုးခွဲနိုင်တယ်။ ဒီအထဲမှဆက်စပ်တဲ့ကောင်တွေလည်းရှိတယ်။ သူတို့ကို Web Development ထဲက Career အဖြစ်ထည့်လို့ရတယ်။ UI/UX Designer, Q/A, DevOps, Cloud Architect စသည်ဖြင့်။

React JS Workshop

The React JS workshop is a 4-day course aimed at teaching participants the basics of React, Next.js, and Context API. On day 1, participants will learn about React's benefits, JSX syntax, and creating components. On day 2, they will learn about Next.js, dynamic routing, and API integration. Day 3 covers the advanced usage of Context API. On the last day, participants will learn about implementing basic CRUD operations and displaying posts using React state and local storage. The prerequisites for the course include a good understanding of HTML, CSS, JavaScript fundamentals, ES6 syntax, and Git basics. Participants are encouraged to use the provided resources to supplement their learning. By the end of the course, participants should be able to build a basic React and Next.js application using Context API and implement CRUD operations using React state.

What really are declarative and imperative?

Declarative နဲ့ Imperative ကိုရှင်းတာဘာ‌‌ တွေ ခက်နေတယ်မသိဘူး။ Code တွေအတောင့်လိုက်ရေးပြပြီတော့ရှင်းမှဘယ်လိုလုပ်နားလည်မှာလဲ။ ဒါကဒါကြီးဆိုပြီးပဲအလွတ်မှတ်သွားမှာပဲ။ ဒီနိုင်ငံမှာက ဒါကျက်ဒါဖြေအကျင့်ကြီးနဲ့ဆိုတော့။ အဲ့တော့အပေါ်ကနှစ်ကောင်ကိုရှင်းချင်ရင် Conceptually အရရှင်းရုံပဲ။ ကိုယ်ကကော်ဖီသောက်ချင်တယ်ဆိုပါစို့။ အဲ့တာဆိုကော်ဖီရအောင်ဘယ်လိုလုပ်မလဲ။ ဒါကို Declarative and Imperative Approach နဲ့သွားပြမယ်။

Declarative approach is way more accurate

Declarative approach နဲ့သွားတာကလူနားလည်တယ်ဆိုပေမဲ့ တချို့နေရာတွေမှာ DIY မဖြစ်တာတွေရှိတယ်။ ဆိုပါစို့ကိုယ်က Full fledged Framework လိုမဟုတ်ဘဲနဲ့ Utility လေးတွေပေးထားတဲ့ကောင်တွေသုံးတာမျိုးဆိုပိုသိသာတယ်။

Oden Reactive Store for Mirco Frontend

To leverage the power of reactive programming, we need to be able to store data in a reactive way. This lib provides a simple way to define a reactive store for your micro-frontend application.

JavaScript In Nutshell: Comma Operator, Strict Equal and Optional Chaining

JavaScript မှာ Underrated ဖြစ်တဲ့ Language Feature ရှိပါတယ်။ သူက Comma Operator လေးပါ။ သူ့ကို Sequentially Execute ချင်တဲ့အခါသုံးလို့ရပါတယ်။ ကျွန်တော်လည်းအရင်ကသတိမထားမိပါဘူး။ ခုမှမိုက်တယ်ဆိုတာသိရတာပါ။

JavaScript in Nutshell: The Core

ဒီကောင်က JavaScript Series ဖြစ်မှာ။။ JavaScript မှာကျွန်တော်သုံးတာတွကိုစီပြီးရေးမှာပါ။ ဒီ Seriesကို Core Language Feature, Browser API and Patterns ဆိုပြီးခွဲထားတယ်။ Pattern ကတော့ Popular Concept and Architecture တွေ။ Micro frontend လို၊ Flux လိုကောင်တွေပါမယ်။ ကျွန်တော်က Latest and Greatest ဖြစ်မဲ့ကောင်တွေကိုပဲပြောသွားမှာပါ။ Source Code တွေက Imperative+ Declarative ပုံစံတွေကိုသုံးသွားမှာ။ ‌OO Style ပါမှာမဟုတ်ပါဘူး။

State Management in React

State Management လို့ပြောလိုက်တာနဲ့ Client State ဖြစ်တဲ့ Application State ကိုပဲပြေးမြင်ကြတာပါပဲ။ ဒါပေမဲ့ React မှာက State Management ဖို့အတွက်စဉ်းစားတာနဲ့ Client and Server State ဆိုပြီးတော့စဉ်းစားမှကိုရတာ။ ကျွန်တော်က Vue Dev မို့လို့ဒီလိုမျိုးသုံးရတာမျိုးကိုတစ်ခါမှမကြုံဖူးဘူး။ ကျွန်တော်အတွက်အာရုံနောက်တယ်။ ဒါပွင့်ပွင့်လင်းလင်းပြောတာ။ ဒီပြဿနာကိုရှင်းဖို့ Client State ကိုအရင်ကြည့်တယ်။ ဒီတော့ Client State မှာဖြေရှင်းဖို့က Solution တော်တော်များတယ်။ ဒါပေမဲ့ကျွန်တော်‌အသုံးများတာကိုပဲပြောသွားမှာပါ။ ကျန်တဲ့ React Dev တွေလည်းကျွန်တော့်လိုပဲသုံးကြတာပါပဲ။ ကွာတာက ကျွန်တော်က Vue ‌ကနေ Migrate လာတာ။

Time to reveal my new portfolio

Portfolio အသစ်လုပ်ဖို့အတွက်လွန်ခဲ့တဲ့ ၆လကတည်းက စဉ်းစားထားပေမဲ့ မေမေ Breast Cancer ဖြစ်တော့သေချာမလုပ်ဖြစ်လိုက်ဘူး။ အရင်က Nuxt နဲ့ပဲ Develop ဖို့စိတ်ကူးထားပေမဲ့လို့ SSG ကလက်ခံလောက်တဲ့အထိမကောင်းသေးတာကြောင့် Next ကိုပဲရွေးဖြစ်လိုက်ပါတယ်။

Bootstrap vs. Tailwind CSS

Website တစ်ခုတည်ဆောက်တော့မယ်ဆိုရင် Web Page တွေလိုအပ်ပါတယ်။ ၎င်း Web page တွေကိုလည်း Web Dev တွေအနေနဲ့အလှဆင်ဖို့လိုပါမယ်။ Web Development ကိုလေ့လာတဲ့သူတိုင်းမသိမဖြစ်ဖြစ်တဲ့ HTML နဲ့ CSS ကိုအသုံးပြုပြီးအလှဆင်ကြပါတယ်။

Luhn Algorithm (or) Mod10 Algorithm

Bank Card တွေအကြောင်းနဲ့ Validated Random Visa အကြောင်းကိုပြောပြသွားမှာပါ။နပ်တဲ့သူအတွက်ဆိုရင်အသုံးဝင်ပါလိမ့်မယ်။

How about PHP?

Web Technology လို့ပြောလိုက်လျှင်များပြားစွာရှိနေတာကိုတေဎ့ရပါမယ်။ယခုကျွန်တော်ဆွေးနွေးချင်တာက PHP အကြောင်းကိုဆွေးနွေးချင်ပါတယ်။ ကျွန်တော်တို့ကFull Stack Web Development လမ်းကြောင်းကိုသွားချင်တဲ့အခါ Front-End, Backend, Database တွေ Web Serverတွေကိုပါလေ့လာရမှာဖြစ်ပါတယ်။ အဲ့အထဲကနေမှ Backend Programming Language တစ်ခုဖြစ်တဲ့ PHP