Halaman

Jumaat, 8 Ogos 2025

The Ephemeral Data

0 comments

Bismillahirrahmanirrahiim. Dengan nama Allah yang Maha Pemurah lagi Maha Penyayang.

...

"Ni gambar konsep epheremal data — abstrak, glowing, macam data stream tengah hilang dalam udara. Harap suka!",  kata ChatGPT yang tolong generate gambar ni.

... 

Lately ni banyak pulak citer pasal hati dan perasaan aku. hahahah. Mari kita distract sikit masalah kehidupan kita dengan masalah teknikal pulak.

Bear in minds, ni citer masa  end of November 2024 to early December 2025.

... 

Performance Test datang lagi.

Performance test ni biasanya merujuk kepada pengujian untuk menguji ability sistem yang dibangunkan tu boleh handle berapa banyak user serentak atau dalam satu - satu (predefined) masa. Biasa ada dua parameter penting masa buat performance test ni.

  1. Total User, dan
  2. Ramp Up.

Contoh, target untuk nak dapatkan concurrency 10,000 dalam masa 100 saat, so parameter dia akan jadi \( \text{Total User} =10,000 \) dan \( \text{Ramp Up} = 100 \) saat. Means that, dalam masa 100 saat, 10,000 user sepatutnya loaded ke dalam sistem tersebut.

Dan biasanya strategy yang digunakan adalah dia akan load \( \frac{\text{Total User}}{\text{Ramp Up}} \) user ke dalam user untuk setiap saat (to make the test more predictable instead of pakai random atau sela masa yang lebih kecil). Dan setiap user tu pula, akan load another predefined test plan.

Test Plan.

Dalam test plan tu ada list of flow, based on the normal flow untuk sesuatu sistem tu.

Contoh, katakan dalam test plan tu dia akan execute cenggini,

  1. Create random number, preparing for session id on client side.
  2. Call create session endpoint
  3. Execute calculation with session id on the server
  4. Execute another calculation with session id on the server
  5. Get all result from the server
  6. Close session

Maksudnya akan ada 5 execution dalam satu test plan tu (exclude no 1 sebab tu takde hit server). So dari 10,000 users tu, maksudnya akan ada 50,000 benda akan diexecutekan ke system dalam masa 100 saat.

Biasanya, kami gunakan Apache JMeter untuk execute test plan ni. Dia dah jadi macam standard. So application Apache JMeter ni yang akan execute test plan tu.

Cuma kadang - kadang, tak boleh nak load serentak 50,000 execution tu dalam satu application tu. So the architect design untuk Apache JMeter ni boleh run sebagai Master-Slave configuration.

Ok kita citer pasal Apache JMeter Master-Slave sikit.

Apa yang JMeter Master-Slave ni buat is that, the master akan distribute load kepada semua slave dia tu. So that dia akan load dia tu akan distributed evenly (as evenly as possible) ke semua slave dia, so tak jadi beban kalau pakai satu je application.

Contoh lagi. Aku nak execute 10,000 tu tapi aku tak nak dia bottleneck kat Apache JMeter aku. So aku (painfully) buat another 5 Virtual Machines to help distribute the load. Jadi, untuk setiap VM tu, aku akan set dia run 2,000 so that aku akan dapat total 10,000 users loaded. Ramp up takde kacau sebab kita memang nak dia run dalam sela masa tu.

Ok in summary, boleh rujuk kepada rajah bawah ni.

Figure 149: Contoh JMeter dan Load Generator masa Performance Test

Ok I think it should be enough introduction.

...

Ada certain - certain projek kitorang yang akan ada performance test. Ni biasanya depends kepada macam mana bos aku punya direction nak nego untuk buat performance test atau tak (basically ada bayaran ke tak, boleh claim ke tak).

Tapi kami takde la over ambitious sangat. Sebelum bos aku commit untuk nak buat performance test kat client, biasa dia akan tanya aku dulu.

    En A: "You confident ke nak buat performance test ni?"

Aku tak boleh nak cakap tak boleh. Logically speaking, mestilah kene buat. Confident atau tak.. To be honest memang aku tak confident.

Tapi..

Nak kata aku suka buat ke tak performance test ni,.. Well.. basically it is a superposition bagi aku. Aku nak dan dan dalam masa yang sama, aku tak nak.

Seriously. 

Sebab aku tau. Kalau nak run performance test ni, aku kene spend banyak sangat masa nak debug semua benda. All the layers. All the codes. Semua kena semak balik satu persatu in case ada bottleneck kat mana - mana.

But at the same time, aku suka sangat performance test ni. Aku suka sebab ni la yang boleh memaksa aku test theory yang aku tahu/dapat dan terus apply. Time ni la betul - betul nak kene faham sistem yang aku buat dan dependency dia. Time ni la aku nak pastikan apa yang aku faham tu, betul apa aku faham.

Katakan lah kalau ada exam pasal kerja/projek aku buat ni, so actually kat sini la dia punya exam dia. Aku betul - betul ke faham apa yang berlaku dari depan sedepan depannya sampai lah ke terpaling belakang.

Maksudnya takde masalah kalau aku nak tuning. Aku patut tahu kat mana aku nak usik atau nak tune. And obviously, with minimal changes (sebab masa untuk Perf Test biasa kejap je window dia). Tapi bahaya jugak.

Sebabnya kalau salah tuning, result aku ke laut. Salah configuration, silap hari bulan, terus tak boleh akses. Salah teori, habis bazir masa aku.

Kalau tanya aku. Aku tak suka.. Dan sangat suka for the performance test ni.

So menjawab kepada persoalan bos aku tadi tu, aku jawab simply,

    Aku: Emm ok la kot.

Tapi sekali rupanya bos aku dah pergi meeting sebelum tu (aku cuti time tu) dan bos aku memang dah commit akan buat performance test.

Ciss.

Habis tu buat apa tanya aku lagi?? Hahah

...

Ok ceritanya, ni first time aku buat cloud native application. And it is going to go live! And it is for national use! And it will be used by a lot of people!!

Sebelum tu, aku jugak yang gatal cakap kat bos aku.

    Aku: En A. Untuk projek ni, saya nak go full cloud native. Boleh tak?

    En A: Kalau u ok, buat je la. Apa yang u perlukan?

Kadang ni yang buat aku suka kerja kat sini. Bos aku punya direction, aku kene execute dan aku boleh (mengada) nak mintak beli itu ini. 

So during the development, sikit - sikit aku mintak kat bos aku. Mintak software mahal. Dapat. Mintak bayarkan untuk training. Takde hal, dia ok.

So patutnya aku dah equip diri aku dengan all the required things untuk aku nak go full cloud mode. Kan?

But to be fair, masa yang diberikan sangat suntuk. So aku just ciluk sana sini mana yang aku rasa penting je aku nak tau.

Akhirnya, dapatlah aku craft satu sistem yang native cloud. Rujuk kepada rajah di bawah.

Figure 150: Aku punya achitecture lol. Ala korang bukannya tau pon aku buat projek apa kann
 

Basically aku ada 4 services running on kubernetes (microservices), tiga serverless function (FaaS), guna Cloud Relational Database Service (RDS, jenis - jenis PaaS) dan guna infra yang disediakan IaaS (LB) dan SaaS (WAF.. etc).

Fuh canggih betul teknologi sekarang.

Cumaa. Sekarang ni aku kene faham betul - betul apa yang aku buat tu. Contoh, dah kenape ada HAProxy lepas LB dan lepas tu ada LB lagi?? Dah macam tiga layer LB dah tu.

Aku sebenarnya tak suka sangat aku kene letak HAProxy selepas dari LB tu. Sebab HAProxy tu aku buat untuk nak load balancekan dari HTTP punya level (Layer 7). Sebab aku tak jumpa jugak macam mana nak set path based kat Load Balancer yang aku pakai ni. (Cloud aku pakai ni dia derived dari Huawei Cloud solution). First Load Balancer tu terlalu simple sangat. So aku kene tambah satu lagi software load balancer (HAProxy) yang boleh manipulate HTTP request.

So macam tu lah. Kenapa aku letak itu ini semua tu, ada lah sebab dia. Dan aku pilih semua managed services (cloud service) selagi mana yang boleh.

Tapi tak pe lah. Itu je yang aku boleh buat untuk masa yang singkat tu kan.

...

21 November 2024.

So the time has come. Masa yang dinantikan telah tiba.

Aku sebenarnya tak sempat betul nak run aku punya own performance test. Beberapa hari sebelum tu, aku dok sibuk meeting dengan dynatrace untuk nak configure dynatrace guna sebagai monitor resource.

Sampaikan pagi 21 Nov tu pon aku dok bermeeting dengan Dynatrace.

Aku cakap kat budak performance tester tu, "Kita strart petang boleh?".

Diorang cakap, "Boleh2."

Fuh lega aku. Rezeki dapat team yang memahami. So dengan rasa bersalah, aku buat la sampai kasi jadi.

Interestingly enough, aku dapat belajar benda baru. Dynatrace rupanya ada option guna open source untuk telemetry, nama dia OpenTelemetry.

Figure 151: OpenTelemetry reference architecture. Lawa. Jangan bandingkan dengan aku punya diagram hahah [111]

So lepas aku configure dan pastikan ianya jalan, aku cerita lah kat bos aku pasal OpenTelemetry ni (sebab dia jenis suka explore teknology baru).

En A cakap, "Menarik tu. I nak lepas ni nanti you explore dengan tengok macam mana kita nak pakai untuk future projek kita. But without the Dynatrace. Guna benda ni je".. Aku terdiam. "Tapi saya tengah banyak keje ni En A".. En A cakap balik, "Nanti2 lepas ni pon takpe".

Maka fahamlah aku. Dia kasi side quest baru. hahah (update Ogos 2025 - dia lupa, aku pon lupa pasal ni hahah)

...

21 November 2024 (petang).

So diorang pon run lah performance test tu.

Aku memang masa tu pasrah. Penat sangat. Tak sempat buat apa.

And the result ----------> FAILED.

Figure 152: Ni aku amik dari report tu. Sedih tau tak

Tapi mana ada masa nak sedih - sedih. Bak kata pakcik aku dulu - dulu, "kalau nak sedih - sedih, pergi menangis tepi longkang la wey". Tapi daripada aku nak carik longkang untuk menangis, baik aku repair apa yang boleh. Kann?

So aku mintak diorang tunggu kejap sebab masa diorang tengah run tu, aku bukak monitoring Dynatrace, dan nampak la banyak connection aku sangkut. (aku tak boleh pulak nak view lagi dynatrace tu sekarang so aku tak boleh nak access).

But basically, aku nampak banyak connection to database timed out.

Kalau korang ingat architecture aku tu, semua akan connect ke database.

Figure 153: Senak lah database aku wey

Aku memang dah agak benda ni akan berlaku. So kat dalam code aku tu, aku memang awal - awal allow untuk edit connection pooling just from configuration (budak java biasa benda ni - edit kat jdbc je, tapi kalau budak2 Python, kitorang kene buat manually and there's no standard way lol.. kau tanya 10 budak python nak buat connection pooling, semua akan kasi approach beza2).

So sementara benda tu tengah running, aku godek2 sikit code aku dan edit balik configuration connection pooling aku.

CW (gelaran budak yang run Performance Test tu) cakap, "So macam mana ni? Baru 5k dah failed?"

Aku minta tolong lagi sekali kasi masa dalam 20 minit aku update config.

Dia agree. Nasib baik ada makan2 dalam bilik meeting yang diorang run Performance Test tu. Bijak jugak Project Manager aku.

So dia pon run lah lagi sekali.

Figure 154: Magic
 

Actually takde la magic. Aku mintak 20 minit sebab, 5 minit aku guna untuk deployment semua komponen aku tu (I'm a script kiddie, but not the kid part -anymore-, instead the one that like to use script for mundane operation macam deployment ni ha). dan the rest 15 minutes tu aku test sendiri pakai jmeter aku.

Alhamdulillah lepas. Tapi ni baru 5k. Target 200k. Jauh lagi perjalanan ni.

And then, sangkut lagi.

"Fairuz, dia sangkut lagi la"

Aku check balik kat Dynatrace aku.

Ok I understood.

So aku ubah bilangan pod untuk HAProxy aku.

Ok bende - bende macam kuberenetes, pods, nodes, dan istilah istilah berkaitan ni agak baru jugak bagi aku. Ni first time aku guna container untuk deployment. Aku takde team research nak explore benda - benda macam ni. Tapi aku tetap nak venture/jump/terjun dalam new technology. Bos aku agree dan dia tau aku baru nak belajar benda ni. So dia ok je aku belajar benda baru dan terus apply for production ready product. Aku rasa bos aku percaya kat aku kot. Fuh berat tanggung jawab aku.

Figure 155: Pod, Node dan docker (containered app)

But basically korang boleh anggap pod tu macam mini VM. Cuma tak boleh nak ubah code directly kat dalam pod tu sbb ianya tak persist (panjang sikit kalau nak citer pasal ni). Kasi aku study lagi lebih lanjut, nanti aku bukak kelas. Echewahhh.

So apa yang aku buat, aku spin sikit pod itu, dan pod ini, lepas tu aku run aku punya perf test.

Aku tambahkan pod ni ke 20 and monitor ada improvement tak. Ok takde. So aku reduce balik ke 15. Aku increase another pod ke 50. Ada potential. So aku tukar lain pula.

Camtulah keje aku petang tu aku dok tukar itu ini. Just tukar the numbers je.

Aku test lagi sampai aku dapat reach 10k sebelum aku tengok dah nak masuk waktu Asar. Penat sangat. Aku perlu rehat. So aku pass ke CW punya team untuk proceed.

 

Figure 156: CW punya result

Better sikit. But not enough. I think i know where to look at. Tapi sayangnya, petang tu aku kene balik ke Johor sebab aku kena pergi ke Kluang pagi Jumaat (esoknya) tu. Tapi along the way, aku dok fikir camne aku nak improvekan lagi.

So dalam bas, aku bukak laptop dan carik apa punca dia. So aku perasan yang database tu, dia tak indexed properly. So aku tunggu data tu semua clear, baru aku try buat index.

Dan sampai je JB, aku try tuning lagi sekali bilangan pod aku dan aku run aku punya test.

Tapi masa tu dah lewat sangat. Sampai pukul 3 pagi. Tu je yang aku larat.

Aku pasrah.

Aku biarkan apa yang the best aku dapat buat masa tu, dan aku release ke team Perf Test untuk nak test pagi Jumaat tu.

 

22 November 2024 (pagi).

So team Perf Test buat lagi perf test. Alhamdulillah nampak naik.

Tapi naik ke dalam 25,000 je. Baru 10%. Sedihnya.

 

Figure 157: High response time at 25,000 users.

 

Masa tu dah pukul 12 tengah hari. CW dah mesej aku, tanya aku nak buat apa - apa lagi tak. Aku cakap kat dia, takpe nanti you guys try pukul 3 petang nanti.

Dia tanya aku, aku nak buat apa2 ke time tu. Aku senyap je.

Actually, aku dah siap buat semua auto cleanup dan all the required script untuk dia auto rebalance balik.

So.. Between 12 tengah hari ke 3 petang tu tak buat apa pon (kat server ni lah).

 

22 November 2024 (petang).

So diorang run lagi. And they notice that performance degraded!

What?

Figure 158: Performance Degraded!!

Macam mana dari 25,000 boleh turun ke 15,000 without me doing anything. Something bad has happened.

 

Figure 159: Huhuhuh

So aku cakap kat dia, pull the plug. Rehat dulu untuk petang tu. No need to proceed. Dia tanya kenapa, aku jawab je aku pon tengah takde idea nak buat apa lagi. And she's agree.

Actually aku ada idea apa aku nak buat. Tapi aku tak berani.

Aku tak berani nak fikir pasal the last and final alternative yang tinggal ni.

Tapi nampaknya macam tinggal ni je cara yang ada. 

Tapi aku masih lagi nak try fix. 

 

22 November 2024 (malam).

So malam tu, aku bukak laptop kat homestay kat Kluang tu, dan aku dok godek2 sistem aku kat cloud tu. Apa lagi yang aku boleh buat.

And then I notice. Database aku tu sloww sangat. Aku dah index dah. Tapi slowww sangat.. 

Lepas tu aku dah terus tak boleh nak akses. Allahuakhbar.

So aku raise ticket ke team cloud untuk nak tolong tengok. 

 

Figure 160

 

Tak membantu. Tak membantu langsung. Huhuu. Aku minta tolong restart instance DB. Pon sama gak. Aku siap biarkan laptop aku try connect lebih sejam. No response.

So aku try tengok kat aku punya Serverless Function log. 

Ok Serverless Function.

Ni satu teknologi yang actually developer tak perlu nak deploy code ke dalam VM atau ke dalam container. Developer hanya perlu upload code je ke cloud. I repeat. Upload code ke cloud.

Canggih sangat.

So kita tak payah nak pikir deployment plan dengan bermain dengan infra. Just upload and click sana sini je. Kat AWS dia panggil as AWS Lambda.

So dalam solution kitorang, kitorang sangat pakai benda ni untuk cleanup kitorang punya session data. Sebab session data supposed to be ephemeral data. Dia akan duduk sekejap dan akan kene buang lepas expired.

 

Figure 161
 

So aku bukak log serverless application aku.

Error.

Semua error. 

Astaghfirullah. Aku try tengok log dia, semua problem connection ke db. Dan aku memang letak log.info kat serverless aku, nampak total millions of data tak deleted properly. Dia delete dalam 10,000 data lepas tu process tu kena kill dengan master worker serverless application tu (sebab severless memang kena letak limit berapa lama dia boleh execute sebab tak nak cost tinggi). 

So aku dah nampak.

Semua perkara ni berkait.

So the rentetan dia is that,

  1. Aku dan team Perf Test dok hentak buat perf test kat system.
  2. System keeps building up the data in the RDS (database).
  3. Serverless application try to delete the ephemeral data, tapi failed.
  4. But the data keeps building up, rapidly.
  5. So that is why the Perf Test degraded and database aku tak boleh akses. 

Aku duduk terdiam. Aku perhatikan je skrin.

I think I know what to do.

Tapi berani ke aku?

 

23 November 2024 - 24 November 2024

Ingat tak tadi aku cakap pasal the least idea yang aku nak implement.

Malam jumaat tu aku preparekan minda aku.

"I need to do this. I have to do this".

So what happened in these two days, aku dok bukak internet, dok tanya ChatGPT, dok carik2 best possible course of action aku nak kene buat.

This is a major thing. And aku nak kena pakai satu software yang aku tak familiar sangat.

But I need it.

 

25 November 2025. 

Pagi - pagi lagi, CW mesej aku. On tak hari ni?

Aku cakap kat dia, nanti dulu.

So aku tunggu je bos aku masuk.

Sebelum aku nak buat something major ni, aku kena dapatkan persetujuan bos aku dulu! 

Nampak je dia masuk, aku tengok dia tengah rilek2 kejap, aku jumpa dia.

Aku: Kita punya failed lagi perf test.

En A: Takpe. You try fix lagi minggu ni sampai jadi.

Aku: Saya ada idea. Tapi mungkin amik masa.

En A: What's the idea.

Aku: (explain pasal error serverless app aku dan database tu).

En A: So you nak buat apa?

Aku: Saya nak ditch database. Saya nak pakai redis.

En A: You biasa guna redis?

Aku: Tak pernah pakai. But theoritically patut ok.

En A: You jangan nak teori2.

Aku: This is the last option yang saya boleh fikir.

En A terdiam.

En A: So what you need?

Aku: Satu minggu UNINTERRUPTED. Sebab this is major changes. Saya kena tukar code. Tukar architecture. Banyak nak kena testing. Lagi pon saya tak pernah pakai redis. Banyak nak baca best practice dia.

En A: Ok. Nanti you nego dengan team CW.

Alhamdulillah. Bos aku agree. So aku terus carik CW dan explain mintak tangguh satu minggu. CW bising sebab dia kata dia the following week dia patut pergi ke off-site. So dia mintak aku nego dengan Project Manager dia.

So aku terus carik Project Manager dia. Try nego - nego. Dan alhamdulillah dia agree.

 

25 November 2025 - 29 November 2025 

So dalam minggu tu, aku dok melantak tukar itu ini. Semua benda aku cuba tukar.

Aku carik PDF pasal redis. Baca what is the best practise. And yang paling aku tekankan, what is the strategy for production. So means that, even in my development environment dan local aku, aku terus setup Production Grade Redis.

 

Figure 162: Obviously aku pilih nak pakai HA Clustered Database kat local development machine aku.

Aku tak tau macam mana, tapi alhamdulillah. Semua urusan aku dipermudahkan. Nak faham pon senang (bagus betul documentation redis kat redis.io.. No need pon baca PDF).

And surprisingly, on Rabu 27 November 2025 petang tu, aku dah siap semua dan puas hati aku test functionality.

Tinggal hari khamis pagi aku deploy ke production (remember aku pakai script je untuk deployment?) and just do minor changes.

So hari khamis petang aku terus test guna performance test aku.

Masa untuk tuning.

Aku increase this pod, tengok apa jadi. Aku increase another pod, aku tengok apa jadi.

Then jadi balik problem aku. Dia stuck at tens thousand request.

Aku diam. Aku tengok balik stack aku. And aku nampak another thing yang aku boleh improve.

 

Figure 163


Nampak kan? Macam mana sekali pon aku kena carik cara untuk pakai satu je LB. Aku kene buang HAProxy (kesayangan) aku tu.

Aku balik rumah. Rehat - rehat. Selesaikan yang fardu dulu. Borak - borak dengan orang surau. Kasi clear sikit minda aku.

Dan balik tu aku duduk balik depan kompiter aku. Aku godek2 la kat Load Balancer tu.

Alhamdulillah. Ternampak ada satu settings kecikk je untuk tukar Load Balancer L4 tu jadi as Layer 7.

So apa lagi. Terus lah aku test.

Dan alhamdulillah lagi. Semua berjaya. Aku boleh reach sampai 100,000 users.

Tapi sampai tu je. Aku increase pods aku, aku increase itu ini. Limit dia kat situ.

So tengah - tengah malam tu, aku mesej lagi team support.

Figure 164


Figure 165

 

So tengah hari jumaat tu diorang tolong upgrade kan. And alhamdulillah yang bagusnya pakai container ni, aku tak payah buat apa. Dia TUKAR kubernetes nodes ke lain (yang upgraded) tapi aku tak payah buat apa sebab dia auto deploy.

So jumaat petang tu aku test lagi.

Alhamdulillah.

Reach 200,000. Dan aku test lagi can go sampai 250,000 concurrent users.

Aku rasa aku boleh increase lagi.

But I think it is enough.

Aku penat sangat.

So the next week, aku pass ke team perf test.

 

2 December 2025

Figure 166
 

Alhamdulillah. Dapat between 250,000 and 300,000 concurrency.

CW tanya aku, "You nak tune lagi tak?" sambil gelak - gelak.

Wei dah tak nak dah. Ni dah lebih 50,000 ni pon dah ok la ni.

Aku citer kat boss aku, dia just cakap, "Good job". Aku nak dengar tu jeee.

Alhamdulillah.

...

Satu benda yang betul - betul sangat perasan masa aku buat ni, satu yang paling penting.

Kalau aku stuck dah tak tau nak buat apa, aku jumpa satu solution. Ambil wudhu dan solat sunat. Clear minda aku.

Memang betullah,

 

حَدَّثَنَا مُحَمَّدُ بْنُ كَثِيرٍ، أَخْبَرَنَا إِسْرَائِيلُ، حَدَّثَنَا عُثْمَانُ بْنُ الْمُغِيرَةِ، عَنْ سَالِمِ بْنِ أَبِي الْجَعْدِ، عَنْ عَبْدِ اللَّهِ بْنِ مُحَمَّدِ ابْنِ الْحَنَفِيَّةِ، قَالَ انْطَلَقْتُ أَنَا وَأَبِي، إِلَى صِهْرٍ لَنَا مِنَ الأَنْصَارِ نَعُودُهُ فَحَضَرَتِ الصَّلاَةُ فَقَالَ لِبَعْضِ أَهْلِهِ يَا جَارِيَةُ ائْتُونِي بِوَضُوءٍ لَعَلِّي أُصَلِّي فَأَسْتَرِيحَ - قَالَ - فَأَنْكَرْنَا ذَلِكَ عَلَيْهِ فَقَالَ سَمِعْتُ رَسُولَ اللَّهِ صلى الله عليه وسلم يَقُولُ ‏ "‏ قُمْ يَا بِلاَلُ أَقِمْ فَأَرِحْنَا بِالصَّلاَةِ ‏"‏ ‏.‏

Narrated Abdullah ibn Muhammad ibn al-Hanafiyyah: 
I and my father went to the house of my father-in-law from the Ansar to pay a sick visit to him. The time of prayer came. He said to someone of his relatives: O girl! bring me water for ablution so that I pray and get comfort. We objected to him for it. He said: I heard the Messenger of Allah (ﷺ) say: Get up, Bilal, and give us comfort by the prayer.

Sunan Abi Dawud 4986
https://sunnah.com/abudawud:4986 

Sebelum ni kita buat solat sunat on predefined time macam dhuha atau witr. But we forget that, ada banyak lagi solat sunat yang kita boleh buat. Dan kalau kita betul - betul stuck, berdoalah kepadaNya. Dan cara paling terbaik adalah dengan melakukan solat.

Aku rasa ni take out yang paling besar sekali aku dapat. 

 

 

Rabu, 25 Jun 2025

The Example (4)

0 comments

 Bismillahirrahmanirrahiim. Dengan nama Allah yang Maha Pemurah lagi Maha Penyayang.

 ...

This is part of series "The Example". More:

This was supposed to be the last episode of this series..

...

This is the last episode. Seriously masa aku buat awal - awal series ni, aku tak sangka pulak dia falls ke dalam chapter closure aku. Dulu kot tak punya la aku fikir camne nak endingkan ceritanya.

Rupanya it goes with the flow. Sambil aku tulis, sambil tu dia converge ke conclusion..

... 

Sambungan dari sebelum ni..

Around March 2025 

Masa bulan March 2025 hari tu, ada la kitorang semua kena isik Peformance Management Scorecard. Dalam tu ada beberapa section macam KPI achieved ke tak, lepas tu apa plan nak upskill kan dari segi technical skill dengan soft skill.

So aku macam biasa lah, time ni aku amik peluang nak interview diorang sorang - sorang. First question senang. "You ada apa2 masalah dengan I tak? Macam I tak support korang atau kehadiran I ni menyakitkan korang ke?" So aku dengar apa jawapan diorang. Then aku tanya pasal company kitorang. Dia ok tak dengan direction company sekarang.

And finally, aku tanya masing - masing, apa yang diorang harapkan. Apa expection diorang. Diorang nak explore apa lagi lepas ni.

And they did tell me apa yang diorang nak cuba upskill masing - masing.

So aku letak apa 'wishlist' diorang ke dalam excel aku dan aku janji aku akan cuba untuk try materializedkan wishlish diorang.

Ok since takde orang yang baca blog aku ni, so senang la aku nak show kat sini (one row = sorang).

Figure 145: Wishlish team aku
 

Ok sebelum ni aku ada cakap. One of the thing yang maybe buat budak - budak ni tak dapat nak pergi jauh, sebab aku takde set deadline untuk diorang. Tapi salah satu sebabnya aku tak dapat set timeline, adalah sebab uncertainty of our project.

Aku tak tau kenapa, tapi aku selalu sangat kene campak ke project yang terlalu volatile. Yang tak stable. Maybe sebab aku pon memang jenis yang unstable. Haha. There was a saying yang kata same behavior attracts each other (refer ke psychology subject on Similarity-Attraction Effect).

Tapi disebabkan bulan tu bulan puasa, masing - masing sibuk tambah amal ibadah. So aku takde la nak kacau. Sekali sekala je aku pergi tempat diorang and tengok apa diorang buat.

Takde. Takde apa sangat masing - masing buat. Can say that the progress is almost non existant.

April 2025

Masuk pulak bulan raya (puasa sebulan, so raya pon sebulan). Dan team aku ni pulak memang semua busy. Dan sangat aktif dengan aktiviti non-project. But unfortunately, untuk geng - geng manager ni, aktiviti non-project, dikira sebagai aktiviti yang tak mendatangkan wang kepada syarikat.

So aku pon push la sikit - sikit masing - masing. Tapi aku rasa mungkin aku ni push lembut sangat kot. Atau mungkin direction masih lagi tak clear kot.

Tapi aku memang sentiasa pesan. Sementara masing - masing tak busy ni, try explore something new, something latest and something yang trending (kategori kerja).

And we'll see how it goes.

Unfortunately, aku masih lagi stuck dengan tak henti - henti kerja. So aku just boleh monitor sekali sekala je. Tapi mana la orang nak suka kan kalau tiap2 hari aku dok push. 

April 2025 (Part 2)

Ok masa ni jugak tengah sibuk kecoh cerita pasal akan ada new subsidiri company dari company aku sekarang. And the new co akan join venture dengan another company. We will call it as JV co.

Actually aku dah tau benda ni dah lama dah. Early of this year lagi. It just that the instruction is to keep it quite.

And so I did.

Tapi masa ada nak buat jamuan raya tu, boss aku (En A) dia panggil semua orang and tell the story about the new co, and that he will be resigning the current position and current company to go to the new JV.

En A: I akan bawak 3 orang dari group kita ni. One of them is Fairuz.

Aku senyum je. Budak - budak aku semua terkejut. Kata tak pernah tau pon pasal ni. Ya aku tak pernah pon cerita ni kat diorang.

When I was told it is a secret, I will keep it. Budak - budak aku ni yang hari - hari aku jumpa borak pon aku tak terlepas cakap. And you know how serious I am. 

Cuma satu je.

Apa jadi kat budak - budak aku???

You see.. Aku dah lama duduk kat sini. So aku tau perangai manager - manager lain kat sini.

Aku kenal beberapa manager kat sini yang jenis kalau budget takde je, dia akan lelong atau akan terminate contract staff diorang ni.

Betul.

Tapi sebab diorang punya line reporting tu lain dari line reporting aku (aku ni basically duduk lane En A, and the common denominator aku ke diorang is the CEO), so aku tak boleh nak buat apa -apa. Aku dengar, jadikan as example and put it as my boundary. Jadikan sebagai sempadan.

Lagi pon, sejak aku kerja kat company ni, I was thought that macam mana sekali pon, kita kene carik duit untuk nak pastikan budak - budak ni akan ada budget untuk sambung contract. I was brainwashed like that. Tu yang aku sangat tak menang tangan.

Masa previous project ni pon aku masuk masa awal - awal project, lepas tu aku kene carik project lain untuk pastikan akan ada budget for my team.

And I never tell my team about this. Tak nak la diorang rasa serba salah. And bukannya ada apa - apa pon kalau aku bagitau diorang kan.. I'll just do what is right, quitely, and based on my school of thought. 

So I keep quite. Aku doakan supanya team aku ni dapat la manager yang lagi baik dan lagi bagus compared to good-for-nothing me ni..

 

May 2025

Back to my team punya cerita.

Ok something has to be done. Masing - masing siap hari - hari datang main social media.

Ok. ok ok.

So, I call for another meeting. This time, aku dah assign sorang - sorang ke project mana dan mana.

 

Figure 146: Moving forward v2

And then aku follow up dengan (sambungan) kick start project - project aku yang nak diorang sambung ni. 

Again unfortunately, aku rasa aku dapat buat macam dalam 2 kali je. But I keep reminding them, kata yang kalau ada apa - apa tak paham, call je. Bagitau je. Aku ni dah la jenis pelupa. Nak call mesej tengah malam pon boleh. I'm always open for korang semua.

Tapi aku rasa tak sampai 3 kali je diorang ada jumpa aku.

Sedih aku.

And so, I need another drastic plan. This time, I will monitor daily even sampai aku kene check kat rumah. Kira dah nekad lah ni. 

3 June 2025 - 5 June 2025

Masa ni cuti sekolah. So aku macam biasalah ulang alik dari Melaka ke Kuala Lumpur.

Sebelum ni aku rasa macam biasa je kalau setakat travel 2 jam pergi dan 2 jam balik hari - hari. Tapi kali ni aku rasa penat sangat. Aku rasa sebab aku penat sangat nak plan yang terbaik untuk team aku yang sampai aku burnout.

And this time antara satu - satunya yang aku masa nak balik dari KL ke Melaka, aku kene stop sebab nak rehat.

Serious penat.

Tapi tak pe lah. This is for my team punya future.

Cuma 5 June tu.. Aku dapat email dari member aku. Dia duduk atas, so info2 top management memang dapat kat dia dulu.

Dia mesej aku.

Figure 147: Mesej member aku..
 

Terduduk aku terdiam. So basically team aku lepas ni memang officially kene pindah. Ke manager yang jenis aku cakap tadi.

Ya Allah sedihnya. Sebelum ni aku just replay simulation je dalam fikiran aku, what if this and what if that. Tapi kalau dapat mesej dari member aku yang basically confirmkan apa yang berlaku.. Aku sendiri tak dapat nak cakap apa.

9 June - 11 June, 2025

Basically there's some major things yang berlaku time ni. Aku tak nak citer sini walaupon aku dok sibuk cakap takde orang baca blog aku. But I can guarantee that kebarangkalian orang tak baca blog aku is at top, 0.999. So still ada 0.001 kebarangkalian yang orang akan baca. And I would not like to take the risk.

Basically, there's something traumatizing happens to me during these days, up to the point that sampai aku rasa penat betul hidup ni..

Sangat penat.

So this, my personal problem, penat travel tak habis, plus dengan aku dok kalut fikir pasal team aku ni, leads to aku datang office tak tegur atau borak dengan siapa - siapa pon. Especially team aku.

Sebab diorang rapat dengan aku. Aku takut sangat kalau aku start borak dengan diorang, akan terbuka cerita personal problem aku. Walaupon sebelum ni aku rasa takde masalah aku nak borak pasal personal aku dengan diorang.

But this time can't. The risk 0.001 still there.

Like I said before. Let my problem dies with me. This is my problem. Aku tak nak involvekan dengan team aku. Let me find out the way myself.. Kalau sempat..

11 June 2025 to 24 June 2025

So between this period, aku tak cakap apa - apa langsung dengan team aku. 

No. Bukan sebab aku marah kat diorang. But sebab aku sayang sangat kat diorang. Tapi aku kecewa sangat dengan diri aku. Got several months to help them tapi apa aku buat?

I can't keep myself to see them. Dan aku rasa sebab aku tengah tak stabil ni, tu yang lagi amplifykan perasaan aku. 

But in the mean time, sambil - sambil tu, masa aku pergi makan ke kafe, aku kadang - kadang duduk la makan dengan CEO company aku ni. 

Tiap kali duduk makan dengan dia dan ada orang lain (geng - geng management lain) ada kat situ, aku akan mengungkit.

Aku: Nama I ada lagi tak dalam org chart company ni?

CEO: Eh dah takde lah. You kan dah keluar dari company ni. Patut nama you kat JV co tu la.

Aku: Masalahnya JV co tu kan tak habis finalized lagi. So basically nama I takde kat mana - mana. Korang macam cut nama aku dari org chart lepas tu letak kat desktop simpan kejap.

Masing - masing gelak.

But korang pon tau kan, ada la sebab aku cakap camtu. And kenapa aku pilih untuk cakap depan ramai - ramai geng management tu (kalau aku keluar berdua dengan CEO ni, takde la aku cakap camtu).

Sebab that is my last cry of help untuk at least... At least letak la balik nama aku dalam tu so aku still boleh manage lagi team aku.

Aku tak boleh fix dah personal problem aku, so at least I wanted to fix this. 

Beberapa kali aku jumpa dia kat kafe siap masa tu En A pon ada jugak kat situ, aku terus cakap benda sama. Pleading for my name to be there.

Aku bukan nak sangat letak nama aku dalam company tu. Cuma tolonglah kasi aku peluang for me to fix my mistake..

Aku tak ingat ni kali ke berapa jumpa dia kat kafe.

CEO: Boleh, I boleh letak nama you dalam org chart kitorang. Dengan syarat, ko pon kene tolong buat keje company kitorang ni macam buat tender ke apa.

Aku: Ok je. Takde hal (sambil gelak - gelak)

So basically aku akan kene buat kerja untuk dua company. Ok ada harapan sikit. Cuma lepas tu dia cakap, budak - budak aku still akan kene transfer ke manager lain. So dalam org chart this company, aku just stand alone.

Laa.

Aku bukan nak yang tu. Makin sakit kepala aku dibuatnya.. 

And so, the 18th June 2025 happens (aku dah citer dalam part 3). Aku tolong orang lepas tu aku kene marah dengan bos aku En A. Tak membantu langsung dalam semua problem aku.. Siap, basically dia +1 effect ke problem aku.

Dan kebetulan pulak, 19 June 2025 tu (the very next day) aku ada buat online meeting Transfer of Technology ke team aku. Aku invite semua team aku untuk aku explain satu - satu..

Sedih aku. Takde sorang pon dalam team aku tu bersuara apa - apa. Nasib baik aku invite sorang lagi observer dalam tu, dia yang banyak tanya soalan, rasa meriah sikit.

Habis je online meeting tu, terus nak berair mata aku. Nasib baik masa tu dah nak Asar, boleh cover sikit dengan wudhu.

Lepas tu, ada salah sorang staff aku datang tanya aku. Ajak jumpa kat satu bilik meeting sebab tak nak orang lain tengok.

Ai: Encik, encik.  Kenapa encik macam dah tak nak borak dengan kitorang je?

Terkedu aku. Eh jap. Camni ke yang korang nampak?

Ai: Kitorang ada buat salah ke encik sampai encik tak nak cakap langsung dengan kitorang.

Aku: Eh takde takde. Tak.. Bukan. Korang takde salah. I cuma ada personal problem. I tak boleh nak cakap dengan siapa - siapa. I takut sangat nanti I akan tercerita masalah I kat korang.

Said me, without actually telling the full story.

Ai: Tapi tak kan la sampai macam ni sekali.

Aku dalam hati, this is why aku tak nak cakap, sebab aku rasa sikit lagi aku nak buka cerita personal problem aku ke diorg.

Aku macam biasa, bangun dan terus bergerak ke pintu keluar. Taktik biasa aku.

Aku: I ada masalah peribadi yang sangat besar. Minta maaf sangat - sangat I tak boleh cerita apa - apa. Cuma I minta korang doakan supaya segala masalah I dapat diselesaikan.

Ya ikhlas aku cakap. Doa - doakan yang terbaik. 

Aku rasa dia ada nak cakap something, tapi aku terus deflect kata kita kene keluar takut orang fikir apa apa nanti.

Padahal ada gak aku menangis kalau aku dok situ lama lagi.

...

And so, for the next several next days, aku hidup hari - hari dengan zero emotion. Aku tak tau lagi dah apa nak buat. Aku just.. layankan je kehidupan ni..

Sebab aku penat. Dengan aku tak tau apa aku nak kena buat... 

25 June. 2025 (hari ni, hari aku tulis post ni lol)

Semalamnya aku ada meeting dengan HR. So basically aku akan dipinjamkan ke JV co starting 1 July 2025.

And aku pulak dah plan cuti lama. July baru aku masuk office. Basically naik cuti ni, aku terus join the new JV co. 

Hari ni patut ada townhall company aku. Ni yang reorg ni akan diannounce. Ni jugak yang akan announce semua team aku akan kene pindah ke manager lain - lain. 

Aku invited ke that townhall. Tapi aku tak dapat join.. Tapi aku dari pagi banyak ke sana sini. Lepas tu aku terfikir pasal townhall ni..

Aku mesej kat CEO company aku, wishing him good luck and all the best. Sambil aku sambung sikit,

Figure 148: Mesej aku ke CEO company aku
 

Ya aku sayang sangat diorang semua. I'm really sorry for being bad manager for you guys. Takde alasan lain aku boleh berikan, except that memang aku yang salah. Aku yang tak pandai plan. Aku yang tak pandai manage masa aku dengan diorang..

Please forgive me..

Jumaat, 20 Jun 2025

The Example (3) - The Choosen and The Choice

0 comments

Bismillahirrahmanirrahiim. Dengan nama Allah yang Maha Pemurah lagi Maha Penyayang.

 ...

This is part of series "The Example". More:

...

Member aku selalu cakap, "Untung la fairuz, jadi budak feveret bos kau". "Best la kau, bos sayang kau"..

Aku senyum je.. 

... 

Ok salah satu kerja aku (sekarang) ni melibatkan aku kene buat integration dengan another system (mobile app). Basically mobile app tu macam authenticator. Dia akan bantu untuk login ke dalam sistem lain. Not really an SSO. Tapi dia just hold some sort of certificate for login/identification purpose. Authenticator app. Ok you get the idea lah. Kita namakan mobile app tu sebagai Mobile App ID.

The basic idea is that from my end, aku kena provide Web Socket Secure, (atau lepas ni aku panggil WSS je) untuk mobile app tu communicate dengan system aku.

Aside from the technical perspective, it is really that straight forward.

The problem is that, the mobile app tu di develop oleh another company (dulu bekas subsidiri parent company kitorang. basically bekas sister company lah).

Also there's an instruction untuk kami tak boleh nak suka - suka berhubung direct dengan diorang unless guna official channel such as email and... (aku tak tau apa lagi.. surat kot maksud diorang).

Tapi aku apa kisah. Diorang kawan - kawan aku gak. Masih lagi makan semeja. Biarlah company gaduh lah sesama company. Kawan tetap kawan.

Ok...

So korang boleh agak la kan apa aku nak citer sini..

...

10 Jun 2025 (pagi)

Aku dah dalam 3, 4 hari gak la aku dapat satu job ni. Aku kena buat sistem yang utilizekan Mobile App ID untuk generate Verifiable Credentials (ni satu lagi benda moden yang tetiba aku kene belajar). So nak buat sistem tu kejap je.. Aku rasa tak sampai sehari je buatnya.

Cuma aku gatal pergi cakap kat bos aku, benda ni aku boleh integrate dengan IoT device macam Raspberry Pi untuk control physical barang macam lampu or pintu.

Obviously lah dia agree and suka. Cuma caveats aku, aku cakap ni mungkin ambil masa yang lama. Sebab banyak component aku nak kene setup (and ada barang tak ada, nak kene beli kat shopee!!).

So several days ni, aku tumpukan kat deployment and development kat raspberry pi aku.

10 Jun 2025 (dalam pukul 11 pagi gitu)

Bos aku mintak aku tunjuk raspberry pi tu. Aku cakap ok lah. Kasi aku beberapa minit untuk aku nak plug in semua.

Sekali masa aku nak run, tiba - tiba keluar error dari Mobile App ID authenticator tu..

"Tidak dapat menghubungi pelayan"

Aik. Aku takde tukau pon apa - apa kat aku punya software yang integrate dengan Mobile App ID tu. So aku terus cakap kat bos ada problem ni. And aku mintak masa sikit untuk aku check balik.

So aku check balik kat backend aku, dia tulis "Invalid HTTP Request".

 

Figure 143: Log aku tunjuk error tu (btw server aku time dia GMT. So korang tambah lah sendiri +8 untuk Malaysia Time).

 

Aik. Pelik lah aku. Sebab aku pakai WSS. Bukan HTTP. And obviously aku tau tu bukan error code aku (dah tentu la aku tau sebab aku yang codekan code aku).

So aku bukak lah balik source untuk integration point kat WSS aku tu and aku try search the exact error code aku.

Ok jumpa.

Figure 144: Exactly macam ni. Cuma figure ni dari github. Kantoi la aku buat projek apa kalau aku kasi screenshot Visual Studio Code aku.

 

Tapi masalahnya, aku jumpa error tu bukan kat dalam source code aku. Tapi kat library yang aku pakai untuk handle WSS. Error kat library!!

So aku check balik kat phone aku (iPhone btw), nampak Mobile App ID tu dia dah updated ke latest punya version (phone aku memang aku biarkan je dia auto update).

Coincidently, lepas dia auto update, terus tak boleh pakai WSS aku.

Coincidence? I think not. 

Ada breaking changes ke?

Since aku kenal budak yang currently maintain app tu (walaupon company lain2), so aku call dan terus tanya dia.

"Ya ada changes. Tapi bukan major. Aku just tambah header je", katanya.

Aik. Setakat tambah header je, patutnya takde la masalah pon. And I totally agree with him.

"Server integration yang lain ok je.", bakar dia lagi.

Lepas tu dia bagi aku URL ke server integration made by their vendor/partner. 

Ok interesting. So aku check pulak kat server internal company aku yang juga ada pakai (sort of) method yang sama, i.e. guna WSS.

Error.

Error yang sama dengan aku punya WSS endpoint.

Interesting. Ada yang sama error dan ada yang takde error. So what is the root cause? 

Member aku tu dia point outkan untuk aku test guna Android sebab code untuk Android, lain dari iOS (diorang buat guna native app, so both code adalah berbeza).

Aku test pakai Android. Berjaya.

So aku report lah ke bos aku pasal ni semua. Dia kata biarkan je as is.

"Kalau you ada masa, you debug what is the exact issue. Untuk demo ni, pakai Android je pon takpe. Just give me the video recording"

Aku ok je.

Tapi aku tanya jugak kat dia, should I tell the team yang buat integration dengan Mobile App ID tu for our internal company punya system.

I kid you not, he said, "Tak perlu. Let them discover it themself and biar diorang datang ke kita for the solution. In the mean time, you carik the root cause and the solution".

Ok. 

Look. Aku hormat sangat boss aku. Like I said previously, aku banyak tengok dia as my example.

But for things like this, I'm totally not agreeing with him. We always should work togather.

Tapi sayangnya.. 10 Jun 2025. Time ni, mental aku sangat tak stabil. Masa ni aku sangat penat... Senang citer, there's a really big personal issue yang aku terbawak - bawak sampai ke office. I can't think straight. Moody aku terbawak bawak sampai ke office.

Cuma aku tak boleh nak leash atau cakap apa - apa ke budak - budak office aku.

Aku pendam.

Aku tak nak cakap apa - apa.

Aku takut aku terlepas cerita benda yang tak sepatutnya aku cerita kalau aku bercakap.

I think it is better if I let my problem dies with me. 

As the problem integration WSS dengan Mobile App ID, I know I need to create a raw TCP server and tap all the packets and aku kena buat logik untuk aku boleh reply with my own response dari console. I got my own speculation on the error. Tapi I need a proof!

Tapi petang tu, bos aku kasi several task lain. Basically dia suruh aku buat beberapa presentation slides that are needed urgently. So that week aku tumpukan ke writeup aku and a little bit of coding. Just to take my mind off my personal problem.

Aku membusykan diri aku so that aku takde masa untuk diri aku sendiri.

Dan balik rumah je, aku terus exercise dan buat lah apa - apa kerja aku as long aku tak duduk idle dan mula fikir bukan - bukan. 

17 June, 2025

Dua hari ni (dari 16 June, 2025) aku ada training. Aku gatal pergi daftar padahal takde kaitan pon dengan future kerja aku.

But I just need a break from my office.

And then suddenly, 11:58AM, aku dapat email, ADDRESSING TO ME!

"Dear Fairuz" (+/-)

And the subject of the email and the content of the email is pasal the issue pasal internal application company aku dengan Mobile App ID yang aku citer atas tu. Takde satu pon dalam subject email tu berkaitan dengan aku atau department aku.

Dannn kebetulan, tokey yang I assume kene fix benda tu, ada depan aku. Masuk sama training dengan aku. Dan tah macam mana, kitorang duduk dalam satu kumpulan. Kita panggil dia G dalam blog ni. 

G: You ada dapat email?

Aku: Ada.

G: You tau pasal issue tu?

Aku: Tau.

G: Lama dah you tau?

Aku: Ada lah dari minggu lepas. 

Senyap. Aku tak reti nak menipu. Aku cuba meringankan perbualan sambil komen cakap semua perkataan dalam subject email tu takde kaitan dengan aku. Sambil gelak - gelak.

Tak jadi. She's not easily distracted with that.

G: You rasa apa problem dia?

Aku masa tu aku rasa macam aku nak careful sikit. Aku dapat clear instruction dari bos aku jangan citer.

But again. I think it is not right for me to withhold the information or knowledge to her (knowledge was meant to be shared!). So my choice is that should I follow my boss order or I putting it as the outside of boundry on seeing my bos as my example.

And I pick the boundary thingy. 

Aku aku explain all the things yang aku tau ke dia and aku share apa information dari member aku (yang jaga Mobile App ID) tu ke G.

Tapi masa tu aku tengah lemah. Mental state aku still lagi tak ok. So aku ada lagi feel guilt kat diri aku.

Lepas tu aku terus rushing pergi ke kafe.

Dengan harapan, aku dapat jumpa boss aku kat kafe. Kalau dia takde, aku call. Senang.

Sampai - sampai je kafe, aku ternampak bos aku. Apa lagi.

Tapi aku tak terus bukak citer. Aku nak kasi warm up dulu. Hari ni aku tak jumpa lagi bos aku.

Tiba - tiba boss aku cakap. "Hey (sambil tunjuk kat aku), diorang pon cakap diorang ada masalah sama yang you dapat. You dah jumpa ke root cause? Dah dapat solution ke?"

Aku, "Ha tu yang saya nak tanya kat En A. Boleh ke saya buat discussion dengan diorang?"

Bos aku reply, "You tolong diorang. Carik root cause dengan solution".

Yes. Dapat aku redakan guilt aku. So aku terus plan my next step camne aku nak debug and find solution. Bab ni aku memang excited. Exploring the unknown and find the best solution as fast as possible. There is so many parameters that can make me busy. I can escape from myself! And I wanted to!

Pukul 2:30 (petang obviously) aku terus pergi meeting dengan team yang kasi email tu dengan G punya team. Basically just nak bagitau aku nak buat and what is my next step. Bukan bos aku suruh pon. But just nak bagi tau "Let me look at this problem" kind of saying.

Sebelum tu aku sempat la call member aku yang buat/maintain mobile app tu. Aku cakap kat dia aku nak datang dengan dua tiga orang. Dia cakap kalau aku datang dengan orang lain, dia tak nak jumpa.

Lah.

Tak pe lah. Pandai - pandai lah aku nego dengan semua orang. Target aku sekarang ni satu je. Aku nak tau root cause je dulu.

So masa aku jumpa budak tu, aku dapatlah nampak apa root cause dia. Dan kenapa dia failed kat aku punya WSS. And actually bukan kat WSS aku yang sangkut. Tapi kat Web Server aku (uvicorn) tu. And I figured out benda sama kat team G punya stack. Cuma diorang tak pakai uvicorn, diorang pakai Apache. Tapi aku nampak lenggok yang sama.

So I craft several workaround for that. And I really excited to try out my theory. Excited dan terus aku jumpa G dan team dia. Explain the whole situation. So the plan is that kita akan buat sama - sama lepas Asar.

Cantik.

So lepas asar aku dok tunggu lah diorang. Aku duduk kat bilik meeting sorang - sorang sambil reading sebab nak elakkan dari aku berfikir sendirian.

Dekat pukul 6 petang dah. Takde respons. Aku message lah G tanya jadi ke tak. Dia kata tak jadi. Nanti dia buat esok.

Aku terdiam. Ok lah tak pe lah. Aku buat sendiri malam ni.

In the meantime, aku tanya the exact version apa yang diorang pakai. So that aku boleh try emulate kat environment aku.

To be honest, aku punya sistem tak perlu nak fix pon. Sebab kitorang punya sistem bukan for production. Team G punya system yang running on production.

Tapi aku nak escape dari diri aku. So malam tu lepas Isya, aku terus spin satu EC2 kat AWS try buat benda sama. Siap dengan SSL sekali weh. Aku check semua ok. Dapat error yang sama kat mobile app tapi takde error pulak kat server uvicorn aku. So I'm assuming dia dah blocked dulu kat layer depan lagi.

Interesting.

So aku dok la godek2 lagi sampai pukul 12 lebih. Sampai aku rasa tak larat, aku sambung membaca sikit lepas tu terus tidur.

18 June, 2025 (pagi)

Sampai je office, aku setelkan lagi hal aku sikit dan aku terus sambung try buat workaround. Check sana. Check sini. Tanya ChatGPT. Bukak docs. Semua aku hentak.

Pukul 10 lebih. Dan akhirnya aku berjaya. Excitednya tak terkata.

So aku terus roger G dengan bagitau budak mobile tu aku dah berjaya dan aku kongsi aku punya solution untuk workaround tu.

And terus excitedly aku jumpa bos aku bagitau solution dia.

Aku citer, "Saya dah tau root cause dengan apa solution dan workaround dia. Dia problemnya asalnya -itu-ini- dan solutionnya patut budak mobile tu kena publish fixed version ke app store. Tapi saya ada jumpa workaround. Saya try buat environment lebih kurang dengan G sebab saya dah tau kat mana yang actually sangkut"

So aku explain all the details dan kenapa ada yang sangkut dan ada yang tak sangkut.

Aku excited. Bos aku dengar je.

Lepas tu aku citer, "Saya dah bagitau kat G dengan budak mobile tu cara workaround saya."

Tak sempat aku nak sambung citer, bos aku tiba - tiba naik suara. "Laa. Yang you pergi bagitau budak mobile tu buat apa. Biarlah diorang datang carik kita untuk solution.". Lepas tu boss aku sambung lagi bising kat aku. Basically dia tak suka.

Terdiam. Not the response that I expect..

Aku dah la tengah mentally unstable sekarang ni.. Aku dengan suara terketar ketar sikit, "So.. saya nak cakap apa kat budak mobile tu...". Bos aku reply, "Nak cakap apa lagi. You dah bagitau!"..

Lepas dia habis bising tu, aku balik ke bilik aku. Pandang ke laptop aku.

Aku mesej kat member aku ajak pergi makan. Berdua pon jadilah. Pukul 11:40 keluar awal. I need someone to talk to. Kot tak aku rasa aku boleh jadi gila. Aku cakap kat bos aku aku nak keluar. Dia kata ok... Dan aku balik balik ke office dalam pukul 2 lebih.

Petang tu aku tak buat apa sebab aku penat sangat dah... 

"Untung la fairuz, jadi budak feveret bos kau"

Belive me, it is not.

18 June, 2025 (petang)

Seriously aku tak ingat apa aku buat petang tu kat office. Cuma aku ingat dari pagi tadi tu, bos aku marah dan kata jangan bagitau team budak mobile tu apa solution aku. Tapi dia tak cakap jangan bagitau team G. So aku tau mana boundary aku kene letak..

Lepas aku balik dari office dan sampai ke rumah, I know I need to make myself busy.

Cara dia? Aku exercise guna dumbbell yang paling berat aku ada. I need the pain. Aku nak concentrate kat pain aku.

Tapi 10 minit je aku larat.

Lepas tu aku duduk nak rehat kejap. Aku tengok jam pukul 6:50 petang..

Dan mulalah tiba - tiba aku teringat, dulu - dulu...

"Awak tu hidup cubalah jangan susahkan orang!!"... 

Jumaat, 30 Mei 2025

The Example (2) and The Basic of Polynomial Interpolation

0 comments

Bismillahirrahmanirrahiim. Dengan nama Allah yang Maha Pemurah lagi Maha Penyayang.

Previously, on fafa-null2.blogspot.com.

Contoh macam aku tengok kalau situasinya x=1, boss aku akan buat y=3. Kalau kes x=2, dia akan buat y=6.

...

And the equation for the is simply  \( y=3 x \)

Ok2. Here, I'm skipping a major step by just putting 'simply' over there without explaining macam mana dari \( (x_i, y_i) \in \{(1, 3), (2, 6)\} \) boleh jadi \( y=3 x \).

Aku baca balik, baru aku perasan.

Hmm.

(Alasan time) Maybe sebab aku ade banyak nak tulis, so I'm just skipping it, just by adding 'simply' to my sentence. Or maybe,

Figure 142: I'm letting you guys try it as an exercise.

Ok let me explain it a little bit. The idea is simple. For polynomial interpolation, we are taking the simplest form that is possible by given any count of point.

Kalau ada dua point, we can make it as linear (the simplest form that we can do). And kalau kita ingat masa zaman tadika dulu, the basic form for linear equation tu wujud dalam bentuk form ni,

$$ y=mx+c \label{linear_equation}\tag{8}$$

Now,, sekarang kita dah ada \( (x_i, y_i) \in \{(1, 3), (2, 6)\} \) (this is not an ordered set btw). Oleh yang demikian, kita masukkan kedua - dua set  \( (x, y) \) ke dalam equation \( \ref{linear_equation} \) tadi. Kita akan dapat dua persamaan, iaitu,

$$ 3=1m+c \label{linear_equation_1}\tag{9}$$

$$ 6=2m+c \label{linear_equation_2}\tag{10}$$

Now, persamaan \( \ref{linear_equation_2} \)  tolak dengan \( \ref{linear_equation_1} \) kita akan dapat,

\[
\begin{align*}
(6-3) &= (2m + c) - (1m + c) \\
 m &= 3
\end{align*}
\]

Dan kita plug in \( m=3 \) ke dalam mana - mana satu persamaan (let say kita ambil persamaan ( \ref{linear_equation_2} \), kita akan dapat

\[
\begin{align*}
6 &= 2 (3) + c \\
 c &= 0
\end{align*}
\]

Kita akan dapat \( c = 0 \). So we plug in \( m = 3 \) and \( c = 0 \) back to our equation \( \ref{linear_equation} \), kita akan dapat,

\[
\begin{align*}
y &= 3x \label{linear_equation_final}\tag{11}
\end{align*}
\]

Easy je kan?

So macam tu jugak kita boleh dapat for the next example.

Kalau nak ikutkan kita punya next example, kita tambah lagi satu point, iaitu \( (3,-3) \), so our set will be \( (x_i, y_i) \in \{(1, 3), (2, 6), (3,-3)\} \).

Ok cuba teka, apa base form equation yang kita boleh pakai?

.

.

.

Ya tepat sekali. Kita boleh fit ke dalam equation berikut,

$$ y=a_0 +a_1 x + a_2 x^2 \label{quadratic_equation}\tag{12}$$

Oleh itu, kita boleh fitkan semua \( x, y \) kita ke dalam equation \( \ref{quadratic_equation} \) so ianya menjadi,

\[
\begin{align*}
3 &= a_0 + a_1 (1) + a_2 (1)^2  \label{quadratic_equation_1}\tag{13} \\
6 &=  a_0 + a_1 (2) + a_2 (2)^2 \label{quadratic_equation_2}\tag{14} \\
-3 &=  a_0 + a_1 (3) + a_2 (3)^2 \label{quadratic_equation_3}\tag{15}
\end{align*}
\] 

Orang math dia suka equation yang cantik - cantik, so kita pon cantikkan equation semua atas tu jadi,

\[
\begin{align*}
3 &= a_0 + a_1 + a_2 \label{eq4}\tag{16} \\
6 &= a_0 + 2a_1 + 4a_2 \label{eq5}\tag{17} \\
-3 &= a_0 + 3a_1 + 9a_2 \label{eq6}\tag{18}
\end{align*}
\] 

So sekarang kita tolak (\ref{eq4}) daripada (\ref{eq5}):

\[
\begin{align*}
(6 - 3) &= (a_0 + 2a_1 + 4a_2) - (a_0 + a_1 + a_2) \\
3 &= a_1 + 3a_2\label {eq61}\tag{19}
\end{align*}
\]  

Cantik kan, kita dapat  (\ref{eq61}) dalam dua variable je. Tapi kita kene buat benda sama gak, tapi kali ni tolak persamaan (\ref{eq5}) daripada (\ref{eq6}):

\[
\begin{align*}
(-3 - 6) &= (a_0 + 3a_1 + 9a_2) - (a_0 + 2a_1 + 4a_2) \\
-9 &= a_1 + 5a_2 \label {eq62}\tag{20}
\end{align*}
\]

Nice. Kita dah dapat buang \( a_0 \). Dan kita ada dua persamaan dan dua variable. Kita boleh guna teknik sama macam masa kita dapatkan linear equation sebelum - sebelum ni tu. So sekarang kita tolak  (\ref{eq62}) dari (\ref{eq61}) 

\[
\begin{align*}
(-9 - 3) &= (a_1 + 5a_2) - (a_1 + 3a_2) \\
-12 &= 2a_2 \\
a_2 &= -6
\end{align*}
\]

Dapat \( a_2 \) dan kita boleh gunakan nilai ni untuk dapatkan \(a_1\). Kita pakai persamaan (\ref{eq61}), dapat,

\[
\begin{align*}
a_1 + 3(-6) &= 3 \\
a_1 - 18 &= 3 \\
a_1 &= 21
\end{align*}
\]

Dan last skali, kita masukkan dua - dua nilai ni ke dalam mana - mana persamaan asal, dapat cenggini,

 \[
\begin{align*}
3 &= a_0 + 21 + (-6) \\
3 &= a_0 + 15 \\
a_0 &= -12
\end{align*}
\]

Plugin back all the values \( a_0 = -12, \quad a_1 = 21, \quad a_2 = -6 \) ke dalam persamaan original kita (\ref{quadratic_equation}), maka dapatlah

$$ y=-12 + 21 x -6 x^2 $$

Sama macam apa yang aku tunjuk kat post aku sebelum ni.

Mudah kan? Kita ada template equation \(y=a_0 +a_1 x + a_2 x^2\) lepas tu kita masukkan value - value yang sedia ada dan lepas tu just carik je nilai \(a_0, a_1 \text{ dan }, a_2\).

Senang kan? 

So dengan menggunakan analogi yang sama, senang je kita nak buat dari  \( (x_i, y_i) \in \{(1, 3),\ (2, 6),\ (3, -3),\ (4, 12),\ (5, 7),\ (6, 8),\ (7, 10) \}\) jadi  \( y = -0.3486x^6 + 8.5708x^5 - 83.0903x^4 + 401.8125x^3 - 1006.0611x^2 + 1211.1167x - 529.0000 \)

Semua dah ada depan mata. Template dah ada  \( y = a_6 x^6 + a_5 x^5 - a_4 x^4 + a_3 x^3 - a_2 x^2 + a_1 x - a_0 \) . Points dah ada.

Just nak execute properly je satu persatu sampai dapat desired answer..

I just need your little efforts to understand it.

So that kalau aku kasi another extra \( x, y \), atau aku ubah mana - mana point, korang boleh tau nak buat camne.

Tetiba jadi serious lak haha

...

Ok aku nak citer pasal kat office pulak.

Kitorang punya major kerja dah lama abis dah. Hujung bulan januari tahun ni (2025). So most of them pulak memang boleh lah dikatakan free lah jugak.

Aku malas nak kacau sangat budak - budak ni, sebab betul, masa project running, masing - masing tak tidur malam.

Masing - masing kerje pagi petang siang malam.

So for me, I think they deserve a little time sikit untuk nak berehat. They are working nonstop even from previous project from 2021 lagi.

Aku ni takde la kejam sangat.

Fikir ku.

Tapi takde la aku nak lepaskan diorang macam tu je. Masa tu kebetulan citer pasal AI tengah hotstuff. Sorang budak aku ni pulak baru dapat desktop baru. Dell Alienware dengan GPU nVidia 5070 (atau 4090.. tak ingat aku). Fuh lagi lah seronok nak buat AI (LLM dengan Vision).

So aku pon kasi la dia flexibility untuk nak test apa2 pon.

Yang owner desktop tu bagus. Dia dengar China ada keluar LLM baru, dia pon terus test kat desktop dia.

And ada sorang lagi budak team aku ni pon test buatkan frontend dia.

Ada lagi sorang tanya aku, nak buat apa masa dia tengah free ni. Dia kata dia tengah tengok2 CI/CD. So aku kasi dia explore pasal Kubernetes sebab aku cakap lepas ni kita nak go for containerisation. VM based kena ada jugak, but aku nak diorg buatkan untuk k8s host sahaja.

So far aku tengok beberapa orang ni, baguslah. Amik inisiatif untuk nak improve technical skill diorang.

Yang lain, aku tengok dok main youtube, facebook, tak pon instagram. Atau tiktok. The whole day.

Look. Kalau tengok benda benda tu, untuk melibatkan technical skill, aku ok. Tapi…

Aku pon selalu lah jugak pergi ke diorang, usik2 cakap pasal try test itu ini.

Tapi hampeh.

Takde hasil.

Kebetulan tempat aku tu, ada la sorg staff (from another department lain tapi duduk satu area dengan kitorang). Minah ni jenis kepoh sikit. Dia kadang2 datang lah tempat aku ni, mengadu. “I tengok budak2 you ni rilek je takde keje.” Aku senyap. Fikir dulu sebelum aku respons. “I kasi diorang rilek2 dulu. 4 tahun diorang non stop running project. Sambil2 tu I kasi diorang explore some other things”.

Dia reply balik, “Tapi I tengok diorang hari - hari main YouTube je. Senang la hidup diorang”.

Aku senyap.

Aku senyum.

“I ada benda lain nak buat jap”, sambil aku terus keluar dari bilik aku sendiri.

So bulan March tu sibuk lah nak buat Performance Management Scorecard (panggil as PMS). Aku ambil peluang ni. Aku book satu bilik meeting tu for the whole day. Sebelum tu aku kasi deadline untuk masing2 isi form PMS tu cantik2.

So when the time come, aku panggil masing - masing untuk review session one to one. And at the same time, aku kasi task baru dengan dengar apa yang diorang nk go for futher. Macam nak belajar stack apa. Nak try explore apa.

So aku compile semua tu dalam excel.

Ya. Company IT dengan R&D. Tapi semua buat dalam excel. Sekali dengan PMS tu. Haha..

Yang task baru tu, aku tak kasi timeline bila diorang nak siapkan. Tapi aku cakap aku nak tengok progress.

And I do. Each day aku round tengok diorang buat apa..

Bulan Ramadhan dan Syawal berlalu pergi.. Tapi masalahnya budak2 ni masih lagi takde nampak progress.

Something must be done.

So aku buat plan untuk nak buat team meeting untuk semua budak2 report kat aku. Aku start passkan kerja - kerja aku yang dah overload ni ke diorang.

Target aku senang je. Aku nak diorang fahamkan dulu code aku and buat improvement dari situ.

So aku buat la meeting tu. Aku explain target aku. Aku kasi diorang task. A simple task. Aku kasi semua source code aku. Apa - apa documentation aku dengan apa - apa notes aku pon aku kasi. Takde hal.

Nak pakai ChatGPT nak understandkan apa aku buat atau upload code aku ke ChatGPT pon takde hal. Call aku tengah tengah malam nak tanya something pon ok. I’m open.

Macam aku tunjuk awal post ni tadi, yang macam mana kita buat polynomial interpolation tadi. Template dah ada. Jawapan dah ada. Just need your effort je nak fahamkan.

Tapi sayangnya, krik krik krik bunyinya. Takde response.

Sedih aku.

Aku takde la jenis nak jadi paksa masing - masing untuk terus hentak satu - satu.

I’ve been there. Done that. Tak best tau tak kalau buat kerja kena paksa ni.

Aku takde la nak kesah pon apa department lain nak cakap apa. Tapi aku sedih la tengok team aku ni takde inisiatif sendiri..

One thing kalau korang perasan, aku rasa aku sendiri pon sedar, yang aku kasi task kat diorang ni takde deadline.

Mungkin sebab tu masing - masing buat sambil lewa. Team deployment aku tu je rajin aku tengok belajar k8s dengan docker. Sebab diorang boleh nampak terus result. Nampak depan mata kalau cluster yang diorang buat running atau tak. Nampak apa end game dia.

Yang lain. Mungkin sebab tak de nampak apa end game dia, jadi masing - masing leka.

Atau mungkin aku ni lembut sangat manage diorang.

Aku pernah citer kat ex supervisor aku. Dia sekarang masih lagi duduk sama building dengan kami. Cuma company dia dah report ke kementerian lain. Tak lama lagi nanti dia and company dia kena pindah ke tempat lain. Dia cakap, “Kau dah berubah sekarang. Dulu kalau kau tak suka, terus nak terminate contract diorang” sambil gelak2.. Ya aku dulu memang heartless..

So lepas ni aku nak properly craft untuk setiap orang ni apa deadline dia. And aku kene followup. Ada dalam belas - belas budak report ke aku. Penat. 

But I think this for the betterment of my team.

Citer pasal nak working tapi tak nampak endgame ni memang susah.

Tadi masa khutbah Jumaat, ada cerita pasal keistimewaan awal bulan dhulhijjah. Rewards semua ada. Cuma kita sendiri je nak kena kejar.

Dan nak kejar tu, nak kena paksa diri sendiri. Atas inisiatif sendiri. Atas displin sendiri.

So that what i will be doing for next month. Aku nak paksa masing - masing. Kalau ikutkan sendiri, memang takdenye nak kejar. Even I’m also struggling the same thing..

I need to do this. Not for me. But for their own future. Just like polynomial interpolation tadi, aku kasi semua jawapan. Cuma diorang kena usaha je.

Doa - doa lah semoga semua urusan untuk team aku dipermudahkan dan semoga diorang senang faham..