Live life to the fullest

my random thoughts and stories

Jarvana: Tools yang Mempermudah Hidup Java Developer

with 4 comments

Seberapa sering anda menemukan NoClassDefFoundError pada saat sedang develop aplikasi. Mungkin anda memakai library Hibernate tapi lupa menyertakan library lain yang diperlukan oleh hibernate sehingga muncullah error kedua termasyhur[1] di seantero dunia per-JAVA-an. Bingung jar apa yang berisi class yang disebutkan oleh error stack trace? Biasanya apa yang akan anda lakukan adalah copy paste nama class tersebut di search bar google dan.. ENTER. Kalau anda sedang beruntung maka anda akan mendapatkan nama jar yang dicari. Tapi kemungkinan untuk mendapatkan nama jar tersebut mungkin hanya 50%[2].

Kini ada tools online berupa website yang dapat membantu anda menemukan file jar yang anda butuhkan. Website tersebut adalah http://www.jarvana.com/jarvana/ (red: selanjutnya kita panggil dengan sebutan Jarvana). Jarvana sendiri diperuntukkan bagi pengguna Maven ataupun Ivy, tapi tidak tertutup kemungkinan pengguna Ant murni (tanpa Ivy) juga dapat mengambil keuntungan dari kehadirannya.

Pada tampilan utamanya Jarvana menyediakan fitur pencarian berdasarkan nama class, project, dan content. Pencarian berdasarkan nama class memudahkan user dalam mencari maven project yang menyertakan class yang dimaksud. Ketikkan kata kunci semisal “beanutils” di textbox input untuk nama class dan tekan Enter. Anda akan disuguhkan dengan hasil pencarian berupa tabel, lengkap dengan pagination untuk membatasi jumlah hasil pencarian per halaman. Kemudian anda dapat menelusuri class yang sesuai dengan yang anda cari, dan klik pada nama class untuk melihat detil dari class tersebut. Di awal tampilan detil anda disuguhkan kode yang perlu ditambahkan untuk menggunakan file jar tersebut di project Maven ataupun Ivy. Selain itu untuk yang menggunakan Ant (tanpa Ivy) dapat mengunduh file jar yang dimaksud di bagian “Archive Information”. Di bagian bawah dari tampilan detil tidak lupa Jarvana menyajikan beberapa informasi penting seperti: signature method dan constructor, class yang di-import oleh class ini, dan yang tidak kalah penting versi class hasil kompilasi untuk mengetahui dengan java versi berapa class ini dikompilasi.

Pencarian berdasarkan project memiliki kesamaan dengan pencarian nama class. Perbedaan terletak pada tampilan detilnya. Pada tampilan detil untuk project Jarvana menyajikan data file jar seperti: jumlah file class di dalam file jar, jumlah folder, jumlah file selain class, dan juga nilai checksum (MD5, SHA1) dari file jar tersebut.

Pencarian berdasarkan content memungkinkan untuk mencari berdasarkan kata kunci yg muncul di jenis file tertentu, semisal: html, java, jsp, pom, xml, atau bisa juga kita pilih semua.

Kesimpulan: Java developer semakin dimudahkan dalam melakukan development dengan adanya tools ini. Dengan kehadiran Jarvana semoga NoClassDefFoundError tidak lagi menjadi momok yang menakutkan. Akhir kata “Happy Coding”.

[1] Disclaimer: Klaim tentang kemasyhuran NoClassDefFoundError hanya berdasarkan keisengan penulis. Tidak ada data apapun yang mendukung klaim penulis
[2] Disclaimer: Klaim tentang prosentase keberhasilan pencarian nama file jar berdasarkan nama class juga tidak berdasarkan data tertentu dan hanya berdasarkan perasaan perut dari penulis

Written by jecki

April 18, 2010 at 11:59 am

IE Auto-set ID Attribute

leave a comment »

Recently I stumble upon another glitch with IE. IE is well known as the most unstandard web browser on earth.

Consider this simple HTML code snippet

<input type="hidden" name="input" value="this is a secret message" />
<input type="text" id="input" value="you should see this if you use a sane browser" />
<input type="button" value="click me" onclick="doSomething()" />

<script language="javascript">
var doSomething = function() {
	var elem = document.getElementById('input');
	if (elem) alert(elem.value);
}
</script>

What do you expect to see when you run this? I expect to see an alert box with “you should see this if you use a sane browser” as the message. Apparently in IE you’ll see “this is a secret message”.

What happen exactly is that IE “cleverly” add an ID attribute to our input element (yes it only applies to input element) to be the same value as the NAME attribute. How did they decide this “clever” feature in the first place? Where is it documented? I guess it will remain a mystery to us. Maybe we should start a campaign to Kill IE (there’s already one for IE6 http://www.ie6nomore.com/).

So next time you encounter a problem in IE you might want to check if it’s “IE Auto-set ID Attribute”.

Written by jecki

October 3, 2009 at 3:48 am

Posted in Uncategorized, Work

Tagged with ,

Kewajiban Pajak WNI di Luar Negeri

with 4 comments

Hari Jum’at yang lalu gw menghadiri Seminar Ekonomi dan Pajak yang diselenggarakan di KBRI Singapura. Sebelumnya telah diumumkan bahwa seminar ini akan membahas salah satunya mengenai Peraturan Pajak terutama bagi rekan-rekan sebangsa setanah air yang bekerja di luar negeri, khususnya di Singapura. Jadi hati sudah siap untuk mendengar apa dan bagaimana mekanisme perpajakan yang harus dilewati oleh para pekerja Indonesia di luar negeri. Dalam pikiran gw selama ini sih tidak perlu untuk membayar pajak di Indonesia lagi, dengan syarat kita tidak berada di Indonesia selama >= 183 hari.

Langsung saja, di seminar tersebut seorang pejabat Ditjen Pajak menyampaikan informasi yang dipandu dengan slide yang sudah dipersiapkan. Halaman pertama membahas tentang Objek Pajak, lewat. Halaman kedua tertera Bagan mengenai Subjek Pajak, pembagian Subjek Pajak menjadi Subjek Pajak Dalam Negeri (SPDN) dan Subjek Pajak Luar Negeri (SPLN). Anehnya di slide ini secara cepat pembicara memberitahukan bahwa dia tidak akan membahas secara detil mengenai perbedaan SPDN dan SPLN, dan selanjutnya hanya membahas mengenai SPDN. What the Heck??!! Dari sini sih gw ud bisa mencium gelagat ga bener dari si pejabat. Apakah dipikirnya para hadirin adalah SPDN, yang notabene artinya walaupun bekerja di Singapura tapi tinggal >= 183 hari di Indonesia. Pemikiran yang aneh bukan? Atau memang dia sengaja mengkondisikan supaya hadirin berpikir bahwa mereka adalah SPDN padahal sebenarnya SPLN, lantaran ingin agar semuanya membayar pajak berlebih, yang seharusnya tidak perlu dibayarkan apabila statusnya adalah SPLN.

Saat sesi tanya jawab moderator meminta pejabat tersebut untuk menjelaskan beberapa contoh kasus yang sudah disampaikan oleh panitia sebelum acara seminar hari itu. OK, slide dari pejabat tersebut sudah ditayangkan melalui projector. Cukup impresif kan? Berarti sudah dipersiapkan sebelumnya. Tunggu dulu. Halaman yang berisi pertanyaan kasus terpampang jelas dengan angka-angka seperti gaji, lama tinggal di indonesia, dsb. Tapi kemudian bagaimana dengan halaman jawaban. Sama sekali tidak sesuai harapan. Jawaban yang dituliskan sekali lagi hanya sedikit “hint”, meminjam kata yang digunakan oleh pejabat itu sendiri, mengenai bagaimana nasib orang yang memiliki keadaan seperti contoh kasus tersebut. Bah.. jelas sekali pejabat ini menghindari untuk menjelaskan sedetil-detilnya. Beberapa pertanyaan lanjutan yang timbul akibat ketidakpuasan ini juga mental tanpa jawaban yang memuaskan. Bayangkan sampai titik ini tidak ada penjelasan sama sekali mengenai SPLN. Sampai-sampai moderator pun akhirnya mengingatkan sang pejabat dan menyatakan sebagai moderator pun dia tidak mengerti jawaban dari pertanyaan-pertanyaan yang sudah diajukan. Wow.. kualitas pejabat yang sungguh “mengagumkan”. Yang ada malah semua semakin simpang siur.

Setelah beberapa pertanyaan kembali dilemparkan dan suasana menjadi memanas akhirnya keluarlah kalimat bahwa “apabila pekerja Indonesia di luar negeri memiliki Surat Keterangan Domisili (SKD) yang dikeluarkan oleh kantor pajak IRAS (red: kantor pajak di Singapura) maka tidak perlu berurusan dengan pajak di Indonesia”. Ini adalah kalimat yang dari tadi sangat ingin didengar oleh seluruh hadirin. Adapun SKD sendiri di sini dikenal dengan Certificate of Residence (CoR). Herannya penjelasan sang pejabat ini diberi tambahan informasi, entah untuk menakut-nakuti atau apapun maksudnya, bahwa orang yang memiliki SKD sudah tidak akan kembali ke Indonesia selama-lamanya. What the Heck??!! Maksudnya mau mengusir karena kita tidak bayar pajak?

Well, isu ini sedang hangatnya diperbincangkan di milis indo-sing. Dan hampir pasti semua komentar yang ada menunjukkan antipati atas penjelasan pejabat tersebut dan peraturan perpajakan di Indonesia yang tidak jelas dan mengandung pasal-pasal yang bisa diinterpretasikan lain oleh orang yang berbeda. Apa kesimpulannya? Kalau kita pekerja Indonesia di luar negeri membuat NPWP maka besar kemungkinan bahwa pasal tersebut akan diinterpretasikan secara bebas oleh petugas pajak, tergantung keinginan interpretasi mereka dan akan sulit bagi individu pemegang NPWP untuk membantah karena kedudukan yang pasti lebih terpojok (dipojokkan oleh jumlah petugas yang lebih banyak). Paling tidak itu yang ada di kepala gw saat ini, mengingat kultur pejabat pemerintahan selama ini.

Pendapat pribadi gw sebenarnya simple saja. Gw ga keberatan bayar pajak dengan beberapa syarat dan kondisi:
1. Pendapatan Tidak Kena Pajak (PTKP) untuk orang yang bekerja di luar negeri tidak disamaratakan dengan PTKP nasional yang hanya Rp. 15,840,000. Bandingkan dengan PTKP di Singapura sebesar SGD 20,000. Hal ini tentu saja dengan pertimbangan biaya hidup di sini yang setidaknya 3 kali lipat dari di Indonesia.
2. Laporan Penerimaan Pajak Negara dan Penggunaannya harus dibuat sangat-sangat transparan. Gw rasa semua setuju dengan statement gw berikut. “Kita sudah muak dengan korupsi yang merajalela di tubuh pemerintahan dari pangkat tertinggi sampai terendah”. Perjuangan para pekerja Indonesia di luar negeri untuk bekerja di luar negeri tidaklah mudah. Gw sendiri harus rela meninggalkan istri dan anak dan hanya pulang 2 bulan sekali untuk melepas kangen. Sangat tidak adil apabila nanti gw bayar terus ada orang bego yang kerjanya cuma makan gaji buta sebagai PNS yang menikmatinya.
3. Fasilitas, fasilitas dan fasilitas. Perbaiki fasilitas umum yang diperuntukkan bagi rakyat. Sekarang ini gw tidak keberatan bayar pajak bagi pemerintah Singapura karena 2 hal: gw kerja di sini, dan fasilitas umum yang ada sangat nyaman.

Selama syarat dan kondisi di atas tidak terwujud ya selama itu juga gw ga akan rela bayar pajak. Mungkin ada yang bilang gw ga punya nasionalisme. Terserah apa kata orang. Gw yakin kondisi yang diciptakan dengan UU Pajak macam ini adalah praktek percaloan pajak dan orang yang menawarkan “jalan belakang” untuk melewati persoalan pajak. Gw ga mau terlibat dengan kekonyolan seperti itu. Harapan gw jelas Indonesia keluar dari mental bobrok semacam ini. Tapi kalau akhirnya gw ga bisa liat ada perubahan ke arah yang baik ya sudah, jangan bicara nasionalisme. Itu hanya propaganda untuk mengenyangkan perut orang-orang yang hidup dari korupsi dan suap menyuap.

NB: Ada indikasi sebagian warga milis indo-sing akan pindah kewarganegaraan masal sehubungan dengan kasus perpajakan ini. Well, kalau pemerintah memang tidak peduli tidak ada gunanya juga rakyat peduli dengan nasionalismenya.

Written by jecki

November 24, 2008 at 4:21 pm

Posted in Life, Work

Tagged with , , ,

Is It OK to be Long Time Programmers?

with 5 comments

Have you ever count how many hours that you’ve used up for learning java? At what level do you claim yourself to be in java mastery? Do you feel that you’re newbie 2 years ago and still now?

That makes me think that if a programmer is expected to be a system analyst after 4 or 5 years from the day he began as programmer, as it is common in organization hierarchy, is really non sense. He is just starting to be a better programmer and now being ask to start again with another role. This is like killing something which is actually just start to blossom. I found a really nice principle that relate to this issue in one of the mailing list that I join. It says “In a Hierarchy Every Employee Tends to Rise to His Level of Incompetence.” Please read further about Peter Principle.

In my opinion software development is one of disciplines that need long time to master. There’s to much to learn to achieve good quality softwares. I don’t see any rationale to think that programmers must become a system analyst after 4 years, especially in the context where someone put programmers position under system analyst. This is one thing that I believe contribute to large numbers of failing projects, although I don’t have an evidence to show here.

Give me your opinions about this.

Written by jecki

May 30, 2008 at 2:36 pm

Posted in Uncategorized

Neal Ford in JAX Asia 2007

leave a comment »

Last Thursday I went to JAX Asia 2007 conference in Ritz Carlton, Jakarta. It’s part of worldwide JAX conference talking about Java topics in trend. There were three speakers at this conference: Chris Anasczyk (IBM), Neal Ford (ThoughtWorks) and Thilo Frotscher (Independent Software Architect). I will only talk about Neal’s session here, since I was very inspired by his presentation although the other two guys are also good speakers.

The session starts with Neal giving tips on ’10 ways to improve your code’. He talked about several things which we all may have heard like version control, continuous integration but some are deeper like ‘prefer composition over inheritance’, ‘single level of abstraction principle (SLAP)’, ‘kill the sacred cow’. What I got from this session is we have to have discipline in Coding, be creative and not doing things blindly because everybody else do it.

The second session from Neal was ‘Introduction to JRuby’. He point us to how Ruby is different from Java, and how powerful it is. Everything is an object in Ruby. I think that beats Java right in its heart since Java always being claimed as an Object Oriented Language but has primitive which make people wonder how Object Oriented it is. Ruby is actually older than (or have the same age to) Java, but haven’t get much attention prior to Ruby on Rails (RoR). It is RoR which brought the momentum and lifted Ruby up to its popularity nowadays. For that reason Sun and Microsoft has put quite an effort to build an implementation of Ruby on each of their widely known platform, Java and .NET. JRuby was created as Ruby implementation purely written in Java. With JRuby one can get the flexibility of Ruby with the power of Java in his hand. I asked a question regarding Ruby’s feature ‘Open Classes’ which allow one to add new methods, attributes later on in other place. In my opinion this powerful feature will raise problems in the hand of undisciplined programmer. Neal answered that this problem will raise in every language. It depends on the developer. Neal also boldly state that is why we need unit test.

The third session was ‘Rails for JRuby’ showing us how Rails can run on top of JRuby. In fact we can use several Java’s feature, such as Distributed Transaction and numerous backing library, to strengthen Rails. There was also Rails demo which shows how easy web development is using Rails compared to Java’s programming model.

I have to admit that I am very impressed with Ruby since that day. I kept promising to myself that I have to learn this language as my secondary language and probably as my primary language in future. Since several big companies have invested dollars in Ruby it might have a bright future. I will start to learn ruby and write a journal on every experiment I make. So just wait for my upcoming Ruby experiment.

Written by jecki

December 7, 2007 at 11:17 am

Pengenalan Extreme Programming

with 13 comments

Software development merupakan salah satu bentuk engineering yang berkembang sejak diciptakannya komputer. Jika dibandingkan dengan engineering lain yang ada, seperti arsitektur, machine engineering, maka disiplin ilmu ini tergolong muda. Dalam perkembangannya kita melihat berbagai hal sudah dihasilkan. Awalnya manusia berinteraksi dengan komputer dengan menggunakan bahasa mesin yang direpresentasikan dengan nilai-nilai biner. Kemudian muncul bahasa rakitan yg menggantikan penggunaan nilai-nilai biner tersebut dengan simbol-simbol opcodes. Berikutnya lahirlah berbagai bahasa pemrograman tingkat tinggi yg membuat pemrograman semakin mudah dengan struktur yang dekat dengan bahasa manusia. Sejak saat itu produktivitas pembuatan software juga meningkat. Software rumit semacam sistem operasi juga semakin modern.

Di luar keberhasilan-keberhasilan tersebut tak terhitung pula jumlah pengembangan software yang mengalami kegagalan. Sering kita dengar project A dihentikan karena over budget, project B berhasil sampai pada production tetapi dengan defect rate sangat tinggi. Metodologi pengembangan software memang sudah ada pada project-project tersebut, tetapi mengapa kegagalan masih saja menjadi satu hal yg sangat mengancam? Sepertinya keberhasilan diambil dari sebuah kotak undian dengan kesempatan acak, terkadang berhasil, terkadang gagal.

Extreme Programming (dikenal juga dengan XP) muncul menawarkan sebuah disiplin dalam pengembangan software. Klaim dari penggagasnya adalah disiplin ini akan menghapus kesan bahwa keberhasilan software development hanya dapat dicapai dengan keberuntungan. Nilai dasar yang terkandung di dalamnya adalah: Komunikasi (Communication), Kesederhanaan (Simplicity), Umpan balik (Feedback), Keberanian (Courage). Ya nilai-nilai ini memang bukan suatu hal yg baru, tetapi lewat pengalaman dari serangkaian project penggagas bahwa hal-hal inilah yang dapat menekan resiko kegagalan suatu project. Dalam hal ini XP hanya mencoba untuk mengumpulkannya dan memberinya sebuah nama.

Komunikasi menjadi hal yang sangat menentukan dalam sebuah tim pengembangan software. Kegagalan komunikasi antar pihak-pihak yang berkepentingan dalam pengembangan software pastinya akan menimbulkan masalah-masalah yg tidak diinginkan seperti: proses bisnis yang dibuat tidak sesuai, anggota tim menghadapi masalah yg tidak bisa diselesaikan, atasan mendapatkan laporan kejutan sehari sebelum deadline, dsb. Pihak-pihak yang berkepentingan (selanjutnya disebut Role) dalam hal ini mencakup: programmer, customer, coach, tracker, tester, consultant, big boss (penjelasan rinci tentang masing-masing role dapat dibaca di buku Extreme Programming Explained).

Kesederhanaan mengacu pada desain sistem yang akan dibuat. Berlawanan dengan disiplin software development lainnya, XP menganjurkan desain yang berevolusi sepanjang proses pengembangan. Seringkali programmer berpikir terlalu kompleks dalam menyelesaikan suatu permasalahan. Pada saat yang lain mereka berpikir bagaimana supaya sistem menjadi fleksibel untuk masa depan. Dalam mengambil keputusan demikian biasanya hanya berdasar pada spekulasi saja, di mana pada akhirnya perkiraan tersebut meleset, sistem tidak pernah diuntungkan dengan desain fleksibel yang super kompleks tersebut. Satu prinsip yang berkaitan dengan ini adalah “You aren’t gonna need it“, di mana sangat dianjurkan agar dalam membangun sesuatu terlebih dahulu kita memastikan bahwa hal ini memang dibutuhkan.

Umpan balik diperlukan untuk mengetahui kemajuan dari proses dan kualitas dari aplikasi yang dibangun. Informasi ini harus dikumpulkan setiap interval waktu yang singkat secara konsisten. Ini dimaksudkan agar hal-hal yang menjadi masalah dalam proses pengembangan dapat diketahui sedini mungkin dan customer dapat membuat keputusan berdasarkan informasi tersebut.

Keberanian. Ini merupakan nilai yang menjadi katalisator bagi ketiga nilai sebelumnya. Keberanian diperlukan untuk mengatakan bahwa target deadline yang diinginkan customer tidak mungkin tercapai, untuk mengambil keputusan saat code yang sudah dibuat ternyata harus dibuang karena kesalahan informasi.

Nilai-nilai di atas menjadi bagian inti dari Extreme Programming. Tetapi untuk mencapainya perlu ada strategi konkrit yang siap untuk diaplikasikan. Strategi tersebut akan dibahas di lain waktu.

Written by jecki

October 19, 2007 at 1:38 pm

Posted in Software Development

Tagged with

My Preferred Java Web Development Tools

with 3 comments

Here I try to list several tools that I think I’d love to use (in the sense that I haven’t used some of them) to develop a web based java application.

Source Code Management
Subversion

Build automation tools
Ant
Continuum

Core Frameworks
Spring
JUnit
Log4j
Sitemesh

IDE
Eclipse

Servlet Container
Jetty

Issue tracking
Trac

Written by jecki

April 17, 2007 at 4:27 am

Posted in Java

Tagged with