percaya sama occam razor
See also: Other Geeks@INDC

October 2009 - Posts

ngintip dikit SQL Azure CTP

Pertama-tama aku pikir Windows Azure cuma buat high performance computing, storage-nya cuma terdiri dari blob, queue dan table. Aku ga sadar bahwa Microsoft juga punya SQL Azure.

I registered for SQL Azure CTP a little late (in early September 2009) and totally forgot about it until Hammad Rajjoub (MVP Connected Systems) Twittered about it.

Jadi kali ini aku main-main sedikit sama SQL Azure

[baca selanjutnya in English di-copy dari]

Upon putting my invitation code and creating myself an administrator account, I get the following simple screen. There are only a few action here, generate a connection string, create and drop a database.


There is also a Firewall Settings tab to restrict access by IP address. By default, no access is given to anyone.

Note It takes a few minutes for the settings to take into effect, so don’t be surprised.

There’s also ‘Allow Microsoft Services access to this server’ tick box, which I assume need to be selected should you use this SQL Service with Windows Azure.


What’s annoying is apparently you can’t use any of the SQL Server Management Studio Express 2005 versions nor the Visual Studio 2008 Server Explorer. Both displayed error dialog even though being able to connect to Azure SQL successfully.

Visual Studio 2008 showing an error dialog despite tested the connection successfully.

However, apparently it works on SQL Server Management Studio 2008, with a small workaround. Get the free version here: Mangement Studio Express 2008.

Also, you could use these tools (kudos to Bill Zack – Architect Evangelist team at Microsoft):

SQL Azure Migration Wizard. This wizard helps you to migrate an on-premise SQL Server 2005 or 2008 database to SQL Azure. It creates the necessary scripts required to do the migration.

SQL Azure Explorer This tool is an add-in for Visual Studio 2010 Beta 1 (only) that lets you create/drop databases, logins and users and perform other database related functions from within Visual Studio 2010 Beta 1.

SQL Azure Manager is a lightweight tool for managing SQL Azure databases. It is a community effort to quickly enable connecting to SQL Azure databases and performing basic tasks.

Share this post: | | | |
Nge-automate user testing pake WatiN di multiple browser: contoh fluent interfacing

Saya sudah memakai WatiN beberapa kali dan pernah ngeshare tips buat ngejalanin WatiN di firefox dengan Firefox plugin (which constantly crash even with the newer jssh-WINNT-3.x.xpi).

Kali ini aku pengen ngebagi code snippet buat make WatiN di semua browser tanpa perlu make browserFactory atau apalagi copy paste. Bagi yang ga tau WatiN apaan, mungkin bisa ngeliat contoh di bawah ini sebagai contoh Fluent Interfacing alias method yang dibikin supaya kalo nyambung-nyambung mudah dibaca

Ini targetnya:

public void Context()
  CrossBrowserTestExecutor.Execute( Scenario )

public void Scenario(Browser browser)
  browser.GoTo( "" );

Mayan bersih kan? Notice kalimatnya jadi mudah dibaca dibanding kalo ditaroh di baris yang berbeda.

So this is the code that enables you to do that:

public class CrossBrowserTestExecutor
  public static CrossBrowserTest Execute( Action<Browser> test )
    return new CrossBrowserTest( test );

public class CrossBrowserTest
  public CrossBrowserTest( Action<Browser> test )
    TheTest = test;
    BrowserAgents = new List<Browser>();

  public Action<Browser> TheTest { get; set; }

  public IList<Browser> BrowserAgents { get; set; }

  public CrossBrowserTest WithAllBrowsers
      BrowserAgents.Add( new IE() );
      BrowserAgents.Add( new FireFox() );
      return this;

  public void Go()
    foreach ( Browser agent in BrowserAgents )
      TheTest( agent );

Feel free to use it in any of your project, but please drop a comment if you find it useful. Thanks

Share this post: | | | |
10 Fitur kenapa Asp.Net 4 cocok untuk website publik

Aku baru saja kelar membaca Asp.Net 4.0 Beta 2 Overview dan ga sabar untuk menanti framework ini keluar. Di post ini, aku ingin menyoroti sedikit peningkatan yang membuat 4 cocok untuk membuat website publik.

Kamu akan melihat bahwa sepertinya Microsoft berusaha untuk lebih ‘mempercayai’ komunitas programmernya. Kita bisa liat bagaimana Microsoft membuat bbrp fitur yang sudah ada bisa di extend lebih lanjut untuk kebutuhan kita masing-masing.

1. Accessibility: Bisa mengatur Url


Sebagian dari kita yang udah main-main sama Asp.Net MVC pasti ga bisa lepas sama fitur Routing. Tidak seperti Asp.Net yang secara default, sistem url-nya terikat sama file system, MVC punya kontrol lebih.

Di versi lama kita bisa bikin friendly url dengan membuat HttpModule khusus yang tugasnya meng-convert url internal dengan eksternal. Sejak Asp.Net 3.5 kita jg bisa memakai Routing class dari ASp.Ne MVC. Tapi di Asp.Net 4 lebih mudah lagi karena nanti akan ada:

  • Routing bisa nge-map ke physical file
  • Ngebaca informasi dari url bakal sama gampangya sama ngebaca dari query string

Page.RouteData.Values["blogtitle"] as string;

  • Bisa pakai Routing information supaya ga usah masukin url ke mark up. jadi ga ada yang di hard-code.


2. Accessibility: Permanently Redirecting a Page

Seperti yang mungkin kamu sudah tau, ada beberapa macam http response. 301 adalah salah satunya untuk menyatakan bahwa halaman yang user mau liat sudah pindah lokasi.

Sebelum 4.0 kita harus ngelakuin ini secara manual:

Response.Status = "301 Moved Permanently";

Di 4, sekarang kita bisa tinggal:


3. Accessibility: Extensible Browser Capabilities

Browser Definition adalah salah satu fitur yang bisa kita pakai untuk mengecek kemampuan dari browser. Fitur ini udah diperkenalkan sejak Asp.Net 3.5 SP1 tapi perlu konfigurasi xml dan manggil program di command prompt

Side Note: Scott Hanselman spoke to Chris Woods, a program manager at Microsoft on the Mobile Browse Platform Team about a database of mobile device capabilities which uses the same mechanism.

Di 4, Microsoft sudah masukin browser definition  untuk iphone, chrome, safari and opera.

taken from

Fitur ini juga bisa di-extend menggunakan Provider.

4. Performance: Extensible Output and Object Caching

Ga ada website yang bakal survive tanpa a good caching strategy.

[lanjutannya dalam bahasa inggris: diambil dari]

Asp.Net does always have a caching mechanism built in, but it lacks native support to external distributed caching engines.

On Asp.Net 4, output and object caching are implemented using the Provider model, which means you can use the normal cache object to interact with your own custom cache engine!

Or even better, implement your own custom caching strategy based usage patterns, time of day, etc.

5. Performance: Control over Client ID


With the prior versions of, we lost control over what Html ID gets generated to the clients. This introduce 2 problems: performance (size of download gets bigger) and it becomes so darn hard to write client side script without a reliable client ID.

Side Note: QA team also often finds it difficult to write consistent Automated UAT Script (using WatiN or Selenium) having the client ID automatically generated by Asp.Net.

Asp.Net 4 introduce ClientIDMode which lets you set AutoID, Static, Predictable and Inherit.

Static – specifies the ClientID to use the value as the ID of the web user control without the parent naming containers.

Predictable – specifies the Client ID with a specified row suffix. This is generally used for controls with repeating templates.

6. Performance: More Granular View State Control

In prior Asp.Net versions, ViewState is enabled by default and can’t be disabled sitewide. In Asp.Net 4 this is now possible. Possible values include Enabled, Disabled and Inherit.

Remember, View State aren’t evil but it has to be utilized carefully.


7. Performance: Session State Compression

Handling massive amount of session state can be quiet expensive on a large website. Asp.Net 4 introduce a simple switch to turn Gzip compression on out-of-process session state providers. Very cool!

8. Performance: Auto-Start Web Applications

Some sites have extensive Application_Start procedure, for e.g eager cache static content, or let the load balancer know that the server is ready to start serving requests. However in previous versions, Application_Start happens upon the first user visit the site causing terrible experience for this unlucky person.

Side Note: hence often we have an automated ping to fake the first request to kick off the application

Asp.Net 4 with IIS 7.5 introduce an always on mode which start the web site automatically.

9. Security: Extensible HTML, URL and HTTP Header Encoding

Have you ever had problems of not being able to escape special characters by using HttpUtility.Encode ? In the previous Asp.Net versions the encoding technique doesn’t seem to be aggressive enough. In Asp.Net 4, Microsoft again introduce an extensibility point to built our own and have it configured from the web.config file.

<httpRuntime encoderType="Samples.MyCustomEncoder, Samples" /> 

10. Security : Extensible Http Request Validation

Asp.Net 4 introduce a few things that improves security when it comes to handling http requests:

  • Url character check configuration.
    afraid of script injection/XSS (cross side scripting) attacks from the url? fear no more, now we can specify a list of invalid chars. If it failed the test, http 400 will be returned back
  • Request Validation
    This is an attempt to validate all HTTP request data. We have to see how effective it really is.
  • As you might start to recognize a pattern from the previous points, guess what? Request Validation feature is also extensible, so if Microsoft isn’t doing a good enough job, you could implement it yourself.

The Bad news is there seem to be  not much improvement over the rendering of the web controls. Render=Flow still generate a bunch of span-s instead of div-s which I personally found limiting.

Share this post: | | | |
Berspekulasi tentang Google Wave: akankah Google mengincar Http?

Saya akui, saya lagi demam Google Wave. Cukup jarang kita melihat protocol baru yang disambut semeriah ini. Mungkin ada hubunganya dengan marketing dari Google. Tapi bila produknya bisa menambah kaya interaksi kita di web, kenapa tidak ikut membantu untuk mengakselerasi kemajuannya bukan?

Apa sih Google Wave ini?

Ada yang bilang Google Wave ini mau ngeslap microsoft dan bertarung dengan Sharepoint. Google sedangkan beranggapan Google Wave ini adalah pengganti email.

Perlu diingat bahwa google wave bukan sekedar aplikasi saja tapi ada 3 komponen yang sangat berbeda:

  • The Google Wave client application : ini interface yang kita lihat di htp:// Kebanyakan orang akan menganggap Google Wave yah cuma ini.
  • The Google Wave APIs, dan
  • The Google Wave Federation Protocol. Ini protocol yang dipakai. Lihat gambar di bawah, kita harus menyadari wave protocol ini spesifikasinya open source, jadi rupanya siapa saja bisa membangun infrastruktur di atasnya, dan bisa bicara satu sama lain. seperti email servers

diambil dari

What’s the fuss is all about?

Banyak orang mandek melihat Google Wave di bagian clietnya saja sehingga menganggap Wave sebagai sekedar web aplikasi yang ngegabungin instant messaging dan email.

Beberapa dari kita sudah berpikir lebih jauh untuk melihat cara bagaimana kita bisa mengubah cara kita berkomunikasi dengan orang lain dengan meng-extend dan augment  datga yang dengan data dari source lain menggunakan robot dan extension (Wave API).

Membaca Google Groups yang berdedikasi untuk Google Wave, rupanya ada sebagian orang yang melihat Wave sebagai spesifikasi protokol. Ya, mereka pengen bikin client dan API sendiri bukan seperti google. Beberapa orang ini rupanya melihat Wave sebagai protokol komunikasi yang sudah nge-support interaksi real time dengan sebagian besar masalah yang dibawanya sudah terpecahkan (conflict resolution, etc).

Begitu kita menyadari bahwa Wave adalah protokol yang duduk di atas federated server (rupanya extension dari Jabber protokol yang dipakai di banyak Instant Messenger), kita benar-benar belum melihat kemampuan Wave yang sebenarnya.

Seperti Netscape mengubah cara kita merambah dunia jejaring dari command lines di terminal window dengan teks, gambar dan hyperlinking, Wave mungkin saja bisa mengubah interaksi kita yang cenderung statis ini ke sesuatu yang lebih immersive.

Will Wave protocol be the new Http?

Entah, sayangnya otak aku ga cukup kuat untuk baca spesifikasinya. Saya menantang para pembaca post ini untuk membaca spesifikasi tersebut dan memberi tahu saya apa yang kita bisa bangun di atasnya (imel saya ronaldwidha at gmail dot com atau wave di ronaldwidha at googlewave dot com ).

Kalo benar ini memungkinkan, mungkin kita sebagai developer harus mulai melihat untuk membuat web browser baru yang menawarkan pengalaman kolaboratif kepada penggunanya. Belanja online bersama, membaca, menulis wiki bersama dan semuanya bisa dilakukan real time.

Share this post: | | | |
Podcast Dot Net baru!

Yup, you read it right!


Setelah memulai Teman Macet kayaknya masi banyak energi tersisa yang bisa dipakai untuk membakar semangat untuk terus mengembangkan sayap! Podcast dot net baru ini (semoga lancar) bakal di host di Channel 9. Host-nya adalah Hammad Rajjoub (MVP Connected Systems) dan saya sendiri.

Tunggu tanggal mainnya, untuk sementara pantau terus @DotNetMEPodcast

Share this post: | | | |
Google Wave: udah coba public search?

Di post Google Wave tidak bersaing dengan Facebook atau Twitter, tapi Exchange aku menekankan bahwa yang menarik dengan Google Wave adalah protocolnya. Google Wave ingin menggantikan email.

Namun hari ini aku baru saja menemukan satu hal yang menarik tentang fitur Google Wave as how it was originally meant to be used: sebagai alat kolaborasi!

Banyak tester beta Google Wave (termasuk saya) tidak bisa mencicipi platform baru ini sebagai alat kolaborasi karena kita belum punya cukup contacts. Dan kalau kamu menghadapi masalah yang sama, coba ini:

di textbox di atas di mana ada tulisan in: inbox, kamu bisa memasukkan query search lain. Dan query yang menarik untuk dicoba adalah with: public. Query ini akan melihatkan semua Wave yang publik.


Interaksi ini mengingatkan aku sama mIRC, ICQ dicampur dengan forum atau mailing list. Sekarang aku ngerti apa kata Scoble: Google Wave itu berisik. Ayo coba dan kasi tau pendapat kamu!

Share this post: | | | |
Padanan Istilah TI harus dengan tujuan menambah makna

Beberapa hari yang lalu aku menulis bahwa pembakuan istilah TI tidak penting. Semalam aku sempat mendengarkan opini langsung dari Ivan Lanin (pengasuh Wikipedia Indonesia) dan Romi Hardiyanto (kontributor Mozilla Indonesia) menjelaskan pentingnya konsistensi penggunaan kata.

Ivan Lanin said it best on his tweet right after our skype session: pelokalan bukan semata penerjemahan. Sebuah terminologi TI harus jelas maknanya dan bukan untuk sekedar pemberian nama. Sebaiknya tidak diciptakan untuk sekedar kepentingan mencapai etimologis yang elegan, tapi untuk memudahkan pemahaman.

Kalo tidak, tidak ada bedanya menghapalkan kata bule.

Sesi diskusi dengan Ivan Lanin dan Romi Hardiyanto akan menjadi Teman Macet episode 20, akan tayang 12 Oktober.

Share this post: | | | |
Google Wave tidak bersaing dengan Facebook atau Twitter, tapi Exchange

Beberapa hari yang lalu aku mendapat invitasi untuk mencoba Google Wave. Entah karena aku mengekspresikan interest aku ke google secara langsung atau karena dapat rekomendasi dari Akhmad Fatonih Navinot.

Aku masih meraba-raba apa yang bisa dilakukan oleh Google Wave dan akan menyimpan kesempatan untuk nge-review teknologi ini untuk para pakar yang lain.

Navinot hari ini (3/10/2009) membahas soal Google Wave; Google Wave crashes on beach of overhype. Posting tersebut ditulis dengan nada yang sedikit kecewa dan berintonasi koq cuma begini. Harus aku akui, aku pun sedikit merasa seperti itu. Para kolega dan istriku bahkan cuma bilang ‘cuma gitu aja?’.


Rupanya tidak sedikit orang yang membandingkan Google Wave dengan Facebook, Twitter atau Friendfeed. Robert Scoble memberikan wanti-wanti bagaimana bisingnya Google Wave ketika dibandingkan dengan friendfeed atau Twitter. Aku setuju, tapi ingin melihat produk ini dalam sudut pandang lain, terlepas dari fitur real time-nya.

Dulu aku berargumen bahwa Twitter bukan sepantasnya menjadi media komunikasi yang akhirnya membuat aku menjadi bahan celaan di bbrp blog dan microblog (akhirnya Twitter memang menjadi media komunikasi jg sih but that wasn’t the point). Nah, aku menganggap Google wave kebalikannya. Google Wave ini MEDIA KOMUNIKASI.

Walaupun punya unsur sosial, kita harus mengingat, Google Wave harus dilihat dari sudut pandang infrastruktur. Google Wave ingin bersaing dengan pop, smtp dan microsoft exchange servers / service, bukan facebook atau twitter.

Bayangkan situasi ini... aku join a few mailing list. Aku berdiskusi. Setiap kali aku nge-post konten, konten itu harus di replikasi dan dikirimkan ke semua anggota mailing list. Redundan? Bukankah seharusnya semua melihat 1 sumber yang sama? Tidak perlu replikasi?

Coba lihat fitur reply di email. Untuk memberikan konteks dan tahu thread pembicaraan, kita mengandalkan inline/attachment email sebelumnya. Gmail dan Xobni jg memperkenalkan threading dengan metadata yang ada, tapi masih jauh dari akurat.

Bayangkan lagi situasi bagaimana aku mengkomen di blog Navinot. Aku menulis panjang lebar dan klik 'berlangganan komentar baru via email' dengan harapan bisa mengikuti diskusinya terus.

What? berlangganan via e-mail? Mo komen, cek komen, forgot password, join, notification, notification direct message(message pangkat 2 donk?) kita diharuskan untuk cek imel.

Email sudah menjadi pipa dan lem interaksi di internet yang kita terima karena kita sudah terbiasa.

Mungkin kita harus melihat Google Wave sebagai email infrastructure with more powerful API ....atau bahkan, the world's messaging bus! (at least that is what it’s trying to do). Oleh karena itu lebih tepat untuk memposisikan Google Wave bersama Exchange Server atau bahkan Facebook Connect.

Killer application untuk Google Wave (begitu pula Facebook Connect) adalah aplikasi yang menyambungkan knowledge silos yang saat ini terpisah.

ps. Aku menulis post ini berdasarkan komen yang aku tinggalkan di Navinot (Google Wave crashes on beach of overhype). Andai aku bisa melihat semua reply yang ditujukan ke komen aku itu di sini, dan jg sebaliknya, komen yang masuk ke post ini langsung otomatis masuk ke Navinot.

Share this post: | | | |
Pembakuan Istilah TI tidak penting

Akan sulit bagi saya untuk mengungkapkan pendapat ini tanpa terdengar 'nyebelin'.

Ivan Lanin menulis di forum id-php mempertanyakan mengapa praktisi TI kurang memakai istilah Indonesia.

Aku merasa wajib harus mempertanyakan motivasi dari pembakuan istilah2 TI ini sebelum berusaha refleksi mencari jawaban atas pertanyaan itu.

Apakah ini termotivasi oleh rasa nationalis (semata)? memperkuat kepribadian bangsa kita? ataukah ada yang keuntungan lain yang kita dapatkan?


Bangsa kita berpotensial. Banyak orang pintar, dan kita tidak takut kerja keras.

Namun banyak pula yang beranggapan, bahasa menjadi kendala. Bahasa inggris yang dibutuhkan untuk menangkap pasar barat bukan menjadi bahasa ibu kita. Yang akhirnya menjadi satu halangan untuk 'nimbrung' di kancah yang lebih besar.

Dengan logika itu, aku malah berharap mungkin ada baiknya kata2 asing diserap daripada dicari padanannya. Atau bahkan mengakui bahwa kita tidak 'butuh' kosakata untuk TI, seperti kita jg tidak butuh 6 kata berbeda untuk 'kamu' seperti orang Korea (kita cuma punya 3), atau 9 kata berbeda untuk menggambarkan es seperti orang eskimo.

Malcolm Gladwell di Outlier bercerita bahwa penerbangan Korea mewajibkan pilotnya untuk menggunakan bahasa inggris. Alasannya? Bahasa inggris dianggap bahasa aviasi internasional.

Bahasa jg mencerminkan kultur. Seorang co pilot akan dipaksa hormat berlebihan kepada sang kapten bila menggunakan bahasa Korea (ingat ada 6 kata berbeda untuk 'kamu'). Secara bawah sadar membuat co pilot untuk tidak kritis thp tindakan2 kapten.

Apakah pembakuan istilah TI akan menambah halangan untuk kita go international?
Pendapat (dan cercaan) akan diterima secara lapang dada.

Share this post: | | | |