Sunday, October 31, 2010

Domain design, reuse and readable code

Aku plan nak invite rakan-rakan developer/solution/programmer etc yang berminat untuk bincang berkaitan domain design, re-useable dan readable code. Harap dapat sambutan dari pelbagai camp sama ada .Net C#, Java, Groovy, Python, Ruby, PHP.

Ok aku terangkan apa challenge project nie. Bina satu console application berdasarkan problem statement ini.

"Bina aplikasi yang dapat manage sesuatu Project dimana setiap project tersebut boleh mempunyai banyak task dan completion date/time task tersebut bergantung pada task-task yang yang ada dibawahnya. Task boleh mempunyai banyak task yang lain (child) atau juga dikenali sebagai aktivity. Compute the earliest start of every
activity given the start of the project. Setiap task ada estimation time"

Criterianya ialah
1. design yang flexible yang boleh digunakan, kemungkinan untuk any application yang hampir serupa processnya.

2. LOC yang pendek, code mudah dibaca, jika boleh system analyst/tester boleh semak pada first level tanpa perlu tulis test code.

3. Code yang boleh reuse

Ada sesiapa yang ingin mencuba?

Thursday, September 30, 2010

Idea kelebihan/bakat atau kesungguhan

Kebelakangan ini aku sering terfikir mencari sesuatu "benda" yang aku boleh buat berdasarkan kemahiran ilmu teknologi yang diberikan Allah pada aku. Tapi masih buntu. So disekeliling kita hari ini penuh dengan teknologi sama ada datang dari barat atau datang dari kelompok masyarakat kita. Penghasilan teknologi pun datang dari secebis idea yang dikembangkan dan kemudian menjadi realiti .Aku pernah terdengar yang kebanyakkan manusia hanya mengguna 10% dari kebolehan otak/akal yang Allah bagi pada kita. Lagi 90% masih tersimpan di cell-cell otak yang belum dirangsang.

Kalau kita dapat menggunakan atau meningkatkan penggunaan kelebihan tersebut kepada 20%, banyak idea yang kreatif boleh dibangunkan. Aku juga tak pasti adakah faktor bahasa mempengaruhi tahap idea seseorang? Orang yang kreatif yang banyak idea, otak kanan banyak memainkan peranan.

Wednesday, September 29, 2010

Versi mudah mendapatkan NHibernate session

Aku boleh dikategori sebagai developer yang percaya pada code mesti nampak mudah dari penglihatan dan mudah untuk ditulis dan kemudian mudah untuk difahami. Kenkadang aku terfikir kenapa perlu membina sesuatu yang komplex sekadar untuk nampak cantik dan tujuan tersebut boleh dicapai dengan cara lain walau tak se "stylish". Walau pun fungsi tersebut dibina didalam ertikata "framework", tetapi jika over engineered mengkibatkan framework tersebut susah untuk di extends untuk fungsi-fungsi yang lain. Aku ada rancangan nak tulis dalam entri yang lain berkaitan pendahaluan perenggan ini , kemungkinan bertajuk "Business logic algorithm tidak sepatutnya berselerak dimerata tempat dalam solution project anda", agak penjang rasanya tajuk tersebut. Ok anyway, kesinambungan dari itu aku nak cerita sedikit pasal pengawalan session didalam NHibernate dalam versi yang mudah.

NHibernate session amat penting apabila kita hendak melakukan sesuatu aktiviti berkaitan data dan objek.Objek dan data adalah dua benda yang berlainan walau nampak seakan sama. Boleh google untuk tahu perbezaan.

Untuk demo, aku akan tulis code yang akan digunakan didalam projek ASP.Net MVC. Ada 2 library penting yang diperlukan yang pertama library pakej NHibernate dan yang kedua library pakej FluentNHibernate. Tiada IoC dalam contoh ini, ini adalah bertujuan menunjukkan tanpa IoC, tujuan untuk mendapatkan NHibernate session tetap boleh dilakukan.

Sebaik anda berjaya create ASP.Net MVC Web solution, dan andaian bahawa semua library pakej tadi dah berjaya dimasukkan didalam solution tersebut, maka perkara yang pertama ialah dengan mengedit Global.asax.cs dan code akhirnya ialah seperti ini


Perhatikan pada line 21, aku declare ISessionFactory dan kemudian pada line 42 aku panggil method CreateSessionFactory(), code ini berada didalam method Application_Start, dan untuk pengetahuan Application_Start ini akan hanya execute sekali ianya seperti Singleton pattern, ianya hanya akan execute semula jika IIS web server di "restart" dan oleh sebab itu penghasilan SessionFactory sesuai berada didalam method ini.

Pada line 68, disini aku menggunakan FluentNHibernate untuk membina SessionFactory, dan pada line 72, kena tulis connection string dan maklumat tersebut di simpan didalam Web.config. Ini untuk memudahkan jika ada sebarang pertukaran, anda hanya perlu tukar di config file dan bukan didalam code. Lihat pula pada line 82, kita perlu setkan session tersebut digunakan dalam web process dan NHibernate ada mekanisma untuk simpan session yang akan digunakan dalam Http protokol.

Selanjutnya pada line 50, method Application_BeginRequest ini pula akan berfungsi hanya setiap kali terdapat page request dan ianya unik untuk setiap request. Dalam ertikata yang lain jika aku request dan pada masa yang sama terdapat sepuluh orang lain yang request aku akan dapat dapat session nhibernate yang berlainan dan unik tetapi SessionFactory yang sama. Pada line 54, kita perlu bind session kepada CurrentSessionContext dan berdasarkan configuration iaitu Web, maka NHibernate akan menggunakan web session mekanisma untuk simpan maklumat session yang telah di "open" maka apabila diperlukan pada component yang lain permintaan session tersebut akan di beri kepada peminta tersebut ialah session yang di simpan didalam web context.

Perhatikan pula pada line 57, method Application_EndRequest pula bertindak untuk tutup session dan membebaskan memory web context terhadap session seperti yang berlaku padal line 59.

Satu lagi method yang penting ialah GetCurrentSession yang terdapat pada line 45, method ini bertujuan untuk mendapatkan Session terkini yang berada dalam web context.

Penggunaan di Controller
Aku akan tulis base controller untuk semua controller lain inherits base controller ini.


Dan anda perlulah mempunyai domain, permulaan ini boleh tulis domain yang simple seperti ini


Untuk perhatian anda, line 27 untuk code diatas ialah class mapping, sebelum ini mapping dalam Nhibernate boleh dibuat melalui xml mapping dan juga code attribute mapping, tetapi 2 cara ini agak susah dan leceh berbanding dengan cara fluentnhibernate.

Code ini pula ialah code StudentController, lihat bagaimana mudah untuk menggunakan NHibernate Session


So diharap sedikit penerangan dapat membuka minda dan boleh menjadi pengerak untuk anda menggunakan NHibernate untuk project-project yang lain. InsyAllah jika diberi keizinan Allah saya akan lanjutkan lagi demo/contoh penggunaan NHibernate untuk tahap yang lagi advance.




Tuesday, September 21, 2010

UI ke Business Process - 60% project lewat

UI masih lagi menjadi masalah utama kalau tidak pada developer lain tapi pada diri aku sendiri. Walau ada pelbagai framework yang dikategorikan sebagai Rapid Applicaton Development, tapi aku masih lagi mengambil masa yang lama untuk membolehkan UI code work dengan back end code dgn lancar.Nie bukan bermaksud UI design tetapi lebih kepada UI funcionality, bagaimana UI kawal state dan sebagainya. Kalau setakat untuk look and feel memang tidak dinafikan banyak UI framework yang lain hasilkan look and feel yang awesome. Itu dari sudut layout dan color. Dari sudut application developer, anda masih lagi perlu menyentuh UI code setidak-tidaknya untuk sesuatu event itu trigger dari tindakan user, seperti click button untuk hantar maklumat ke database. Cuma jika fully plain html form, rasanya kurang sedikit masalah-masalah ini.


Kepopularan Ajax pun tidak banyak membantu, kenkadang lebih membebankan dgn ketiadaan IDE yang betul-betul WYSIWYG.

So apabila tiba pada level nak menghubungkan code-code ini ke business logic, pengalaman aku memang akan ada sedikit rintangan.

Aku tak berapa sure dari camp Ruby atau any Rails followers yang lain seperti grails etc. Masih lagi mencari UI framework yang seperti ASP.Net yang laju dari segi development dan laju dari segi performance loading.

Dicussion/pandangan aku dari context enterprise/product bukan pet project suka-suka, but something yang anda boleh jual dan customer boleh terima dari segi penampilan dan juga dari segi core business process.

Monday, September 20, 2010

Update

Kebelakangan nie sifat malas nak update web page nie semakin menjadi-jadi, kenkangan kerja dan sebagainya menjadi halangan kuat dan kekurangan idea, maybe otak kanan aku tak digunakan sepenuhnya untuk lebih kreatif.., sudah lebih 2 bulan aku tak menulis dalam blog.


Minggu lepas selepas seminggu cuti hari raya, aku mula bekerja tanpa kawan rapat aku, dimana selama lebih kurang 3 tahun banyak membantu dalam melicinkan proses soft dev di tempat kerja, seorang yang aku respect dari segi knowledge dan juga komitmen. InsyAllah semoga perpindahan ketempat lain lebih bermakna dan keberkatan Allah sentiasa ada bersama.

Walau kerja banyak tapi, masih slow bila nak mula buat soft dev, ntah le..hujung minggu lepas aku plan nak buat something berkaitan programming, tak juga menjadi, aku lebih bnyk browse web site kereta, agaknya minat aku dah kearah bidang kerata.. hahahah, minggu lpeas juga aku hantar kereta elysion aku tukar minyak, fikirkan nak tukar minyak fully synthetic biasa, sekali dah pergi kat After 12 Motorsport, mata dah rambang tgk bnyk sgt acessories kereta, pusing punya pusing..technician kat situ cucuk jarum ..suruh aku tukar minyak engine Mugen, aku pun memang dah ada plan nak tukar minyak, cuma minyak nie mahal sikit. Belakang kedai lagi satu tgk bebrapa technician tgh tune VW Golf GTI, perghh..dia nyer bunyi engine.. mak oii. Fikir punya fikir last last aku setuju tukar minyak engine mugen tu. Then dah beberapa hari pakai, Alhamdulillah terasa lagi lancar bila memecut yang best bila RPM cecah 3.5.. ivtec dia open ...warghh..

Malam tadi, dapat video VW Scirocco dari youtube, nie lagi satu penyakit.. aku dah terpaku depan komputer 2 jam, layan semua video Scirocco TSI Turbo.., bila kau nak start buat programming??????????? :(


Wednesday, July 07, 2010

DNC & DCI ?







Monday, May 31, 2010

OCP dan Double Dispatch

Salam ILuvIslam

Salah satu kerja yang aku kena buat ialah mencantikkan code. Aku nak shortcut terus kepada point. Code dibawah ada 2 version satu code yang tidak menggunakan OCP dan Double Dispatch, manakala yang satu lagi menggunakan cara yang aku mention.

Sebelum tu aku malas sikit nak beri penerangan OCP (Open Close Principle) dan Double Dispatch boleh search je.. InsyAllah banyak penerangan yang bagus. Cuma akau nak terangkan ialah jika aku tak guna cara OCP dan double dispatch code aku akan menjadi bloated macam ikan kembung.

Kali nie aku kena record transaction sama ada transaction tersebut ialah transaction cash atau cheque atau balance transfer atau atau atau. So atau atau atau lagi tu bermaksud ada kemungkinan lain penambahan jenis transaction. Setakat sebelum 1Malaysia bankrap ada 3 atau 4 transaction yang perlu di rekodkan.

Oleh kerana ada pelbagai transaction, maka user kata mereka hendak tahu total setiap amount apabila transaction itu berlaku di branch dan juga total amount harian untuk setiap transaction. So dengan yakin dan bergaya aku tulis code macam kat bawah nie.





Masalah disedari apabila user bagi tahu 1Malaysia dah bankrap, so ada penambahan transaction yang perlu direkodkan, seperti transaction LPO etc.

So jika dilihat pada code aku kena tambah AddReloadLPO(decimal amount). Ini bermakna aku kena buka file code yang diatas dan tambah, begitu juga pada code class BranchDailyReload aku kena tambah if else pada line 39 AddBranchDailyReload(...).

So macam maner aku tak nak ada penambahan code apada existing class dan juga penambahan if else lagi. Caranya ialah dengan menggunakan OCP dan double dispatch.

Aku refactor class jadi macam nie



Then aku kena tambah interface IReloadOCP dan class yang akan implement, sebagai contoh ReloadCash



Manakala class BranchDailyReload akan berubah menjadi simple macam nie, tiada lagi penggunaan if else, walaupun contoh BranchDailyReload tak follow OCP tetapi penggunaan function lebih explicit. Tiada masalah untuk refactor BranchDailyReload untuk buat fully OCP



Sesiapa ada lagi idea yang lagi okay, silakan.. nak kena submit kat lecturer :)

Thursday, May 27, 2010

Data,Context and Interaction

Salam 1Malaysiaaaaaaaaaaaaaaaaaaaaaaaaaa

Minggu lepas semasa membaca mailing list Domain Driven Design, salah seorang ahli group DDD (http://www.jroller.com/rickard/), bercerita serba sedikit tentang DCI . Aku tertarik dengan penerangan beliau dan cuba explore lebih detail, tetapi masih lagi kabur. So aku decide untuk buat code nak compare cara dalam DCI dengan cara yang aku biasa buat.

Tuesday, March 30, 2010

Pilihan untuk kemahiran

Pemilihan language,tools dan methodology/process sama seperti cara untuk buat pilihan pembelian hartanah (rumah/bangunan/tanah), jika pilihan anda tepat dan kena pada masa, insyAllah berbaloi-baloi.

Pemilihan dalam ertikata untuk anda betul-betul mahirkan diri dengan sesuatu yang dipilih, tetapi anda digalkkan untuk mengambil tahu secara asas saingan-saingan yang lain. Anda tidak pelulah terlalu ekstrim dengan sesuatu yang dipilih, tetapi perlulah mempunyai sikap terbuka dalam menerima kritikan terhadap sesuatu yang menjadi pilihan dalam kehidupan software developer.

Memilih untuk mahir sesuatu perkara adalah lebih bagus dari tahu semua benda tapi tiada kemahiran. Memang anda digalakkan untuk sentiasa mempunyai sikap ingin tahu, tapi dari segala keperluan dalam software developement pilihlah 1,2 atau 3 perkara yang anda betul2 mahir - timur barat utara dan selatan.

Untuk aku pula pada masa ini aku invest(masa dan tenaga) untuk mendapat skill dalam 3 perkara. Pemilihan aku ialah mahirkan Domain Driven Design, fahami NHibernate/FluentNhibernate dan juga C# .Net

So bila aku buat target apa yang menjadi keutamaan aku dalam software development aku akan beri tumpuan kepada ketiga-tiga perkara diatas. Jika orang bertanya aku tentang T-SQL aku sekadar boleh beri pendapat tetapi bukan sebagai best practices begitu juga bila ditanya tentang testing framework/approach aku juga boleh bercerita permukaan tetapi tidak mendalam.

Maka pada aku keperluan untuk setkan target dan keutamaan apabila memilih pelbagai technology adalah sama seperti cara apabila hendak buat pembelian hartanah. Buat survey dan research supaya pilihan anda tepat.


Thursday, March 25, 2010

Domain challange

Pagi nie aku dapat artikel update dari Jimmy Bogard tentang
Strengthening your domain: Encapsulating operations

Aku dah baca dan beri comment, guna nick amir (hentam ajelah). Memang menarik cara dia describe problem and cara dia solve dengan cara DDD. Aku cuma tak berapa setuju beberapa domain behavior yang dia design..so aku bagi suggestion aku.. Solution yang dia I bagseperti di bawah.

Customer = new Customer
var fee = customer.ChargeFee(100m);
fee.Amount.ShouldEqual(100m);
customer.Fees.ShouldContain(fee);


Solution aku lak dengan ialah method ChargeFee tu naming dia macam tak kena.
Aku suggest buat macam nie:

Customer customer = new Customer();
ShopOwner s = new ShopOwner();
s.ChargeFeeTo(customer).Amount(100m);
So bila customer tu nak buat bayar


customer.MadePayment(50m);
Dia ada komen balik kata ChargeFeeTo(customer) tidak berapa kena sebab tanpa panggil method Amount(), code boleh compile dan tiada error. Aku setuju konsep explicit design, insyAllah aku akan ulas explicit design (keberkesanan).
Aku suggest supaya amount tu diletakkan sebagai paramater seperti

s.ChargeFeeTo(customer,100m);

Selain dari itu untuk domain yang lebih flexible kita boleh bina domain CustomerFeeCharges (moment interval) so code boleh dibina macam ini

s.ChargeForTo(new CustomerFeeCharges(customer,amount));

Wednesday, March 24, 2010

First screencast bisu

Aku baru je habis buat simple screencast bisu.. hehe..tak de suara tentang basic setup NHibernate & FluentNHibernate. Ini experiment aku , insyAllah kalau ok ada sambungan. Length dia pendek sahaja.. aku cuba buat sesimple, padat dan sendat...

Thursday, March 18, 2010

Fluent Ubiquitous Domain

Aku tak de apa nak cerita banyak cuma nak bagi satu image untuk difikirkan dan dibincangkan , kalau ada yang nak berbincang silakan, kalau tak de anggap lah image itu contribution untuk 1Malaysia hehehe. Untuk design domain model selain dari skill analytics dan experiance, supporting cara untuk menjadikan domain itu lebih valueable ialah apabila anda boleh buat ayat dari domain model tersebut. Normal buka domain model asas nya ialah identify noun sebagai class, verb sebagai operation dan adjective sebagai attribute/property.


Aku tak sure sangatlah part tu secara detail, boleh search kat pakcik google nyer kedai. Cuma apa aku nak tekankan penggunaan nama class yang menggambarkan scenario. Sebab kalau ambil noun sahaja untuk class kenkadang tak berapa nak jelas betulke?... Aitt aku tanya balik soklan...


Wednesday, March 17, 2010

Adakah perlu Query dikongsi??

Ni adalah persoalan yang timbul bila aku buat coding (soft dev). Aku tak jawapan yang concrete tapi buat masa nie aku memilih query tidak perlu di kongsi, setiap client yang ingin data mempunyai query set yang masing-masing. Jika terdapat perubahan pada domain tidaklah terlalu sakit untuk ubah dari kongsi query tetapi bila requirement query untuk process A lari sikit dari requirement untuk process B, aku dapat rasakan lagi susah nak handle. Mungkin sebab aku ambil pendekatan query sepatutnya very lightweight process yang tanpa melibatkan terlalu banyak validation etc.



Tuesday, March 16, 2010

Google public profile

Ini ialah akunyer link ke public google profile - http://www.google.com/profiles/irwanazam , artikel dalam I Look, I See , juga akan dishare dalam Buzz . So ada n3 yang discussion dibuat disitu.

Wednesday, March 10, 2010

Macam mana

Aku tak ade idea nak tulis apa, ada masa sikit sebelum nak sambung buat kerja, aku cuba bawa satu normal scenario dalam software development design. Contoh aku diminta develop online POS (Point Of Sale) untuk pasaraya besar , jadi boleh bayangkan per day transaction memang dijangkakan banyak. Dan normal domain model design ialah seperti ini.



Ok untuk create new order tiada masalah, kita hanya point order as agreegateroot dan yang lain semua dihandle ORM untuk persistence. So apabila sudah selesai, requirement lain ialah hendak list order record per day or per hour etc, seperti tertera dibwah nie. Ambil contoh customer nie berdaftar menjadi member (macam Jusco members card,Giant members card)


So macam mana?, Aku perlu query ke table order join ke customer join dengan orderitem join dengan product dan join dengan price dan result aku akan dapat list macam kat atas tu.


Adakah cara macam tu efficient?.. mungkinlah kot sebab selama nie aku buat cam tu... Habis tu tak de cara lain?.. ntah le ada agaknya tapi nie yang biasa orang buat..so aku follow je

Kalau boleh buat macam nie



Tak banyak kerje ke nak buat lagi satu domain view?.. habis tu kalau requirement berubah dia nak lagi satu column kat view tu macam maner?? kalau dia update order record tadi macam maner lak record kat view tadi...

Siapa boleh tolong bagi pendapat....

Technical Screencast

Salam,


Aku terfikir adakah mendapat sambutan jika terdapat screencast khusus yang dibina untuk market Malaysia, aku bukan tak berminat cerita pasal global, atau pun pasaran luar cuma aku lebih nak fokuskan khusus pada developer yang ada di Malaysia dimana presenter juga adalah Malaysian haaa tu barulah 1Malaysia. Kalau diperhatikan memang terdapat beberapa site yang provide screencast untuk software developement sama ada free atau berbayar. Kandungan screencast yang di siarkan juga memang menarik. Plan aku screencast yang aku nak buat nie berbayar, kerana ianya melibatkan masa dan juga tenaga. Kalau ada satu portal screencast dimana developer boleh provide kemahiran masing-masing dan dapat income dari situ sure menarik. Bagi aku boleh dimulakan dengan kategory developement dan selepas tu kembangkan pada administration linux, windows, unix etc..

Cerita sikit-sikit je lah dulu....dah confirm betul2 baru boleh cerita lanjut..

Sunday, February 21, 2010

Begini rupa Application Service aku dalam latest project

Selepas baca tentang CQRS (Command Query Responsibility Segregation) pertengahan tahun lalu, aku mula berminat tentang apa sebenarnya CQRS. DDD developers banyak berbincang berkaitan CQRS hinggakan core pattern macam repository,services sudah berkurangan diperbincangankan.

Kalau dahulu ApplicationService aku rupanya macam nie:

void MakeDocketApproved(DocketId)
Docket GetDocket(DocketId)
DocketDto GetDocketWithCode(Code)
DocketDto GetApprovedDockets()
void ChangeDocketLocation(DocketId, NewLocation)
void CreateDocket(Docket)
void EditDocketDetails(DocketDetails)

Tetapi sekarang apabila aku guna CQRS ApplicationService aku sekarang dipecahkan kepada 2 jenis service satu Command (write) dan satu lagi Query (read). CQRS secara umum adalah Architecture decision implementation, bagaimana kita mendesignkan infrastructure. DDD masih lagi penting dari segi kepentingan domain model sebagai tempat masalah di prosess. Jadi sesuatu software project boleh sahaja hanya menggunakan DDD tanpa CQRS dan CQRS juga boleh digunakan tanpa DDD.

Apabila aku apply CQRS pada ApplicationService maka jadi seperti ini:

DocketCommandService
void MakeDocketApproved(DocketApprovedCmd)
void ChangeDocketLocation(NewDocketLocationCmd)
void CreateDocket(NewDocketCmd)
void EditDocketDetails(DocketDetailsCmd)

DocketQueryService
Docket GetDocket(CustomerId)
DocketDto GetDocketWithCode(Code)
DocketDto GetApprovedDockets()

Jadi secara umum ini adalah CQRS dimana Command dan Query responsibility diasingkan dan kelebihan service command boleh diimplement dengan cara lain dan query service boleh diimplement dengan cara yang lebih simple. Command mungkin akan melalui kesemua layer yang biasa di buat seperti controller->app service-> domain -> dataaccess->DB. Dan sebolehnya biar controller,app service seminimun kerja yang dilakukan dan kerja tersebut perlulah fokus kepada apa yang perlu sahaja dilakukan. Domain perlu didesign semaximum yang boleh untuk cover business logic (Rich Domain) dan elakkan Anemic Domain. Konsep 80% - 20% boleh diguna pakai disini, 80% responsibility perlulah berada di domain manakala lagi 20% di kongsi di layer-layer yang lain.

Manakala apabila query boleh sahaja dari controller->query service -> DB, keep it simple.

Wednesday, February 17, 2010

Update

2 minggu lepas, aku rase jemu dengan senario politik malaysia, sebab tu 2 tulisan aku sebelum ini tak de kena mengena dengan programing dan software development.


Project Mars dah rollout Nationwide hampir 2 minggu dan Alhamdulillah semua berjalan lancar, adalah juga beberapa bugs yang tidak berapa kritikal dijumpai. Cuma masa untuk aku review code dan refactor belum sempat. Aku cuti Chinese New Year tak sentuh komputer langsung, plan balik awal sehari kerumah dari kampung dapatlah juga membersihkan code-code dari anasir2 yang tak diingini tapi tak kesampaian, penat dan rasa malas nak fikir pasal programming selepas 3 hari bercuti kat kampung pun ada. Aku balik kampung awal, kerana makcik sebelah wife meninggal dunia, banyak gak lah urusan kat kampung.

Aku sekarang banyak meluangkan masa untuk belajar lagi mendalam tentang CQRS, target aku tahun nie supaya dapat implement full CQRS project dalam mana-mana project yang akan datang. Aku dah cuba dengan sikit2 konsep CQRS dan nampak beberapa kelebihan.


Tuesday, February 09, 2010

Apabila Si Bodoh Memperbodahkan Juak-juak yang memang bodoh

Apabila yang ada kuasa itu otak nyer serupa keldai, jadilah pengikut pengikutnya seperti taik keldai.... dan yang memerhatikan kebodohan mereka juga akan terkena tempias kebodohan kerana pergi perhatikan orang bodoh itu nak buat apa.............adushhh aku pun sama kerana selalu perhatikan mereka, patutlah baunya tak tertahan dan jika selama bertahun2 tempias enzim-enzim kebodohan mereka juga akan merosakkan IQ aku...ini........tapi nak buat macam mana negaraku yang tercinta

Politik: Menyesakkan nafas

Dunia politik di Malaysia nie memang melelahkan dan betul-betul buat otak jadi mereng. Dengan pelbagai jenis orang dan perwatakan yang tak konsisten, semuanya kerana apa, kerana nak sentiasa mengharap rakyat menyanjung mereka, tetapi perbuatan sesetangah ahli politik, peminat politik dan aktivis politik di Malaysia macam hampas kelapa, sama ada dari kerajaan dan juga pembangkang. Bosan dengan apa yang berlaku bukan sejak kebelakangan ini tapi sejak 10 tahun yang lepas.


Kehidupan mereka yang tidak mempedulikan apa yang berlaku di dunia politik memang tidak akan terasa sangat paling lebih pun bising sebab kenaikan minyak dan harga barang selebih dari itu meraka akan lupa apabila dihiburkan dengan siri Raja Lawak dan Mentor. Politik di Malayia pun ramai pelawak berbakat dalam pelbagai kategori, pelawak kategori seram, pelawak bodoh , pelawak lucah dan pelawak tua.

Dah nama pun pelawak, tabiat suka menghiburkan orang dan akan mencari pelbagai cara nak menghiburkan rakyat dah menjadi darah daging mereka, sama ada lawak itu diterima sebagai sesuatu yang bagus, berisi atau lawak yuang sama macam apa yang manusia buang bila lepas makan mereka tak kisah, yang penting tabiat dan nafsu suka buat lawak dapat ditunjukkan. Itulah orang politik di Malaysia. Kosong sahaja.. tak lebih dari itu

Aku yang mengikuti secara langsung dan tak langsung nie pun dah sama macam jadi bebal lak dengan semua isu yang ada di ucapkan pelawak-pelawak nie, saling tak tumpah tengok Raja Lawak Astro tu....

Semua benda dah jadi isu politik hinggakan isu tak ada isu pun jadi politik, bayangkan betapa hebat ahli politik Malaysia mencipta isu.

Kau masuk parti nie aku masuk parti nie. kau keluar parti nie, aku keluar parti nie. Aku nak dialog nie, kau nak berdialog pasal tu, aku dah kata jgn cakap macam nie, kau kata nak gak cakap pasal tu... keputusan nya pi mai pi mai tang tu gak lee...