Minggu Pertama Bulan Juni 2008 @ Jakarta

10 05 2008

Alright! I’ve got my AirAsia flight ticket itinerary to go to Indonesia at the end of this month at May 31st, ‘08. Yippee… I miss Indonesia very very much…

Saya akan ada di Jakarta - Indonesia di awal minggu bulan Juni 2008 ini. Tanggalnya belum saya pastikan, yang pasti bukan Hari Senin. Rencananya cuma bentar doang sih nggak sampe nginep (artinya ya nggak lebih dari satu hari dan paling2x saya nggak bakal bawa apa-apa, artinya nggak bawa tas macam-macam apalagi laptop / emangnya Tukul harus apa-apa kembali ke laptop, haduh, mending jadi gerombolan siberat aja jadi paman gober tintin), nggak tau nanti kalau berubah rencana yang pasti akan saya update blog ini (kalau nanti di Indonesia langsung dapat akses internet mudah tentunya, kalau nggak langsung dapat, ya paling-paling saya telponin aja satu-satu buat confirm pastinya hari apa dan jam berapa serta dimana gitu / gampang-lah!).

Artinya kemungkinan sih ya paling kalo mau memperpanjang umur, silaturahim, duduk duduk santai bareng saya ya boleh. Mungkin boleh bicara berkisar sharing pengalaman, metodologi pengembangan software apa yang sukses dan tidak, cerita-cerita dalam dan luar negeri, dan lain lain (wohaha klitik kuitik kitik, yang pada gatel sama project project ruby tuh biasanya langsung pada nyambar bikin gw geli =)) serbuuu… Rencana saya sejauh ini ya nggak jauh-jauh…. paling-paling dekat-dekat aja, mungkin StarBucks, lha itu juga belum saya pastikan kok tempatnya dimana, toh StarBucks di JKT ada banyak, lagian saya malah daripada minum kopi mending minum minuman favorit saya es lemon tea, sambil makan makanan thailand apa masakan Indonesia hmm… Indonesia is the best! Saya belum pernah ke plaza senayan sih atau ah nanti aja akan saya kabari lagi, dulu waktu saya pernah di Jakarta aja juga nggak tau pernah sering-sering main keluar-keluar soalnya :-) Ya kalau ditemani guide bidadari sih buat keliling-keliling mesti nggak nolak, ehm. Saya sudah ada listing nomor-nomor handphone “monyet-monyet” yang memang sedari dulu sudah lama selalu mengingatkan ingin bertemu kangen dengan saya lagi kalau bertandang main ke Jakarta - Indonesia. Untuk memastikan, kalau ada yang merasa mungkin akan terlewat padahal pingin bareng ketemuan juga buat ngobrol-ngobrol gitu, boleh banget deh kirim nomor handphonenya aja email ke email pribadi saya. Supaya nanti akan mudah buat saya konfirmasi akan saya telpon aja langsung (atau bisa juga akan saya minta bantuan siapa gitu jadi jubir / juru bicara alias staf pengarah buat telponin atu atu. alah!)

Kopipes BonBin (Kebon Binatang) lagi:

3:15:58 PM monyetjongkok: artinya bakal ada kopdar :D
3:16:10 PM monyettiarap: sepertinya
3:16:41 PM monyetjongkok: he he sip ..... , mudah2an bisa iqud
3:17:13 PM monyettiarap: ya tapi kan belum dipastikan
3:17:26 PM monyettiarap: nanti kalau sudah dipastikan, baru akan gw confirm
3:18:09 PM monyetjongkok: oh ic....
3:18:22 PM monyetjongkok: oiya punya screencast banyak kan bro ......
3:18:28 PM monyetjongkok: bawa yaak :"> :D
3:19:20 PM monyettiarap: lengkap / semua ada.  nanti kalau gw main ke bandung juga tinggal diperbanyak aja
3:19:52 PM monyetjongkok: ah ada rencana ke bandung juga rupanya.......sip sip
3:20:05 PM monyettiarap: ya kalau jadi, kan belum gw confirm juga ;-) relax2x
3:20:46 PM monyetjongkok: wokeh ...... yg jelas cepat atau lambat bakal ke indonesia kan bro ..... gak mungkin terus2an di sono
3:21:35 PM monyettiarap: itu juga belum dipastikan. yang jelas ===> Rubyist The Rulez!
3:21:39 PM monyettiarap: =))
3:22:26 PM monyetjongkok: All Hail Rubyist ;))
5:27:07 PM monyetranting: artinya kopdar id-ruby?
5:27:17 PM monyetdahan: might be

Sekian Berita Gak Penting. Selebihnya, ah sepertinya itu semua cuma gosip -_-

Wah kurang afdol kalo gak pake pilem yah, ya udah nih thanks for someone who uploaded this vid that we all can enjoy. I miss all my nice friends from all over galaxies, planets, and dimensions.




Seri Ruby on Rails itu Gampang! Mari Belajar Ruby on Rails: Menyimpan Data Sekaligus Banyak

8 04 2008

Kali ini saya akan membawakan tutorial Ruby on Rails sederhana tentang bagaimana menyimpan data sekaligus banyak. Saya tidak akan membahas sejarah semenjak apa itu ruby, kemudian juga saya tidak akan menjelaskan disini bagaimana cara instalasi ruby maupun ruby on rails itu sendiri, karena semua sudah jelas dibahas di Situs Resmi Ruby Indonesia maupun bila masih ada yang kurang jelas tentu segala lapisan masyarakat Indonesia berikut seluruh anggota-anggota yang berada di luar negeri pun boleh berdiskusi belajar bersama di milis ID Ruby.

Baiklah, kita mulai saja. Pertama buka Konsole nya (Kalau Linux), buka Terminalnya (Kalau Mac OS X), buka cmd (klik Start , klik run , ketik cmd , tekan enter | kalau Windows).

Masuklah ke direktori tempat belajar favorit Anda, lalu ketiklah perintah mesra ini:

rails countries

Seperti biasa, selalu tekan enter setelah perintah apa pun juga di komputer ya.

Kemudian masuk ke direktori countries ataupun nama project yang baru Anda beri nama tadi.

cd countries

Sampai sini Anda bisa periksa dengan perintah script/about (bila Anda memakai windows, selalu sertakan ruby script/about) saat ini saya sedang memakai gem terbaru, ruby versi 1.8.6 patch ke 111, dan rails 1.2.2 dari gem.

Saya selalu terbiasa berlatih diri dan mengantisipasi teknologi baru dengan menggunakan rails edge, caranya sebagai berikut (ya, Anda ikuti juga ya, prinsipnya semua gampang, tidak ada yang tidak bisa, yang ada, adalah, tidak mau):

rake rails:freeze:edge

Kemudian dari situ Anda tunggulah sebentar, boleh minum minum dulu boleh makan makan dulu sembari menunggu rails versi terbaru banget ini selesai didownload dan dipasangkan otomatis di direktori countries Anda itu. Lama tidaknya bergantung dengan kecepatan koneksi Internet yang Anda punya tentunya.

Sambil nunggu freezing kalo lama, sambil dengar/nonton lagu toxic Britney asik juga sambil koding (click for its source). yup, along with its jap translation for friends who also like jap like me. thanks to someone who uploaded it on Google! Domo arigato, omoshiroi na kore.

And this one ((AMV) Naruto - Linking Park - Numb - Neji & Hinata) thanks to someone who uploaded it on Google! Merci.. / iya, taunya baru merci doang -_-

Kemudian bila sudah, selalu pasang rspec. Caranya:

script/plugin source svn://rubyforge.org/var/svn/rspec/trunk/

script/plugin install rspec

script/plugin install rspec_on_rails

Awas, sekali lagi, saya disini tidak akan membahas apa dan bagaimana itu rspec, pokoknya kalau tidak jelas dengan rspec ini bisa langsung tanyakan dan belajar langsung bersama teman-temannya juga yang sama-sama sedang belajar di milis ID Ruby.

Oke. Semua plugin yang biasa saya pakai sekarang sudah ada. Tinggal kita pakai sekarang:

script/generate rspec

Ya, sudah selesai ya, kalau belum atau ada yang salah-salah ada yang error jangan malu bertanya ya, malu bertanya sesat di jalan.

Komputernya sudah berasap asap belum? Sepertinya ada yang kelupaan, apa coba?

svn? Nggak… Kita pakai git aja ;-)

Caranya gouampang

git init

enter

Awas, kalau dapat error bilang, malu bertanya ya tidak sampai sampai tujuan atau bisa juga sampai tujuan tapi berkelok-kelok sementara ada yang sampai tujuan hanya dalam kurun waktu kurang dari sekejap mata.

Lanjut, ketik lagi:

vim .gitignore

lalu di dalam editor vim tercinta itu ketikkan makhluk makhluk yang ingin dicuekin sebagai berikut:

(sebelum mengetik di vim caranya tekan huruf ‘i’ tanpa tanda petik)

db/schema.rb
db/*.sqlite3
config/database.template.yml
tmp/*
log/*
public/photos/*
vendor/*

cara keluar dari vim ketik

:x (atau kalau dibaca : ‘titik dua’ lalu tekan huruf ‘x’)

sudah.

Kita lanjut

Sekarang setelah diinisiasi, kita masukkan file file project nya ke repo git lokal kita.

git add .

iya, sekarang tinggal kita commit

gca

lalu di dalam editor tercinta Anda itu, ketik

commit pertama!!!

oops, kalau Anda dapat error gara-gara gca, ya berarti belum pasang alias di bash Anda. Caranya ya pakai cara panjang saja dengan perintah git commit -a -m “commit pertama!!!!”

Bila sudah. SELAMAT! Anda telah sukses punya repositori lokal git ;-)

Silakan dilanjut untuk selalu testing testing ya untuk kemudian koding.

Ketikkan perintah ini untuk membuatkan kerangka kerja yang akan dipakai untuk model country:

script/generate rspec_model country name:string special:boolean

Kemudian perintah berikut ini untuk otomatis membuatkan tabel countries sesuai dari kerangka kerja yang barusan saja kita berikan di perintah ruby sebelumnya tadi:

rake db:migrate –trace

duh jangan merinding atau takut macam-macam, ini bukan film suster ngesot ataupun pemblokiran sumber daya sumber daya penting di Indonesia oleh perampok perampok yang insyaf disaat mereka menghembuskan nafas terakhirnya, tapi sengaja membiasakan agar terbiasa dengan pesan-pesan cinta dari rake secara khusus, dan dari ruby secara umum.

Lanjut, kalau sudah boleh Anda periksa status database schema Anda dengan perintah berikut:

script/about

atau kalau mau lebih spesifik caranya dengan perintah sebagai berikut:

rake db:version

Kalau mau intip intip dulu boleh:

ls spec/models

cat spec/models/country_spec.rb

oke, saatnya kita memanggil editor textmate tercinta itu. Cukup ketikkan:

e

Awas, itu shortcut di laptop saya sendiri [-( triknya itu cuma alias aja dari mate kemudian direktori apa yang diperlukan untuk dibuka, supaya tetap ringan (walau biar dibuka semua juga ringan kok, ini karena alasan narsis pribadi penulis saja)

ih

Ada yang kelupaan lagi ya? Ada!

autotest

Nah kalau di background jalan terus autotestnya baru boleh kita balik lagi ke textmate ya, buat yang nggak pakai mac, ya bisa pakai alternatif lain, misalkan radrails ini sih saya taunya ketika zamannya saya dulu belajar rails sih, kalau yang sekarang sedang hot saya sudah kurang mengikuti berhubung saya memang cuma pakai tiga editor aja (ViM, Emacs sama TextMate / disesuaikan mood sama kebutuhan sama kemampuan juga sih).

Nah sekarang kita mau ngapain nih?

Lha ini mbikin tutorial kok pakai nanya-nanya? mungkin gitu kata pengamat yang ingin meralat saya karena perhatian yang sangat. Bukan ...... ini cuma ingin membiasakan pembaca yang memang sedang belajar saat ini untuk berpikir lurus, ehm, bukan berpikir berkelok-kelok dan tersesat.

Berpikir test dulu, baru kemudian codes!

Kalau berpikir test, pasti berpikir tentang requirement spesifikasi apa yang diinginkan bisa berjalan di program.

AHA!! Anda ingin kita bikin tabel countries ini harus punya nama! Kan nggak ada pak, negara tanpa nama, ah itu sih nanti bisa gak habis habis kalau bicara OOT ke politik lagi soal negara tanpa nama tapi mencengkeram sih serahkan pada yang lebih ahli saja daripada penulis yang newbie forever inih. piss. Shi Bubeng Pendekar Tanpa Nama (Nah kalau yang barusan ini asli nama Pendekar Tanpa Nama tulisan Kho Ping Ho, nah kan kita kena virus OOT, huh)

Ayo fokus, kembali lagi ke topik...

Jadi kita akan bikin spesifikasi negara harus punya nama!

Ah dari tadi bicara spesifikasi spesifikasi spesifikasi terus, ayo dong diimplementasikan coding lagi jangan banyak bacot mulu' ... lha, ini supaya terbiasa, kalau mengigau spesifikasi spesifikasi spesifikasi di ruby apa rubinius .... aduuh jangan OOT ke rubinius dulu dong, fokus dong fokus... baru belajar neh! (hajar yang nghajar mainan mulu') langsung ingatnya spec spec spec .... iya, pakainya rspec !

caranya:

require File.dirname(__FILE__) + '/../spec_helper'

describe Country do
  before(:each) do
    @country = Country.new
  end

  it "should require a name field" do
    @country.save.should_not be_true
  end
end

iya, jadi yang asalnya should be valid itu Anda hapus saja ya. Ganti sama yang Anda perlukan aja. Anda mungkin bertanya, lho kok nggak ada fixture ? Lha memang karena kita tidak butuh.

Sambil simpan file spec/models/country_spec.rb tsb Anda boleh sambil intip gerakan gerakan bawah tanah hacker hacker di konsole/terminal Anda (haha ini hanya untuk mendramatisir saja apa apa yang berderau di panggung jengking teruk sangat itu, belajar kalau monoton itu itu saja kurang masuk, malah tidur, kalau ini, kalau pusing, takut tanya sama mas arie, ya alamat dikasih selamat kebingungan sendiri, salah sendiri sudah ditawari tanya lagi kalau masih bingung setelah baca masih sungkan sungkan gak pede mau tanya doang).

ya autotest di balik layar Anda itu bergerak gerak menandakan ada yang tidak benar, ya tentu saja, karena memang kita baru menuliskan spesifikasi spesifikasi yang menjadi requirement/kebutuhan si jelita yang ingin dibikinkan oleh Anda sebagai jockey, ehm (ngelirik yang mahasiswa ahyo hari gini nyontek? ama joki?) -_-

Argh sekarang kita lanjut implementasikan satu baris kode validasi harus ada itu tadi. Harus ada apa? Nah lo barusan dibahas udah lupa lagi ... kebanyakan OOT kali neh .. ya harus ada nama buat negara .

ini copy paste dari file app/models/country.rb

class Country < ActiveRecord::Base
  validates_presence_of :name
end

Iya, pada kenyataannya Anda hanya butuh menuliskan satu baris validates tersebut saja, ini sengaja saya kopi kan semua supaya Anda yang baru belajar jangan ragu-ragu atau takut salah, karena ragu-ragu dan takut salah itu adalah pangkal dari kegagalan, bila ingin maju dan sukses, harus berpikir positif, maju terusss, pantang mundurrr, jatuh bangkit jatuh bangkit, itu biasa... merdeka!

Nah sembari Anda bergemuruh akan semangat kemerdekaan, jantung Anda pun berdegup ingin menjentik keindahan warna hijau pertana sukses rspec yang ditampakkan oleh autotest yang berjalan di balik layar itu (hidup hacker indonesia!) Lho? -_-

Oke, sampai disini ada yang ingin ditanyakan dulu nggak?

pokoknya kalau gathering ID Ruby kalo ada saya nggak boleh pasif jadi pendengar setia, harus aktif, jadi tukang protes apalagi kalau bisa menambahkan, pasti bakal disuka sama terutama yang sudah sepah sepah dan jarang turun gunung itu.

Bangsa Indonesia harus belajar untuk berpikiran terbuka, optimis, maju, terus jangan dibiasakan selalu disuapi, dijajah, hingga terbiasa ditarik ditali lubang hidung ibarat kerbau kemanapun kehendak "angin" bertiup. Bangkit Indonesia, berlari mencapai visi hakiki bukan retorika sesat! (Ih, ini paragraf hanya untuk konsumsi diri pribadi Arie saja ini buat bahan introspeksi kayaknya lumayan juga, hmm...) biasa.. belagak bijak -_-

"Pak! Tanya! Kalo saya tanya, nanti mas Arie marah gak?", tanya Sitorus.

Saya: "Ya kalau soal rails yang dibahas tadi ngapain marah Rus... Kan katanya kalau sering marah cepat tua."

...............................................................

Ya sudah titik titik panjang diatas mewakili diskusi yang lagi belajar gitu di kos kos di warung warung di sekolah sekolah di kantin kantin di mana pun teman-teman pemula rails ini sedang belajar dan bercengkerama berdiskusi membahas solusi guna mencapai pencerahan yang ingin didapat.

Ta' lere' wae soko kene.

Lanjut, setelah model sudah lewat kita jamah, sekarang kita mulai menggauli controller. Seperti biasa, kita tentukan dulu lagi spesifikasi spesifikasi spesifikasi apa aja yang ingin dibikin.... Hmmm... coba dipikir-pikir dulu.

Perlu ada :

  1. Listing Countries atau Daftar Negara-Negara
  2. Form buat simpan data
  3. Proses penyimpanan data dan melempar alih serta pemberi status apakah sukses atau gagal

Nah dari sana, kami belajar untuk berpikir resource atau sumber daya apa yang dibutuhkan?

Bila diterjemahkan dengan Rails dan resource maka jadinya begini:

  1. GET /countries
  2. GET /countries/new
  3. POST /countries

Jadi langsung saja kita menerkam mangsa kita satu ini yaitu file spec/controllers/countries_controller_spec.rb

Pada mulanya:

require File.dirname(__FILE__) + '/../spec_helper'

describe CountriesController do

  ##
  # GET /countries

  describe "GET 'index'" do
  end # describe "GET 'index'"

  ##
  # GET /

  describe "GET 'new'" do
  end # describe "GET 'new'"

  ##
  # POST /countries

  describe "GET 'create'" do
  end # describe "GET 'create'"
end

Kemudian simpan, Bim salabim.... Byur Byur.... Ijo... ijo.... ijo.... (Tanda rspec sukses) Nah ini bukan menganjurkan praktek perdukunan, kami hanya menganjurkan yang positif saja, maksudnya kalau yang lagi belajar termasuk programmer yang nggak suka ato jarang mandi, jangan lupa mandi dulu sana!

Buat yang bukan programmer baca ini, jangan ketawa atau tersinggung lho, emang betul tu ada lumayan lho yang kelakuan saking gak mau pindah meninggalkan komputernya sampai gak mau bangkit dari tempat semedinya hanya untuk mandi sebentar.

Sudah OOT jangan kelamaan, ini tulisan jadi melorot nanti -_- terang aja tadi ijo soalnya memang belum ditulis apa-apa specnya. itu baru kerangka.

Sekarang coba kita mulai isi:

....

Setelah 1/2 detik penulis berpikir barusan, tahap demi tahap copy paste dicancel karena watak penulis yang gak sabaran, jadi langsung di copy paste kan keseluruhan isi file spec, kemudian juga seluruh isi file controller, bila yang ingin bertanya lebih lanjut, bisa didiskusikan kalau memang bertemu dengan Arie sendiri ataupun boleh lewat komentar atau lewat milis terserah.

require File.dirname(__FILE__) + '/../spec_helper'

describe CountriesController do

  ##
  # GET /countries

  describe "GET 'index'" do
    before do
      @country   = mock_model(Country)
      @countries = [ @country ]
      Country.stub!(:all).and_return(@countries)
    end

    it "should render template index" do
      load_page
      response.should render_template(:index)
    end

    it "should assign a listing countries" do
      Country.should_receive(:all).and_return(@countries)
      load_page
    end

    it "should route for GET /countries" do
      route_for(:controller => "countries", :action => "index").should
        be("/countries")
    end

    def load_page(params={})
      defaults = {}
      get :index, defaults.merge!(params)
    end
  end # describe "GET 'index'"

  ##
  # GET /

  describe "GET 'new'" do
    it "should render template new" do
      load_page
      response.should render_template(:new)
    end

    it "should route for GET /countries/new" do
      route_for(:controller => "countries", :action => "new").should
        be("/countries/new")
    end

    def load_page(params={})
      defaults = {}
      get :new, defaults.merge!(params)
    end
  end # describe "GET 'new'"

  ##
  # POST /countries

  describe "GET 'create'" do
    before do
      @params = [
                  { "name" => "Indonesia" },
                  { "name" => "Malaysia" },
                  { "name" => "Filipina" },
                ]
      @country = mock_model(Country)
      Country.stub!(:create!).and_return(true)
    end

    it “should directly create! (set and save) all countries ready to save” do
      Country.should_receive(:create!).with(@params).once.and_return(true)
      load_page
    end

    it “should assign a flash notice and redirect to index upon success” do
      load_page
      flash[:notice].should_not be_blank
      response.should redirect_to(countries_url)
    end

    it “should render back template new upon failure” do
      @country.errors.stub!(:full_messages).and_return([])
      Country.should_receive(:create!).and_raise(ActiveRecord::RecordInvalid.
                                                   new(@country))
      load_page
      response.should render_template(:new)
    end

    it “should route for POST /countries” do
      route_for(:controller => “countries”, :action => “create”).should
        be(”/countries”)
    end

    def load_page(params={})
      defaults = { :country => @params }
      post :create, defaults.merge!(params)
    end
  end # describe “GET ‘create’”
end

Kemudian file controllernya:

class CountriesController < ApplicationController

  ##
  # GET /countries/new

  def new
  end

  ##
  # POST /countries

  def create
    Country.create!(params[:country])
  rescue ActiveRecord::RecordInvalid
    render :action => :new
  else
    flash[:notice] = “Successfully saved!”
    redirect_to countries_url
  end

end

Hm, kemudian sekarang spec view-nya new:

require File.dirname(__FILE__) + '/../../spec_helper'

describe "/countries/new" do
  it "should display a title New Countries" do
    render 'countries/new'
    response.should have_tag("h1", "New Countries")
  end

  it "should display a form to submit multiple new countries" do
    render 'countries/new'
    response.should have_tag("form[action=?][method=post]“, countries_path) do
      20.times do |i|
        with_tag(”input[name=?]“, “country[][name]“)
      end
      with_tag(”input[type=submit]“)
    end
  end
end

Anda Capek nyalin ngetiknya? Kayaknya saya yang sekarang sudah mulai mengantuk setelah dinina bobokan dengan posting blog saya kali ini … uh. (Lama gak dipijit / pegel2x huhuhu)

Dan ini view new nya. app/views/countries/new.html.erb

<h1>New Countries</h1>

<%= error_messages_for :country %>

<% form_tag "/countries", :method => :post do %>
	<ol>
		<% 20.times do |i| %>
			<li>
				Name :
				<%= text_field_tag 'country[][name]‘ %>
			</li>
		<% end %>
	</ol>
	<p>
		<%= submit_tag “Save!” %>
	</p>
<% end %>

Ini sekarang spec viewnya index

require File.dirname(__FILE__) + '/../../spec_helper'

describe "/countries/index" do
  before do
    @country = mock_model(Country,
      :name => "Indonesia")
    @countries = [ @country ]
    assigns[:countries] = @countries
  end

  it “should display a title Listing Countries” do
    render ‘countries/index’
    response.should have_tag(”h1″, “Listing Countries”)
  end

  it “should list countries” do
    render ‘countries/index’
    response.should have_tag(”li”, @country.name)
  end

end

Dan ini isi dari codes viewnya index app/views/countries/index.htmlerb

<h1>Listing Countries</h1>

<ol>
	<% @countries.each do |country| %>
		<li><%= country.name %></li>
	<% end %>
</ol>

Lho lho lho? Anda jadi cemberut gitu tadi pada ngikutin dengar sabar postingan ini ngeliat saya ngantuk baru bisa akan tidur? Mustinya ikut senang dong, daripada saya nggak bisa tidur tidur hayo -_- Rasanya nggak enak lho kalo mo tidur musti macem macem dulu…

“Pak Arie! Dari tadi saya selalu lihat code code menakutkan dan konsole/terminal hacker itu pak, kapan saya boleh pegang mouse pak? kapan saya boleh tes di browser langsung untuk melihat apakah aplikasi saya bisa dipakai dan berjalan atau belum”, Sitorus protes.

Saya jawab, “Oh iya, ya silakan, tinggal Anda ketik script/console lalu buka browser Anda, ketik localhost:3000/countries/new . Nah sudah disana Anda tinggal ketik.”

Udah saya mau tidur dulu.

ps. Buat para sesepuh penasihat Arie yang sangat mendukung Arie menulis dengan sangat sangat sangat sangat sangat……. dimohon masukannya dan obatnya agar Arie bisa menulis sampai selesai secara step by step (request, tutorial juga, jangan langsung satu malam sekali belajar tapi abis gitu langsung sakit masuk angin trus mencret mencret kalo itu mah bukannya belajar tapi penyiksaan tuh, tapi learning by doing satu per satu yang penuh kasih sayang, please)

ps. Buat yang benar-benar sedang belajar rails, kalau ada kata-kata yang kurang berkenan, kami mohon maaf, itu semua semata-mata hanyalah ilusi seorang gembel sebelum tidur.

GLODAK!

Baru saja kepalaku terantuk ke dinding ! lupa commit dulu git nya. Ayo git, kita commit .. ah mau nonton rake spec dulu ya, boleh:

m:spike_multiple_array_form_save arie$ rake spec
(in /Users/arie/spikes/spike_multiple_array_form_save)
...............

Finished in 0.340209 seconds

15 examples, 0 failures
m:spike_multiple_array_form_save arie$ rake stats
(in /Users/arie/spikes/spike_multiple_array_form_save)
+----------------------+-------+-------+---------+---------+-----+-------+
| Name                 | Lines |   LOC | Classes | Methods | M/C | LOC/M |
+----------------------+-------+-------+---------+---------+-----+-------+
| Controllers          |    38 |    19 |       2 |       3 |   1 |     4 |
| Helpers              |     5 |     4 |       0 |       0 |   0 |     0 |
| Models               |     3 |     3 |       1 |       0 |   0 |     0 |
| Libraries            |     0 |     0 |       0 |       0 |   0 |     0 |
| Model specs          |    11 |     9 |       0 |       0 |   0 |     0 |
| View specs           |    39 |    33 |       0 |       0 |   0 |     0 |
| Controller specs     |    99 |    75 |       0 |       3 |   0 |    23 |
| Helper specs         |    11 |     7 |       0 |       0 |   0 |     0 |
+----------------------+-------+-------+---------+---------+-----+-------+
| Total                |   206 |   150 |       3 |       6 |   2 |    23 |
+----------------------+-------+-------+---------+---------+-----+-------+
  Code LOC: 26     Test LOC: 124     Code to Test Ratio: 1:4.8

m:spike_multiple_array_form_save arie$

Ya sudah ya sudah sekarang betulan mo tidurrr

git commit -a -m “listing countries and adding multiple countries have been added”

ini source code nya ada di laptop ini, nanti kalo dah nggak ngantuk akan saya update buat taroh dimana gitu akan saya update lagi, ah mulai ngaco nih ampe gw nulis sambil mata penuh air. udah oyasumi.

tut.. tuing.. tuing. .. zzzzzzzzzz




wc -l 172, Arie’s Random Note

5 04 2008

[cross culture] Bih! Ternyata mlintir mi (gaya Eropa) tu sulit ya =)) melintir gitu =)) bisa bisa tangan ma jari gw yangmlintir. bukan mi nya.

[cross culture] jadi kalo orang amrik denger gw order pake melayu dikiranya croissant perancis itu, padahal gw bilang limo ais kosong buat dia , it’s even funny for Indonesian like me as we say : jus jeruk or es jeruk pake gula or nggak pake gula (the default setting is always with sugar) in Indonesia. we have “es” word to say “ice” i don’t know in malay i guess its written malay is “ais”

[cross culture bule lawan bule] ini pas kita lagi ma’em di warung cina masakan paporit

[id-ruby] duh ada yang ngomong hebat banget, punten abdi teh cuma biasa sama yang biasa biasa aja. masih baru belajar bareng kitu.

[idup bareng bu'le'] kakiku pegel tiap wiken hik.

[idup bareng bu'le'] pernah seharian cuma makan sayur bukannya jadi kuat kayak mereka malah nggelinding pusing tuju keliling! jadi masi tetap makan nasi.

[indonesiana] ‘blogosfer’ ??? yuck! i hate that term and i hate it’s being used!

[digital camera] i feel stupid but curious of i want to get the best camera but i don’t know which one to choose. it’s just like old people asked that they want the best computer but don’t know how to use it yet

[kelakuan] jangan liat/nilai orang cuman dari jas, penampilan, apalagi sampai membangga-banggakan lalu menjadi pengikut buta. Barangsiapa yang melakukan ini, maka suatu saat ia pasti akan kecewa, karena hari gini tidak ada manusia sempurna.

[pilihanhidup] “bagaimana ada banyak orang yang bilang bahwa seseorang itu pintar dan hebat padahal ini orang nggak ngerti sama sekali apa yang dimaksud dari yang dibicarakan dari seseorang yang disebut pintar itu?” kurang lebih begitulah apa yang disebut oleh Zed Shaw di interview nya dulu itu.. sebaiknya memang bersikap sesuai saja dengan yang dihadapi, mis. baru bisa bikin inisiasi Class ya bilanglah begitu tanpa harus mengagung-agungkan siapapun juga karena tindakan itu juga tiada faedah dan hanya menimbulkan reaksi negatif seperti iri dengki sombong bahkan bisa sampai lupa diri. Bukankah yang lebih nikmat adalah menjalani hidup sesuai dengan yang diimpikan saja… sesuai apa yang diingini sesuai ideologi masing-masing. pasti ada alasan besar bila seseorang senang melakukan apa pun (seekstrim apapun itu bahkan), mis. ingin jadi wartawan di iraq, ingin code pake semau-maunya demi produktifitas karena 1 sampai 2 jam saja langsung jadi dan stabil/siap pakai seterusnya. berhenti nghakimin orang, tapi lebihlah melihat cermin diri ini apa saja yang sudah dihasilkan. kalau memang pada saatnya nanti aku pun harus switch 100 persen ke rubinius, ku mau tak seorang pun mengganggu. tidak juga kau.

[bahasa indonesia grammar] we usually alter “meng” by “ng” only as it’s simple and short to say :-) ie. mengakali, menggoda, mengencangkan…. oh ou, it shouldn’t be any references at all to non-indonesian cos i just realise that we only say : ngakalin, nggodain, but… ngencangin… kencangin… hm, now there are two options, damn i don’t even know indonesian grammar then! i can’t speak formal Indonesian! ie. I’ll just say to a driver this straight in Jakarta: “Gambir.” for short, not this long : “Mohon sudilah kiranya bapak memberikan tumpangan taksi kepada saya dari sini sampai stasiun kereta Gambir” or in english : “Would you like to give me a ride from here to Gambir Train Station, please”

[abad kemarin ngomong e'e'pisi?] blah muntah muntah denger sebelah (iye jerman gedebag gedebug) kek cacing kena panggang manas-manasin gw biar punya tu e’e’ e’ pisi cape deeh kalo cuman buat keren kerenan , trus cewek lah, trus punya banyak bagus bagus lagi di kos, yah :-) kelakuan gitu cuman nambah daptar orang buat jadi objek (ke)gemes(an)ku. Hidup tanpa laptop menyihatkan. # ngacir

[Terminal] Control M sama dengan Return.

[Terminal] Bah Control Keyboard aing bleguk!

[Blog Roll Feature for Blog is useless for me!] It’s only usefull to non dynamic blogger, but if a blogger change it continuously, then it’s useless. Let’s say me for example, I find WordPress Blog Roll facility is useless. It can’t keep up to my speed. I prefer have a YAML file instead, then update periodically my links page. # No no no, for Indonesian pals, don’t try to start talking or even thinking why I don’t use Mephisto or other Ruby based blog, if I can get a free wordpress blog, why should I use a mephisto blog and host it somewhere. I’m even lazy to set things up for any settings or config there, just want to focus on contents (which is mostly my learning notes or could be anyone else’s learning notes/see howto for detail).

[Song only] I like this song so much (thanks to romire who uploaded it on youtube).

[#$%!?] Sebisa mungkin kalau bisa selalu mengangkat, bukan menjatuhkan, contoh: wanda hamidah bilang pinginnya sih jangan yang 9 to 5 kayak kantoran, dijawab: ya bikin kantor sendiri aja. Lah memangnya kalo bikin kantor sendiri lantas bebas ongkang ongkang babi haha mending dibungkus buang aja nih, lagipula kalo kerja kantoran juga ada kok yang bisa fleksibel, tinggal kantornya gimana gimana aja / tinggal milih mah kalo emang potensi. Ya bikin perusahaan sendiri juga gak pa pa, tapi jangan dikait-kaitkan sama gak ada kerjaannya si ongkang-ongkang babi. Rajin pangkal pandai. Hemat pangkal kaya. Gak usah terlalu dihebohin kalo ada yang punya perusahaan datangnya paling pagi pulang paling belakangan (ngomongin Superman, gw pilih Anne Clark aja dah).

[man port] if I couldn’t do man port on this macbook, simply just do

m:man arie$ man -M . port

m:man arie$ pwd

/opt/local/man

ato tinggal nambahin ginian doang (ah payah, tinggal perintah man man aja linggisnya arie nyeruduk nyeruduk)

export MANPATH=/opt/local/man:$MANPATH

di simpan taro di profile lah ato di bash profile nya ndiri lah

[spam] keknya gw dispam ma anak filipin deh. uuh. kumustaka kumis lu itu… abisnya lonya ndiri yang kurang tegas, mampaatin kalo tu orang cewe kan, dasar.

[wanita cantik] Matamu berbinar, Kulit putih mulus sampai nyamuk dan lalat pun pasti tergelincir karnanya, senyummu yang teduh, hu uh, tak bisa aku tulis dengan kata kata, yang ada hanyalah jongkok ngitung receh berapa puluh juta rupiah sebulan biaya ngerawat bidadari segitu =)) Jadi inget kalo jadi php programmer bergaji Rp 30 juta sebulan, berarti masih kalah sama Tukul yang gajinya katanya Rp 20 juta sekali tayang. …. Jongkok lagi ngitung recehan sen… Gile! Makinari makin cantik aja tuh produk2x indo -_-V

[travelling] how many of you will really check and recheck again what must do etc, saved by wikitravel :-) Here are some links: Bandung, Bali, Bangkok, Krabi. Hoooh wait, of course if you’ve been to Bandung that Batagor looks so deluxe :-D I bet that must be more than Rp 5,000 :-P that’s too deluxe actually, we usually got plain and lot one =)) Oh I miss Jakarta where I can get Batagor so easily (also soto mi, bakso, sate, Indonesian Food is the best…. drool / hey anti rice, those foods i mentioned just before got no rice at all you know :-P Just eat, cos I can’t cook)

[jis] najis tralala bener kok abis paragrap titik titik trus ngomongin mo jalan jalan ke titik titik.

[vim for leopard] I just realised that the executable vim path is in /usr/bin which means it’s been delivered on leopard by default. I know I can easily compile vim myself to any OS that I love (like Mac OS X and Linux) but my question is why Apple doesn’t deliver ViM GUI by default? I think it’s nice to have cocoa ViM.

[#$%^@!] anjing bangsat internet mampus bikin frustasi aja di server amrik!!! hantu hantu di server pusing….

[#$%^!!] aku hajar lagi dinding dinding kebun binatang sontoloyo aku hajar hajar lagi kegeblekan itu. dan terlahirlah pelampiasan tulisan tulisan berpoin poin dibawah ini!

[nginx] mungkin sudah bisa didapat dari wikinya yang pake inggris, kalo masi tulisan asli pake bahasa rusia ya dasar nasib mampus blech untung ada temen kos anak rusia.

nginx path prefix: “/usr/local/nginx”

nginx binary file: “/usr/local/sbin”

nginx configuration file: “/usr/local/nginx/conf/nginx.conf”

nginx pid file: “/usr/local/nginx/logs/nginx.pid”

nginx error log file: “/usr/local/nginx/logs/error.log”

nginx http access log file: “/usr/local/nginx/logs/access.log”

nginx http client request body temporary files: “/usr/local/nginx/client_body_temp”

nginx http proxy temporary files: “/usr/local/nginx/proxy_temp”

nginx http fastcgi temporary files: “/usr/local/nginx/fastcgi_temp”

saya perlu restart monit kalo sudah ubah ubah konfigurasi file di conf monit. oh path pathnya dimana? Nih!

`monitrc` -> `/usr/local/etc/monitrc`

`ruby_application.monitrc’ -> `/usr/local/etc/monit.d/ruby_application.monitrc’

`ruby_application_staging.monitrc’ -> `/usr/local/etc/monit.d/ruby_application_staging.monitrc’

`mysql.monitrc’ -> `/usr/local/etc/monit.d/mysql.monitrc’

`nginx.monitrc’ -> `/usr/local/etc/monit.d/nginx.monitrc’

`nginx.conf` -> `/usr/local/nginx/nginx.conf`

`monit` -> `/etc/default/monit`

[selingan prancis/disela cewek prancis] anjing! cantik banget!! ting tong ting tong ciong ciong tung tuing tuing tuing

[monit sama nginx lagi] cara restart monit sudo /etc/init.d/monit restart. dapetin gitu doang sampe 3 jam lebih + ganggu ganggu iblis, bah! koplok! # sambil pegang pedang starwars

[monit sama nginx lagi] cara restart semua aplikasi sudo monit restart all -g nginx, awas kalo ada banyak aplikasi jalan tu bakal ke restart lho.

[monit lagi] kalau hasil dari sudo monit status keluar doesn’t have file gitu periksa lagi port yang dipakai apakah sudah bersesuaian dengan yang ada di config/deploy.rb. Kalau ternyata malah gak ada, ya berarti pasang di config/mongrel_cluster.yml

---
cwd: '/home/rubykusayang/apps/rubykumanis/current'
port: 8450
environment: 'production'
address: '127.0.0.1'
pid_file: '/home/rubykusayang/apps/rubykumanis/shared/pids/mongrel.pid'
log_file: '/home/rubykusayang/apps/rubykumanis/shared/log/mongrel.log'
servers: 2

note:

“rubykusayang” = a user home

“rubykumanis” = an application name

[alasan kenapa mongrel_cluster.yml] kenapa di sebagian aplikasi tidak pakai mongrel_cluster.yml, karena … linggis ah… why in some apps we use mongrel_cluster.yml, and in some apps we don’t use mongrel_cluster.yml ? Because … this file shouldn’t be in SCM repository, it should go to the server config only. so we always use mongrel_cluster.yml, it’s just being symlinked from #{deploy_to}/#{shared_dir}/config/mongrel_cluster.yml to #{release_path}/config/mongrel_cluster.yml . Iblis sebelah ini juga nerangin kalau pakai merb gak pake mongrel_cluster.yml malah pake satu file di config nambah satu baris gitu doang, dengan senyuman pembunuhannya itu pendekar berpedang itu bilang : “it’s well documented” # kabur.. takut.. dikejarnya pakai parang sambil ngomong bahasa jawa nanti aku!

[bash doang] if you got your Leoapard Terminal without color while doing “ls” command, simply add alias for it, ex. edit /Users/arie/.profile then just add there alias ls=”ls -G”. Done!

[tunjul yang diatas] abis gitu colokin laptopnya di monitor layar lebar huhuhu cute banget Terminalnya.

[tunjul lagi monit yang diatas] ya tapi gimana cara nge-restart si monit nya itu sendiri????

Nih caranya:

sudo /etc/init.d/monit restart

[check a method] check that attr_accessor :something so that don’t get panic to ask where “something” local variable come from. it came from method.

[goyang gejrot] pusing sama plugin tzinfo yang katanya deprecated sama sering banget pake cara cara frozen atau alamat/bakal frozen gitu? liatin file testnya, jalanin deh rake test:plugins error tuh, biar jalan kalo di textmate tinggal tekan apple r tinggal tumpuk aja require nya dengan code-code dibawah ini.

require "rubygems"
require "tzinfo"
require "../lib/tzinfo_timezone"

[pp rails] pp is not being required by default anymore since recent rails edge. so do give command require ‘pp’ first before using it in rails script/console.

m:e arie$ script/about|rak Edge
  10|Edge Rails revision       264
m:b arie$ script/about|rak Edge
  10|Edge Rails revision       9088

[expatpool] making friend through ExpatPool is fun! Wish many more girls want to meet us =)) I know I don’t speak that much and perhaps that makes girls act as unexpected to me…. # gubrak, sialan gw jadi curhat.

[jeruk makan jeruk] sst .. jadi uda seneng ada yg bantuin bersih2 ya :p susah nih kebiasaan gak nyaman dibantu, malah dipaksa sama pembantu sering ngerasa aneh juga. ugh gejala konflik kultur nih. Terserah deh mo sebut di gw gituh biasa ditempatin datuk kek datok kek, gw nggak ngeh dah

Cute Cats… Thanks for someone who uploaded the video!!! I love cats.

[new vocab] outlier = outlier |ˈaʊtlʌɪə|
noun
a person or thing situated away or detached from the main body or system : less accessible islands and outliers.
• a person or thing excluded from a group; an outsider.
• Geology a younger rock formation isolated among older rocks.
• Statistics a data point on a graph or in a set of results that is very much bigger or smaller than the next nearest data point.

[mac greeting] we use grawl notification here. press control space, then press . (dot). then just type something, for example: Hei Orang Gila Jelek Lu :-P . And then press Enter/Return. Then we’ll see that string using big fonts on our lovely mac screen ;-) Credit goes to Someone near me who likes making others curious :-P spooky spooky spooky scoobeedoobeedoo…. -_-V

[edge rails active record] nice! since when it supports first, last, all just like Data Mapper!

And The Log:

 Country Load (1) (0.000837)   SELECT * FROM `countries` LIMIT 1
 Country Load (1) (0.000908)   SELECT * FROM `countries` ORDER BY countries.id DESC LIMIT 1

[edge rails] always check rake -T to get new cool features. it’s just getting longer and longer.

[nak myuzik boleh ke?]




dari Lambda jadi Doing, dari Tiada jadi Ada

7 03 2008

We often do this in our spec code, lambda { “do something” }.should change(object) then one invisible samurai soul next to me said : “aliasing this lambda to be doing is more readable instead”.

Me: “Well that won’t be ruby syntax anymore :-P and it’s not very familiar then to other rubyists”.

Him: “’should’ syntax is not general ruby either”.

Me: “Yeah that’s because of ruby metaprogramming.”.

Me:

irb
>> module Kernel
>>   alias :doing :lambda
>> end
=> nil
>> a = doing { "tes" }
=> #
>> a.call
=> "tes"
>> exit

Me: “Ha, your idea works! :-P”

Him: “Well it’s not my idea actually I read it someone’s idea somewhere”

Me: “:-P our rake stats is getting thinner”

Note: Let me know if you find this idea, you like it or you hate it, feel free to comment. Comments should go in this blog post/thread comment, not via Skype, YM, etc =)) :-P doing C++ / Smalltalk situp again for the sake of DP by GoF! again… again… -_-




Catatan Acak Arie Gado Gado

7 03 2008

[vim] Why I emphasize “know your editor well, don’t just use it because of nothing or popularity”, cos once we “know” our editor, it can increase productivity.

The first long one gives me nice status bar, but only if I :split my vim. (I always use :spl and :vspl, ex. my code is at the top and the rspec code at the bottom vim, I probably will do :! to execute command automatically from ViM [Lazy to move around again if I'm already inside ViM])

set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [ASCII=\%03.3b]\[HEX=\%02.2B]\ [POS=%04l,%04v][%p%%]\ [LEN=%L]
set nowrap
set backspace=indent,eol,start
set nu
set history=50		” keep 50 lines of command line history
set ruler		” show the cursor position all the time
set showcmd		” display incomplete commands
set incsearch		” do incremental searching

I got codes below from vimrc examples, so it’s easy to do :r or just copy paste if I use Textmate/or emacs (anyway). It’s handy so vim will detect automatically what type of file currently being edited.

" Only do this part when compiled with support for autocommands.
if has("autocmd")

  " Enable file type detection.
  " Use the default filetype settings, so that mail gets 'tw' set to 72,
  " 'cindent' is on in C files, etc.
  " Also load indent files, to automatically do language-dependent indenting.
  filetype plugin indent on

  " Put these in an autocmd group, so that we can delete them easily.
  augroup vimrcEx
  au!

  " For all text files set 'textwidth' to 78 characters.
  autocmd FileType text setlocal textwidth=78

  " When editing a file, always jump to the last known cursor position.
  " Don't do it when the position is invalid or when inside an event handler
  " (happens when dropping a file on gvim).
  autocmd BufReadPost *
    \ if line("'\"") > 0 && line("'\"") <= line("$") |
    \   exe "normal g`\"" |
    \ endif

  augroup END

else

  set autoindent		" always set autoindenting on

endif " has("autocmd")

[rubinius] untuk yang sering lupa akan nama-nama dari simbol simbol di bahasa pemrograman apa aja, terutama ruby dalam hal ini, bisa lurking di bin/name_map.rb . BTW kalau di buku buku tertentu di Indonesia “lucu” juga itu comparison disebut-sebut operator “ufo” (kalau pernah baca satu dari sekian buku perl disana)

[search from many multiple files at once in vim] it’s just from my feeling. doing shift command f inside textmate or doing grep on bash just feels the same. running grep from terminal as heavy as inside textmate. cmiiw pls (especially with bin/time and/or any benchmarking numerics result), but this one was fast, whoop…, i don’t know why

:vimgrep /redirect_to/ /Users/arie/Projects/eee/app/controllers/*.rb

oh we can do :clist to display all of our search results, or just :cnext or :cprevious to know where the result files are.

[more-vim] haha :-P now what do you need more arie? instead of that textmate shit? oh, (1) automatic completion argh i don’t know yet about this one, i read blog posts from googling around but i still can’t get it worked beautifully. oh, i got :rub as well, nice, but i don’t think i really need that advanced feature so i just disable them (yes, including lisp, tcl, perl, python for executing commands inside vim), maybe just later when I can do scripting heavily in vim. (2) tab but not to click as i hate mouse, just call in somehow from command would be nice, i once seen this trick somewhere from rails wikibut after i tried to follow that, i couldn’t get it worked, don’t know about the progress nowadays, hey anyone has tried that? just share it with me.

[cross-culture] hm blond people who are surrounding me usually say : “See you” without looking in the eyes. Oh Malay also usually say “Thank you, come again” in Japanese but with “weird” expressions ;-) in Japanese restaurant (arigatou gozaimasu… mata). Weird Meaning they do that while cleaning dishes, bringing plates and glasses, walking around without looking at my eyes but it’s fine (compared to Melbourne people).

[Indonesian Grammar] whenever we want to put “ing” after a verb, like blogging, dancing, dating, we just replace that “ing” to be “nge” appended before the verb, so the result is : ngeblog, ngedance, ngedate, etc

[non-geek yang kuhormati] dia datang, lalu bertanya, gimana caranya supaya gampang ke revision ke-n, dijawab, coba kalau kamu nggak keberatan pake textmate, kamu bisa tinggal tekan control shift a, lalu diotomatiskan di textmate sana. Ditanya lagi, gimana caranya supaya aku bisa download source code programmu supaya aku bisa edit copy write nya. dijawab kamu buka terminal, trus ketik perintah ini svn co svn://alamate/projectname. kukirim ke skype mu ya. dan dia pun berlalu setelah berterima kasih. beuh…

[amerikana] duh makin banyak aja londo amrik disini, bahasa inggrisku bisa tambah variasi aja nanti nih[f]

[ruby migration] selain data mapper yg main hapus saat rake dm hingga tetap aja satu satu :-P peraturan nomor 51 lakukan ini lakukan itu, kapan ngeliat migration yang bersih :-(

[ruby migration] walau diawali dengan mencoba mereplika bug di localhost dan fine fine terus dan hati makin kesal berbulu bulu gorila tapi tangan ini juga terasa gatal dan berdarah darah arghghghgh kalau kusabar-sabarkan replikasi dari database di culik boleh juga kalo gak sampe puluhan giga satu tabel -_- (pret!)

[ruby migration] (500 records) boom boom boom boom boom! manisnya… :-) gini nih kalo kekurangan integration testing! Idealisme seorang tukang koding emang sering gak bersesuaian dengan idealisme kenyataan hidup , sidenote makanya dulu dulu salah sendiri kenapa tolol koding bego gitu, coba pakai yang bersih kan gak ngomel2 gini!

[ruby migration] tambah manis! testing 2 environment, satu jebolan server, satu karangan piktip! rghghgh harakiri!

[ruby migration] jutek butek butek!!! ghrlrlrlr…

[marketing said?] people use facebook, less and less use email??? argh disagree! i know facebook has been increased rapidly, myspace, but I don’t think it’ll change people habit using email. Facebook email thing sucks! you know what, it doesn’t support draft automatically saved like Gmail. Don’t say this is a crazy technical thing or something like that (I even don’t start talking about session or any data sent through the net with ajaxy things yet), imagine this scenario, what if I want to write an email draft first i don’t want to send that draft immediately, i can’t do that in facebook! write it in my own happy chappy ViM Editor for email is a big no no cos I’m always online. Oh you hate Gmail because it doesn’t support things you had in Yahoo Mail? true! Gmail also sucks =)) I even tend to remove my friendster account, but whenever i want to remove it, i cancel it, because i see many indonesian people over there, but i never used friendster email (friendster email bloody suck!) i don’t use email on facebook unless i’m forced/like if i forgot my friend’s email). Ujung-ujungnya ngomel berlanjut: semuanya suck! =)) loncat - njengking - rekursif. Seriously, if you still remember about facebook regulation, it really sucks!! links: go to wikipedia search facebook and trace from there!

[textmate shortcut of the day] command alt zero (yes, 0, not O letter) to fold and unfold.

[ruby open id] jadi ceritanya melakukan penelitian ruby open id selama 2 jam? :-P kata orang terpintar se Indonesia : Gitu aja repot????? tinggal comot dari beast aja udah tinggal pakai =)) Hus! sama sekali jangan percaya! Blogger kan penipu !! Jadi pokoknya kalo yang curhat nulis di blog = penipu. Trus ada kalo lagi jalan-jalan trus bikin catatan perjalanan = penipu. Ada ahli masak bikin tips masakan enak = penipu. Ada orang belajar bareng temen-temennya di blog biar keliatan jatoh bangun sama salah-salahnya dengan polos = penipu. Aiyyou pandainya yang cakap tu jer.

[plugin VS rubygem] matilah kau plugin, hiduplah kau rubygem. Lho jadi kemarin2x baru belajar itu acts_as_authenticated? duh… jadi sudah jadi restful_authentication gitu ya? jadi kalo dari file column , trus kan acts as trus jadi attachment fu, trus jadi hula hula. Lha kalo konsep ekstensi di radiant kan bagus toh meningkatkan produktifitas, tinggal tempel 1 jam, jadi, kok jadi rubygem sih… bah jangan percaya blogger penipu!!! sontoloyo! simelekete! (To Non Indonesian who can guess around the context and read Indonesian news, this is what you’ve got to Indonesian flavour -_-V Indomie … seleraku )

[man -M .] man -M . git-fetch inside git repo / but remember to git checkout head/man first. just like when we play around with git checkout head/html so git manual will be available locally

[linggis:ecommerce bandel] ngomong2 soal bandel, bandel itu kalo di Engdonesah artinya bandel bu’li’ (disono orang-orang nyebutnya bundel) -_-

[linggis:dilit] ya bacanya delete jadi dilit (boso jowo: sedilit = sebentar sinonim sama satu vocab lagi gw lupa tadi barusan uda di lidah padahal). sama kayak login kalo di indo sering banyak yang pronounce lojin.

[ruby shell = rush] wah yang kuat sama networking trus sama yang low low sama operating system bagus nih main ginian! daripada “turun derajat” dengan bash ato bermain perl oneliner yang gampang banget ditulis dan tak akan pernah ingin dibaca (kaburrr….)

[milis] mo nanya, tapi gak tau cara nanyanya. masalahnya tau, tapi nanti kalo ngomong nggak tau cara nyampaikannya. jadi gak jadi nanya. yaah. ada lagi, mo nanya, tapi gak tau judulnya apa, sama nggak tau namanya apa, pokoknya yang dipengenin tuh gini (sambil demokan di komputer), dah itu, gimana caranya dari gitu sampai jadi gitu. jadi gak jadi nanya. yaah. =)) itulah makanya perlu ada ketemuan offline yang gak selalu online, jadi kan bisa belajar bareng.

[wong ayu ngguyu] ne’ wong ayu ngguyu iso ngono yo -_-

[wong ayu bersin] ciii cii.. beuh bersin batuknya wong ayu ngono yo, kapan jadi jeleknya…

[ngguyune wong jerman] zukh auf gedebag gedebug yang nguing nguing gedebag gedebug kik kik ngak ngak ngak wuh wah wuh wah (hih nggak berenti2x s/d dipijat2 s/d pulang dari toilet s/d duduk nyambung lagi, bah kehabisan oksigen bisa berabe tuh).

[obat sambil koding sambil cegukan] orang finlandia bukan cuma bakat mbikin hengpon nokia tapi ternyata juga bisa ngajarin supaya bisa sembuh dari cigukan =)) kesian kali tu bule ngeliat gw sambil koding sambil cigukan mulu’ udah smbil minum kopi panas masih juga… dikasitau caranya tarik napas dalam dalam simpan semua nafas itu trus tahan napas. trus keluarkan/hembuskan perlahan2, udah gitu pas gw praktekin sembuh betulan =)) paten ! =)) linggisnya hickup hikup atau apa gitu deh..

[orang bule gak bisa ribut?] bunyi tut! tut! gempar udah =)) naik lift kalo gw begerak, gempar udah! =)) mungkin belum pernah ketemu banjir sama kalo kebakaran rame rame panik atau pas gempa atau pas mati lampu atau pas ada bom atau pas ada bangunan gede jatoh trus kepalanya putus kayak di Jakarta dulu itu, brakkk… beuh jadi horor gini. sadis sadis bawaan orang indo -_-

[alias method and alias] alias method must be inside a class. alias could be anywhere, i found there 3 difference about them, now i forgot where i read them … oh peepcode.. but anyway, here’s my irb copy paste:

m:code arie$ irb
>> def foo; 'hi'; end
=> nil
>> alias :bee :foo
=> nil
>> bee
=> "hi"
>> alias_method :new_foo, :foo
NoMethodError: undefined method `alias_method' for main:Object
	from (irb):4
>> Object.respond_to?("alias_method")
=> false
>> Class.respond_to?("alias_method")
=> false
>> class Coba
>> end
=> nil
>> Kernel.respond_to?("alias_method")
=> false
>> class Coba
>>   def foo; 'hi'; end
>>   alias_method :new_one, :foo
>> end
=> Coba
>> c = Coba.new
=> #
>> c.new_one
=> "hi"
>> exit
m:code arie$ 

ya awalnya gw ngotot metode-metode yang ada tsb kan berada dalam Object, lha si Object kan mbahnya si Object di Ruby. Tapi tetap, harus berada di dalam class. Kalau baca manual ri tentang alias method merupakan metode dari Module mixin.

[menghargai waktu] kutanya ke bule eropa, apakah orang-orang di eropa berjalan secepat kamu? dijawab, ya, kisaran gw di peringkat 20 lah, bahkan kalo gw jalan sendiri bisa lebih cepat! # Kalau aku mulai berpikir, beuh dasar orang di negara maju gila, aku akan berpikir/introspeksi dengan cara terbalik, hm, sebetulnya mereka yang cepat atau saya yang lambat -_- busssseeeetttt ni dibelakang begerak kayak Flash gitu sih!!!

[trik menghindar dari yang blank soal IT] inilah obrolan di pelosok ndeso sana (yaitu sebuah desa antah barantah yang sangat tidak tepat untuk seorang yang serba dinamis dan ambisius apalagi bila berdasi dan suka terbang merayap di rel kereta, alah) eh, dia itu kamu tau kerjanya apa di Jawa :( ternyata kuliahnya tu komputer aja :( tu liat sekarang dia pengangguran. kuliahnya dulu soalnya cuma komputer!

[mud] nggak sabar nunggu libur biar bisa tidur istirahat lagi , capek. mo ngabisin design pattern lagi.

[mud kemis pagi] hu hu hu seneng banget jadi terharu dikasih “makasih” ama dia.

[malay grammar = lah] hm so malay english use “lah” a lot

[borokokok capistrano] cap -S stage=production deploy / kalo default cap deploy doang ke staging misalkan.

[ID Ruby] bali.rb sama bandung.rb ada nggak ya -_- bakal koding bareng tari kecak noh. cak cak cak cak. ho.. hoo.. hoo… cak cak cak cak… Lumayan kali bareng temen-temen bule koding bareng yak.




Indonesia Ruby Society on LinkedIn Group

1 03 2008

We just created Indonesia Ruby Society on LinkedIn Group. What we want to accomplish is not moving our ID Ruby (Indonesian Ruby) to any other places, we just enlarge our Indonesian Rubyist Comunities to be better known especially for specific purpose. Here is our usual problem, we got many of rubyists friends who are from various backgrounds, we learn continuously to stay up to date with strong fundamentals, we “play” a lot, we blog, we code, but when it’s time for our business partners requesting us to recommend any friends (so that they can hire them as their Ruby Developers or IT Guys) then we’re less organized, if it’s for me personally I’ll be super selective as I still think I myself need to learn many new things a lot then I usually think my friends who got many more experiences than I have but they got their own companies already and other kinds of unstructured answers, we honestly agree that we have lots of conversation “exclusively” (even with many of our jargons) on our mailing list / discussion communities, but it’s hard “to dive” into those “too much information”, yes we also have wiki, we also have Planet Ruby Indonesia, we also have our Indonesian Official Ruby Site. Now, we need to be well organized, as our learning progress impact, to our own beloved company where we work for those who love “the office” where they work, to any business partners we have (for those who likes doing freelance or consulting jobs), the bottom line is to have better and easier communication flow amongst us.

We have just sent an invitation to our choosen networks from various backgrounds: business guys, business owner, CTO, IT Trainer, Geeks (friends who got angry if we call them “hacker”) and even students. We also want to apologize if we mistype your name. Just in case if we missed your contacts (yes, you current reader), if you’re also interested in becoming our networks but didn’t get our invitation, you can contact us.




Catatan Acak 3, 3 Poin [bash, jargon ruby, gathering id-ruby], 1 Rencana

29 02 2008

[bash doang] jadi ceritanya baru seneng seneng lagi aktip sama git nih -_- trus di copy kan ini config ke .bash_history di /Users/arie di mac, trus kalang kabut pas mo svn commit kok nggak otomatis lagi SVN_EDITOR ada di PATH, argh di mac ingetin aja kalo bash_profile bisa juga ditaroh di .profile.

alias gst='git status'
alias gl='git pull'
alias gp='git push'
alias gd='git diff | mate'
alias gc='git commit -v'
alias gca='git commit -v -a'
alias gb='git branch'
alias gba='git branch -a'

[ruby singleton jargon] kalo sering lupa sama jargon class << self di Ruby, ingat aja sama banyaknya teknik-teknik metaprogramming yang dipakai di rails seperti with_options(options) trus yield. Walau tentu perbandingan ini terasa sangat jomplang karna praktik advanced di rails (yg kembangannya bisa punya banyak opsi)

[Id-Ruby Gathering on March 8th, '08] with Jakarta.rb tag for the second time, it’s the 6th id-ruby gathering in Indonesia. There will be an announcement on Facebook as well. Reminding date was set at Google. Enjoy! UPDATE: This is the facebook link for this event

[This Weekend] sleeping, continue reading design patterns book (again), continue lurking on rubinius spec files, hopefully will join the roll ASAP, just looking at cute cats in midvalley (but still design patterns + rubinius + new peepcode series are more crucial for me!).




Lagi, Catatan Acak Arie Akhir Pebruari ‘08

28 02 2008

[ruby] kalau suka sama sintaks true and command, maka hati-hati bila menerapkan ini di dalam = (sama dengan) di view nya rails, karena bila memang true maka akan muncul output sesuai yang diinginkan, tapi bila false, bukannya outputnya empty string tapi malah tulisan false. Sebetulnya ini bisa dicegah kalau memang programmernya strict pakai spec view juga bahkan untuk variabel tertentu saja di view seperti response.should have_tag(”p”, “something”) dalam if true dan pasang lagi disana else dengan string kosong, bila spec gagal, jadi bisa ditebak langkah2x selanjutnya untuk memperbaiki kode supaya sesuai dengan yang diinginkan.

[rails] in_groups_of memang merupakan shortcut bila ingin lakukan perulangan di dalam perulangann, seperti yang biasa kita lakukan di pascal jaman dulu.

[rails] pluralize memang ampuh tanpa include mixin, tapi bila memerlukan count juga maka tetap sertakan include mixin ybs di model yang memerlukan.

[polandia] luas = lake. Kebanyakan pembicara eropa juga sebut nanas dengan “ananas”.

[rspec controller] ternyata selain ada @objek.should_receive(:find).and_raise(ActiveRecord::RecordNotFound.new(@objek)) juga ada yang pake stub doang lho, walau saya tetap aja pake yang should_receive supaya make noise kalau gagal walaupun sepertinya redundant ngetes dua kali buat hal yang sama (sudah di should assign). Gejala penyakit ini juga ditemukan di should assign bila sudah should assign masih juga ditambah dengan should_receive(:find).and_return(@objek) variabel yang bakalan di assign.

[vim] :nobackup buat nggak pake backup, jangan lupa lupa terus perintahnya :(( kangen emacs.

[mandi] body shop dan face shop jangan lupa.

[kerjaan geek] terserah mana aja, yang paling penting programmer suka. Kalau sudah programmernya suka, apalagi sampai sebut2x cinta sama pekerjaan, maka dia gak akan ngerasa kerja, dia akan dedikasikan semua yang dia punya buat project yang dia suka. :-) Orang-orang bisnis yang mengerti ini boleh saya bilang sedikit, bahkan sangat sedikit, ciri-ciri mereka bisa dilihat mulai dari perhatian, sampai ke pertanyaan-pertanyaan seperti: sudah makan? kalau belum makan dulu, kalau sudah, yuk meeting. Atau seperti, walau sudah ada tugas yang dikerjakan untuk 1/2 jam kedepan, ditanya lagi, gimana rasanya? menyakitkan? apa yang bisa saya bantu untuk meringankan kerjamu? dst. Selamat sayang-menyayangi di dunia geek. Indahnya perdamaian. Tulisan ini diilhami dari seorang pemrogram asli gmail yang sudah mantan google yang nulis di blognya

[rubinius] kalo sekedar lurking sama nginstal doang gampang banget, tinggal git clone (sama kayak svn checkout) trus udah tinggak DEV=1 rake build gitu doang.

[jruby] kalo jruby malah tinggal ant titik. udah gitu doang, jadi. yang sulit belum biasa itu ya make’nya. Karena buat saya, sekali rubinius siap dipakai untuk production, saya akan switch dari pure ruby 100% ke rubinius! Tanyaken apa?! ruby untuk rubyist, bukan ruby untuk orang java, atau ruby untuk orang c.

[rspec rails] ngakali object sebagai metode lumayan cerdik. jadi di setiap controller selalu ada metode protected yang bernama object yang return @object yang biasa dipanggil di controller tersebut. Tetapi yang mengganjal pikiran saya adalah, demi nyaman dan indahnya penggunaan rescue_from something, :with => something itu, tetap harus ada organisasi yang baik agar pemanggilan object tersebut otomatis dilakukan dengan cara inheritance Controller.

[rubinius] tu tangan jangan kegatelan rake uninstall :-) trus rake clean… Kalo pas error baru deh kalang kabut, caranya yang pasti Google lah, trus nemu ini nah jadi cerah-cerah bisa rake clean:distclean trus ulangin aja lagi DEV=1 rake build jalan lagi deh rbx nya (awas, yang nulis ini juga kegatelan nggak peduli performance rubinius dan suka sama verbose error error di penampakan rubinius! hilangkan DEV=1 buat yang alergi alias triknya nghilangin verbose banget gitu sama buat ningkatin performance).

[bonus lagu]

Anggun - Juste Avant Toi. Hm, Arie, miss Indonesia? :-) Hey, I found apparently someone uploaded this nice video on youtube, yes Anggun, an Indonesian who live in France, hm. We can see nice scenes in Jakarta city in this video while of course listening to this music, also I can feel that green scenes are still in Indonesia, well I don’t know exactly where it is, I don’t even know whether or not it’s original or not, but we always can get that in Indonesia

and plus this one, just click to view full screen from those video uploaders on youtube




Catatan Tercecer Acak Arie Quarter Akhir 07 dan Awal 08

24 02 2008

[rails] Bila mengirim email memakai gmail server tidak bisa pakai username “admin”, jadi bisa diakali dengan memakai kata lain, seperti “tim” atau “kontak”.

[textmate] Tekan Apple Shift T untuk melihat semua metode yang ada dalam satu file.

[textmate] Poin nomor dua barusan ditemukan tanpa sengaja berhubung Arie selain malas kemana-mana juga malas RTFM, padahal awalnya ingin menekan Apple T yang artinya ingin meloncat ke file yang ingin diedit.

[textmate] Menyebalkan nggak bisa split horizontal dan vertikal seperti di ViM (:spl, vim *.rb -o 3, ataupun :vspl), duh kangen emacs .. nggak sempat2x!

[buku] Design Pattern kapan selesai bacanya oi! Halaman 30-an doang melulu [-( ... sync ... wah jadi senut-senut Smalltalk sama C++ lagi deh gara2 contoh2x Gang of Four

[kesehatan] Suram.Com. Malas makan. …. 1/2 menit kemudian tersadar, lalu bangun untuk beli bungkus makanan di kedai makanan india deket kos.

[git] Duh yang belum fasih git, baru nyadar rails udah support -g kayak -c di svn tapi buat git, mana uda ada braid lagi, tinggal enak masih malas juga.

[quote] Sepi bicara, begitu sempitnya waktu, begitu melimpah waktu yang kubuang.

[gui] Jadi mau fx ruby, ruby cocoa, c++ qt, python qt, squeak, ato yang gimana.. senut.. senut.. ndus.. ndus.. lang ling lung.

[programmer biasa] hih mau minta programmer yang bisa semua? yakin tuh serius? alamat disebut bayaran superman bisa mundur seribu langkah alias gak serius lagi, gw ogah banget noh

[malaysia.rb] asik demo mainan rubinius buat kontribusi balik ke komunitas. Ternyata kalo textmate bisa langsung pencet Apple R juga, wah.. hijau.. hijau.. aku cinta hijau rspec rubinius..

[indonesiana] … gak bisa kuwakilkan dgn kata2x… terlalu banyak.

[watak film] pingin ada kalin, aliza betulan, andaikan bisa dibikin series kayak Mac Gyver. hmm..

[introspeksi] maximize resource sih maximize, tapi kalo uda bejibun, yang paling penting tuh dipraktekin dipelajarin betulan.. lah jadi kapan dong gw belajar kalo nonton tidur ama maen mulu?

[nulis] wah, belajar bertanggung jawab dan menulis sesuai yang diminta ternyata sulit …

[ruby internasional] nunggu ide hendy di approve… tapping my fingers on my desk… saabaaar sabaaar ndoro kakung ciken bisi ini wiken, kawatir ditegor eric hodel lagi gw ogah banget.

[pattern] coret moret ku token anu parser anu masih merayap malah dihapus-hapus, ganti didesain yang benar coba..

[deploy] duh masih belum selesai2x jg bacanya? emang lu yang gak ngeh kali .. dibikin ngeh dong, pas bisa gitu jingkrak gitu.

[postfix] jadi pingin belajar, gara2x problematik di mailer notification. tsaaah… yang terlanjur dimanja ruby, jadi gini nih :(

[malaysiana] makin hari makin males kepengaruh intonasi mereka ya.. hmm.. tapi yang penting bill makanan tetap jangan dirobek biar kalo makanannya gak sesuai tapi di bill nya sesuai emang lidah gw yang mereka kagok pahamnya kali. nasib jadi orang asing…

[jepang] ah suram.com. Masih gak sempet2 aja. Itu sempat makan doang di tempat jepang kalo pesen ya pake linggis.

[prancis] merembet. Jadi ngelirik malu malu tapi mau tuh pengen banget ngobrol ama tu bule pake prancis tapi masi ngak ngik ngok balik ke watak awal kurang pe de.

[intj] sebegitu abstrakkah dunia yang bersemayam dalam alam fikir mu?

[rspec] layoutfalserendernew bug apalagi nih :(( terpaksa pending biru deh. UPDATE malam-malam: Paling nyebelin kalo gak bisa replicate errornya lagi , ugrhrh … setelah dicoba di spike ternyata 1 contoh berhasil lewat (hijau/hore sukses!), tapi kalo buat RecordNotFound masih merah… tsaaah.. UPDATE lagi sore sore hari senin (besoknya dari posting awalnya), semua sudah hijau! meaning 100% success! UPDATE Fri Mar 28 19:16:10 MYT 2008: This should not happen if we use render :action => :new correctly

[rspec] stub satu satu walau kerasa verbose banget, tapi sangat ngebantu pas debug kalo gak sesuai harapan. Daripada main satu baris panjang apalagi di taro di mixin malah pas debug jadi kelamaan, itu kan baru ngetes, gimana kodingnya, ntar klamaan.

[naruto] duh ternyata sakura sayang sama naruto gitu ya. Jadi sayangnya tu sebagai apa ?!

[baca blog] Mencerahkan dan bikin senang

[blogku] sidebar berubah2x mlulu. Nih sekarang ada recent comments sama Google Reader Shared, pinginnya biar otomatis aja kali nggak usah pake klak klik share di Google Reader, tapi lupa namanya, dulu pake apa ya … hmm.

[tidur] tidur pagi bangun siang

[koding testing rasio] proyek betulan, kisaran 1 banding 2.2, paling banter 3. mainan 1 banding 4.5 ato bisa juga 5.5.

[cewek] bergelora bergairah semangat idup jendral — tapi tetep aja biasa2x wae.

[rspec] untuk ngetes satu baris aja, tentukan dengan opsi -l 133 (dalam hal ini 133, adalah baris yang ingin ditest)

[console] grep -R -H -n searchkeyword * == Apple Shift F di Textmate, apparently the speed is just similar :( I thought it’ll be faster to run it on Terminal!

[exception handling] singlestatement rescue something works for ruby 1.8. But of course if we’re used to rescue_with Object, :with something will produce nicer and cleaner codes.

[ar] baru ngeh ada update_attributes! method juga buat tangkap validation failed nya save! ;-) nice!




Maximize Your Internet Usage to get Your Usefull Resources

4 02 2008

Okay, so now you have fast internet connection for 24 hours? I’m still wondering if there was a kid here asking me what to do with that fast internet connection =)) While I struggled pretty badly when I got poor internet connection before staying in Jakarta (Jakarta is a Capital City of Indonesia / Bali is a part of Indonesia). Remember, “when there is a will there is a way”, in Indonesia we know a saying that “Tak ada rotan akar pun jadi” (it means literally in English: we can use root if there is no ratan, it’s just another way to say when there is a will there is a way, dude), or just imagine people with kayak then he got thrown out of his boat then he struggled to death even if it’s only one grass he will definitely grab it. Mas Ivan suggested me to coordinate this internet problem with the guy who owned the internet cafe when we met at Java Mal in Semarang in around 2000 or so (Semarang is a Capital City of Central Java / yes, Indonesia consists of bunch of islands, including Bali, why I always mention this, cos I know many non Indonesian people overseas out there only know Bali but do not know Indonesia at all / I’m here also saying that Visit Indonesia from official Indonesian Government Programme is not serious, naf said, just look at the proof!).

What do you need from internet? resources? okay. Next question what kinds of resources? articles? tutorials? video tutorials? audio tutorials? mailing list archives? I’m reminding to anyone who’s now struggling in Indonesia who got less internet connection, to stop opening mouth so badly and complaining to me, that it’s a lot! Hey, I’m asking you then, are you serious about your vision and mission or you’re just fucking playing around or you just don’t focus???!!! Here, “you” only means you, the reader who got the same weakness like mine cos I was actually talking to myself. There were still tricks for that, asked the guy who owned an internet cafe to download everything you need, don’t let you be the victim of their damn slow internet connection by downloading many things yourself, just ask them, and pay them in total, negotiate with them how many rupiah you will have to pay later, I once paid them for Rp 100,000 when I was a student and that’s a lot for a student level in Indonesia, I know, then I sacrificed super cheap food like I ate for around Rp 1,500,- so times 3 it was around Rp 5,000 a day, Just never look at my current status only, look at my background. Yes I know some of those internet cafe guys often suck, didn’t know very much of the tools needed to get our resources, but life goes on, I now kind of smile in my heart when I remember the time I was angry to that stupid internet cafe guy, or maybe like he costed me that much by saying: “lha sa’jane kalo yang ini adja saya tu dah terhitung rugi mas, opo meneh ne’ ditambah iki mbe iki meneh yo piye mas”. One of my closed friends there and I got the same principle about facing these jerks, “ya sudah biarin, ini saya ikhlaskan kamu dapatnya sgitu, tapi saya yakin/optimis dalam 3 bulan saja ke depan, saya sudah bisa berubah lebih baik daripada yang sekarang, dan dalam satu tahun apalagi hingga tiga tahun ke depan saya optimis banget yakin pasti akan jauh lebih baik keadaannya daripada kamu. Sudahlah hitung-hitung sedekah =))”. And apparently that thought was indeed right! Roda dunia berputar, kadang diatas, kadang dibawah. Makanya kredibilitas dijaga, selalu inovatif, tingkatkan terus fokus di ketajaman kekuatan yang terlahir dari tau dimana kelemahan diri dari introspeksi, bahkan ada di satu sisi kita juga bisa memperkuat kelemahan diri dengan trik tertentu. When there is a will there is a way.

My background was not from a rich family, but of course I won’t say I came from a poor family, cos I think I’m one of those most of many hundreds of millions of Indonesian people that just feeling it’s enough :-) Oh well, up to this sentence, how come I’m now getting my flash back unforgettable happy memory and kind of missing it in my life here, what is that, nothing but eating =)) I miss Sanggar (Sanggar is indeed a strange word when we say directly this straight in Java island, cos people in Java say Sanggar by saying “Pisang Goreng” / fried banana with flour and tasty mixed Indonesian foods), Iwak Bepais (Eng: a fish that is being enveloped by a banana leaf then it’s being burned/so it’s not fried), Nasi kuning iwak haruan/ayam/daging/telor (nasi = rice, kuning = yellow, oh iwak means ikan that is fish in English, nasi kuning is a kind of like nasi tumpeng in Java, also yellow colour, but different taste from Nasi Tumpeng in Java), sayur asam (a tasty vegetable special from Kalimantan - Indonesia), masak merah (red hot chili oh no it’s not that red hot chili peppers band), sate (yes, Malay call it “satay” in KL but its taste is already different, it’s still tasty but … sorry I can’t explain it in words),

……………………………. These so many dots were a 6 hour pause to get my focus on topic again (of course after having salad and healthy vegetables and great entertaining things).

Ruby community is a very active community, if you want to keep up to date, you must stay on the edge, subscribe to blogs’ feed, do research and experiment and at the same time try to implement it on your real projects at work (if you’re currently a student, just make your projects yourself as your prototype - now do not laugh or feel like i’m exaggerating that you’re gonna be too cool if you do that cos i’m serious here - one day you can use your prototype when you want to be a programmer / for non Indonesian who reads this, I deliberately wrote it cos I know that psychologically most Indonesian Engineers lack of confident! For Indonesian, once again, JUST DO IT! NOW!).

What feed to subscribe? From where can you trace any useful resources you want? Here is my tips, I usually go to Wikipedia first, search there, then if it’s found I’ll dig deeper and deeper from there, I’ll follow extra links from there. I would say I’m *not* genius, but this is the same trick as my genius friend used, he said: “That’s the way how I became like this so far”.

Now, if you’re on the edge, perhaps you even still lack of documentations so most probably you won’t find usefull articles on wikipedia yet, okay then, you got to subscribe to Ruby community Blogs (I 100% hate “Blogosphere” term that’s why I don’t use that term here, arghgh shit I mentioned it once here! puked!!!)

What I usually follow is usually the guy behind the blog or information source (!) I don’t rely on one source only that I know this guy is also writing something on that source. Just hit http://ruby-lang.org/id/documentations or click weblog from there, you’ll see nice usefull resources like rubyinside.com, jf who? just check it out directly from there, railscast.com, planetrubyindonesia, planetrubyonrails.com and dot org (notice, there are two ya, dot com and dot org, they’re different). From this aggregator you’ll probably see Jarkko’s blog, railsenvy (providing either writing and audio ruby community progress), dave thomas, uh oh let’s not be redundant here, just keep up to date by subscribing to usefull resources I mentioned.

Did I mention mailing list as well? Oh well I thought by emphasizing following the guy was clear enough?! If you’re also a massochist you will definitely set your cron to do svn update or git pull from the latest source codes that those guys have just committed. Note: massochist is not a scary term here, IT guys use that word not because they want people to be scared of them, or even afraid to talk with them then prepare a hidden ninja weapon so this non IT guy wouldn’t be shocked by this weird reaction, no no, IT guys use those kinds of jargon because they usually feel good about it, so don’t relate this to advanced things! or funky thing (f*ck!) …. designing a good architecture of software applications then testing then coding is just the way it is, not advanced things!.

And did I mention those social bookmarking as well? Don’t forget Delicious! http://del.icio.us/tags/ruby (or maybe without tags, Google for that) and delicious rails. If you know the guy uses different tools, run and chase him, like reddit, digg.com, magnolia, and google for that. Now never tell me that I forgot those (some of) Indonesian people who feel like learning from me, of course I won’t forget them as long as they want to run as quickly as I do.

I remember one advice or maybe quote from Hal’s book (Ruby Way 1st Ed / hell yeah I also got the 2nd!), “once your reader asked you as the author, he’s entering your world”. And this quote led me to another book quote or maybe advice (sorry I don’t that remember whether the author mentioned it as a quote or advice) from a book title Why Japanese Smart, Diligent and Rich: “Asking the author after reading a book, that’s one of japanese habits”. And now let me translate it in this internet world, if you follow actively step by step from someone’s blog, and you’re still not clear, do ask him, you can leave comments, and even if you’re so interested in him cos he’s bright of the same interest as yours, just send him emails, and go interact with him. He’ll point you to his more and more useful resources.

Now what! You’re feeling like you’re diving into the unlimited ocean or something? :-) The more you dive the more you definitely feel/think you’re smaller than you thought! Now don’t complain to me that your stomach will be exploded because of much info, if you want me to share how I can finish what I concern to be my usefull resources, I’ll bring them everywhere, let’s say for example I went to Klang (Klang is a place somewhere in Malaysia) by KTM on Saturday to see a doctor, and let’s count how long would it take! Waiting to get KTM at KL Sentral was around 15 minutes (that’s because I had my breakfast + lunch first [Nasi Pataya - Thai Food and Teh Tarik] so I missed the previous train that I could get if I wanted but without eating first for the whole day), then going to Klang by KTM would take around 30 minutes to 45 minutes, so it’s already 1 hour !!! Don’t just waste time, dig deeper and read those usefull resources we just got! I usually bring 2 books, one book is a serious one, another one is a less serious one (like novel). So if I’m bored after reading for around 50 minutes, then I can relax by looking around at those green trees or anything I found beautiful here in Malaysia (wink wink including yang itu tuh maksudnya juga ehm kabooorrrr) or I can just read my novel book, like “International Best Selling Author of The Alchemist - By The River Piedra I sat down and wept” that I just bought on Friday night at MPH. BTW I like this novel book, but somehow sometimes there are some spots that I think I find that it has deep meaning, but anyhow I don’t like this book has too much religious scene and brought up about so many confusing parts from its source and don’t say all religion are the same, they’re different, of course I 100% disagree non muslim categorize muslims to be some parts like moderate, extreme, come on there is only one muslim, ex. just be honest if you’re not a good muslim (yet) those who don’t do pray 5 times a day considered to be sinful, and don’t make any excuses, a good muslim would think they need to do sholat not being forced. Now Goddess? No gender, there’s no such one thing in Allah behaviour that could be considered the same or even similar to one of His creatures, Qul huwallahu ahad, Allahushshomad, lam yalid wa lam yulad, walam yakullahu kufuwan ahad (It’s “ahad”, not “wahid”, those are different words to explain “one” in Arabic, my writing was even wrong, cos it’s latin keyboard based and I’m of course lazy to write it with my own hands then scan it/meaning don’t do bullshiting the usage of “a” or “o” letter in “Allah” word). argh oh well I don’t want this post is going OT because of religion! I can’t wait it’s only around 10 papers left to finish, I want to sell this book to my friend with lower price! So that I can buy more and more books again that I like here houwahahaha =))

Note Number One. I actually wrote this cos I once promised to some of Malaysian students here to post my XML feed (compressed version) from Google Reader. But apparently there are also some private feed that I don’t have time yet to filter it, so I’m assuming that this post would be a great start “conquering” ruby. Now have fun!

Note Number Two: I didn’t use a href to link to external site because number one: I really don’t feel like typing exact URL cos I don’t remember them all, number two: because I do encourage you to think that Google is your friend (Don’t laugh, I’m dead serious! I personally feel sorry + guilty + regretted very much if I waste my experienced friend’s time by asking questions that actually could be found from Google if I tried to do a little effort)

Note Number Three which is not really related but if you’re being the object of the person who’s being told at that time, you will think it’s important,

9:55:34 AM HiddenRubyNinjaMaster: my most active period doing freelance (incl overseas) was probably around 1999-2002
9:56:20 AM HiddenRubyNinjaMaster: doing overseas work usually means staying up late, which i don't really do anymore nowadays
9:58:17 AM HiddenRubyNinjaMaster: youngsters like you probably are in your most active period :) just remember, balance your work with rest/play. take care of your health :)
9:59:59 AM CrawlingBaby: ya thanks for reminding me, i really need to exercise a lot more than just play with this hobby err work and sleep

Ya, remember to keep the balance of the force -_-

and then if you really think it’s really related with this maximize your internet usage, and you really can’t stop reading what I’m rambling now, perhaps you want to see why those IT geeks out there having beards, long hair, etc. And probably you will do a research of health and IT geeks life later? Like who got too much cafeine till they can’t drink or eat coffee, like analyzing why they got their own world although they’re just alone, etc.

Megaloman! Ok, ok, that’s it! that’s it!