Archive for the ‘Miscellaneous’ Category
Self-Replicating Robots
OK, not 100% replication, but pretty close! http://reprap.org
Posted by Wordmobi
Include Tests and Integration in Estimation
One mistake that I keep encountering over the years in my profession is the underestimation of work required for a work item (which can be a feature, a user story, a bug fix, defect fix, or whatever name you can put).
Any programming work item can be coded fairly quickly, but to know whether it is correct, one MUST test it (and this is not a tester’s job). I regard committing an untested code is a serious crime in the software engineering world. Yet I see it happen way too often.
If you are one of those people, please stop doing it. You are making your teammates sleep less, and you are ultimately responsible for making the world a worse place to live in. Test your code, man.
Posted by Wordmobi
Unsuccessful Doing
Ok, I guess the WordMobi doesn’t really do much good when publishing pictures. But at least for ordinary thoughts it’s ok.
Anyway, just a note to myself: don’t over-engineer code with patterns. Make it easy to read.
Posted by Wordmobi
The Everyday Tea
Some fancy drink that I get to drink everyday. It’s bitter but somewhat tasty after you get acquired to its taste. Somewhat the same story with beer.
Posted by Wordmobi
So the Tablet is Real After All…
So today Steve Jobs announced the iPad, after more than a year of successfully making the public speculate and generate free publicity.
This will also mark my coming back to this blog, after almost a year of complete abandonment.
Where have I been all this time? Well, nowhere. I just haven’t had the will to write. Mental block, some people call it. Not that I have not learnt anything new anyway, but the last few months of work has been primarily requirements gathering and analysis.
The kind of work associated with requirements gathering is tougher than coding, by a lot. I now have even greater respect for those people who call themselves ‘business analysts’. Well, all I have done was just organizing documents from the client (whom until now has been looking for a better way to manage information other than email – the team suggested a change but was unable to convince the management), but the real challenge is how to organize these documents so they do not flood my team (myself included) with emails, and at the same time, decrease confusion (wordy and inconsistent requirements documents are coders’ public enemy #1, not to mention confusing terminologies, often with multiple meanings).
Well, wiki comes to the rescue! The team, after looking at the millions of alternatives, chose XWiki. Although it has been developed since 2003, same year that MediaWiki (most popular wiki software, partly due to the ubiquity of Wikipedia) was also developed, it has more built-in organization features (like the notion of ‘wiki space’). Its weakness is relative unavailability of plugins and extensions (about 40 applications (some not updated and not working on the latest version), and 40 plugins(similar status)) compared to MediaWiki (thousands of extensions). When a client requested a feature to globally edit article sections, I could not find such plugin already developed (although there are ways to work around it, they all amounted to about similar number of clicks and about the same level of obscurity as if using the traditional Microsoft Word and PDF documents).
Anyway, time to go to work.
Is Creating a Compatibility Layer Worth the Time?
I’ve been asking myself this question since I officially became a part of the computer industry… is creating a compatibility layer worth the time?
Before that, perhaps I should explain what a “compatibility layer” is. It is a separate project that sits between a 3rd party library and the project(s) that are our actual client project. Its primary function is to provide stability for the client project, so whenever there is a new 3rd party library that we want to use, we will already have standardized API and can simply extend or replace existing classes in the compatibility layer.
Of course, it costs considerable manpower to create such a compatibility layer. It will take a lot more hours to create such a project than if it were implemented directly on a 3rd party library. Not to mention:
- If we model the compatibility layer according to one library (or even create our own class models), another library may not be using exactly the same paradigms and constructs, so whenever time comes to replace one particular library, it will also become a tough challenge.
- The software that we write will require more resources to run, because of this additional layer that doesn’t actually do any real work.
A couple of years back, the team chose not to create such a layer. We paid a hefty price; when there was a decision to “tone down” our application from 3-dimensional to 2-dimensional, our first reaction was … “WTF?!?!” because that would mean restarting nearly from scratch, with a new library.
So now I’m back with the question. I am currently struggling to juggle between the 3rd party modules for Google Web Toolkit (GWT):
- GXT (a.k.a. Ext-GWT, ExtJS’s own GWT add-on; our current standard, but we want to replace it because it recently adopted a viral license – not good for commercial projects)
- GWT-Ext (a free (LGPL) 3rd party to the Ext library – but itself controversially depends on the last version of Ext library that was still non-viral (and had ambiguous licensing terms), and is no longer maintained by its author)
- SmartGWT (an emerging next-generation library for GWT; better back-end structure (based on the more mature SmartClient, compared to the younger ExtJS), a more liberal license (LGPL), but unfortunately still in beta and its features are rather limited)
So is it worth the time to create such a layer? I’m still too much a newbie in the area of computer industry to answer this question unambiguously. What do you think?
My Writing Style
These days, I tend to shy away from writing verbose documentation with no breaks. I do that on purpose.
Having worked as a technical writer for a year, I know that the most complete document is not quite the answer in most situations. Even with the most complete document, people who read the document will still come to me to ask where things were. (And it does help a lot in the requirements process, where we are gathering data that will become the goals and constraints of the software project).
People are somewhat dumb by design. They will not look into things if they don’t have to. They would rather complain behind the writer’s back, too, than telling the writer that his document is incomplete (or complete but somewhat disorganized). They only like reading novels or magazine articles for entertainment. Reading 100-page documents is just out of style (or in their formal word, “work-like”).
I thought, hmmm… it doesn’t have to be this way.
These days I tend to choose pictures. A storyboard like this can definitely convey more than a thousand words worth of explanation:
Another way to chart ideas is by utilizing mind-maps. Here’s what it looks like:
From Wikimedia
What do you think? Is written document out of style? Is there a better way to document thoughts and processes, than verbose document writing?
GWT UI Designer, sneak preview
Have you tried building an application with GWT? Sick and tired of waiting for those ‘Refresh’ cycles that seem to take forever (even though you probably only changed the length of one text field)? So were we…
This is the initial construction of the GUI builder that we are developing. The other part can be seen at my friend’s blog: http://luvj.wordpress.com/2009/02/18/gwt-ui-designer/
Initially, support will be limited to a very small subset of these widget libraries:
- Native GWT
- GWT-Ext
- SmartGWT
- Ext GWT a.k.a. GXT a.k.a. MyGWT
We will integrate these at some point this week… stay tuned…
The GWT-Ext Best Practices
It’s been a while since I’ve written anything. For the past four months I have joined a new company and we have been busy designing a new web service for an Australian client.
Having been jumping around initially, from .NET, to later Java Struts, then HTML+CSS+JS, I have finally landed on the land of GWT. What is GWT?
Together with GWT-Ext, GWT can help you make your next Internet application rich without you ever touching JavaScript. And that’s great news, since type-checking and debugging is way easier in Java than in JavaScript. (Still, it wouldn’t hurt if someone can make a WYSIWYG designer application for it… but I think for now we have to get our Java hands dirty – not that I don’t like it that way
.
Here are some of the things I recommend that everyone using GWT-Ext doing. These are my personal preferences and, while can be made “best practice”, are certainly my opinion alone.
Extend the GWT-Ext Panel class
Why? Well, it makes me think more clearly. I can now say that all objects within my UI package are panels! Just add the panel objects together for a complete GUI!
Put all constructing commands in constructor and extract methods often
For complex panels, the main constructing function (the constructor, assuming you extend your Panel class) will expand to 200 or so lines easily. If you use Eclipse, use its extract method refactoring facility often. This way you can organize code by its function, and it will be more manageable.
Keep your enumerations in String
Don’t use Java enums. You’ll have to use a static class to forward any information from one Panel to another anyway (the information is most likely in a form of String object!), so Java enums will only add more maintenance load later. Yes, you’ll have to live with a lot of if-and-then’s for your factory classes, but I think that’s a good trade-off compared to forcing to use constants and enums.
Document as you code
I can’t stress that enough, and it’s just as applicable in Java as it is on any other platform. Eclipse and NetBeans have made it very easy for you; you just need to type in your explanation above the function you just declared (denoted within the /** { JavaDoc tag } */)! Both Eclipse and NetBeans can parse these information snippets and trust me, when you come across your own buggy code two months later, you’ll need it. Take time writing it; it will save you a lot of time and confusion down the road. Don’t be lazy!
e-Bible for PC #01: SABDA
The first Bible in Bahasa Indonesia I found while searching was the one produced by SABDA.net. There are two versions offered on the website: the normal (larger download) and the lite. The normal version is actually a port from its English On-Line Bible (“OLB”) made by Larry Pierce, Canada. The lite version was the version developed in-house until 1999. Both can be grabbed at this link:
Program alkitab pertama yang saya temukan dibuat oleh Yayasan SABDA (SABDA.net). Ada dua versi yang ditawarkan di situs SABDA.net: normal dan lite. Versi normal merupakan sebuah port dari versi Bahasa Inggris (“On-Line Bible” atau “OLB”) yang dibuat oleh Larry Pierce di Kanada. Versi lite dikembangkan oleh Yayasan sendiri sampai tahun 1999. Kedua versi dapat diambil di sini:
SABDA.net has a lot of books to offer, ranging from a variety of bible versions (KJV, NIV, and even a section of Qur’an interpreted in English), bible supplements, to spiritual books. All are available here:
SABDA.net menawarkan banyak buku, dari bermacam terjemahan Alkitab (KJV, NIV, dan bahkan kitab Al Qur’an yang diterjemahkan ke Bahasa Inggris), suplemen dan dokumen-dokumen pembantu pembelajaran Alkitab, sampai buku-buku rohani. Semuanya tersedia di sini:
http://www.sabda.net/modul_alkitab/
http://www.sabda.net/modul_biblika/
http://www.sabda.net/modul_buku/
We will focus this article on the normal version of the SABDA program. We will cover the lite edition at another time.
Kita akan fokuskan tulisan ini untuk versi normal dari program SABDA. Kita akan bahas versi lite di lain kesempatan.
The installation of the starter pack (starterpack.exe) is averagely friendly. No unfamiliar questions are asked if you have installed Windows software before.
Instalasi starter pack mudah seperti pada umumnya program-program lain. Tidak ada yang aneh kalau anda sudah pernah melakukan instalasi software di Windows.

Figure 1: Intro Screen during Installation
The starter pack takes 17MB of hard drive space, which includes Indonesian Alkitab “Terjemahan Baru” and The Bible, King James Version.
Starter pack memerlukan 17MB di hard disk, termasuk untuk Alkitab Terjemahan Baru dan Versi King James yang sudah terinstall bersama dengan program.

Figure 2: Installation Screenshot
The installer, apart from installing the core program files, also installs two additional system fonts OLDGRK and OLDHEB for Greek and Hebrew display. This is required for the dictionary of the program to render Greek and Hebrew fonts properly.
Installer juga menambahkan font OLDGRK dan OLDHEB untuk mendukung keperluan Bahasa Yunani dan Ibrani kuno, yang diperlukan oleh kamus alkitab dari program ini.
The installer and the program itself keep displaying a list of steps to do in order to install the program, suggesting that it is rather user unfriendly. Learning how to use the program is somewhat hard.
Installer dan program ini terus menerus memperlihatkan langkah-langkah untuk instalasi program. Ini tanda bahwa program ini tidak terlalu mudah digunakan. Mempelajari cara memakai program agak sulit.
It is worth noting, though, that this program comes with support for blind audience, although (after learning how to use the program for about 12 hours in total) I’m still not yet sure where to invoke it, or even how.
Walaupun begitu, program ini dapat menjangkau penggunaan oleh tuna netra, walaupun saya sampai sekarang (setelah belajar memakai untuk sekitar 12 jam-an) belum tahu cara untuk mengaktifkannya.

Figure 3: Steps to Install
The tutorial pops up BEFORE the actual program is run. This is terribly confusing for some people whom I have observed. They thought it was the real program and started clicking, only to find that it doesn’t quite do what it should. Nevertheless, it is a very comprehensive help system, covering and documenting the functions of the program well.
Window yang sebenarnya tutorial ini muncul SEBELUM programnya dijalankan. Ini sangat membingungkan untuk orang-orang yang sudah saya lihat mencoba memakai program ini. Mereka berpikir ini adalah program yang sebenarnya, dan mulai mencoba-coba, dan bingung karena “program”nya tidak melakukan apa-apa. Walaupun demikian, help system ini mendokumentasikan fungsi-fungsi dari program ini dengan sangat lengkap.

Figure 4: Tutorial Window
I must say that the main interface looks seriously outdated with 8-bit (256-colour) icons, and the entire program “feel” does not promote ease of use. There are many buttons being displayed altogether, which is probably okay if you were a software developer, but not if you are an average user – even I was scared of the interface on my first glimpse.
Saya harus katakan bahwa user interface utama program ini terlihat sangat kuno, dengan icon-icon 8-bit (256 warna), dan “feel” dari program ini tidak memberikan dukungan untuk penggunaan yang mudah. Ada banyak tombol yang diperlihatkan di sini, yang membingungkan untuk pengguna baru.

Figure 5: Main User Interface
Thankfully, the desktop is alterable using Desktop settings that you can easily find within the menu bar, or by pressing F6.
Untungnya, layout ini dapat diubah menggunakan setting Desktop yang dapat dicari di menu bar, atau dengan menekan F6.

Figure 6: Change Desktop Configuration Window
I chose “OHP Desktop” and… done, gone are the annoying buttons and there is only the large Bible text reader.
Saya pilih “OHP Desktop” dan hilanglah semua tombol-tombol itu, dan tinggal tersisa sebuah window untuk membaca Alkitab.

Figure 7: OHP Mode
I seem to have run into a bug, though. Because when I want to return the desktop configuration to how it was (Default) I couldn’t get the buttons to show up… at all!
Saya sepertinya menemukan bug. Karena ketika saya ingin mengembalikan desktop ke keadaan semula (Default) saya tidak dapat mengembalikan panel yang berisi tombol-tombol tadi!
The right-click interface is verbose, although I find it funny that the “Find Verse” function does not have a shortcut here. It is likely the single most used tool of any Bible software.
Interface yang tampil pada saat anda click tombol kanan ini cukup lumayan, walaupun lucunya fungsi untuk mencari ayat tidak ada. Padahal fungsi ini seharusnya mudah dijangkau, karena paling sering dipakai.

Figure 8: The Right-Click Interface
Finding a Verse by Scripture Name and Number
In most cases, how good a Bible program is can be seen from how easy/hard it is to do what is most often done on Bible: search for a verse.
Bagus atau tidaknya sebuah program Alkitab dapat dilihat dari mudahnya melakukan yang sering dilakukan dengan Alkitab: mencari ayat.
In this program, one of the ways to find a particular verse is through “File/Baca” menu.
In this program, salah satu cara untuk mencari ayat adalah lewat menu “File/Baca”.
The other is by clicking on the leftmost button on the tool bar (if it has not disappeared yet).
Cara lain adalah click tombol yang paling kiri di tool bar user interface (kalau punya anda belum hilang).

Figure 9: The “Find Verse” Function Button
Either path will take you to Find Verse window.
Kedua cara ini akan menampilkan “Tampilkan Ayat”.

Figure 10: The “Find Verse” Search Window
Although the Scripture names are written in Indonesian, the “Ayat” field is still undoubtedly English, something they either haven’t translated, or can’t translate just yet.
Walaupun nama-nama Kitab sudah ditulis dalam Bahasa Indonesia, field “Ayat” masih berisikan nama-nama Kitab dalam Bahasa Inggris. Mungkin mereka belum sempat atau belum bisa menerjemahkan bagian ini.
Loading Extra Modules
Memasukkan Modul Baru
There are tons of supporting Bible study materials available on the SABDA.net website or on their CD, as I wrote before. Here, I will show importing a dictionary module. This method is usable for all kinds of modules available for the SABDA software.
Ada banyak materi tambahan untuk pembelajaran Alkitab yang bisa didapatkan di SABDA.net atau di CD mereka. Saya tunjukkan di bawah, cara untuk import modul kamus. Cara ini dapat dipakai untuk mengimport semua jenis modul SABDA.
- Click on “Alat-alat” > “Alat Modul User” > “Kembalikan/Tambah Modul”
Klik di “Alat-alat” > “Alat Modul User” > “Kembalikan/Tambah Modul”

Figure 11: How to Add New Module
- A pop-up window will show and ask you where the new module is. Select the Bible dictionary and import it.
Sebuah window akan muncul dan menanyakan di mana modul baru yang akan ditambahkan. Pilih kamus Alkitab dan import.
- Simply select the dictionary (the section marked with red on the screen shot below), and you’ll be good to go. Dictionary will search automatically for an entry, everytime you hover your mouse on any word on the Bible window.
Pilih kamus (lihat gambar di bawah). Kamus akan secara otomatis mencari dan menampilkan arti kata, ketika anda menggerakkan mouse di window Alkitab.

Figure 12: How to Activate the Dictionary
Conclusion
Rangkuman
A great Bible software (and for free too) with a lot of customizations possible, and a lot of materials available, provided that you get past a fairly steep learning curve and its tacky user interface. Not the easiest to use of the whole pack. However, its sheer number of facilities, including instant dictionary reference, provided that one can use them to their greatest extent, will make any computer-literate Bible reader, or theology student, or priest preparing for a sermon, very happy.
Software Alkitab yang bagus (dan gratis), dapat disesuaikan dengan kebutuhan pribadi, dengan dukungan materi bacaan yang berlimpah, dengan catatan bahwa untuk menggunakan software ini diperlukan waktu belajar yang tidak sedikit. User interface-nya kuno dan buruk rupa untuk standard software modern. Ini bukan software yang paling mudah dipakai, tetapi dengan fasilitas software yang tersedia, seperti kamus instant, akan dapat sangat membantu orang-orang yang sudah fasih dengan program ini.
Compatibility: Windows 98/Me/2000/XP
Ease of Use (kemudahan penggunaan): 3/10
Versatility (fungsi penyesuaian dengan kebutuhan): 9/10
Availability of Contents (kemudahan untuk mendapatkan isi program, termasuk isi dalam Bahasa Indonesia): 9/10

