Nugroho's blog.

Friday, March 4, 2016

Cluster Growth Simulation.

 Using Python with Numpy and Matplotlib
"""
Cluster
"""
import numpy as np #untuk operasi array
import matplotlib.pyplot as plt #untuk gambar grafik
import matplotlib.animation as animation #untuk menggerakkan grafik

fig, ax = plt.subplots()

plt.ylim(0,40)
plt.xlim(0,40)
#variabel
n = 39
x = 19
y = 19
a = np.zeros((n,n))
a0 = np.zeros((n,n))
a0[x,y] = 1
a[:,:]=a0[:,:]
#print a

#membuat garis/kurva dengan sumbu-x adalah x, sumbu-y adalah y
line, = ax.plot(x, y, 'o')

def animate(i):
global line
for i in np.arange(1,n-1):
for j in np.arange(1,n-1):
if a0[i,j]==1:
x = i + np.random.randint(-1,2)
y = j + np.random.randint(-1,2)
if a[x,y]!=1:
a[x,y] = 1
line, = ax.plot(x,y,'o')
a0[:,:] = a[:,:]
return line,

ani = animation.FuncAnimation(fig, animate, frames=2000, interval=100, blit=False)
ani.save('cluster.mp4',bitrate=1024)
#plt.show()








Monday, February 29, 2016

Tas Kulit



 Keluar toko.

 Tangan kiri menenteng tas plastik besar.

 Tangan kanan memegang tas ransel setengah terbuka, berusaha mengorek-korek isi tas dengan tangan kiri yang juga sedang sibuk menahan agar roti yang barusan dibeli tidak berhamburan keluar. Dia menyesal telah begitu saja menyumpalkan kunci motor ke dalam tas ketika masuk toko tadi. Akan lebih praktis jika masuk saku.

Hujan yang tadi super deras baru saja reda.

Dia menapak aspal basah menuju motor bebek agak-tua nya.



Berpapasan dengan pria berpakaian jas hitam ber-tas jinjing kulit, tersenyum ramah. Dia hanya mengangguk seadanya. Masih mengaduk tas.

"Barusan reda mas" Orang itu mengiringi.

"Inggih pak". Ah, itu dia, tangannya meyenggol benda familier, bersuara gemerincing kunci.

"Saya seharian belum makan"

"Hehehe, saya juga pak, saya biasanya makan pagi sama malam. Siang gak pernah." Walah, kuncinya masuk lebih dalam di sela-sela headset dan ipod yang entah tahun berapa dia terakhir kali memakainya.

"Saya lapar"

"Nggih, saya juga. Tadi gak sempat sarapan, berangkat ngajar-nya kesiangan". Menarik keluar kunci. Dan berbonus benda merah kusut pipih panjang. Seperti spagetti dengan saus merah entah apa. Uh, ngapain pakai acara tersangkut kabel headset segala. 

"Bisa minta uang Dik?"

Akhirnya sampai juga ke motor,  punya istrinya yang dibeli sepuluh tahun lalu. Mengaitkan tas plastik besar ke kait depan tidak mudah. Akhirnya dia putuskan untuk dipangku saja, tapi nanti pasti agak kikuk ketika motor jalan.

"Kalo lapar, saya tadi beli roti pak. Buat ulang tahun istri. Bukan yang besar, saya tadi beli yang kecil juga, empat buah. Saya buka jatah saya ya, kita bagi dua, saya juga lapar "

"Gak suka roti mas" 

Panggilannya sudah berubah.

"Oh, mari makan ke rumah saja ya. Istri saya masakannya enak lho. Sekalian njenengan bawakan tas plastik roti ini, saya kesulitan bawa"

"Wah, gak usah mas"

"Oh, ya sudah" mengambil uang dua ribu tuk tuk bayar parkir. Hampir saja plastik rotinya terjatuh,

"Uang saja mas"

"Maaf, apa pak?"  Memandang aneh karena si bapak tak mau membantu. Bukannya ingin dibantu sih.

"Saya minta sodaqoh pak" panggilannya berubah lagi

"Apa itu pak". Kunci kontak motor akhirnya terpegang juga, sebuah prestasi yang patut diacungi jempol karena isi tas tidak berhamburan keluar. Eits, gak usah mengacungkan jempol, nanti rotinya jatuh.

"Saya minta sumbangan"

"Sebentar pak" sulit juga ngobrol sambil membetulkan letak kotak kue dengan jari-jari tangan kanan menjepit lembaran dua ribuan. Akhirnya dia gantung saja di setang sepeda sebelah kiri.

"Sumbangan apa pak?"

"Ya sumbangan uang mas" hm, panggilan si bapak ini tidak konsisten. Tetapi kalo dipikir, pakaian si bapak juga tidak konsisten dengan "pekerjaannya"

Dia memandang jas yang dikenakan, juga tas jinjing kulit yang sudah pasti jauh lebih mahal dari tas ransel ber-resleting-semi-jebol yang dia pakai. Spontan lihat sepatu, nah itu dia, juga kulit. Secara penampilan dia kalah jauh, karena kemana-mana dia pake sepatu jogging, bahkan saat mengajar dengan atasan batik.

"Ini pak" dia serahkan uang dua ribu yang sedianya buat parkir.

Si bapak setelah menerima langsung ngeloyor pergi. 

Ambil dua ribuan lagi deh. Ngobrak-abrik isi tas. Kali ini cari recehan, mungkin ada koin lima ratusan empat buah.

Ada.

Sepanjang jalan dia merenung. Dengan kue ultah yang dia putuskan untuk ditenteng sambil melajukan motor pelan-pelan dengan satu tangan.

Bagaimana jika bapak itu punya anak?

Bagaimana jika dia "bekerja" seperti itu untuk menyekolahkan anaknya

Bagaimana jika anaknya tak tahu kalo bapaknya dinas di emperan sebuah toko roti

Dia bahkan tak tahu kalo penghasilan bapak itu halal. Karena beda dengan tukang parkir, meski sama-sama mendapatkan dua ribu, tukang parkir memiliki deskripsi kerja yang jelas.

Tapi dia tahu satu hal

Dia gak mau nanti anaknya malu karena bapaknya "bekerja" sebagai peminta-minta di jalan.


#Megatruh

Wednesday, February 17, 2016

Allies in The Dark


 Bertanya kepada seseorang dengan bidang yang sama sekali lain, bahkan bertolak belakang, ternyata (kadang) ada gunanya.

 Bukan, solusinya bukan dari situ tentu saja, namun pertanyaan-pertanyaan yang jarang kita pikirkan karena sudah terbiasa berkutat di sana akan muncul, dan dari pertanyaan-pertanyaan yang tidak biasa itu (mungkin) akan muncul solusi.

 Kadang kita perlu palu yang berbeda untuk mengawali memecahkan sebuah masalah, begitu sudah ada sedikit retakan bisa kita lanjutkan membongkar dengan palu favorit yang kita kenal baik.

Tuesday, February 16, 2016

Follow



 Kata-kata teraneh yang kubaca: ku habis follow kamu, folback aku ya...

 Aneh sekali, bukankah mem-"follow" sesuatu itu seharusnya murni karena ingin, bukan karena diminta?

 Follow menurut saya beda dengan Friend. Berteman bisa dengan siapa saja. Bagaimana dengan follow/mengikut? Well, saya hanya mengikuti hal-hal yang menarik bagi saya, baik itu dari teman atau bukan. Saya gak ingin terpaksa mem-follow teman yang postingannya seputar keluh kesah pribadi, rumah tangga atau penuh dengan barang dagangan yang tidak saya perlukan. Ada teman lain yang cocok atau senang dengan posting semacam itu, buat bahan gosip, tapi tidak untuk saya, :)

 Juga beberapa yang mirip semacam berikut (tulisan aslinya, berikut kesalahan ketik maupun penggunaan kata-katanya)

Followback!!!

"If you not followback me - I was unfollow you"

...


 #edisiError

Sunday, February 14, 2016

Paradox Dua iPad Alfa Beta.


 Saat hanya punya satu iPad; Alfa dan Beta selalu berebut.

 Alfa selalu pegang iPad, di manapun, kapan pun. Bahkan tidur pun sambil pegang iPad; terbangun kalau iPad diambil. Kebiasaan yang dimulai bahkan sejak sebelum dia umur setahun.

 Saat dek Beta lahir, dan si adek mulai mengenal iPad, adek harus menunggu Alfa tidur jika ingin main iPad, atau curi-curi kesempatan saat si kakak sedang asyik main mobil-mobilan, dan segera lari ketika kakak mendekat.

 Adakalanya saat adek sedang asyik dengan Animal Zoo tiba-tiba kakak mendekat dan terjadilah...

 Setelah punya dua;

 Mereka sering main mobil-mobilan berdua. Main pasaran, buat toko-tokoan, pura-pura jadi penjual es krim keliling, adek memasak mie dan ayam buat kakak, ibuk dan ayah. Apa saja selain main iPad.

 -_-

 iPad hanya untuk teman berangkat tidur Beta. Alfa kalau ngantuk malah ngajak ngobrol ayah sampai tertidur, tanpa menyentuh iPad sama sekali.

 Kalaupun mereka main iPad, mereka main iPad BERDUA. Alfa mengajari Beta berbagai permainan sampai bisa, kemudian sang kakak melihat di belakang adek yang sedang asyik main sambil sesekali memperingatkan jika adek bingung atau belum tahu sesuatu. Juga sering lihat film atau foto berdua sambil saling tukar cerita.

 iPad yang digunakan adalah iPad yang lama.

 #Kinanthi

Aturan


 memang dibuat untuk dipatuhi

 atau dilanggar.

 Tapi harus ingat, pelanggar aturan akan dikenai sanksi.

 Jadi, jangan bangga jika melanggar aturan

 tapi lari dari sanksi.

#Megatruh
#EdisiError

Tuesday, February 9, 2016

Sunday, February 7, 2016

The New Setup

 I move the ride cymbal to the left to accommodate my open handed playing practice.

 Planned to place ride-crash cymbal on the right, but for now, I have 10" splash, 12" china and a tambourine, :)

 Oh, and I place the cowbell so it hit by my left pedal, alternate between cowbell, hi-hat and left bass-drum-pedal,  :P

 I wish I had 8" tom, ...

Thursday, February 4, 2016

#SupernovaIEP @deelestari

 Menjelang dibukanya pre-order Supernova Inteligensi Embun Pagi, hampir semua toko buku online mengalami crash/hang/down. "Peretas" sedang beraksi? :D

Nina Bobo

  Mata si buah hati perlahan-lahan terkatup, berangkat ke alam mimpi. 

 Tiada bosan ku jadi saksi keajaiban kecil ini tiap malam.

Wednesday, February 3, 2016

Teror Hitam

 Pagi ini sebelum ngampus seperti biasa teriak-teriak di loteng dulu. Namun kali ini lain, jika biasanya langsung nggebuki drum sekitar sejam atau dua jam, kali ini tanganku meraih tuts piano. Nyalakan, pilih stereo grand piano, kaki meraih sustain secara otomatis.

 Kumainkan  Terlalu Lama Sendiri dari Kunto Aji.

 Eh, tunggu

 ada yang aneh.

 Aku bisa memainkannya dengan lancar.

 Padahal pake nada aslinya, nada dasar A. Tangga nada dengan tiga tuts hitam di piano.

 Wow, ulang lagi ah.

 Dan benar saja, jari-jari ini dengan santai menekan AMaj7, kunci dengan dua tuts hitam. Juga DMaj7 (atau F#m/D bagi yang tak terbiasa dengan nama serem).

 Hm, sejak kapan aku bisa main kayak gini? Biasanya selalu terintimidasi dengan tuts-tuts hitam.

 Biasanya paling ekstrim (selain yang normal C), aku hanya main piano dengan nada dasar G, F. Paling mentok ya D.

 Mungkin "Practice make Perfect" ada benarnya. (gak juga, aku jarang berlatih :D )





Saturday, January 30, 2016

Week End.

 Kegiatan akhir pekan, :)



Thursday, January 28, 2016

Budaya


 Pagi.

 Alfa, Beta dan ibuknya sudah berangkat.

 Kututup semua pintu depan.

 Naik ke loteng.

 Nyalakan macbook. Hari ini ingin belajar pattern drum jazz-bossa atau swing tapi yang open handed, koordinasi kaki-tangan-ku masih kacau untuk genre ini.

 Kucari lagu-lagu Laura Fygi.

 Nemu yang lumayan cocok, All of Me.

 Putar.

 Loncat ke kursi drum, selagi masih intro bass.

 Suara alto Laura mulai masuk.

 Siap-siap, stik di tangan, drum akan masuk  dalam tiga, dua , satu, ...

 "dung, blang gen tak tung dung, blang gentak tung dung ..."

 ....

 Suara campursari model koplo masuk ke telinga dengan kekuatan seperti tetangga yang punya hajat nikahkan putrinya.

 Eh, tunggu...

 Memang ada tetangga yang nikahkan putrinya. Dan itu hari ini, walah.



 #####

 Telentang di karpet,.

 Stik drum tersisa satu, entah di mana pasangannya.

 Teriakan Laura Fygi yang biasanya bergema di kamar atas kalah dengan "Lingsir Wengi" yang dilanjut dengan "Burung dalam sangkar" nya Panbers yang dilanjut dengan "Manusia Biasa" Radja. Entah bagaimana si juru sound bisa memiliki playlist ajaib macam itu.

 Tentu saja speaker mungil 3 Watt di kamarku tak bakal bisa mengimbangi tumpukan cabinet 5000Watt yang volumenya di-set maksimal.

 Mandi aja. Mengistirahatkan telinga di kampus.

 Lah, pas di kamar mandi, suara sound system tetangga lambat laun dikecilkan dan akhirnya mati, weleh.

 OK, gakpapa. Teruskan mandinya.

 Selesai mandi. Nyalakan lagi Laura Fygi. Stik satunya ternyata menggelinding ke bawah sofa, tak masalah, vokal masuk, dan drum masuk dalam tiga, dua, satu...

 Dok dok dok, kulonuwun.

 :(

 Tetangga memintaku datang ke rumahnya, kenduri. Standart rutin acara pengantin di sini.

 Rupanya itu yang bikin suara musik berhenti.

 Gak bisa pura-pura tidak ada di rumah, sepeda motorku kuletakkan di luar.

 Gagal nge-drum lagi.

 Untung sudah mandi, cuma perlu pakai celana yang "pantas", tak sampai semenit aku sudah di rumah tetangga. Terlambat beberapa detik, kudengar tetangga lain yang diundang sedang menjawab salam dari pemimpin doa.

 Hiburanku pagi ini adalah, doanya dilantunkan dalam bahasa jawa kuno, bahasa yang familier bagiku, dan sudah lama tak kudengar, sejak lulus SMU.

 Dan doa itu lama sekali, sangat menyenangkan, aku tahu artinya hampir keseluruhan sedangkan tetangga lain memiliki tatapan kosong dan mengucapkan "nggih", pengganti "amin", dalam timing yang kurang tepat. :)

 Memang, aku tahu bahasa jawa klasik, tetapi aku tidak bisa membungkus nasi golong kenduri. Dari dulu selalu dibungkuskan orang.

 Lha sekarang ini, semua celingak-celinguk, karena gak ada yang tahu caranya.

 Akhirnya, dengan sedikit improvisasi, jadilah ini, :)










Monday, January 25, 2016

Akhir

Tarik napas....

Satu.

Dua.

Tiga.

Keluarkan...

###




Nun di atas sana, di dimensi yang hanya terlihatt  sang Mata, Ishtar sang Dewi kesuburan tersenyum. Dia telah melakukan tugasnya, membawa cinta ke mereka, dan perang. Gio dan Diva di sampingnya

Seperti mata uang. Tak laku jika cuma ada satu sisi.

Seperti Gio dan Diva. Jika satu lenyap, satunya akan mencari hingga pelosok rimba terdalam.

Cinta dan perang, terlihat bertentangan.

Keduanya adalah Ishtar.

###

Hening.

Bahkan Alfa pun terlelap.

Hanya Bodhi yang  terjaga, menatap damai ketiga teman gugusnya.

###

"Cuma gitu doang?" Dimas protes, berusaha merebut wireless keyboard dari pangkuan Reuben.

"Gak boleh, aku ingin endingnya kayak gitu, elegan..."

"Elegan apaan, tuh super menggantung. Sudah capek-capek membangun plot dan banyak twister, cuma diakhiri dengan keheningan, gak bisa..."

"Kan karakter Bodhi juga khas gitu, diakhiri dengan pesta? Malah gak banget, Bodhi gak punya tempat"

"Halah, kamu memang naksir Bodhi dari dulu, padahal itu ciptaanku kan"

"Jangan mengalihkan topik, endingnya harusnya..."

###
Sudah banyak kertas tempelan tercoret.

Dinding yang setahun ini penuh dengan kertas plot lambat laun mulai bersih, sudah pindah ke MacBook.

Satu kertas belum terlepas, bahkan belum ada tulisannya. Cuma kata #Ending tanpa isi.

Dewi Lestari, si empunya kertas, sedang sibuk bikin roti.




The Sarcastic Magnus, :)


 “I was proud that the four of us responded as a team. In perfect unison, like a well-oiled combat machine, we turned and ran for our lives.”

 Excerpt From: Riordan, Rick. “Magnus Chase and the Sword of Summer.” 

Saturday, January 23, 2016

Joke Agreement, :)

 Among musicians, there's often silent agreement about joke or not. Just like this (I got it at the comment on Scott's Bass Lesson in Youtube)



 They're having fun and not offended at all. I like this.

Horee...

Over 100000 pageviews, :)




Friday, January 22, 2016

Mulai nge-Mix Lagi

 Nge-track lagu lamaku yang hilang.

 Dulu menggunakan gabungan Cool Edit Pro (Windows), Fruity Loop (Windows), Audacity (Linux), dan Hydrogen (Linux).

 Sekarang full menggunakan GarageBand.

 Judulnya  Entahmengapadiriinimenjaditakberdayasaatkautiadalagidisisiku.

 Masih dalam tahap membuat ketukan dan MIDI section.

 Gitar dan vokal belum ada,





Thursday, January 21, 2016

Legal



 Saya penasaran apakah share tentang jus kulit apel, sawo, durian atau "cara meregenerasi" gigi, atau mencegah serangan jantung dengan rutin minum es kulit lemon  di pagi hari itu legal, apakah itu tidak termasuk mallpraktek? Karena jika saya melakukan apa yang diminta oleh share terakhir, maka akan sangat mungkin dipastikan saya bakal berakhir di rumah sakit.

 Banyak sekali share/tips/berbagi di grup-grup percakapan, media sosial, blog, ... 

 Tentu saja itu bagus, tetapi apakah sudah pasti aman untuk dilakukan?


 Saya seringkali membaca artikel yang di-posting ternyata adalah hoax. Lebih parah lagi, ketika kita memberitahu bahwa itu berita palsu, si pen-sharing malah kadang tersinggung dan menulis "saya hanya ingin berbagi kebaikan, apakah salah?". Lihat bahwa yang men-sharing pun tidak mengerti konsep hoax.

 Pertahanan terbaik untuk hal-hal tidak jelas seperti di atas agar tidak menghancurkan diri-sendiri adalah dengan berhati-hati. Jangan minum air rendaman tembakau, jangan minum cuka secara langsung, jangan melakukan sesuatu yang tak masuk akal meski itu demi kesehatan,..., kita tak akan bisa menuntut siapapun jika terjadi hal-hal yang tak diinginkan.

 Hati-hati, ...


Jungle Snare, Reggae and Open Handed Practice



 I'm guitarist, :)

 Just practicing hand-foot coordination with open handed playing. It's terrible of course, :).

 The paradox I just found is I never like my main snare sound. But after I got the jungle snare (with a lot cracking and popping sound), I realized that my main snare sound is cool, for me, :P.


 I used Bruno Mars "The Lazy Song" as backtrack.




Wednesday, January 20, 2016

Where's iTunes Repeat Button?

 By default, it's disabled so we have to click Control menu and choose Repeat option




Tuesday, January 19, 2016

A Little Upgrade



 Just got the jungle snare. A little 10 inch beast it is.

 Been searching for two full years (exactly, I started to hunt it after watching X-Mas rendition using this jungle snare).

 Of course it available online everywhere, except Indonesia.

 There's one online shop, but when I ordered it (and pay it without thinking), it turned out that the stock is unavailable.

 :(

 Keep searching...

 I accidentally opened some web page selling sport and music equipment. And it happened that this jungle snare is there. Maybe there's no one know it because it has no picture of it in the display, just blank white with serial code of it.

 Having searched it for two years, I know that's the one I've been looking for.

 And it out of stock.



 So I emailed the owner of the shop, ask if it could be preordered because I read that the shop is officially affiliated with Sonor.

 They promised will get the snare for me. But before it happened, the representative of the shop emailed me to inform that there one old stock at their display (offline shop) at the mall, at discount price!!! She asked me if I want to buy that instead, of course...

 So, here is my 'new' mini setup. If you wonder what the big tom at the left doing, I play drum with open and close handed with same portion.









Thursday, January 14, 2016

Cajon


 Banyak sekali kegunaan Cajon. 

 Untuk tempat duduk, nyaman.

 Untuk menyimpan kabel-kabel, tak akan terpuntir-puntir di dalam tas saat berangkat ke tempat pementasan.

 Untuk tempat pedal efek gitar jika ada.

 Dalam posisi miring sangat ideal digunakan untuk meja lesehan saat menulis .

 Tempat sandaran gitar.

 Tempat kopi, gula, sendok, cangkir, jika berencana nge-jam sambil ngopi di suatu tempat. Hal ini juga menjadi nilai plus karena kopi menyerap kelembaban sehingga cajon tetap kering dan nyaring.

 Tempat menyimpan stik drum.

 #edisiError

Monday, January 11, 2016

Thank's to Thief


 Hari masih pagi.

 5.30

 Belum sempat nyanyi lagu 'siapa mau mandi sama ayah' (bikin lirik sendiri dari lagu 'if you happy and you know it') eh Alfa minta mandi duluan,  sepertinya biar bisa main truk-kecebur-laut lebih lama.

 Beta main iPad, ibuk menggoreng ikan paus (kata adek).

 'Ayah, ayah mandi bareng sama mas Yayan' kata Alfa.

 'OK', tutup kamar mandi, mandi juga. Loh, apa nggak sempit ada bak mandi Alfa? Gak juga, bak mandi Alfa, truk dan segala pelabuhan serta jalan kereta api ada di luar kamar mandi, ...

 Katanya mandi bareng? Memang,

 Mandi bareng tak harus berada di tempat yang sama kan? :)

 Selagi proses sabunan adik teriak-teriak

 'Ibuk..., iPad...'

 (hm, bukannya adek tadi main iPad?)


 'Tunggu dulu dik, ibuk masih goreng ikan'

 'Ibuk..., iPad...'

'Iya, tunggu sebentar ini ibuk masih menggoreng, lihat ini, nih ibuk goreng ikan'

'Ibuk, adek mau ikan'

'iya, ambil satu, awas  masih panas'

Selesai mandi, Alfa juga minta pake handuk, mandinya juga diakhiri. Membantu Alfa mengenakan baju Thomas and Friend, sisiran, bedakan, pake sendal jepit warna pink dan mengantar  ke rumah budhe tuk diantar ke sekolah.

Alfa sudah beranjak dari kamar ke pintu depan yang terbuka.

'Cepat tutup pintu ayah, adik selak ikut keluar'

Yup, dia berangkat ke sekolah dengan kostum seperti itu; gak mau pake seragam,  juga sepatu.

'Ndak mas, adik mau mandi kok, '

Kugendong Alfa ke rumah budhe.

Kembali dari rumah budhe, ternyata adek masih heboh minta iPad.

Lha memang tadi ditaruh mana dek?

Adek sepertinya bingung njawabnya, cuma menunjuk jalan.

Hah? Dia taruh iPad di jalan?

"Di sana yah" sambil nunjuk tempat dia biasa duduk main bambu air (tanpa iPad)

Lha nggak ada gitu lho.

"Loh, sudah diambil ayam" kata Adek

....

Dan serasa dapat pencerahan...

"Dek, tadi iPadnya dipinjam?"

"Iya"

"dipinjam siapa?"

"Pak Pak" (itu adalah sebutan Alfa Beta untuk orang dewasa tak dikenal)

iPadnya hilang dirampas orang. Sejak tadi adek berusaha untuk memberitahu, tapi belum punya kosakata yang lengkap untuk menceritakan. ("Ibuk, iPad..." mungkin maksudnya adalah "Ibuk, iPadnya di ambil orang")

Jam 5.30

Dan kami langsung lemas, melihat kemungkinan bahwa bisa saja Beta yang hilang.

Thanks to thief for not take our daughter.



Kembalian



 Ada dua kejadian sedikit mengganjal yang biasa saya alami namun sering berulang sehingga ganjalannya semakin menumpuk dan akhirnya tumbanglah tumpukan itu.

 Pertama adalah es degan bakar.

 Es, ok sudah tahu.

 Degan? Itu kelapa muda.

 Bakar? Yup kelapa muda tersebut dibakar dulu sebelum dikupas.

 Bagaimana hasilnya? Kelapa muda yang dibakar kemudian disajikan dengan es?

 Well, saya lebih suka kelapa muda yang tidak dibakar, dengan atau tanpa es.

 Ganjalannya bukan di situ. Ketika saya masih hampir tiap minggu melakukan perjalanan pulang pergi ke jogja naik motor, saya kadang-kadang mampir tuk beli es degan bakar tanpa dibakar. Ada satu warung langganan saya.

 Bukan karena warung terkenal atau dapat tips dari teman, namun karena warung itu selalu sepi sedangkan yang lain kebanyakan ngantri tuk menikmati kelapa mda yang dibakar dan di kasih es.

 Selalu sepi tiap saya lewat daerah es degan bakar situ, dan akhirnya saya selalu ke warung itu.

 Lha mana ganjalannya? Tak ada yang mengganjal, sepertinya itu cerita yang sangat normal.

 Nah, setiap saya selesai dan membayar, si pemilik warung selalu tidak punya kembalian yang pas. Sehingga saya selalu diberi kerupuk sebagai ganti kembaliannya.

 Satu kali, ok. Mungkin karena warung memang sepi.

 Dua kali, dapat kerupuk lagi.

 Tiga kali, kerupuk (sepertinya ini kerupuk minggu lalu yang gak laku-laku).

 Well, saya gak suka kerupuk. Lagipula, mana ada orang setelah minum es baru makan kerupuk?

 Keempat, ..., kubayar dengan uang pas. Eh malah ditawari kerupuk.

 Ok, gak lagi ke tempat itu. Dan karena yang lain selalu ngantri, gak pernah lagi beli es degan bakar tanpa dibakar.

 Kehilangan satu pelanggan karena tak punya kembalian.

 Ehm, mungkin kehilangan semua pelanggan (yang jumlahnya cuma satu).

 Mungkin dulu ada pelanggan lain yang lari karena hal yang sama.

 Mungkin juga warung itu sepi karena kerupuk.

....

Yang kedua bukan karena kerupuk, karena kerupuk merupakan bagian dari paket sate langganan.

Entah kenapa harga sate di sini selalu nanggung sehingga meski saya beli satu porsi atau dua porsi, jumlah uang besar yang saya berikan selalu memiliki kembalian dua ribu atau seribu.

Dan selalu tidak ada kembalian sehingga penjual berinisiatip untuk "kembaliannya saya bawa dulu ya".

Namun jika saya beli ke tempat itu lagi, "tabungan" saya tidak pernah dihitung.

Tentu saja dengan sedikit ribut saya akan bisa mendapatkan hak saya, namun ada energi, emosi dan tekanan darah yang teraduk-aduk. Jadi biarkan saja.

Tentu saja sedapat mungkin saya selalu mengusahakan untuk tidak beli di situ. Kalaupun terpaksa, saya selalu membawa uang pas, meskipun dengan tambahan tumpukan koin receh.

Saya bukan lagi pelanggan setia di situ. (Saya pelit, :P )

Akhirnya sepi juga.

Hal kecil yang ditumpuk memang bisa fatal.

Tentu saja di sisi lain. Jika kita awalnya hanya memperhitungkan barang dagangan sebagai modal usaha, kita juga perlu menambah "persediaan uang kembalian" sebagai faktor yang penting juga. Pastikan kita selalu punya uang kembalian.

Ehm, satu hal lain. Selama saya beberapa tahun di Jogja, sekecil apapun, saya selalu menerima uang kembaliaan (bukan permen atau kerupuk, atau entah apa itu), meski itu seratus rupiah, di toko atau warung manapun, baik toko besar ataupun kecil. Itu sangat mengesankan.

Prasangka/Prospek/Prevent?


 Pernah menerima broadcast tentang kecelakaan?

 Dengan korban kritis tak sadarkan diri dan telepon genggam tak dapat diakses karena berpassword, yang kita tahu hanya nama dan alamat seadanya dari KTP. Biasanya broadcast tersebut memang dirancanc untuk disebar seluas-luasnya dengan harapan salah satu penerima pesan merupakan kenalan si korban dan segera mengambil tindakan yang diperlukan (menghubungi keluarga, ke rumah sakit, dsb)

 Bagaimana jika korban tersebut adalah kita? Semoga tidak terjadi. Tentu saja kita harus bersiap untuk keadaan seperti itu.

 Pencegahan, tambahkan nomor hp kita dan keluarga di dompet. Agar penolong tahu siapa yang harus dihubungi. Kelemahan model seperti ini, jika dijambret tentu saja pencopet juga tahu nomor kita dan keluarga.

 Perlu kata kunci atau perjanjian dengan keluarga jika sewaktu-waktu ada keluarga ditelepon tentang keadaan kita. Catat nomor telepon kost dan nomor hp beberapa teman dekat dan letakkan di rumah di mana semua anggota keluarga tahu untuk cross-check (jangan ditaruh di dompet)

Tentu saja broadcast seperti itu juga menjadi bahan ide untuk penjahat yang kreatif.


 Bagaimana jika kita dalam posisi penerima broadcast tersebut dan ingin untuk menolong, namun was-was kalo itu adalah modus penipuan?

 Mudah mengidentifikasi penipu atau bukan. Penipu akan minta untuk jangan menelepon atau menghubungi polisi.

 Penipu akan minta untuk menghubungi nomor hp tertentu (yang sewaktu-waktu dapat dibuang), bukan nomor instansi semacam rumah sakit atau kepolisian.

 Penipu juga akan jelas-jelas meminta untuk transfer sejumlah uang, mungkin dengan beberapa alasan yang logis walaupun berputar-putar.

Konsisten


 Sudah sepuluh tahun sejak terakhir kali menyusuri jalanan di Sawojajar

 Segalanya masih tampak sama, tentu saja dengan upgrade di sana-sini, tapi feel Sawojajar yang kurekam bertahun-tahun lalu tetap sama dengan yang terasa sekarang

 Jalan yang kebayakan dilapisi paving kecuali jalan besar yang beraspal mulus

 Perempatan yang hampir ada tiap limapuluh meter. Papan-papan nama jalan "Danau ..."

 Perasaan familier yang sama: "Jangan-jangan kesasar ke Wendit, atau balik lagi ke pintu masuk depan atau ke kuburan Buring..." masih terasa.

 Yeah, semua masih sama.

 Juga kemacetan di Ranu Grati, meski ada peningkatan sedikit. Jumlah kendaraan yang makin membludak menyebabkan antrian di lampu merah dekat jalan masuk yang dulu paling parah dimulai dari jembatan, kini sudah dimulai sejak pompa bensin (yang dulu sering kusinggahi tuk mengisi bensin karena banyak mbak cantik yang bertugas di situ).

 Hawa panas antrian masih terasa sama.

 Ups, ada yang beda sedikit.

 Karena dulu belum ada, maka dulu tidak akan merasakan sensasi ketika sedang asyik ngantri lampu merah sambil menekuk muka tiba-tiba jari-jari kaki terlindas becak motor yang nekat menerobos.

 Dulu belum ada becak motor, bisa menunggu lampu merah sambil menyanyi atau mengumpat hawa panas dengan tenang.

 (masih sakit)

Wednesday, January 6, 2016

All of Me



 All of me, why not take all of me?
 Can't you see I'm no good without you?
 Take my lips, I want to lose 'em
 Take my arms, I'll never use them

 Your goodbye left me with eyes that cry
 How can I go on, dear, without you?
 You took the part that once was my heart
 So why not take all of me?

 Come on and take, take all of me





 Disse alguém que há bem no coração
 Um salão onde o amor descança
 Ai de mim que estou tão sozinho
 Vivo assim, sem esperança

 A implorar alguém que não me quis
 E feliz, bem feliz seria
 Coração meu, convém descansar
 Soluçar mais devagar

 Disse alguém que há bem no coração
 Um salão, um salão dourado onde o amor sempre dança
 Ai de mim que só vivo tão sozinho
 Vivo assim, vivo sem ter um terno carinho

A implorar alguém que não me quis
E feliz então eu sei, bem sei que não mais seria
Meu, meu coração sem esperança
E vive a chorar, soluçar
Como quem tem medo de reclamar

(Laura Fygi "Disse Alguem (All Of Me)")

Salut (Lagi)

 Lewat pertigaan antara Dieng dan Galunggung?

 Di sana ada seorang bapak supeltas yang mengatur kendaraan yang mau menyeberang atau mau terus.

 Beda dengan supeltas lain (mungkin ada yang lebih familier dengan sebutan "Pak Ogah", cepek?), bapa supeltas yang ini jarang menggunakan peluit. Hebatnya, jarang ada yang tidak patuh.

 Mungkin karena gerakannya yang energik, mungkin karena gerakannya yang sopan (gesture-nya sangat "beda" sekaligus menghibur), mungkin karena tidak pernah teriak atau mengumpat, mungkin karena tegas namun ramah (jika ada yang nekat mau menerobos beliau dengan tegas pasang badan sambil bilang "sabar nggih, sabar...")

 Apapun, sungguh menyenangkan melihat pemandangan itu di pagi hari.

 (Mungkin karena gerakan yang energik, atau mungkin karena lalu lintas sudah lengang, jam 9 pagi sudah tidak di situ)

Tuesday, January 5, 2016

Senjata paling ampuh menghadapi tukang debat adalah diam.


 Lihat, jika kita berusaha mengimbangi atau mematahkan argumen dia, kemungkinan besar akan kalah.

 Ada kemungkinan kecil kita bisa mengalahkan dia dalam debat, tetapi apakah sepadan dengan waktu yang habis dan tenaga yang terkuras? Mungkin tidak.

 Hal yang paling hemat energi dalam situasi debat yang menurut kita gak begitu penting adalah diam. 

 Pendebat akan capek sendiri. 

 Bagaimana jika pendebat ngotot minta kita njawab pertanyaan-pertanyaan pancingan dia? Pertanyaan-pertanyaan yang jika dijawab akan membuka pintu debat lebar-lebar

 Dalam situasi ini kita perlu, menambahkan energi sedikit untuk berpikir, sebenarnya apa maunya dia? Dia suka jawaban apa? Dia setuju tentang apa?

 Nah, jika menemukan jawaban, jawab pertanyaan-pertanyaan pancingan/jebakan dengan jawaban yang tidak mungkin didebat. Jawaban-jawaban yang menunjukkan bahwa kita setuju sepenuhnya dengan dia (walaupun kenyataannya lain).

 Nah, dengan jawaban semacam itu, kemungkinan besar kita akan segera lepas dari dia. Apalagi yang akan didebat jika kita sepenuhnya setuju dengan dia? Yup, jangan beri bahan bakar dan amunisi untuk bahan debat dia.

 Tentu saja semua saran di post ini bisa dibalik jika kita ingin efek sebaliknya (misal ketika tiba-tiba kita ingin berdebat habis-habisan dengan seseorang).

 Selamat mencoba, :)
 #edisiError

Sosialisasi

 Internet membuat kita dapat berkomunikasi walau jarak berjauhan. Ingin ngobrol tapi jarak ribuan kilo? Tinggal buka Facebook, Skype, Line, WhatsApp, .... Aplikasi-aplikasi berlomba-lomba untuk menyuguhkan fitur yang diinginkan pengguna sekaligus menyingkirkan fitur yang dianggap merepotkan.

 Masih ingat Koprol? Platform media sosial berbasis lokasi buatan Indonesia yang diakuisisi Yahoo? Yeah, mungkin ada yang malah baru dengar sekarang.

 Kenapa tidak begitu bisa bersaing? Begini, Koprol memiliki fitur semacam check-in ke suatu tempat sehingga bisa mengobrol dengan orang orang di tempat tersebut. Misal check-in ke sebuah kampus, kafe atau sekedar tempat pemancingan.

 Awalnya memang tampak menjanjikan, kita bisa dapat kenalan baru atau ngobrol dengan teman yang berada di tempat yang sama.

 Eh, tetapi fungsi lokasi Koprol agak kurang dapat diterapkan, mungkin karena dia lahir prematur. banyak pengguna Koprol yang menggunakan komputer/laptop sehingga check-in ke sebuah loasi dilakukan secara manual, hal yang aneh karena kita bisa saja check in ke sebuah kafe padahal kenyataannya sedang di kamar  kost.

 Bagaimana dengan pengguna smartphone? Saat Koprol rilis, masih jarang ada smartphone degan fungsi lokasi (GPS, aGPS, ...); fitur check-in tetap dilakukan secara manual.

 Ada satu yang mungkin meleset juga dari tujuan internet atau sosial media (menghubungkan dua orang yang berjauhan secara maya). Jika kita berada di lokasi yang sama, kenapa harus ngobrol secara online? :)

 (Tentu saja sekarang banyak pasangan atau serombongan sahabat yang duduk di meja kafe dan asyik dengan gadget-nya masing-masing tapi itu soal lain)

 Mungkin juga timing kelahiran yang terlalu cepat sehingga Koprol kurang banyak peminat (atau banyak peminat namun tak punya sarana). Dan seingat saya fitur check-in koprol tidak dapat otomatis: misal datang ke sebuah warung dan Koprol otomatis check-in di situ, atau setidaknya menawarkan untuk check-in. (Belakangan fitur ini muncul di aplikasi FourSquare).

Atau...


(abaikan)

(gak penting)

#edisiError

Tuesday, December 29, 2015

Telur Pete Rebus Tumpang Nasi?

 Ambil mangkok tahan panas,

 masukkan dua telur ke dalamnya, (kulitnya nggak ikut ya),

 masukkan pete sesuai selera,

 masukkan bersamaan dengan menanak nasi di rice cooker,

 tunggu setengah jam hingga 45 menit.

 Selama menunggu akan ada bonus bau harum tercium di seluruh bagian rumah, :)

 Bersamaan dengan nasi yang matang, kita sekaligus mendapatkan lauk.

 Praktis, :)

 #EdisiError




Unlock Tracktion for Mac (redeem)

 I bought Behringer Xenyx QX1202usb, a wonderful cheap small mixer.

 Turn out that it has serial number or code in it case. It allowed us to get full access for Tracktion software.

 So I follow the instruction: register, got confirmation email, download.

 When running the software it prompt me to choose between unlock or continue trial. Of course I went to unlock route. But when I type my email and password it get error.

 Tinkering with it for some hours, the truth's hit me. Tracktion gave me T5 software link in my email. The license is for T4.

 So I download T4 manually (re-register with the same email address). Installed , ran , unlocked, and... succeed.

 And guess what, after I unlocked T4, I ran T5, and it suddenly became unlocked, a little surprise bonus..., :)






Monday, December 28, 2015

Ngalamania Generasi Baru


 Apa beda 'umak isa apa', 'aku ora nggawa libom', 'adepes rotom ku lagi mogok', 'umak apa wis nakam?', 'wis beli soak?'

 dengan

 'lesek lop', 'ewul', 'aro utem', 'siw utuk?', 'kawa sanap'

 ?

 Kelompok pertama adalah  bahasa walikan khas aremania jaman dulu, kelompok kedua adalah bahasa walikan aremania jaman sekarang yang sering saya baca di pasting media sosial.

 Apa bedanya?

 Bahasa Ngalam kelompok pertama, yang merupakan generasi awal bahasa walikan; hanya membalik kata-kata serapan; kata-kata non bahasa jawa, misal bahasa indonesia. Konon dulu digunakan sebagai sandi, karena penjajah sedikit banyak tahu bahasa indonesia dan tidak tahu bahasa jawa maka penggunaan bahasa indonesia dibalik. Ada beberapa pegecualian seperti kata 'beli' karena jika dibalik tidak dapat dibedakan antara 'ileb' dan 'ilep', maka kata 'beli' tetap dipakai secara normal tanpa dibalik.

 Karena bahasa ini merupakan bahasa yang berkembang  dan masyarakat pun berkembang. Dengan seiring perkembangan teknologi dan lahirnya generasi baru Ngalamania, bahasa ini juga berkembang, meski menurut saya menuju ke arah yang membingungkan.

 Eh, kenapa?

 Membingungkan karena generasi baru pemakai bahasa ini membalik kata-kata secara membabibuta. Tentu saja sejak awal memang tidak ada kaidah resmi bahasa walikan. Namun jika kita membalik semua kata termasuk bahasa jawa, percakapan akan menjadi mengerikan (setidaknya bagi saya) karena otak dipaksa menganalisis dan membalik secara nonstop.

 Dari dua kelompok contoh di atas, kelompok pertama lebih mudah dipahami (menurut saya), dan saya sudah familier dengan model pembalikan seperti itu selama bertahun-tahun.

 Kelompok kedua? Well, sepertinya saya harus mengkalibrasi otak dulu, :)


 #EdisiGakBisaTidur

Sunday, December 13, 2015

Heisenberg's Uncertainty Principle

 Di tukang fotokopi, menemukan ini terpajang di dinding.

 Kalau ingin MURAH dan CEPAT, jangan harap BAGUS.

 Kalau ingin BAGUS dan MURAH, jangan harap CEPAT.

 Kalau ingin CEPAT dan BAGUS, jangan harap MURAH.


Mungkin banyak yang tak setuju, tapi itu tulisan yang bagus.

:)

#edisiError

Friday, December 11, 2015

Kebijaksanaan Lokal.

 Kenapa orang tua jaman dulu melarang kita menyapu rumah di malam hari? Kalaupun terpaksa harus menyapu, sapuannya tidak boleh diarahkan keluar melainkan ke dalam untuk dibuang esok harinya?

 Mungkin (hanya kemungkinan), hal itu untuk menghindari barang-barang kecil berharga semacam anting-anting atau kalung emas tipis, atau simcard, yang tak sengaja terjatuh ke lantai ikut tersapu keluar. Karena pada malam hari disapu ke arah dalam, maka misal barang-barang berharga ikut tersapu, kita masih akan dapat mencarinya esok hari, saat cahaya terang, saat akan membuang hasil sapuan di malam kemarin.

Friday, December 4, 2015

Aturan

 Diciptakan untuk ditaati

 ... dan dilanggar.

 Tentu saja pelanggar aturan akan dikenai sanksi.

 Sanksi terhadap pelanggar seharusnya ada di tiap aturan

 Tetapi beberapa aturan dibuat tanpa sanksi untuk pelanggar, entah kenapa

 #edisiError

 (hampir tertabrak kendaraan di area Car Free Day)

Friday, November 27, 2015

3D (Polar/Cylindrical Coordinate) Animation of 2D Diffusion Equation using Python, Scipy, and Matplotlib

 Yup, that same code but in polar coordinate.

 I use nabla operator for cylindrical coordinate but ditch the z component.

 So, what's the z-axis for? It's represent the u value, in this case, temperature, as function of r and phi (I know I should use rho, but, ...)



import scipy as sp

from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import matplotlib.pyplot as plt

import mpl_toolkits.mplot3d.axes3d as p3
import matplotlib.animation as animation

#dr = .1
#dp = .1
#nr = int(1/dr)
#np = int(2*sp.pi/dp)


nr = 10
np = 10

r = sp.linspace(0.,1.,nr)
p = sp.linspace(0.,2*sp.pi,np)

dr = r[1]-r[0]
dp = p[1]-p[0]

a = .5

tmax = 100
t = 0.


dr2 = dr**2
dp2 = dp**2

dt = dr2 * dp2 / (2 * a * (dr2 + dp2) )
dt /=10.
print 'dr = ',dr
print 'dp = ',dp
print 'dt = ',dt



ut = sp.zeros([nr,np])
u0 = sp.zeros([nr,np])

ur = sp.zeros([nr,np])
ur2 = sp.zeros([nr,np])


#initial

for i in range(nr):
for j in range(np):
if ((i>4)&(i<6)):
u0[i,j] = 1.
#print u0

def hitung_ut(ut,u0):
for i in sp.arange (len(r)):
if r[i]!= 0.:
ur[i,:] = u0[i,:]/r[i]
ur2[i,:] = u0[i,:]/(r[i]**2)
ut[1:-1, 1:-1] = u0[1:-1, 1:-1] + a*dt*(
(ur[1:-1, 1:-1] - ur[:-2, 1:-1])/dr+
(u0[2:, 1:-1] - 2*u0[1:-1, 1:-1] + u0[:-2,1:-1])/dr2+
(ur2[1:-1, 2:] - 2*ur2[1:-1, 1:-1] + ur2[1:-1, :-2])/dp2)
#calculate the edge
ut[1:-1, 0] = u0[1:-1, 0] + a*dt*(
(ur[1:-1, 0] - ur[:-2, 0])/dr+
(u0[2:, 0] - 2*u0[1:-1, 0] + u0[:-2, 0])/dr2+
(ur2[1:-1, 1] - 2*ur2[1:-1, 0] + ur2[1:-1, np-1])/dp2)
ut[1:-1, np-1] = u0[1:-1, np-1] + a*dt*(
(ur[1:-1, np-1] - ur[:-2, np-1])/dr+
(u0[2:, np-1] - 2*u0[1:-1, np-1] + u0[:-2,np-1])/dr2+
(ur2[1:-1, 0] - 2*ur2[1:-1, np-1] + ur2[1:-1, np-2])/dp2)


#hitung_ut(ut,u0)
#print ut

def data_gen(framenumber, Z ,surf):
global ut
global u0
global t
hitung_ut(ut,u0)
u0[:] = ut[:]
Z = u0
t += 1
print t

ax.clear()
plotset()
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm,
linewidth=0, antialiased=False, alpha=0.7)
return surf,


fig = plt.figure()
#ax = fig.gca(projection='3d')
ax = fig.add_subplot(111, projection='3d')

P,R = sp.meshgrid(p,r)

X,Y = R*sp.cos(P),R*sp.sin(P)

Z = u0
print len(R), len(P)



def plotset():
ax.set_xlim3d(-1., 1.)
ax.set_ylim3d(-1., 1.)
ax.set_zlim3d(-1.,1.)
ax.set_autoscalez_on(False)
ax.zaxis.set_major_locator(LinearLocator(10))
ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))
cset = ax.contour(X, Y, Z, zdir='x', offset=-1. , cmap=cm.coolwarm)
cset = ax.contour(X, Y, Z, zdir='y', offset=1. , cmap=cm.coolwarm)
cset = ax.contour(X, Y, Z, zdir='z', offset=-1., cmap=cm.coolwarm)

plotset()
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm,
linewidth=0, antialiased=False, alpha=0.7)

fig.colorbar(surf, shrink=0.5, aspect=5)

ani = animation.FuncAnimation(fig, data_gen, fargs=(Z, surf),frames=4096, interval=4, blit=False)
#ani.save('2dDiffusionfRadialf1024b512.mp4', bitrate=1024)

plt.show()





.






100x100 size

Thursday, November 26, 2015

The Wrong Code Will often Provide Beautiful Result, :)

 It means to compute 2d diffusion equation just like previous post in polar/cylindrical coordinate, and all went to wrong direction, :)

 Still trying to understand matplotlib mplot3d behavior


import scipy as sp

from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import matplotlib.pyplot as plt

import mpl_toolkits.mplot3d.axes3d as p3
import matplotlib.animation as animation

#dr = .1
#dp = .1
#nr = int(1/dr)
#np = int(2*sp.pi/dp)

nr = 10
np = 10

dr = 1./nr
dp = 2*sp.pi/np

a = .5

tmax = 100
t = 0.


dr2 = dr**2
dp2 = dp**2

dt = dr2 * dp2 / (2 * a * (dr2 + dp2) )
dt /=10.
print dt



ut = sp.zeros([nr,np])
u0 = sp.zeros([nr,np])

ur = sp.zeros([nr,np])
ur2 = sp.zeros([nr,np])

r = sp.arange(0.,1.,dr)
p = sp.arange(0.,2*sp.pi,dp)

#initial

for i in range(nr):
for j in range(np):
if ( (i>(2*nr/5.)) & (i<(3.*nr/3.)) ):
u0[i,j] = 1.
#print u0

def hitung_ut(ut,u0):
for i in sp.arange (len(r)):
if r[i]!= 0.:
ur[i,:] = u0[i,:]/r[i]
ur2[i,:] = u0[i,:]/(r[i]**2)
ut[1:-1, 1:-1] = u0[1:-1, 1:-1] + a*dt*(
(ur[1:-1, 1:-1] - ur[:-2, 1:-1])/dr+
(u0[2:, 1:-1] - 2*u0[1:-1, 1:-1] + u0[:-2,1:-1])/dr2+
(ur2[1:-1, 2:] - 2*ur2[1:-1, 1:-1] + ur2[1:-1, :-2])/dp2)


#hitung_ut(ut,u0)
#print ut


def data_gen(framenumber, Z ,surf):
global ut
global u0
hitung_ut(ut,u0)
u0[:] = ut[:]
Z = u0

ax.clear()
plotset()
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm,
linewidth=0, antialiased=False, alpha=0.7)
return surf,


fig = plt.figure()
#ax = fig.gca(projection='3d')
ax = fig.add_subplot(111, projection='3d')

R = sp.arange(0,1,dr)
P = sp.arange(0,2*sp.pi,dp)
R,P = sp.meshgrid(R,P)

X,Y = R*sp.cos(P),R*sp.sin(P)

Z = u0
print len(R), len(P)



def plotset():
ax.set_xlim3d(-1., 1.)
ax.set_ylim3d(-1., 1.)
ax.set_zlim3d(-1.,1.)
ax.set_autoscalez_on(False)
ax.zaxis.set_major_locator(LinearLocator(10))
ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))
cset = ax.contour(X, Y, Z, zdir='x', offset=0. , cmap=cm.coolwarm)
cset = ax.contour(X, Y, Z, zdir='y', offset=1. , cmap=cm.coolwarm)
cset = ax.contour(X, Y, Z, zdir='z', offset=-1., cmap=cm.coolwarm)

plotset()
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm,
linewidth=0, antialiased=False, alpha=0.7)

fig.colorbar(surf, shrink=0.5, aspect=5)

ani = animation.FuncAnimation(fig, data_gen, fargs=(Z, surf),frames=500, interval=30, blit=False)
#ani.save('2dDiffusionf500b512.mp4', bitrate=512)

plt.show()

.








Miss Lay.

 Baca komen seperti  "Permainan gitar Eross pecah banget...." di Youtube, hati langsung panas.

 Berani-beraninya menghina sang maestro, sana, ke comberan sana, tempat asalmu, ...

 Eh, tunggu...

 Itu bukan hinaan, itu pujian...

 Pecah? Pujian?

 Yeah, beberapa dari kita sering menggunakan kata tak pada tempatnya, :)

 Penggunaan kata 'pecah' sebagai pujian datang dari Maia Estianty saat menjadi juri The Remix.

 Tentu saja penggunaan kata 'pecah' di dunia DJ atau remix sangat cocok; merujuk pada sunyi yang lambat laun menjadi semakin ramai seiring dengan penumpukan nada-nada sampling yang makin banyak, tempo yang makin cepat dan diakhiri dengan sebuah hentakan..., pecah..., 

 OK, itu pujian, bagaimana kalo kata 'pecah' digunakan di permainan gitar. Yeah, kami menganggap kata pecah sebagai kata berkonotasi buruk; merujuk pada suara gitar yang seharusnya clean namun karena setting yang buruk jadi terdengar 'brebet' atau 'pecah'.

 Bukannya efek gitar Telecaster-nya Eross mempunya karakter pecah?  Ehm, EDrive-nya Eross, seperti namanya, 'drive', hanya bertugas sebagai booster saat permainan lead, bahkan kalo kita lihat di penampilan live, Eross jarang sekali menggunakan stompbox, dia memainkan knob volume untuk efek crunch atau crisp. Jika  ingin suara clean, dia mengecilkan volume gitarnya.

 Suara Telecaster Eross 'pecah'? Well, lebih baik pakai kata crunchy, crispy, ..., lebih diterima oleh banyak gitaris, :)



Wednesday, November 25, 2015

3D Animation of 2D Diffusion Equation using Python, Scipy, and Matplotlib

 I wrote the code on OS X El Capitan, use a small mesh-grid.  Basically it's same code like the previous post.

 I use surface plot mode for the graphic output and animate it.

 Because my Macbook Air is suffered from running laborious code, I save the animation on my Linux environment, 1024 bitrate, 1000 frames.

story
import scipy as sp
import time
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import matplotlib.pyplot as plt

import mpl_toolkits.mplot3d.axes3d as p3
import matplotlib.animation as animation



dx=0.01        
dy=0.01     
a=0.5          
timesteps=500  
t=0.

nx = int(1/dx)
ny = int(1/dy)


dx2=dx**2 
dy2=dy**2 

dt = dx2*dy2/( 2*a*(dx2+dy2) )

ui = sp.zeros([nx,ny])
u = sp.zeros([nx,ny])

for i in range(nx):
 for j in range(ny):
  if ( ( (i*dx-0.5)**2+(j*dy-0.5)**2 <= 0.1)
   & ((i*dx-0.5)**2+(j*dy-0.5)**2>=.05) ):
    ui[i,j] = 1
def evolve_ts(u, ui):
 u[1:-1, 1:-1] = ui[1:-1, 1:-1] + a*dt*( 
                (ui[2:, 1:-1] - 2*ui[1:-1, 1:-1] + ui[:-2, 1:-1])/dx2 + 
                (ui[1:-1, 2:] - 2*ui[1:-1, 1:-1] + ui[1:-1, :-2])/dy2 )
        

def data_gen(framenumber, Z ,surf):
    global u
    global ui
    evolve_ts(u,ui)
    ui[:] = u[:]
    Z = ui
    
    ax.clear()
    plotset()
    surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm,
                       linewidth=0, antialiased=False, alpha=0.7)
    return surf,


fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

X = sp.arange(0,1,dx)
Y = sp.arange(0,1,dy)
X,Y= sp.meshgrid(X,Y)

Z = ui 

def plotset():
    ax.set_xlim3d(0., 1.)
    ax.set_ylim3d(0., 1.)
    ax.set_zlim3d(-1.,1.)
    ax.set_autoscalez_on(False)
    ax.zaxis.set_major_locator(LinearLocator(10))
    ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))
    cset = ax.contour(X, Y, Z, zdir='x', offset=0. , cmap=cm.coolwarm)
    cset = ax.contour(X, Y, Z, zdir='y', offset=1. , cmap=cm.coolwarm)
    cset = ax.contour(X, Y, Z, zdir='z', offset=-1., cmap=cm.coolwarm)

plotset()
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm,
                       linewidth=0, antialiased=False, alpha=0.7)


fig.colorbar(surf, shrink=0.5, aspect=5)

ani = animation.FuncAnimation(fig, data_gen, fargs=(Z, surf),frames=1000, interval=30, blit=False)
ani.save("2dDiffusion.mp4", bitrate=1024)

#plt.show()    
.

Tuesday, November 24, 2015

2D Diffusion Equation using Python, Scipy, and VPython

 I got it from here, but modify it here and there.

 I also add animation using vpython but can't find 3d or surface version, so I planned to go to matplotlib surface plot route, :)

 (update: here it is, :) )


#!/usr/bin/env python
"""
A program which uses an explicit finite difference
scheme to solve the diffusion equation with fixed
boundary values and a given initial value for the
density.

Two steps of the solution are stored: the current
solution, u, and the previous step, ui. At each time-
step, u is calculated from ui. u is moved to ui at the
end of each time-step to move forward in time.

http://www.timteatro.net/2010/10/29/performance-python-solving-the-2d-diffusion-equation-with-numpy/

he uses matplotlib

I use visual python

"""
import scipy as sp
import time
from visual import *
from visual.graph import *


graph1 = gdisplay(x=0, y=0, width=600, height=400,
title='x vs. T', xtitle='x', ytitle='T',
foreground=color.black, background=color.white)


# Declare some variables:

dx=0.01 # Interval size in x-direction.
dy=0.01 # Interval size in y-direction.
a=0.5 # Diffusion constant.
timesteps=500 # Number of time-steps to evolve system.
t=0.

nx = int(1/dx)
ny = int(1/dy)

dx2=dx**2 # To save CPU cycles, we'll compute Delta x^2
dy2=dy**2 # and Delta y^2 only once and store them.

# For stability, this is the largest interval possible
# for the size of the time-step:
dt = dx2*dy2/( 2*a*(dx2+dy2) )

# Start u and ui off as zero matrices:
ui = sp.zeros([nx,ny])
u = sp.zeros([nx,ny])

# Now, set the initial conditions (ui).
for i in range(nx):
for j in range(ny):
if ( ( (i*dx-0.5)**2+(j*dy-0.5)**2 <= 0.1)
& ((i*dx-0.5)**2+(j*dy-0.5)**2>=.05) ):
ui[i,j] = 1
'''
def evolve_ts(u, ui):
global nx, ny
"""
This function uses two plain Python loops to
evaluate the derivatives in the Laplacian, and
calculates u[i,j] based on ui[i,j].
"""
for i in range(1,nx-1):
for j in range(1,ny-1):
uxx = ( ui[i+1,j] - 2*ui[i,j] + ui[i-1, j] )/dx2
uyy = ( ui[i,j+1] - 2*ui[i,j] + ui[i, j-1] )/dy2
u[i,j] = ui[i,j]+dt*a*(uxx+uyy)
'''
def evolve_ts(u, ui):
"""
This function uses a numpy expression to
evaluate the derivatives in the Laplacian, and
calculates u[i,j] based on ui[i,j].
"""
u[1:-1, 1:-1] = ui[1:-1, 1:-1] + a*dt*(
(ui[2:, 1:-1] - 2*ui[1:-1, 1:-1] + ui[:-2, 1:-1])/dx2 +
(ui[1:-1, 2:] - 2*ui[1:-1, 1:-1] + ui[1:-1, :-2])/dy2 )

# Now, start the time evolution calculation...
#tstart = time.time()

f1 = gcurve(color=color.blue)

while True:
rate(60)
#for m in range(1, timesteps+1):
if t<timesteps:
t+=dt
evolve_ts(u, ui)
ui[:] = u[:] # I add this line to update ui value (not present in original code)
#print "Computing u for m =", m
f1.gcurve.pos = []
for i in arange(nx):
f1.plot(pos=(i,u[nx/2,i]))

#tfinish = time.time()

#print "Done."
#print "Total time: ", tfinish-tstart, "s"
#print "Average time per time-step using numpy: ", ( tfinish - tstart )/timesteps, "s."


.


Monday, November 23, 2015

Numpy Slice Expression

 Suppossed we have two array a and b

 If we want to set b as finite difference result of a, we may tempted to do this

for i in range (9):
b[i] = a[i+1]-a[i]

There's another (faster) way. The performance's close to the pure C, :)

b[:-1] = a[1:]-a[:-1]

What's that?

Numpy has slice form for array. If we have an array with length 10, the a[:] refers to all value in a.

a[1:] refers to a[1] to a[9] (without a[0])
a[3:] refers to a[3] to a[9]
a[:-1] refers to a[0] to a[8]
a[:-3] refers to a[0] to a[6]
a[1:-1] refers to a[1] to a[8]
...
and so on

Here's my tinkering with slice expression
>>> from numpy import *
>>> a = zeros(10)
>>> b = zeros(10)
>>> a[5]=1.
>>> a
array([ 0., 0., 0., 0., 0., 1., 0., 0., 0., 0.])
>>> b
array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
>>> a[6]=2.
>>> a
array([ 0., 0., 0., 0., 0., 1., 2., 0., 0., 0.])
>>> b[:-1]=a[:-1]-a[1:]
>>> b
array([ 0., 0., 0., 0., -1., -1., 2., 0., 0., 0.])
>>> b[:-1]=a[:-1]+a[1:]
>>> b
array([ 0., 0., 0., 0., 1., 3., 2., 0., 0., 0.])
>>>

I like Python, :)




Friday, November 20, 2015

Car Free Day

 Sepertinya ada (banyak) yang mengartikan sebagai kendaraan bebas berjalan di manapun, bahkan di tempat yang saat normal gak bisa dimasuki, :(

 (hampir ketabrak sepeda motor yang dikendarai mahasiswa berboncengan  di jalan antara gedung MIPA dan Fisika)

 #EdisiError

Wednesday, November 18, 2015

Create CSV file using Delphi

 I used textfile variable to write to a file (or create it if it don't exist).

 CSV file? Just make sure that the name at assignfile  command had .csv extension, :)

 Of course we have to format the output to meet the CSV standart; separated by comma.


procedure TForm1.Button1Click(Sender: TObject);
var
fileku:textfile;
i,j,n:integer;
begin
n:=10;
assignfile(fileku,'data.csv');
rewrite(fileku);
writeln(fileku,'tadaa...');
for i:=1 to n do begin
for j:=1 to n do begin
writeln(fileku,i,',',j,',','data',i,j);
end;
end;
closefile(fileku);
end;

.









Turn right! No! Your other right!

 “I definitely didn’t have time to get my soul cast into a place I couldn’t even pronounce.”

 Typical Rick, :)

Friday, November 13, 2015

Darurat.

 Sepatu basah kena hujan.

 Gak bawa serep.

 Nyalakan AC, gantung di depan kipas, tunggu dua jam, :)





323f (5) amp (1) android (12) apple (7) arduino (18) art (1) assembler (21) astina (4) ATTiny (23) blackberry (4) camera (3) canon (2) cerita (2) computer (106) crazyness (11) debian (1) delphi (39) diary (286) flash (8) fortran (6) freebsd (6) google apps script (8) guitar (2) HTML5 (10) IFTTT (7) Instagram (7) internet (12) iOS (5) iPad (6) iPhone (5) java (1) javascript (1) keynote (2) LaTeX (6) lazarus (1) linux (29) lion (15) mac (28) macbook air (8) macbook pro (3) macOS (1) Math (3) mathematica (1) maverick (6) mazda (4) microcontroler (35) mountain lion (2) music (37) netbook (1) nugnux (6) os x (36) php (1) Physicist (29) Picture (3) programming (189) Python (109) S2 (13) software (7) Soliloquy (125) Ubuntu (5) unix (4) Video (8) wayang (3) yosemite (3)