Nugroho's blog.: April 2012

Sunday, April 29, 2012

World War IV

I know not with what weapons World War III will be fought, but World War IV will be fought with sticks and stones. - Albert Einstein

Thursday, April 19, 2012

Lebah tanpa Sengat (Apis Trigona)

Bukan, dia bukan lebah. Dia menghasilkan madu, ya, tetapi bukan lebah.

Dia tidak punya sengat. Senjatanya berupa perekat, yeah, mungkin itu bukan senjata.

Tempat madu mereka bukan berupa bangun heksagonal seperti lebah melainkan lebih mirip bentuk buah asam.

Telur mereka sebesar buah merica.

Di daerahku mereka disebut klanceng.

Sunday, April 15, 2012

Sport or Art

Konon seseorang dilahirkan sebagai bertipe sport atau art. Mungkin itu benar. Terbukti di sini, pagi-pagi di acara workshop di sebuah hotel, kegiatan peserta terbagi dua. Yang satu bangun pagi-pagi untuk olahraga, sedangkan yang lain seperti saya malah nyantai duduk-diduk di balkon, ngopi sambil update blog atau bahkan masih tidur.

Yeah, tipe sport memacu jantung dengan jogging; tipe art memacu jantung dengan kopi.

Saturday, April 14, 2012

Friday, April 13, 2012

Arloji Alami

Saat berkendara pagi-pagi di jalur ngantang-malang, karena tidak mungkin terus-terusan melihat jam, ada dua jenis penunjuk waktu yang menentukan apakah dapat mencapai SD Lab UM sebelum jam 7

Arloji alami, begitu sering kupikirkan, yang pertama adalah sorot sinar matahari yang sangat jelas akibat efek Tyndall di bukit-bukit Ngantang yang berkabut. Jika sorotnya masih ke atas, itu berarti hari masih pagi, belum jam enam. Sorotnya tepat horizontal, harus ngebut jika tak mau telat. Jika sorotnya ke bawah tak perlu ngebut, toh pasti telat.

Arloji alami lainnya ada di Pujon. Jika setelah pasar sayur pandangan silau, maka kita belum terlambat, jika tidak silau maka matahari sudah terlalu tinggi, harus ngebut.

Thursday, April 12, 2012

Never miss a chance to speak kind words.

Kind words are short and easy to speak, but their echoes are truly endless. - Mother Teresa

Tuesday, April 10, 2012

Hornet

Dia masih ingat rumahnya.

Saat pertama menempati Lazy Home, dia sudah ada di depan rumahku, bernyanyi. Meski menakutkan, kuputuskan untuk tidak mengusirnya, kubiarkan dia tinggal, toh dia memang lebih dulu tinggal di sini.

Dia seekor kumbang, semacam lebah tapi besar. Ada yang menyebut "tawon endhas" (lebah kepala). Dia tinggal di kayu pelisir depan rumahku. Aku jadi harus berhati-hati saat keluar rumah atau masuk rumah karena konon sengatannya bisa sangat menyakitkan dan selalu menyerang bagian kepala. Dan tidak seperti lebah kecil yang mati setelah menyengat (sengatnya adalah tulang belakang, dan akan tertinggal di tubuh kita, jadi lebah alan mati), tawon ini bisa menyengat berkali-kali.

(saat menulis ini, dia sedang terbang mondar-mandir di clauster rumah. Saat akan kupotret mendadak dia mengejarku hingga terbirit-birit ke dapur. Eh, dia membuntuti ke dapur. Maka jadilah aku di sini. Di kamar mandi dengan pintu tertutup rapat.)

Namun kehati-hatianku terbukti tak berguna. Dia tak akan menyengat jika tak diganggu jadi kuanggap dia sebagai penjaga pintu rumahku.

Sekitar dua tahun yang lalu rumahku direnovasi. Bongkar atap sekaligus pelisir (tentu saja) yang lapuk karena rayap. Si Tawon terbang kesana-sini seakan protes tempat tonggalnya digusur, membuat keki para pekerja rumah, hihihi.

Setelah renovasi selesai ternyata si kumbang mulai membangun rumah yang baru dipelisir rumahku yang baru di titik yang sama, wow.

Bulan lalu bagian depan rumah dibongkar total, diganti dengan model cor, tanpa atap. Praktis rumah si kumbang tidak ada lagi bahkan, dengan denah rumah yang baru, rumah si kumbang berada di clauster rumahku, semacam lorong dari ruang tamu ke ruang tengah; tak ada kayu untuk dilubangi. Sebuah penggusuran paksa.

Tadi, saat lihat spongebob, kudengar nguing-nguing suaranya kembali. Dia berada di clauster rumah, weleh. Apakah dia punya semacam bioGPS ditubuhnya?





Keberanian tuk Diam

Courage is what it takes to stand up and speak; courage is also what it takes to sit down and listen. - Winston Churchill

Jalur Ngantang-Malang

Jalur yang berkelok mirip seperti di game real-racing.

Bagi pengendara sepeda motor, jalur ini cocok untuk pamer skill mirip Rossi; menyalip di tikungan. Tidak cocok untuk pamer top speed karena praktis kecepatan rata-rata hanya 80kpj saja.

Bagi pengendara mobil, jalur ini cocok untuk "bersosialisasi"; istilah lain untuk susah mendahului.

Karena secara alami kecepatan rata-rata hanya 60kpj saja, jalur ini cocok untuk berlatih engine-braking, double-clutching, bahkan heel and toe untuk shifting di jalan raya, hehehe.

Monday, April 9, 2012

Array di Delphi

Array dapat digunakan sebagai penyimpanan sementara. Array dapat dipandang sebagai sebuah variabel yang berisi barisan variabel di dalamnya.

Berikut adalah contoh penggunaan array di delphi sekaligus penggunaan listbox dan radiobutton.



Buat sebuah form dengan satu edit, satu button, satut listbox dan tiga radiobutton.

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
ListBox1: TListBox;
RadioButton3: TRadioButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
nama:array [0..100] of string;
n:integer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
radiobutton1.Caption:='input';
radiobutton2.Caption:='tampilkan';
radiobutton3.Caption:='semua';
edit1.Text:='';
radiobutton1.Checked:=true;
button1.Caption:='OK';
n:=0;
end;

procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
if (radiobutton1.Checked=true) and not(edit1.Text='') then begin
listbox1.Items.add(edit1.Text);
n:=n+1;
nama[n]:=edit1.Text;
end;
if radiobutton2.Checked=true then begin
listbox1.Clear;
if (edit1.Text<='9') and (edit1.Text>='0') and not(edit1.Text='') then begin
listbox1.Items.Add(nama[strtoint(edit1.Text)]);
end;
end;
if radiobutton3.Checked=true then begin
listbox1.Clear;
for i:=1 to n do begin
listbox1.Items.Append(nama[i]);
end;
end;
end;

end.


Tolerance (Einstein)

Laws alone cannot secure freedom of expression; in order that every man present his views without penalty there must be spirit of tolerance in the entire population. -Albert Einstein

Simple Animation using Mathematica

Using Manipulate, we are able to create animation using Walfram's Mathematica. Basically it allow a variable to walk along its range.

Here the code, or, for me, a template to create animation.




Manipulate[
Graphics[{
Blue,
Circle[{t, 0}, 1]
},
PlotRange -> {{-10, 10}, {10, -10}},
ImageSize -> {400, 300},
Background -> GrayLevel[0.9],
Axes -> True
],
{t, 0, 5}
]
and here the result

Musik

Musik adalah pelepas dahaga yang mengisi cangkir keheningan

Sunday, April 8, 2012

Paku dan Papan

Di awal malam sekitar enam tahun yang lalu, aku dan Anggun sedang "ngleyeh" di kamarku di Lazy Home. Mungkin saat itu hari sabtu malam; biasanya Anggun ke rumah hari sabtu, kujemput.

Anggun mengerjakan tugas akademi kebidanannya yang segunung sedangkan aku sedang santai sambil otak-atik Fruity Loop dan Cool Edit di laptop Eeyor. Komputer Pentium 2 di ruang depan menyiarkan siaran Dhamma TV, ada semacam ceramah dari Biksu yang sudah ku kenal namun namanya tidak ku hafal.

Kami tidak perlu bersusah payah lihat TV karena toh gambarnya lebih menyerupai semut daripada gambar Kelenteng. Jika memasang antenna di belakang rumah, memang seperti itu, pilihannya adalah gambar jelek namun suara bagus, atau gambar bagus dengan suara berkeresak. Jika pasang di depan rumah pilihannya adalah gambar bagus dengan suara jernih dan resiko antenna sudah tidak ada saat pulang dari kampus, hm... mungkin itu bukan pilihan.



Diantara suara kertas dan buku yang dibolak-balik dan suara gedebak-gedebuk drum mentah hasil manipulasiku, kudengar kisah Sang Biksu tentang seorang tua dan pemuda. Aku lupa konteksnya, mungkin si pemuda ingin berguru pada sang tua, entahlah

"...seorang tua berkata pada pemuda pemarah 'Nak, cobalah hal ini saat kau marah, tancapkanlah sebuah paku pada papan di pintu depan rumahmu. Saat amarahmu telah reda cabutlah paku yang telah kau tancapkan tadi. Kembalilah padaku saat tidak ada satu paku pun di papan '

Dan begitulah, si pemuda tiap marah menancapkan paku pada papan dan mencabutnya saat amarahnya telah reda. Terkadang ada beberapa paku yang tertancap pada papan karena saat amarahnya belum reda dia kembali marah.

Saat dia telah berhasil mengendalikan amarahnya, si pemuda menemui biksu untuk menunjukkan bahwa tidak ada paku di papan pintu rumahnya.

'Baiklah, sebagai awal akan kuberi engkau sebuah pelajaran sederhana. Mari kita lihat pintu rumahmu'

'Nak, lihatlah. Engkau telah berhasil mengendalikan amarahmu, terbukti tidak ada satupun paku yang tertancap di papan ini. Namun lihatlah bekas-bekas paku yang kau tancapkan, meski paku telah kau cabut, bekasnya masih ada.

Begitulah amarah, saat engkau marah, engkau tidak dapat mengendalikan diri dan mungkin melampiaskan amarahmu ke orang-orang disekitarmu, melukai mereka; mungkin fisik, mungkin jiwa. Lambat laun amarahmu pasti akan mereda, orang-orang yang telah kau lukai mungkin juga telah memaafkanmu, namun kejadian itu telah menjadi catatan kehidupanmu, seperti lubang di papan bekas tancapan paku... '

...
"
(lupa lanjutannya)


Friday, April 6, 2012

Sebuah Relic Berusia Ribuan Tahun

Berikut adalah pemikiran dari seseorang yang menolak perilaku ekstrim; semacam memiskinkan atau memperkaya diri. Yang berpikir bahwa makan terlalu banyak akan menimbulkan berbagai penyakit namun berpuasa ekstrim juga akan membuat badan lemas, mata berkunang-kunang dan suplai nutrisi ke otak berkurang.

***

-kehidupan manusia itu pada dasarnya tidak bahagia;

-sebab-musabab ketidakbahagiaan ini adalah memikirkan kepentingan diri sendiri serta terbelenggu oleh nafsu;

-pemikiran kepentingan diri sendiri dan nafsu dapat ditekan habis bilamana segala nafsu dan hasrat dapat ditiadakan;

-menimbang benar, berpikir benar, berbicara benar, berbuat benar, cari nafkah benar, berusaha benar, mengingat benar, meditasi benar;


Wednesday, April 4, 2012

Record di Delphi

Record dapat dikatakan sebagai sebuah obyek di Delphi, semacam variabel yang memiliki variabel. Seperti Button yang memiliki caption atau edit yang memiliki text, kita dapat membuat sebuah obyek yang memiliki variabel sendiri.


Berikut adalah contoh program menggerakkan sebuah kotak (menggunakan shape). Kita membuat record baru bernama tkotak yang memiliki variabel x, y, vx, vy, ax, ay. Variabel kotak merujuk pada record tkotak.


Tombol jika diklik akan menjalankan perintah pada prosedur proses. Prosedur proses adalah metode Euler untuk mengupdate posisi dan kecepatan kotak berdasarkan posisi dan kecepatan awal.







Kode lengkapnya adalah sebagai berikut


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Shape1: TShape;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
tkotak=record
x,y,vx,vy,ax,ay:real;
end;
var
Form1: TForm1;
jalan:boolean;
kotak:tkotak;
dt:real;

implementation

{$R *.dfm}
procedure proses;
begin
kotak.vx:=kotak.vx+kotak.ax*dt;
kotak.x:=kotak.x+kotak.vx*dt;
form1.Shape1.Left:=round(kotak.x);

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
button1.Caption:='jalan';
jalan:=false;
kotak.x:=0;
kotak.y:=0;
kotak.vx:=5;
kotak.vy:=0;
kotak.ax:=10;
kotak.ay:=0;
dt:=0.1;
shape1.Left:=round(kotak.x);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
jalan:=not(jalan);
if jalan=true then button1.Caption:='stop' else button1.Caption:='jalan';
while jalan=true do begin
proses;
application.ProcessMessages;
sleep(100);
end;
end;

end.

Tuesday, April 3, 2012

Tahlil Bilingual

Beberapa hari yang lalu saya pintu kamar mandi saya digedor-gedor tetangga.

"Woi, lagi mandi ya!!!"
"Iya..." sahut bibiku yang lagi mandi

"Ups, sori,..." ganti dia gedor-gedor WC
"Woi, lagi di WC ya!!!" walah..., gimana mau jawab. Aku diam aja, mood-ku langsung hilang.

"Eh, kok diam saja? lagi di dalam WC ya?" ckckck...

"Ada apa Gus?" kataku nongol dari pintu WC
"Baru dari WC?" Busyet dah...




Aku menyerah
"Iya" sambil ngeloyor ke depan TV mau lihat Spongebob sore

"Nanti habis maghrib diundang syukuran di Pak Wari" kata Gus sambil nguntit aku. Waduh, gak bisa lihat Spongebob nih!

"Soalnya aku sakit perut" jawabku sekenanya

"eh?"

Begitulah suasana desa, ngobrol dengan seseorang yang sedang konsentrasi penuh di WC dianggap biasa. Dan pertanyaan yang terus diulang walaupun sudah tahu jawabannya. Basa-basi memang kadang merepotkan.

******

Habis maghrib aku ke rumah Pak Wari yang rumahnya melewati tritisan rumah Pakde di utara rumahku. Sudah ada beberapa orang di sana.

"Memang acara apa Pak"

"40 harinya mbah Prapti"

Aku lega tidak bertanya "Memang syukuran apa?", dasar Gus!

Biasanya, acara semacam itu diisi dengan baca Surat Yaa-Sin, sekitar setengah jam, dilanjutkan dengan bacaan tahlil, beberapa surat pendek dan beberapa potongan surat panjang dan doa-doa entah apa namanya.


Namun malam itu tidak. Pak Ja'i Mengumumkan kalau acaranya hanya diisi bacaan tahlil saja, wow, masih bisa lihat Spongebob nih. Dan bukan hanya aku yang lega, hehehe. Eh, bukan berarti semua yang diundang juga pengin cepat-cepat pulang lihat Spongebob; waktu antara maghrib dan isya' adalah waktu ngleyeh di desaku.

Tahlil berlangsung lima belas menit dan makanan pun dihidangkan. Setelah puas melahap soto, bingkisan berkat untuk dibawa pulang pun dibagikan.

Aku siap-siap menunggu Shalawat Dongkrak ketika Pak Sutomo, sesepuh Dusun mengambil mic dan...

"Salamalekum,  dinten menika kula dalah panjenengan sedaya dumugi wonten mriki minangka .... mugi pinaringan kawilujengan..."

Whaaaat???!!!

Ternyata ada semacam "Tahlilan Jawa" setelah berkat dibagikan dan lebih lama dari "Tahlil Arab". Tahlil jawa ini diucapkan dalam bahasa kawi yang isinya berupa penjelasan kenapa kami beada di sini, acara apa dan semoga tuan rumah terkabul hajatnya.

Karena diucapkan dalam bahasa jawa, maka kata "amin" yang biasa diucapkan bersama-sama diganti dengan "inggih..." (iya).

Saat pulang, aku senyum-senyum sendiri sambil terkenang-kenang jaman SMP saat aku bersusah payah menghafalkan suluk pembuka pagelaran wayang di halaman belakang Kembang Setaman.

"Swuh rep data pitana. Anenggih negari kapundi ta kang kaeka adi dasa purwa. Eka marang sawiji adi luwih dasa sepuluh purwa wiwitan. Nadyan katah titahing jawata kang kasongan ing akasa kasangga ing pratiwi kaapit ing samudra...

negara dwarawati ya dwaraka negara kang panjang punjung pasir wukir. Panjang dawa pocapane, punjung luhur kawibawane,  pasir samudra wukir gunung... gemah ripah loh jinawi tata tentrem kerta raharja"

Nostalgia...



Monday, April 2, 2012

Toggle di Delphi

Toggle adalah sebuah tombol dengan sifat jika saat itu on maka jika ditekan akan off jika ditekan lagi on jika ditekan lagi akan off dan seterusnya.

Di Delphi kita dapat membuat tombol jenis ini.

Buat sebuah aplikasi baru, letakkan sebuah tombol di form. Berikut adalah perintah lengkapnya.




unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
jalan:boolean;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
jalan:=not(jalan);
if jalan=true then button1.Caption:='stop' else button1.Caption:='jalan';
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
jalan:=false;
end;

end.

Shape di Delphi

Shape adalah sebuah object berupa bentuk-bentuk dasar di Delphi.

Di Delphi ada beberapa cara untuk menggambar; diantaranya menggunakan Shape. Cara lain menggunakan canvas dengan perintah moveto+lineto+fill. Meskipun cara terakhir menawarkan felkesibilitas bentuk yang tinggi, mereka tidak dapat digerakkan dengan mudah; kita harus menghapus dan membuat lagi dari awal.



Shape dapat dengan mudah digerakkan karena memiliki properties top dan left. Berikut adalah cara menggerakkan sebuah Shape dengan fitur kecepatan dan percepatan serta sebuah tombol toggle jalan/stop.

Buat aplikasi baru, letakkan dua edit, satu shape dan satu button.

Berikut adalah perintah lengkapnya.
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Shape1: TShape;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
jalan:boolean;
ax,vx,xx,dt:real;
implementation

{$R *.dfm}

procedure proses;
begin
xx:=xx+vx*dt;
vx:=vx+ax*dt;
with form1 do begin
edit2.Text:=floattostr(vx);
shape1.Left:=round(xx);
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
jalan:=false;
edit1.Text:='0';
edit2.Text:='1';
dt:=0.1;
button1.Caption:='jalan';
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
jalan:=not(jalan);
ax:=strtofloat(edit1.Text);
vx:=strtofloat(edit2.Text);
xx:=shape1.left;
if jalan=true then button1.Caption:='stop' else button1.Caption:='jalan';
while jalan=true do begin
proses;
application.ProcessMessages;
sleep(100);
end;
end;

end.

Stringgrid di Delphi

Buat aplikasi baru
Letakkan sebuah tombol, edit dan stringgrid di form
Kosongkan bagian text pada edit1
Ubah caption pada button1 menjadi input
Pada properties stringgrid1, ubah colcount-&gt;7 kemudian rowcount -&gt; 17
Dobelklik form1, ketikkan perintah berikut
  stringgrid1.Cells[0,0]:='No';
stringgrid1.Cells[1,0]:='Nama';
stringgrid1.Cells[2,0]:='U1';
stringgrid1.Cells[3,0]:='U2';
stringgrid1.Cells[4,0]:='U3';
stringgrid1.Cells[5,0]:='U4';
stringgrid1.Cells[6,0]:='Nil'; 
Jalankan program. Kini stringgrid1 memiliki judul pada baris pertama tiap kolom.



Untuk mengisi kolom nama pada stringgrid, kita gunakan tombol input.
Agar dapat otomatis berganti baris kita perlu membuat sebuah variabel global n bertipe integer.
Dobelklik tombol input, ketikkan perintah berikut
  stringgrid1.Cells[1,n]:=edit1.Text;
stringgrid1.Cells[0,n]:=inttostr(n);
n:=n+1;
Jalankan program. Ketikkan sebarang nama di edit1, kemudian klik tombol input, lakukan berulang-ulang.










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)