<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://geeks.netindonesia.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>RonaldWidha</title><link>http://geeks.netindonesia.net/blogs/ronaldwidha/default.aspx</link><description>percaya sama occam razor
</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>Das Hanselman wants a piece of this!</title><link>http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2010/02/21/das_2D00_hanselman_2D00_wants_2D00_a_2D00_piece_2D00_of_2D00_this.aspx</link><pubDate>Sun, 21 Feb 2010 01:00:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:186024</guid><dc:creator>ronaldwidha</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/ronaldwidha/rsscomments.aspx?PostID=186024</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/ronaldwidha/commentapi.aspx?PostID=186024</wfw:comment><comments>http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2010/02/21/das_2D00_hanselman_2D00_wants_2D00_a_2D00_piece_2D00_of_2D00_this.aspx#comments</comments><description>&lt;p&gt;At &lt;a href="http://www.teched.ae/" target="_blank"&gt;Tech Ed Middle East&lt;/a&gt; I’ll be co-hosting an interactive session with few panelists, including &lt;a href="http://twitter.com/shanseman" target="_blank"&gt;Scott Hanselman&lt;/a&gt;. Very exciting!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.teched.ae/agenda.aspx"&gt;&lt;img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" title="teched-interactive" border="0" alt="teched-interactive" src="http://geeks.netindonesia.net/blogs/ronaldwidha/techedinteractive_5E816071.jpg" width="400" height="213" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The topic is discussing something that is &lt;a href="http://www.ronaldwidha.net/2010/01/21/the-only-reason-why-i-would-want-to-be-ansoftware-architect-is-to-have-the-street-cred/" target="_blank"&gt;close to my heart&lt;/a&gt;; the role of an Architect, especially an Agile Architect. What’s the difference between a senior developer and an architect? &lt;/p&gt;  &lt;p&gt;I’d love to hear your thoughts! Give Hanselman a piece of your mind on the day! ;)&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="interactive-session" border="0" alt="interactive-session" src="http://geeks.netindonesia.net/blogs/ronaldwidha/interactivesession_4DE55184.jpg" width="500" height="60" /&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2010/02/21/das_2D00_hanselman_2D00_wants_2D00_a_2D00_piece_2D00_of_2D00_this.aspx&amp;amp;subject=Das Hanselman wants a piece of this!" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2010/02/21/das_2D00_hanselman_2D00_wants_2D00_a_2D00_piece_2D00_of_2D00_this.aspx&amp;amp;t=Das+Hanselman+wants+a+piece+of+this!" target="_blank" title="Submit Das Hanselman wants a piece of this! to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2010/02/21/das_2D00_hanselman_2D00_wants_2D00_a_2D00_piece_2D00_of_2D00_this.aspx&amp;amp;title=Das+Hanselman+wants+a+piece+of+this!" target="_blank" title="Submit Das Hanselman wants a piece of this! to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2010/02/21/das_2D00_hanselman_2D00_wants_2D00_a_2D00_piece_2D00_of_2D00_this.aspx&amp;amp;phase=2" target="_blank" title="Submit Das Hanselman wants a piece of this! to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2010/02/21/das_2D00_hanselman_2D00_wants_2D00_a_2D00_piece_2D00_of_2D00_this.aspx&amp;amp;title=Das+Hanselman+wants+a+piece+of+this!" target="_blank" title="Add Das Hanselman wants a piece of this! to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=186024" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/ronaldwidha/archive/tags/dubai/default.aspx">dubai</category><category domain="http://geeks.netindonesia.net/blogs/ronaldwidha/archive/tags/tech+ed/default.aspx">tech ed</category><category domain="http://geeks.netindonesia.net/blogs/ronaldwidha/archive/tags/middle+east/default.aspx">middle east</category><category domain="http://geeks.netindonesia.net/blogs/ronaldwidha/archive/tags/pooya+darugar/default.aspx">pooya darugar</category><category domain="http://geeks.netindonesia.net/blogs/ronaldwidha/archive/tags/hammad+rajjoub/default.aspx">hammad rajjoub</category><category domain="http://geeks.netindonesia.net/blogs/ronaldwidha/archive/tags/scott+hanselman/default.aspx">scott hanselman</category></item><item><title>I’ll be speaking about Domain Driven Approach with EF4 at TechEd 2010</title><link>http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2010/02/20/ill_2D00_be_2D00_speaking_2D00_about_2D00_domain_2D00_driven_2D00_approach_2D00_with_2D00_ef4_2D00_at_2D00_teched_2D00_2010.aspx</link><pubDate>Sat, 20 Feb 2010 18:25:44 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:186023</guid><dc:creator>ronaldwidha</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/ronaldwidha/rsscomments.aspx?PostID=186023</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/ronaldwidha/commentapi.aspx?PostID=186023</wfw:comment><comments>http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2010/02/20/ill_2D00_be_2D00_speaking_2D00_about_2D00_domain_2D00_driven_2D00_approach_2D00_with_2D00_ef4_2D00_at_2D00_teched_2D00_2010.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://teched.ae/" target="_blank"&gt;&lt;img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" title="TENA_blgr3_seeme" border="0" alt="TENA_blgr3_seeme" src="http://geeks.netindonesia.net/blogs/ronaldwidha/TENA_blgr3_seeme_6FAA181C.gif" width="120" height="90" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I’ve just noticed that the session details is already up on the &lt;a href="http://www.teched.ae/agenda.aspx" target="_blank"&gt;TechEd Middle east website&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.teched.ae/agenda.aspx" target="_blank"&gt;&lt;img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" title="teched-ef" border="0" alt="teched-ef" src="http://geeks.netindonesia.net/blogs/ronaldwidha/techedef_74107316.jpg" width="350" height="216" /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;I have to tell you that this is really exciting to be a part of the first Tech Ed in the middle east region. When you have a brand like &lt;a href="http://www.jumeirah.com" target="_blank"&gt;Jumeirah&lt;/a&gt;, the umbrella company of the 7 star hotel, sponsoring the event, you know that you’re talking major business!&lt;/p&gt;  &lt;p&gt;My talk (DEV303 – I’ll see you there!) will be talking about introducing Entity Framework 4 and Domain Driven approach. I’m expecting that most of the audience will be familiar with data access patterns, and new to Domain Driven Design.&lt;/p&gt;  &lt;p&gt;We’ll look at the evolution of design from Rapid Application Development, Transaction Scripts to Domain Modelling with OR/M. &lt;a href="http://www.twitter.com/antondelsink" target="_blank"&gt;Anton Delsink&lt;/a&gt; will introduce the concept using Linq to SQL, and will take it to the finish line using the upcoming Entity Framework 4.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://geeks.netindonesia.net/blogs/ronaldwidha/image_42607BB9.png" width="500" height="32" /&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2010/02/20/ill_2D00_be_2D00_speaking_2D00_about_2D00_domain_2D00_driven_2D00_approach_2D00_with_2D00_ef4_2D00_at_2D00_teched_2D00_2010.aspx&amp;amp;subject=I’ll be speaking about Domain Driven Approach with EF4 at TechEd 2010" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2010/02/20/ill_2D00_be_2D00_speaking_2D00_about_2D00_domain_2D00_driven_2D00_approach_2D00_with_2D00_ef4_2D00_at_2D00_teched_2D00_2010.aspx&amp;amp;t=I%e2%80%99ll+be+speaking+about+Domain+Driven+Approach+with+EF4+at+TechEd+2010" target="_blank" title="Submit I’ll be speaking about Domain Driven Approach with EF4 at TechEd 2010 to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2010/02/20/ill_2D00_be_2D00_speaking_2D00_about_2D00_domain_2D00_driven_2D00_approach_2D00_with_2D00_ef4_2D00_at_2D00_teched_2D00_2010.aspx&amp;amp;title=I%e2%80%99ll+be+speaking+about+Domain+Driven+Approach+with+EF4+at+TechEd+2010" target="_blank" title="Submit I’ll be speaking about Domain Driven Approach with EF4 at TechEd 2010 to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2010/02/20/ill_2D00_be_2D00_speaking_2D00_about_2D00_domain_2D00_driven_2D00_approach_2D00_with_2D00_ef4_2D00_at_2D00_teched_2D00_2010.aspx&amp;amp;phase=2" target="_blank" title="Submit I’ll be speaking about Domain Driven Approach with EF4 at TechEd 2010 to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2010/02/20/ill_2D00_be_2D00_speaking_2D00_about_2D00_domain_2D00_driven_2D00_approach_2D00_with_2D00_ef4_2D00_at_2D00_teched_2D00_2010.aspx&amp;amp;title=I%e2%80%99ll+be+speaking+about+Domain+Driven+Approach+with+EF4+at+TechEd+2010" target="_blank" title="Add I’ll be speaking about Domain Driven Approach with EF4 at TechEd 2010 to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=186023" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/ronaldwidha/archive/tags/microsoft/default.aspx">microsoft</category><category domain="http://geeks.netindonesia.net/blogs/ronaldwidha/archive/tags/Jumeirah/default.aspx">Jumeirah</category><category domain="http://geeks.netindonesia.net/blogs/ronaldwidha/archive/tags/entity+framework/default.aspx">entity framework</category><category domain="http://geeks.netindonesia.net/blogs/ronaldwidha/archive/tags/anton+delsink/default.aspx">anton delsink</category><category domain="http://geeks.netindonesia.net/blogs/ronaldwidha/archive/tags/dubai/default.aspx">dubai</category><category domain="http://geeks.netindonesia.net/blogs/ronaldwidha/archive/tags/tech+ed/default.aspx">tech ed</category></item><item><title>Apa sih yang dianggap stateless?</title><link>http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2010/02/02/apa-sih-yang-dianggap-stateless.aspx</link><pubDate>Tue, 02 Feb 2010 07:11:54 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:185698</guid><dc:creator>ronaldwidha</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/ronaldwidha/rsscomments.aspx?PostID=185698</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/ronaldwidha/commentapi.aspx?PostID=185698</wfw:comment><comments>http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2010/02/02/apa-sih-yang-dianggap-stateless.aspx#comments</comments><description>&lt;p&gt;Mo menanggapi diskusi apa yang dianggap &lt;a href="http://dotnet.netindonesia.net/?0::53443" target="_blank"&gt;stateless / stateful di milis dotnet&lt;/a&gt; yang berkaitan sama gimana ngebikin aplikasi di web bisa lebih nge-&lt;em&gt;scale&lt;/em&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Jadi kalo kita misah2in bahwa session-specific data mesti dilewatin ke HttpSession (ke memcache ato sql-server), sedangkan application-data mesti dilewatin ke repository dan ORM, ini adalah diskriminasi yg artificial. &lt;/p&gt;    &lt;p&gt;Karna kedua2nya sebenernya sama2 data. &lt;/p&gt;    &lt;p&gt;Keputusan kemana datanya mesti disimpen adalah case-per-case decision (e.g. temporary/persistent, size, write/read frequency, importance, recoverable) yang gak terikat dengan apakah itu session-data ato application-data.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Menurut aku, definisi state harus dikonstrain dari sudut pandang &amp;quot;hubungan client dan servernya&amp;quot; (konsep bukan hardware loh ya), siapa yang menyimpan konteks sebuah situasi.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Kalo servernya bisa mengenali konteks si client tanpa informasi dari client &lt;/strong&gt;= servernya stateful&lt;/li&gt;    &lt;li&gt;Sedangkan kalo sebaliknya, &lt;strong&gt;si server tidak bisa mengenali konteks si client, dan client harus ngasih tau ke server konteks dirinya &lt;/strong&gt;= servernya stateless.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Coba liat contoh pseudo code di client untuk ngebayar sebuah transaksi:&lt;/p&gt;  &lt;p&gt;di contoh ini, client-nya stateful, karena tau siapa user-nya.&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:DFDE9937-D816-47f4-A306-7B60D5CE5AC0:3da66439-145e-46e2-8646-2c5353058f2f" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush: sql; gutter: true; first-line: 1; tab-size: 2;  toolbar: true; "&gt;var saya = Current.User

using ( var pelayan = new serverconnection) 

{

  var pesanan = pelayan.pesan(saya, &amp;quot;makanan&amp;quot;)

  var bill = pelayan.mintaBill(saya)

  pelayan.bayar(bill)

}
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;sementara di server (class pelayan) itu stateless. Karena kita selalu harus ngasih tau konteks transaksi kita.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;pas mesan, saya harus pas identitas current user...pesanan ini untuk siapa&lt;/li&gt;

  &lt;li&gt;pas minta bill, saya juga harus pas identitas current user...bill yang mana yang harus diambil&lt;/li&gt;

  &lt;li&gt;lalu pas bayar jg, saya harus ngasi tau bill mana yang mo di bayar.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;contoh yang sama kalo servernya (class pelayan-nya) stateful&lt;/p&gt;

&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:DFDE9937-D816-47f4-A306-7B60D5CE5AC0:58584fb9-1282-458c-a55c-25262504da03" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush: sql; gutter: true; first-line: 1; tab-size: 2;  toolbar: true; "&gt;using ( var pelayan = new serverconnection) 
{
  pelayan.pesan(&amp;quot;makanan&amp;quot;)

  pelayan.mintaBill()

  pelayan.bayar()
}
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;di sini kita bisa liat bahwa untuk memesan makanan, si client tidak perlu mengidentifikasi dirinya.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Si pelayan mengingat identitas requestnya mungkin dari IP address, atau Identity Context call-nya.&lt;/li&gt;

  &lt;li&gt;begitu jg pas minta bill, kita bisa ngeliat bahwa si pelayan &amp;quot;ingat&amp;quot; pesanan sebelumnya&lt;/li&gt;

  &lt;li&gt;pas bayar, kita bisa tau bill mana yang terakhir di &amp;quot;aktif&amp;quot;kan.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;informasi tentang user, pesanan dan bill tentunya disimpan di dalam &amp;quot;pelayan&amp;quot;, tapi ini bukan faktor penentu apakah sebuah komponen itu statefull atau stateless, melainkan hubungan antara siapa yang mengerti konteks runtime di saat apapun.&lt;/p&gt;

&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:DFDE9937-D816-47f4-A306-7B60D5CE5AC0:de7fb9ea-892f-4047-8e51-e112e6bde4f3" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush: csharp; gutter: true; first-line: 1; tab-size: 2;  toolbar: true; "&gt;UserRepository.FindCurrentActiveUser()

UserRepository.FindById(int id)
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;2-2nya repository, tapi kira2 yang mana yang stateful dan mana yang stateless?&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2010/02/02/apa-sih-yang-dianggap-stateless.aspx&amp;amp;subject=Apa sih yang dianggap stateless?" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2010/02/02/apa-sih-yang-dianggap-stateless.aspx&amp;amp;t=Apa+sih+yang+dianggap+stateless%3f" target="_blank" title="Submit Apa sih yang dianggap stateless? to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2010/02/02/apa-sih-yang-dianggap-stateless.aspx&amp;amp;title=Apa+sih+yang+dianggap+stateless%3f" target="_blank" title="Submit Apa sih yang dianggap stateless? to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2010/02/02/apa-sih-yang-dianggap-stateless.aspx&amp;amp;phase=2" target="_blank" title="Submit Apa sih yang dianggap stateless? to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2010/02/02/apa-sih-yang-dianggap-stateless.aspx&amp;amp;title=Apa+sih+yang+dianggap+stateless%3f" target="_blank" title="Add Apa sih yang dianggap stateless? to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=185698" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/ronaldwidha/archive/tags/technical/default.aspx">technical</category><category domain="http://geeks.netindonesia.net/blogs/ronaldwidha/archive/tags/Code/default.aspx">Code</category></item><item><title>3 alasan kenapa requirement koq sering berubah</title><link>http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2010/01/26/3-alasan-kenapa-requirement-koq-sering-berubah.aspx</link><pubDate>Tue, 26 Jan 2010 06:27:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:185604</guid><dc:creator>ronaldwidha</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/ronaldwidha/rsscomments.aspx?PostID=185604</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/ronaldwidha/commentapi.aspx?PostID=185604</wfw:comment><comments>http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2010/01/26/3-alasan-kenapa-requirement-koq-sering-berubah.aspx#comments</comments><description>&lt;p&gt;Aku baru saja ngebahas konsep dasar Agile di episode &lt;a href="http://www.temanmacet.com/2010/01/30-apa-sih-agile-itu/" target="_blank"&gt;Teman macet ke-30&lt;/a&gt;. Dan aku mendapatkan &lt;a href="http://tech.groups.yahoo.com/group/id-php/message/33690" target="_blank"&gt;tanggapan yang menarik dari Rizal Purnama di mailing list id-Php&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Rizal mengatakan:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;benar para user memang lebih suka yang dinamis, tapi buat developer pasti     &lt;br /&gt;merasakan..[kok ini req. ganti-ganti mulu …]&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Rizal nge-&lt;em&gt;raise &lt;/em&gt;point yang menarik tentang requirement yang berubah2. Menurut aku ini semakin mengkuatkan point kenapa agile dibutuhkan. Alasan kenapa requirement sering berubah (dan cara mengatasinya) adalah:&lt;/p&gt;  &lt;h4&gt;1. dapet requirement dari orang yang salah&lt;/h4&gt;  &lt;p&gt;   &lt;br /&gt;mungkin orang yang ngasih requirement bukan orang yang tepat untuk ngasih requirement.&lt;/p&gt;  &lt;h4&gt;2. stakeholder-nya ga tau maunya apa&lt;/h4&gt;  &lt;p&gt;   &lt;br /&gt;cuma dengan proses yang iteratif, stakeholdernya bisa belajar dari iterasi sebelumnya, dan akhirnya mendekatkan kepada apa yang sebenenrya dia mau/butuhkan.    &lt;br /&gt;tentunya perubahan ini butuh disiplin tinggi dari bisnis maupun engineering supaya bisa berguna. &lt;/p&gt;  &lt;p&gt;Bisnis harus menyadari bahwa perubahan punya dampak terhadap kerjaan lain ( cuma ada 24 jam sehari kan?), dan engineering pun harus menyadari bhw kode harus dibuat sebaik mungkin, dan tes harus diautomasi sekuat mungkin biar tidak menimbulkan bug-bug baru melalui perubahan.&lt;/p&gt;  &lt;h4&gt;3. salah pengertian antara programmer dengan stakeholder&lt;/h4&gt;  &lt;p&gt;   &lt;br /&gt;orang mungkin berpendapat dengan dokumen lengkap, salah pengertian akan dihindari. Aku malah berpendapat sebaliknya. Salah pengertian bisa dihindari melalui percakapan. Dokumen biasanya malah menghindari adanya percakapan. Dokumen adalah sebuah artifak, yang kadang malah misleading. User story yang singkat bisa menjadi bibit percakapan yang lebih berharga daripada dokumen selengkap apapun.&lt;/p&gt;  &lt;p&gt;Gimana pendapat kamu?&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2010/01/26/3-alasan-kenapa-requirement-koq-sering-berubah.aspx&amp;amp;subject=3 alasan kenapa requirement koq sering berubah" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2010/01/26/3-alasan-kenapa-requirement-koq-sering-berubah.aspx&amp;amp;t=3+alasan+kenapa+requirement+koq+sering+berubah" target="_blank" title="Submit 3 alasan kenapa requirement koq sering berubah to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2010/01/26/3-alasan-kenapa-requirement-koq-sering-berubah.aspx&amp;amp;title=3+alasan+kenapa+requirement+koq+sering+berubah" target="_blank" title="Submit 3 alasan kenapa requirement koq sering berubah to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2010/01/26/3-alasan-kenapa-requirement-koq-sering-berubah.aspx&amp;amp;phase=2" target="_blank" title="Submit 3 alasan kenapa requirement koq sering berubah to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2010/01/26/3-alasan-kenapa-requirement-koq-sering-berubah.aspx&amp;amp;title=3+alasan+kenapa+requirement+koq+sering+berubah" target="_blank" title="Add 3 alasan kenapa requirement koq sering berubah to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=185604" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/ronaldwidha/archive/tags/agile/default.aspx">agile</category></item><item><title>Tips untuk website publik: melihat Geeks Library</title><link>http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/12/02/tips-untuk-website-publik-melihat-geeks-library.aspx</link><pubDate>Wed, 02 Dec 2009 05:00:32 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:184636</guid><dc:creator>ronaldwidha</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/ronaldwidha/rsscomments.aspx?PostID=184636</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/ronaldwidha/commentapi.aspx?PostID=184636</wfw:comment><comments>http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/12/02/tips-untuk-website-publik-melihat-geeks-library.aspx#comments</comments><description>&lt;p&gt;Baru aja ngebuka &lt;a href="http://netindonesia.net/library" target="_blank"&gt;website Ronald dan Narenda yang baru: Geeks Library&lt;/a&gt;. Dan wow…kontennya lengkap (inventori dari netindonesia.net/geeks), designnya sangat modern (web 2.0-ish), pake istilah Indonesia dan juga dibuat dengan asp.net MVC!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://netindonesia.net/library" target="_blank"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:block;float:none;margin-left:auto;border-top:0px;margin-right:auto;border-right:0px;" title="image" border="0" alt="image" src="http://geeks.netindonesia.net/blogs/ronaldwidha/image_408EB5BF.png" width="400" height="317" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Ada beberapa hal yang terpikirkan ketika aku browsing website ini&lt;/p&gt;  &lt;h5&gt;Urlnya koq susah?&lt;/h5&gt;  &lt;p&gt;&lt;img style="border-bottom:0px;border-left:0px;display:block;float:none;margin-left:auto;border-top:0px;margin-right:auto;border-right:0px;" title="image" border="0" alt="image" src="http://geeks.netindonesia.net/blogs/ronaldwidha/image_37FA6F01.png" width="400" height="58" /&gt;Nama domain yang rumit memiliki beberapa malasah. Selain sulit untuk diingat, nama domain yang rumit juga sering susah untuk dieja baik dalam percakapan verbal maupun dalam podcast. Pilih domain name yang sederhana, dan berusaha hindari url yang kepanjangan. Lebih penting lagi usahakan korelasi langsung antara judul website dengan url-nya.&lt;/p&gt;  &lt;p&gt;Kalo tidak ada pilihan lain, karena legacy support atau benefit Search Engine Optimization, coba deh investasi ke domain lain sekedar untuk vanity url dan redirect ke website aslinya.&lt;/p&gt;  &lt;h5&gt;Ajak penggunanya untuk berpartisipasi&lt;/h5&gt;  &lt;p&gt;&lt;a href="http://geeks.netindonesia.net/blogs/ronaldwidha/image_18A7A261.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:block;float:none;margin-left:auto;border-top:0px;margin-right:auto;border-right:0px;" title="image" border="0" alt="image" src="http://geeks.netindonesia.net/blogs/ronaldwidha/image_thumb_341C7E97.png" width="325" height="78" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Website seperti blogger atau bahkan geocities membuka jalan demokratisasi informasi yang juga dikenal dengan era Web 2.0. Melalui website seperti friendster dan facebook kita juga bisa melihat bahwa partisipasi pengguna menjalin hubungan kepercayaan dan kesetiaan yang lebih kuat. Para &lt;em&gt;early adopter&lt;/em&gt; ini lah yang bakal menjadi &lt;em&gt;sneezer &lt;/em&gt;membangun kelompok pengguna yang lebih besar.&lt;/p&gt;  &lt;p&gt;Oleh karena itu, kita tidak boleh menganggap remeh pentingnya untuk sebuah website menggelitik dan merangkul partisipasi penggunanya. Fitur komen, rating, share to twitter, pingback/trackback bisa menjadi 3 fitur sederhana yang mudah untuk diimplementasi. &lt;/p&gt;  &lt;p&gt;&lt;em&gt;Salah satu hal yang aku sayangkan untuk blog &lt;a href="http://geeks.netindonesia.net/blogs" target="_blank"&gt;Geeks .Net Indonesia&lt;/a&gt; adalah commenting systemnya yang sangat buruk. Mengganti comment system dengan &lt;a href="http://disqus.com" target="_blank"&gt;Disqus&lt;/a&gt; bakal go a long way. Fitur new comment notification buat empunya blogger dan juga commentor bakal nge-boost interaksi antar membernya.&lt;/em&gt;&lt;/p&gt;  &lt;h5&gt;&lt;em&gt;&lt;/em&gt;&lt;/h5&gt;  &lt;h5&gt;Optimisasi untuk search engine&lt;/h5&gt;  &lt;p&gt;&lt;a href="http://geeks.netindonesia.net/blogs/ronaldwidha/image_02616142.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:block;float:none;margin-left:auto;border-top:0px;margin-right:auto;border-right:0px;" title="image" border="0" alt="image" src="http://geeks.netindonesia.net/blogs/ronaldwidha/image_thumb_3882D991.png" width="400" height="103" /&gt;&lt;/a&gt;Website seperti Geeks Library yang memuat konten beragam jenis adalah website yang tepat untuk menarik pendatang baru dari search engine. Penggunaan Url, HTML tags untuk struktur dan judul harus dioptimisasikan untuk melakukan itu.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Ini adalah salah satu pitfall yang sering dihadapi oleh developer Asp.Net ketika beralih ke Asp.Net MVC. Di tipikal development Asp.Net, banyak tim tidak memperhatikan url. Url dianggap sebagai resource locator untuk sang programmer. &lt;/em&gt;&lt;em&gt;Di Asp.Net MVC, Url menjadi first class citizen. Kita harus menggunakan fleksibilitas ini untuk mengoptimisasi search engine.&lt;/em&gt;&lt;/p&gt;  &lt;h5&gt;Kesimpulan&lt;/h5&gt;  &lt;p&gt;Ada jg beberapa hal-hal kecil lain yang ingin aku cermati; seperti logo utama kalo di klik tidak membawa pengguna ke halaman utama, mending pake subdomain daripada virtual folder (i.e library.netindonesia.net terlihat lebih cantik), tapi itu semua mungkin masalah yang menyangkut selera individu dan mungkin terlalu sepele untuk dikritik apalagi ini baru release pertama.&lt;/p&gt;  &lt;p&gt;Aku punya banyak harapan untuk Geeks Library. Ebook sudah menjadi resource penting untuk para programmer Indonesia untuk belajar dengan membaca atau menulis ebook-ebook baru. Geeks Library tepat mengisi kekosongan di market ini apalagi dengan dukungan parent websitenya yang komunitasnya sudah besar.&lt;/p&gt;  &lt;p&gt;Apakah kamu sudah visit &lt;a href="http://netindonesia.net/library" target="_blank"&gt;Geeks Library&lt;/a&gt;?&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/12/02/tips-untuk-website-publik-melihat-geeks-library.aspx&amp;amp;subject=Tips untuk website publik: melihat Geeks Library" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/12/02/tips-untuk-website-publik-melihat-geeks-library.aspx&amp;amp;t=Tips+untuk+website+publik%3a+melihat+Geeks+Library" target="_blank" title="Submit Tips untuk website publik: melihat Geeks Library to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/12/02/tips-untuk-website-publik-melihat-geeks-library.aspx&amp;amp;title=Tips+untuk+website+publik%3a+melihat+Geeks+Library" target="_blank" title="Submit Tips untuk website publik: melihat Geeks Library to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/12/02/tips-untuk-website-publik-melihat-geeks-library.aspx&amp;amp;phase=2" target="_blank" title="Submit Tips untuk website publik: melihat Geeks Library to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/12/02/tips-untuk-website-publik-melihat-geeks-library.aspx&amp;amp;title=Tips+untuk+website+publik%3a+melihat+Geeks+Library" target="_blank" title="Add Tips untuk website publik: melihat Geeks Library to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=184636" width="1" height="1"&gt;</description></item><item><title>Beda Sky Drive, Microsoft Office Live, Live Sync dan Live Mesh</title><link>http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/12/01/conway-s-law-kultur-perusahaan-terefleksi-lewat-system-yang-dihasilkan.aspx</link><pubDate>Tue, 01 Dec 2009 04:40:13 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:184625</guid><dc:creator>ronaldwidha</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/ronaldwidha/rsscomments.aspx?PostID=184625</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/ronaldwidha/commentapi.aspx?PostID=184625</wfw:comment><comments>http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/12/01/conway-s-law-kultur-perusahaan-terefleksi-lewat-system-yang-dihasilkan.aspx#comments</comments><description>&lt;p&gt;Salah satu fitur yang dimiliki oleh Word di Office 2010 yang sepertinya memungkinkan kolaborasi adalah &lt;em&gt;Save to SkyDrive&lt;/em&gt;. &lt;a href="http://skydrive.live.com/" target="_blank"&gt;SkyDrive&lt;/a&gt; adalah pelayanan Windows Live yang memungkinkan penggunanya untuk menyimpan file di &lt;em&gt;awan&lt;/em&gt;. Ini adalah strategi murah untuk Microsoft bersaing dengan fitur kolaborasi Google Docs.&lt;/p&gt;  &lt;p&gt;SkyDrive bukanlah satu-satunya penawaran penyimpanan &lt;em&gt;cloud based &lt;/em&gt;dari Microsoft. &lt;a href="http://workspace.office.live.com" target="_blank"&gt;Microsoft Office Live&lt;/a&gt;, &lt;a href="https://www.foldershare.com/" target="_blank"&gt;Live Sync&lt;/a&gt; dan &lt;a href="https://www.mesh.com/welcome/default.aspx" target="_blank"&gt;Live Mesh&lt;/a&gt; memecahkan masalah yang serupa. Empat pelayanan tersebut memungkinkan penggunanya untuk mengakses file yang sudah disimpan di mana saja walaupun dengan &lt;a href="http://blogs.msdn.com/ianm/archive/2008/07/23/should-i-use-skydrive-or-office-live-workspace-to-store-files-online.aspx" target="_blank"&gt;teknik yang sedikit berbeda&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Apa sih bedanya ke-4 cloud based storage ini? Aku nge-post sepenuhnya di Navinot:   &lt;br /&gt;&lt;a href="http://www.navinot.com/2009/12/01/kultur-microsoft-terefleksi-lewat-produk-yang-dihasilkan/" target="_blank"&gt;Kultur Microsoft terefleksi lewat produk yang dihasilkan&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.navinot.com/2009/12/01/kultur-microsoft-terefleksi-lewat-produk-yang-dihasilkan/" target="_blank"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:block;float:none;margin-left:auto;border-top:0px;margin-right:auto;border-right:0px;" title="image" border="0" alt="image" src="http://geeks.netindonesia.net/blogs/ronaldwidha/image_13D9F669.png" width="350" height="416" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/12/01/conway-s-law-kultur-perusahaan-terefleksi-lewat-system-yang-dihasilkan.aspx&amp;amp;subject=Beda Sky Drive, Microsoft Office Live, Live Sync dan Live Mesh" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/12/01/conway-s-law-kultur-perusahaan-terefleksi-lewat-system-yang-dihasilkan.aspx&amp;amp;t=Beda+Sky+Drive%2c+Microsoft+Office+Live%2c+Live+Sync+dan+Live+Mesh" target="_blank" title="Submit Beda Sky Drive, Microsoft Office Live, Live Sync dan Live Mesh to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/12/01/conway-s-law-kultur-perusahaan-terefleksi-lewat-system-yang-dihasilkan.aspx&amp;amp;title=Beda+Sky+Drive%2c+Microsoft+Office+Live%2c+Live+Sync+dan+Live+Mesh" target="_blank" title="Submit Beda Sky Drive, Microsoft Office Live, Live Sync dan Live Mesh to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/12/01/conway-s-law-kultur-perusahaan-terefleksi-lewat-system-yang-dihasilkan.aspx&amp;amp;phase=2" target="_blank" title="Submit Beda Sky Drive, Microsoft Office Live, Live Sync dan Live Mesh to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/12/01/conway-s-law-kultur-perusahaan-terefleksi-lewat-system-yang-dihasilkan.aspx&amp;amp;title=Beda+Sky+Drive%2c+Microsoft+Office+Live%2c+Live+Sync+dan+Live+Mesh" target="_blank" title="Add Beda Sky Drive, Microsoft Office Live, Live Sync dan Live Mesh to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=184625" width="1" height="1"&gt;</description></item><item><title>Cara Memakai Visual Studio Database Edition GDR dalam situasi beneran</title><link>http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/11/30/cara-memakai-visual-studio-database-edition-gdr-dalam-situasi-beneran.aspx</link><pubDate>Mon, 30 Nov 2009 01:00:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:184614</guid><dc:creator>ronaldwidha</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/ronaldwidha/rsscomments.aspx?PostID=184614</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/ronaldwidha/commentapi.aspx?PostID=184614</wfw:comment><comments>http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/11/30/cara-memakai-visual-studio-database-edition-gdr-dalam-situasi-beneran.aspx#comments</comments><description>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;Di post sebelumnya: &lt;a href="http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/11/29/cara-pakai-visual-studio-database-edition-gdr-untuk-bekerja-dalam-development-team.aspx" target="_blank"&gt;Visual Studio Database Edition GDR untuk bekerja dengan database dalam development team&lt;/a&gt;, aku menjelaskan konsep database development menggunakan Visual Stuio Database Edition GDR.&lt;/p&gt;  &lt;p&gt;Di post ini aku ingin menjelaskan bagaimana cara memakai Visual Studio Database Edition GDR ini dalam kerjaan sehari-hari, bukan sekedar demo doank. &lt;/p&gt;  &lt;h4&gt;Setup – biasanya dilakukan oleh si Team Lead (atau senior dev)&lt;/h4&gt;  &lt;p&gt;Kembali seperti di &lt;a href="http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/11/29/cara-pakai-visual-studio-database-edition-gdr-untuk-bekerja-dalam-development-team.aspx" target="_blank"&gt;post aku sebelumnya&lt;/a&gt; (kesempatan terakhir untuk ngeklik dan ngebaca artikelnya sebelum makin ga nyambung), aku menuntut untuk setiap developer bisa memiliki instalasi databasenya masing2 (isolated database environment).&lt;/p&gt;  &lt;p&gt;Dalam cara kerja ini, kita harus memulai database project di Visual Studio Database Edition GDR seperti berikut:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Create database baru untuk aplikasi di development box kamu (di mana visual studio berjalan). Atau kalo ini bukan green field project, make sure kamu punya database instancenya di development box lanjut langsung ke step 2. Kita akan nge-refer database instance ini sebagai &lt;em&gt;development database &lt;/em&gt;mulai dari sekarang.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Buka Visual Studio Database Edition GDR, klik new Project. Pilih Database Projects &amp;gt; SQL Server 200x (sesuai dengan database engine kamu) dan pilih SQL Server 200x Wizard.      &lt;br /&gt;      &lt;br /&gt;Wizard ini bakal nanyain kamu beberapa pertanyaan penting untuk memulai seperti: import existing schema dengan opsi-opsi tertentu, collation settings, deployment settings dsb.      &lt;br /&gt;      &lt;br /&gt;Kalo kamu nge-generate &lt;em&gt;development database &lt;/em&gt;dari kode (dengan code smith atau subsonic misalnya), atau kalo kamu sudah punya aplikasi yang menggunakan database tersebut, rekomendasi aku adalah untuk add database project ini ke dalam solution aplikasi kamu. Tujuannya adalah nge-ikat versioning antara kode dengan databasenya.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Di langkah kedua kamu akan ditanyakan “&lt;em&gt;what type of project would you like to create?&lt;/em&gt;”. Karena aku ingin isolated database environment mari kita pilih “&lt;em&gt;a database project to manage changes to a user-defined database&lt;/em&gt;”      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Di langkah keempat, pilih &lt;em&gt;import existing schema &lt;/em&gt;dan pilih database aplikasi kamu yang berjalan di dev box.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Di langkah terakhir wizard, kamu set up target connection kamu ke database instance yang sama. Tick “&lt;em&gt;always re-create database’”&lt;/em&gt;. Dengan pilihan itu kita bakal memastikan &lt;em&gt;development database &lt;/em&gt;selalu sinkron dengan database project kita.      &lt;br /&gt;      &lt;br /&gt;Langkah yang terpenting di sini adalah untuk me-rename nama server kamu dari server instance name ke (local). Misalnya: karena aku pake SQL Express maka server instance aku (local)\SQLExpress. Ini dikarenakan connection string target database disimpan di project file (.dbproj) yang berarti memaksa seluruh team untuk memiliki connection strings yang sama. Dengan menggunakan (local) maka seluruh team bisa memakai 1 connection strings saja.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Sekarang kita sudah punya database project di solution kita.     &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Buka Solution Explorer &amp;gt; Schema Comparisons &amp;gt; Add new Schema Comparison.     &lt;br /&gt;Namakan: FromDevToModel.scmp      &lt;br /&gt;Set Source Schema ke &lt;em&gt;Development Database&lt;/em&gt; (jangan lupa set nama server dengan nama local supaya bisa digunakan oleh semua team member yang lain).      &lt;br /&gt;Set Target Schema ke Database Project      &lt;br /&gt;      &lt;br /&gt;Liat options comparenya, dan pilih object types yang kamu berharap para dev bakal nge-update seperti tables, functions, stored procs dsb. Ibaratnya ini ignore list di Subversion atau TFS.      &lt;br /&gt;      &lt;br /&gt;Ini akan dipakai untuk nge-sync perubahan yang developers lakukan ketika development dari &lt;em&gt;Development database &lt;/em&gt;ke dalam Database Project.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Bikin 1 Schema comparison lagi, Solution Explorer &amp;gt; Schema Comparisons &amp;gt; Add new Schema Comparison     &lt;br /&gt;Namakan: FromModelToDev.scmp      &lt;br /&gt;Set Source Schema ke Database Project&lt;/li&gt; Set Target Schema ke &lt;em&gt;Development Database&lt;/em&gt;.    &lt;br /&gt;    &lt;br /&gt;Ini akan dipakai untuk nge-sync perubahan yang dilakukan oleh developer lain dari source control ke dalam &lt;em&gt;Development Database&lt;/em&gt;.    &lt;br /&gt;    &lt;br /&gt;    &lt;li&gt;add &lt;em&gt;Development database&lt;/em&gt; kita ke Server explorer. Ini akan memudahkan kita untuk menciptakan table tanpa menulis 1 line T-SQL pun.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Nah, setelah melewati langkah-langkah tadi kita sekarang sudah memiliki solution yang berisi kode aplikasi kita, begitu jg database project yang mengontrol &lt;em&gt;development database. &lt;/em&gt;Kita cukup melakukan ini sekali dalam 1 project. &lt;/p&gt;  &lt;h4&gt;Untuk para programmer yang lain&lt;/h4&gt;  &lt;p&gt;Tugas berat sudah diemban oleh si Team Lead (atau Senior Dev). Langkah terpenting untuk para team members sekarang adalah untuk memiliki sql server instance dengan nama yang sama supaya seluruh team bisa memakai project file yang sama.&lt;/p&gt;  &lt;p&gt;Sekarang mari kita ngebahas gimana siklik developmentnya&lt;/p&gt;  &lt;h4&gt;Development&lt;/h4&gt;  &lt;h5&gt;Step 1: Database Development pake Server explorer&lt;/h5&gt;  &lt;p&gt;Aku bukan a &lt;em&gt;hardcore DBA&lt;/em&gt;. Jadi urusan alter-mengalter database aku biasanya mengandalkan tool seperti Visual Studio Server Exploerer atau SQL Management Studio Express untuk membantu aku. Dengan Visual Studio Database Edition GDR kita bisa tetap melakukan hal yang sama.&lt;/p&gt;  &lt;p&gt;Bikin table, relationship, primary key, foreign key, stored procedure baru atau bahkan lakukan refactoring untuk menyelesaikan tugas kamu.&lt;/p&gt;  &lt;h5&gt;Step 2: Masukkan perubahan yang baru kamu bikin ke dalam Database Project kita&lt;/h5&gt;  &lt;p&gt;Setelah kita sudah menyelesaikan perubahan database kita, gunakan Compare Schema untuk memasukkan schema yang baru ke dalam database project.&lt;/p&gt;  &lt;p&gt;Gunakan FromDevToModel schema comparison. Dan kita bisa akan melihat update yang baru saja kita lakukan seperti di bawah ini. &lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://geeks.netindonesia.net/blogs/ronaldwidha/image_2781E70B.png" width="500" height="40" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://geeks.netindonesia.net/blogs/ronaldwidha/image_19E74E9F.png" width="500" height="36" /&gt; &lt;/p&gt;  &lt;p&gt;Sepertinya aku baru aja nambahin Schema, dan Table baru.&lt;/p&gt;  &lt;p&gt;Klik Writes Updates dan lanjut step 3.&lt;/p&gt;  &lt;h5&gt;Step 3: persiapan Check in&lt;/h5&gt;  &lt;p&gt;Seperti team member yang baik, kita ga mau menggangu kerjaan team member yang lain dengan nge-break Continuous Integration build. Jadi setelah membuat perubahan kamu, get latest source code termasuk database project dari version control. Merge conflict yang kamu temuin, lalu lakukan Compare Schema database project yang baru dengan Development Database kamu FromModelToDev.scmp.&lt;/p&gt;  &lt;p&gt;Kalo kamu nemuin perbedaan, klik Write Updates untuk nge-update Development Database kamu sesuai dengan Database Project.&lt;/p&gt;  &lt;p&gt;Ini jg kesempatan untuk ngejalanin unit test dan Database unit test kita untuk memastikan ga ada unit test yang rusak. &lt;/p&gt;  &lt;h5&gt;Step 4: check in&lt;/h5&gt;  &lt;p&gt;Akhirnya kita bisa check in, dan berharap ga ada yang teriak2 “Woyy database-nya rusakk nihhhh gara-gara check in elooo!!”.&lt;/p&gt;  &lt;p&gt;Di post berikut mungkin aku akan membahas soal deployment ke production, database unit test, ngegenerate test data dan juga gimana cara nambahin default lookup value ke table baru kita.&lt;/p&gt;  &lt;p&gt;Semoga berguna.&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/11/30/cara-memakai-visual-studio-database-edition-gdr-dalam-situasi-beneran.aspx&amp;amp;subject=Cara Memakai Visual Studio Database Edition GDR dalam situasi beneran" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/11/30/cara-memakai-visual-studio-database-edition-gdr-dalam-situasi-beneran.aspx&amp;amp;t=Cara+Memakai+Visual+Studio+Database+Edition+GDR+dalam+situasi+beneran" target="_blank" title="Submit Cara Memakai Visual Studio Database Edition GDR dalam situasi beneran to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/11/30/cara-memakai-visual-studio-database-edition-gdr-dalam-situasi-beneran.aspx&amp;amp;title=Cara+Memakai+Visual+Studio+Database+Edition+GDR+dalam+situasi+beneran" target="_blank" title="Submit Cara Memakai Visual Studio Database Edition GDR dalam situasi beneran to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/11/30/cara-memakai-visual-studio-database-edition-gdr-dalam-situasi-beneran.aspx&amp;amp;phase=2" target="_blank" title="Submit Cara Memakai Visual Studio Database Edition GDR dalam situasi beneran to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/11/30/cara-memakai-visual-studio-database-edition-gdr-dalam-situasi-beneran.aspx&amp;amp;title=Cara+Memakai+Visual+Studio+Database+Edition+GDR+dalam+situasi+beneran" target="_blank" title="Add Cara Memakai Visual Studio Database Edition GDR dalam situasi beneran to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=184614" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/ronaldwidha/archive/tags/technical/default.aspx">technical</category><category domain="http://geeks.netindonesia.net/blogs/ronaldwidha/archive/tags/sql/default.aspx">sql</category><category domain="http://geeks.netindonesia.net/blogs/ronaldwidha/archive/tags/microsoft/default.aspx">microsoft</category></item><item><title>Visual Studio Database Edition GDR untuk bekerja dengan database dalam development team</title><link>http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/11/29/cara-pakai-visual-studio-database-edition-gdr-untuk-bekerja-dalam-development-team.aspx</link><pubDate>Sun, 29 Nov 2009 08:44:36 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:184612</guid><dc:creator>ronaldwidha</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/ronaldwidha/rsscomments.aspx?PostID=184612</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/ronaldwidha/commentapi.aspx?PostID=184612</wfw:comment><comments>http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/11/29/cara-pakai-visual-studio-database-edition-gdr-untuk-bekerja-dalam-development-team.aspx#comments</comments><description>&lt;p&gt;Aku merasa Visual Studio Database Edition GDR adalah salah satu tool yang paling berharga untuk bekerja dengan database. Sayangnya tidak banyak team yang memakai tool ini, padahal bisa bener-bener membantu dalam menghadapi software development yang menggunakan database.&lt;/p&gt;  &lt;p&gt;Bekerja dengan database dalam team itu gampang-gampang susah. Setiap kali aku masuk team, pasti ada aja cara unik gimana mereka ngatur development database. Ada yang jalur resmi lewat DB Admin, ada yang 1 team nge-share 1 development database dan ada jg yang setiap developernya punya database yang terisolasi di komputer masing2. &lt;/p&gt;  &lt;p&gt;Aku paling suka cara yang terakhir aku sebut: setiap developer punya database masing2. Dengan ngelakuin ini kita bisa nyoba-nyoba refactor database tanpa takut ngeganggu kerjaan orang lain. Begitu kita yakin apa yang kita mau ubah, kita bisa generate update scriptnya berupa migration script. Ini cara yang serupa seperti di Rails dengan konsep migration-nya. Program seperti &lt;a href="http://dbdeploy.com/2007/09/25/dbdeploynet-v10-officially-released/" target="_blank"&gt;DBDeploy.Net&lt;/a&gt; atau &lt;a href="http://blog.wekeroad.com/2007/10/03/subsonic-migrate-me/" target="_blank"&gt;Subsonic Migrate Me&lt;/a&gt; sangat membantu untuk mengatur migration stepnya, tapi tetap masih mudah mengakibatkan error dan membutuhkan disiplin yang tinggi.&lt;img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" title="image" border="0" alt="image" src="http://geeks.netindonesia.net/blogs/ronaldwidha/image_178D8E06.png" width="450" height="191" /&gt;&lt;/p&gt;  &lt;p align="center"&gt;fig. 1 biasanya kita konsen ke migration steps dari 1 versi database ke yang lainnya &lt;/p&gt;  &lt;p&gt;&lt;em&gt;Jeff Atwood Coding Horror menulis approach yang serupa di &lt;a href="http://www.codinghorror.com/blog/archives/001050.html" target="_blank"&gt;Get Your Database Under Version Control&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Di Sql Management Studio maupun &lt;a href="http://dbdeploy.com/2007/09/25/dbdeploynet-v10-officially-released/" target="_blank"&gt;DBDeploy.Net&lt;/a&gt;, setiap operasi yang kita lakukan ibaratnya seorang seniman tanah liat yang mengubah permukaan sebuah patung. Bedanya kalo pematung memakai tangan, sementara di dunia database kita memakai T-SQL. &lt;/p&gt;  &lt;p&gt;Visual Studio Database Edition GDR dengan fitur2 database-nya berusaha memecahkan masalah yang sama dengan pendekatan yang jauh lebih elegan. &lt;/p&gt;  &lt;h5&gt;Model based development&lt;/h5&gt;  &lt;p&gt;Di Visual Studio Database Edition GDR, cara kerja kita sangat berubah walaupun terlihat serupa. Kita selalu bekerja berdasarkan model database itu sendiri. &lt;/p&gt;  &lt;p align="center"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://geeks.netindonesia.net/blogs/ronaldwidha/image_306912B1.png" width="350" height="203" /&gt;     &lt;br /&gt;fig.2 di Visual Studio Database Edition GDR kita konsen langsung ke model yang kita tuju&lt;/p&gt;  &lt;p&gt;Bekerja dengan model memiliki dua keuntungan yang sangat besar:&lt;/p&gt;  &lt;h5&gt;Ga perlu mikirin Migration Step&lt;/h5&gt;  &lt;p&gt;Kita tidak perlu memikirkan bagaimana cara mengubah tabel dengan alter scripts. Kita langsung ngedefinisikan secara deklaratif apa yang mau kita tuju. &lt;/p&gt;  &lt;p&gt;Mungkin kamu akan bertanya bagaimana cara mendeklarasi database kalo engga bikin migration step? Apakah kita perlu belajar bahasa baru? Ataukah melalui GUI seperti Access? Untungnya jawabannya tidak untuk keduanya. Microsoft memakai Domain Specific Language yang cocok untuk database dan kita semua sudah kenal yaitu…..drum roll…T-SQL!&lt;/p&gt;  &lt;p&gt;Loh? barussan aku bilang ga usah mikirin migration step, tapi koq sekarang pake T-SQL lagi buat ngedeklarasi state sebuah table? Bedanya di sini adalah kita ga pernah bikin alter script lagi, melainkan selalu menggunakan statement Create. Sekelompok statement create kan cuma Data Definition language kan?&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.netindonesia.net/blogs/ronaldwidha/image56_41209792.png"&gt;&lt;img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" title="image" border="0" alt="image" src="http://geeks.netindonesia.net/blogs/ronaldwidha/image56_thumb_71737E16.png" width="500" height="198" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Lebih kerennya lagi, karena Create statements ini berupa text, kita bisa dengan mudah disimpan di source control untuk kolaborasi. Tampaknya Microsoft sudah belajar dari EF (Vote of no confidence salah satunya mengkritik bagaimana XML model edmx tidak gampang di merge dalam situasi bekerja dengan source control).&lt;/p&gt;  &lt;h5&gt;Design time validation&lt;/h5&gt;  &lt;p&gt;Karena semua yang kita bangun adalah model (again, don’t let the T-SQL appearance fool you), Visual Studio mampu melakukan manipulasi pintar untuk nge-validasi error kita saat design time. &lt;/p&gt;  &lt;p&gt;Pencet ctrl + shift + b (Build) dan kita akan bisa melihat error dan warning list kita tanpa mengaplikasikan definisi database tersebut ke database instance kita&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://geeks.netindonesia.net/blogs/ronaldwidha/image_5E9E38C5.png"&gt;&lt;img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" title="image" border="0" alt="image" src="http://geeks.netindonesia.net/blogs/ronaldwidha/image_thumb_1775403B.png" width="400" height="172" /&gt;&lt;/a&gt; fig. 3 Kita bisa melihat bhw Visual Studio mendeteksi 2 column dengan nama yang sama dan warning bhw sebuah stored procedure mereferensi column yang tidak eksis &lt;/p&gt;  &lt;h3&gt;Reference&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=bb3ad767-5f69-4db9-b1c9-8f55759846ed&amp;amp;displaylang=en" target="_blank"&gt;Download Visual Studio Team System 2008 Database Edition GDR R2&lt;/a&gt;     &lt;br /&gt;&lt;a href="http://blogs.msdn.com/gertd/archive/2008/11/25/visual-studio-team-system-2008-database-edition-gdr-rtm.aspx" target="_blank"&gt;Home of the Data Dude&lt;/a&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/11/29/cara-pakai-visual-studio-database-edition-gdr-untuk-bekerja-dalam-development-team.aspx&amp;amp;subject=Visual Studio Database Edition GDR untuk bekerja dengan database dalam development team" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/11/29/cara-pakai-visual-studio-database-edition-gdr-untuk-bekerja-dalam-development-team.aspx&amp;amp;t=Visual+Studio+Database+Edition+GDR+untuk+bekerja+dengan+database+dalam+development+team" target="_blank" title="Submit Visual Studio Database Edition GDR untuk bekerja dengan database dalam development team to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/11/29/cara-pakai-visual-studio-database-edition-gdr-untuk-bekerja-dalam-development-team.aspx&amp;amp;title=Visual+Studio+Database+Edition+GDR+untuk+bekerja+dengan+database+dalam+development+team" target="_blank" title="Submit Visual Studio Database Edition GDR untuk bekerja dengan database dalam development team to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/11/29/cara-pakai-visual-studio-database-edition-gdr-untuk-bekerja-dalam-development-team.aspx&amp;amp;phase=2" target="_blank" title="Submit Visual Studio Database Edition GDR untuk bekerja dengan database dalam development team to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/11/29/cara-pakai-visual-studio-database-edition-gdr-untuk-bekerja-dalam-development-team.aspx&amp;amp;title=Visual+Studio+Database+Edition+GDR+untuk+bekerja+dengan+database+dalam+development+team" target="_blank" title="Add Visual Studio Database Edition GDR untuk bekerja dengan database dalam development team to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=184612" width="1" height="1"&gt;</description></item><item><title>Pattern apa yang sering dipake?</title><link>http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/11/27/pattern-apa-yang-sering-dipake.aspx</link><pubDate>Fri, 27 Nov 2009 11:03:19 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:184601</guid><dc:creator>ronaldwidha</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/ronaldwidha/rsscomments.aspx?PostID=184601</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/ronaldwidha/commentapi.aspx?PostID=184601</wfw:comment><comments>http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/11/27/pattern-apa-yang-sering-dipake.aspx#comments</comments><description>&lt;p&gt;Kata &amp;#39;design pattern&amp;#39; banyak dipakai di berbagai macam konteks. &lt;a href="http://www.dofactory.com/Patterns/Patterns.aspx" target="_blank"&gt;Gang of four&lt;/a&gt; konsen ke implementasi. &lt;a href="http://martinfowler.com/eaaCatalog/" target="_blank"&gt;Martin Fowler di PoEA&lt;/a&gt; konsen ke &amp;#39;arsitektur&amp;#39;. Aku ga doyan kata arsitektur. Mungkin lebih tepatnya &amp;#39;higher level stuff&amp;#39; aja (contohnya: &lt;a href="http://martinfowler.com/eaaCatalog/transactionScript.html" target="_blank"&gt;Transaction Script - prosedural&lt;/a&gt;, MVC, Supervising COntroller, Presenter First, Model-View-ViewModel, Active Record, Table Gateway dsb).&lt;/p&gt;  &lt;h3&gt;Di level arsitektur untuk aplikasi web&lt;/h3&gt;  &lt;p&gt;kita cenderung memakai Model-View-Controller atau Supervising Controller (dikenal jg dengan nama Model View Presenter).&lt;/p&gt;  &lt;h3&gt;Di level data access layer (bagaimana kita menginstansiasi Model)&lt;/h3&gt;  &lt;p&gt;kita bisa memakai Active Record kalo untuk aplikasi kecil. Atau menggunakan Repository untuk yang lebih ribet.&lt;/p&gt;  &lt;p&gt;Guide yang bagus untuk ngestruktur Model adalah buku dari Eric Evans, Domain Driven Design. &lt;/p&gt;  &lt;p&gt;Intinya adalah ngebagi model jadi Entity dan Value Object. Pengaksesan Entity dilakukan melalui Repository. Semua objek2 ini diciptakan melalui komunikasi dengan business di konteks yang spesifik (Bounded Context)&amp;#160; &lt;/p&gt;  &lt;h3&gt;Di level implementasi&lt;/h3&gt;  &lt;p&gt;Aku ngerasa kita harus hati2 untuk terjebak dalam design pattern di level implementasi. Kent Beck memakai term &amp;#39;Code Smell&amp;#39;. Ini adalah saat yang tepat untuk mencari pattern yang tepat untuk ngebersihin kode kamu. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Daripada mikirin pattern apa yang sering dipakai…&lt;/h3&gt;  &lt;p&gt;gimana kalo konsen ke prinsip OO seperti dari Robert Martin, SOLID&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;S = single responsibility principle&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;setiap kelas jelas responsibilitynya dan sesuai dengan namanya. alhasil class jadi pendek2, ga banyak properties, dan ga banyak method. jadi: fokus!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;O = open closed principle&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;kode itu ideal nya open for extension tapi closed for modification. buat nambah fitur ga perlu ngubah kode yang ada, tapi tinggal diinjek dengan kode baru.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;L = Liskov subtitution principle&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;ini menentukan gimana cara bikin hierarki parent / subclass berdasarkan return type dan parameter method2 yand di override. return type harus contravariant, dan parameter harus covariant. jujur, aku masi agak struggling mengaplikasikan prinsip ini.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;I = Interface segregation principle&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;satu objek lebih baik punya banyak interface yang spesifik daripada 1 interface yang sangat besar dan generik. misalnya daripada IProfileProvider, mendingan IMemberDetailsProvider, IAuthorizationProfile, IAuthenticationProvider dsb.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;D = dependcy injection principle&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;dependency sebuah kelas harus secara explisit distate dan implementasinya diberikan oleh penggunanya. intinya gini. Kalo sebuah Repository butuh Database class, Repository ga boleh nge-instansiasi Database objeknya sendiri. Biasanya teknik ini digabungin sama Inversion of Control Container atau Service Locator.&lt;/p&gt;  &lt;p&gt;Semoga berguna.&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/11/27/pattern-apa-yang-sering-dipake.aspx&amp;amp;subject=Pattern apa yang sering dipake?" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/11/27/pattern-apa-yang-sering-dipake.aspx&amp;amp;t=Pattern+apa+yang+sering+dipake%3f" target="_blank" title="Submit Pattern apa yang sering dipake? to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/11/27/pattern-apa-yang-sering-dipake.aspx&amp;amp;title=Pattern+apa+yang+sering+dipake%3f" target="_blank" title="Submit Pattern apa yang sering dipake? to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/11/27/pattern-apa-yang-sering-dipake.aspx&amp;amp;phase=2" target="_blank" title="Submit Pattern apa yang sering dipake? to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/11/27/pattern-apa-yang-sering-dipake.aspx&amp;amp;title=Pattern+apa+yang+sering+dipake%3f" target="_blank" title="Add Pattern apa yang sering dipake? to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=184601" width="1" height="1"&gt;</description></item><item><title>ngintip dikit SQL Azure CTP</title><link>http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/20/sql_2D00_azure_2D00_ctp_2D00_quick_2D00_overview.aspx</link><pubDate>Tue, 20 Oct 2009 00:05:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:184046</guid><dc:creator>ronaldwidha</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/ronaldwidha/rsscomments.aspx?PostID=184046</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/ronaldwidha/commentapi.aspx?PostID=184046</wfw:comment><comments>http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/20/sql_2D00_azure_2D00_ctp_2D00_quick_2D00_overview.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://www.ronaldwidha.net/2009/05/04/what-do-you-use-worker-role-for-in-azure/"&gt;Pertama-tama aku pikir Windows Azure cuma buat &lt;em&gt;high performance computing&lt;/em&gt;, &lt;em&gt;storage-&lt;/em&gt;nya cuma terdiri dari blob, queue dan table&lt;/a&gt;. Aku ga sadar bahwa Microsoft juga punya &lt;a href="http://sql.azure.com/" target="_blank"&gt;SQL Azure&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;I registered for SQL Azure CTP a little late (in early September 2009) and totally forgot about it until &lt;a href="http://bit.ly/258Q4z%20" target="_blank"&gt;Hammad Rajjoub (MVP Connected Systems) Twittered about it&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Jadi kali ini aku main-main sedikit sama SQL Azure &lt;/p&gt;  &lt;p&gt;[baca selanjutnya in English di-copy dari &lt;a href="http://www.ronaldwidha.net/2009/10/20/sql-azure-ctp-quick-overview/" target="_blank"&gt;ronaldwidha.net&lt;/a&gt;]&lt;/p&gt;  &lt;p&gt;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.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.netindonesia.net/blogs/ronaldwidha/image_056A14D8.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://geeks.netindonesia.net/blogs/ronaldwidha/image_thumb_502D1440.png" width="400" height="389" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;There is also a Firewall Settings tab to restrict access by IP address. By default, no access is given to anyone.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt; It takes a few minutes for the settings to take into effect, so don’t be surprised.&lt;/p&gt;  &lt;p&gt;There’s also ‘&lt;em&gt;Allow Microsoft Services access to this server&lt;/em&gt;’ tick box, which I assume need to be selected should you use this SQL Service with Windows Azure.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.netindonesia.net/blogs/ronaldwidha/image_4312E895.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://geeks.netindonesia.net/blogs/ronaldwidha/image_thumb_2458AC52.png" width="400" height="288" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;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. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.netindonesia.net/blogs/ronaldwidha/image_21BF54C7.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://geeks.netindonesia.net/blogs/ronaldwidha/image_thumb_43974F6F.png" width="400" height="251" /&gt;&lt;/a&gt;     &lt;br /&gt;Visual Studio 2008 showing an error dialog despite tested the connection successfully.&lt;/p&gt;  &lt;p&gt;However, apparently it works on SQL Server Management Studio 2008, &lt;a href="http://english.zachskylesowens.net/2009/08/18/connecting-to-sql-azure/" target="_blank"&gt;with a small workaround&lt;/a&gt;. Get the free version here: &lt;a href="http://www.microsoft.com/DownLoads/details.aspx?familyid=08E52AC2-1D62-45F6-9A4A-4B76A8564A2B&amp;amp;displaylang=en" target="_blank"&gt;Mangement Studio Express 2008&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Also, you could use these tools (kudos to &lt;a href="http://blogs.msdn.com/billzack/archive/2009/10/18/what-to-do-till-the-sql-azure-management-tools-come.aspx" target="_blank"&gt;Bill Zack – Architect Evangelist team at Microsoft&lt;/a&gt;):&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlazuremw.codeplex.com/"&gt;SQL Azure Migration Wizard&lt;/a&gt;. 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. &lt;/p&gt;    &lt;p&gt;&lt;a href="http://sqlazureexplorer.codeplex.com/"&gt;SQL Azure Explorer&lt;/a&gt; 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. &lt;/p&gt;    &lt;p&gt;&lt;a href="http://hanssens.org/post/SQL-Azure-Manager.aspx"&gt;SQL Azure Manager&lt;/a&gt; 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. &lt;/p&gt;&lt;/blockquote&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/20/sql_2D00_azure_2D00_ctp_2D00_quick_2D00_overview.aspx&amp;amp;subject=ngintip dikit SQL Azure CTP" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/20/sql_2D00_azure_2D00_ctp_2D00_quick_2D00_overview.aspx&amp;amp;t=ngintip+dikit+SQL+Azure+CTP" target="_blank" title="Submit ngintip dikit SQL Azure CTP to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/20/sql_2D00_azure_2D00_ctp_2D00_quick_2D00_overview.aspx&amp;amp;title=ngintip+dikit+SQL+Azure+CTP" target="_blank" title="Submit ngintip dikit SQL Azure CTP to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/20/sql_2D00_azure_2D00_ctp_2D00_quick_2D00_overview.aspx&amp;amp;phase=2" target="_blank" title="Submit ngintip dikit SQL Azure CTP to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/20/sql_2D00_azure_2D00_ctp_2D00_quick_2D00_overview.aspx&amp;amp;title=ngintip+dikit+SQL+Azure+CTP" target="_blank" title="Add ngintip dikit SQL Azure CTP to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=184046" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/ronaldwidha/archive/tags/technical/default.aspx">technical</category><category domain="http://geeks.netindonesia.net/blogs/ronaldwidha/archive/tags/asp.net/default.aspx">asp.net</category><category domain="http://geeks.netindonesia.net/blogs/ronaldwidha/archive/tags/beta/default.aspx">beta</category><category domain="http://geeks.netindonesia.net/blogs/ronaldwidha/archive/tags/Code/default.aspx">Code</category><category domain="http://geeks.netindonesia.net/blogs/ronaldwidha/archive/tags/azure+sql/default.aspx">azure sql</category><category domain="http://geeks.netindonesia.net/blogs/ronaldwidha/archive/tags/sql/default.aspx">sql</category><category domain="http://geeks.netindonesia.net/blogs/ronaldwidha/archive/tags/microsoft/default.aspx">microsoft</category></item><item><title>Nge-automate user testing pake WatiN di multiple browser: contoh fluent interfacing</title><link>http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/19/running_2D00_a_2D00_watin_2D00_test_2D00_scenario_2D00_on_2D00_all_2D00_browsers.aspx</link><pubDate>Sun, 18 Oct 2009 23:00:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:184039</guid><dc:creator>ronaldwidha</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/ronaldwidha/rsscomments.aspx?PostID=184039</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/ronaldwidha/commentapi.aspx?PostID=184039</wfw:comment><comments>http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/19/running_2D00_a_2D00_watin_2D00_test_2D00_scenario_2D00_on_2D00_all_2D00_browsers.aspx#comments</comments><description>&lt;p&gt;Saya sudah memakai WatiN beberapa kali dan pernah ngeshare tips buat ngejalanin WatiN di firefox dengan &lt;a href="http://www.ronaldwidha.net/2008/10/08/getting-watin-to-work-with-firefox/" target="_blank"&gt;Firefox plugin &lt;/a&gt;(which constantly crash even with the newer jssh-WINNT-3.x.xpi).&lt;/p&gt;  &lt;p&gt;Kali ini aku pengen ngebagi code snippet buat make WatiN di semua browser tanpa perlu make &lt;em&gt;browserFactory&lt;/em&gt; atau apalagi copy paste. Bagi yang ga tau WatiN apaan, mungkin bisa ngeliat contoh di bawah ini sebagai contoh &lt;em&gt;Fluent Interfacing &lt;/em&gt;alias method yang dibikin supaya kalo nyambung-nyambung mudah dibaca&lt;/p&gt;  &lt;p&gt;Ini targetnya:&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:a04b9abc-40c7-46e6-8e6d-0406df64f84d" class="wlWriterEditableSmartContent"&gt;&lt;pre style="background-color:#FFFFFF;overflow:auto;"&gt;&lt;span style="color:#000000;"&gt;[TestFixtureSetUp]
&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;public&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;void&lt;/span&gt;&lt;span style="color:#000000;"&gt; Context()
{
  CrossBrowserTestExecutor.Execute( Scenario )
    .WithAllBrowsers
    .Go();
}

&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;public&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;void&lt;/span&gt;&lt;span style="color:#000000;"&gt; Scenario(Browser browser)
{
  browser.GoTo( &lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#800000;"&gt;http://www.google.com&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt; );
  browser.Close()
}&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Mayan bersih kan? &lt;em&gt;Notice&lt;/em&gt; kalimatnya jadi mudah dibaca dibanding kalo ditaroh di baris yang berbeda.&lt;/p&gt;

&lt;p&gt;So this is the code that enables you to do that:&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:de5f8b04-0d0e-4e11-94de-2ae5503c00b5" class="wlWriterEditableSmartContent"&gt;&lt;pre style="background-color:#FFFFFF;overflow:auto;"&gt;&lt;span style="color:#0000FF;"&gt;public&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;class&lt;/span&gt;&lt;span style="color:#000000;"&gt; CrossBrowserTestExecutor
{
  &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;public&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;static&lt;/span&gt;&lt;span style="color:#000000;"&gt; CrossBrowserTest Execute( Action&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;Browser&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt; test )
  {
    &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;return&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;new&lt;/span&gt;&lt;span style="color:#000000;"&gt; CrossBrowserTest( test );
  }
}

&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;public&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;class&lt;/span&gt;&lt;span style="color:#000000;"&gt; CrossBrowserTest
{
  &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;public&lt;/span&gt;&lt;span style="color:#000000;"&gt; CrossBrowserTest( Action&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;Browser&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt; test )
  {
    TheTest &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; test;
    BrowserAgents &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;new&lt;/span&gt;&lt;span style="color:#000000;"&gt; List&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;Browser&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;();
  }

  &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;public&lt;/span&gt;&lt;span style="color:#000000;"&gt; Action&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;Browser&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt; TheTest { &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;get&lt;/span&gt;&lt;span style="color:#000000;"&gt;; &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;set&lt;/span&gt;&lt;span style="color:#000000;"&gt;; }

  &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;public&lt;/span&gt;&lt;span style="color:#000000;"&gt; IList&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;Browser&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt; BrowserAgents { &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;get&lt;/span&gt;&lt;span style="color:#000000;"&gt;; &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;set&lt;/span&gt;&lt;span style="color:#000000;"&gt;; }

  &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;public&lt;/span&gt;&lt;span style="color:#000000;"&gt; CrossBrowserTest WithAllBrowsers
  {
    &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;get&lt;/span&gt;&lt;span style="color:#000000;"&gt;
    {
      BrowserAgents.Add( &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;new&lt;/span&gt;&lt;span style="color:#000000;"&gt; IE() );
      BrowserAgents.Add( &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;new&lt;/span&gt;&lt;span style="color:#000000;"&gt; FireFox() );
      &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;return&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;this&lt;/span&gt;&lt;span style="color:#000000;"&gt;;
    }
  }

  &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;public&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;void&lt;/span&gt;&lt;span style="color:#000000;"&gt; Go()
  {
    &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;foreach&lt;/span&gt;&lt;span style="color:#000000;"&gt; ( Browser agent &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;in&lt;/span&gt;&lt;span style="color:#000000;"&gt; BrowserAgents )
    {
      TheTest( agent );
    }
  }
}&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Feel free to use it in any of your project, but please drop a comment if you find it useful. Thanks&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/19/running_2D00_a_2D00_watin_2D00_test_2D00_scenario_2D00_on_2D00_all_2D00_browsers.aspx&amp;amp;subject=Nge-automate user testing pake WatiN di multiple browser: contoh fluent interfacing" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/19/running_2D00_a_2D00_watin_2D00_test_2D00_scenario_2D00_on_2D00_all_2D00_browsers.aspx&amp;amp;t=Nge-automate+user+testing+pake+WatiN+di+multiple+browser%3a+contoh+fluent+interfacing" target="_blank" title="Submit Nge-automate user testing pake WatiN di multiple browser: contoh fluent interfacing to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/19/running_2D00_a_2D00_watin_2D00_test_2D00_scenario_2D00_on_2D00_all_2D00_browsers.aspx&amp;amp;title=Nge-automate+user+testing+pake+WatiN+di+multiple+browser%3a+contoh+fluent+interfacing" target="_blank" title="Submit Nge-automate user testing pake WatiN di multiple browser: contoh fluent interfacing to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/19/running_2D00_a_2D00_watin_2D00_test_2D00_scenario_2D00_on_2D00_all_2D00_browsers.aspx&amp;amp;phase=2" target="_blank" title="Submit Nge-automate user testing pake WatiN di multiple browser: contoh fluent interfacing to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/19/running_2D00_a_2D00_watin_2D00_test_2D00_scenario_2D00_on_2D00_all_2D00_browsers.aspx&amp;amp;title=Nge-automate+user+testing+pake+WatiN+di+multiple+browser%3a+contoh+fluent+interfacing" target="_blank" title="Add Nge-automate user testing pake WatiN di multiple browser: contoh fluent interfacing to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=184039" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/ronaldwidha/archive/tags/technical/default.aspx">technical</category><category domain="http://geeks.netindonesia.net/blogs/ronaldwidha/archive/tags/asp.net/default.aspx">asp.net</category><category domain="http://geeks.netindonesia.net/blogs/ronaldwidha/archive/tags/test/default.aspx">test</category><category domain="http://geeks.netindonesia.net/blogs/ronaldwidha/archive/tags/Code/default.aspx">Code</category><category domain="http://geeks.netindonesia.net/blogs/ronaldwidha/archive/tags/WatiN/default.aspx">WatiN</category></item><item><title>10 Fitur kenapa Asp.Net 4 cocok untuk website publik</title><link>http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/18/10_2D00_features_2D00_why_2D00_asp_2D00_net_2D00_4_2D00_is_2D00_better_2D00_for_2D00_public_2D00_website.aspx</link><pubDate>Sun, 18 Oct 2009 10:45:21 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:184038</guid><dc:creator>ronaldwidha</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/ronaldwidha/rsscomments.aspx?PostID=184038</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/ronaldwidha/commentapi.aspx?PostID=184038</wfw:comment><comments>http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/18/10_2D00_features_2D00_why_2D00_asp_2D00_net_2D00_4_2D00_is_2D00_better_2D00_for_2D00_public_2D00_website.aspx#comments</comments><description>&lt;p&gt;Aku baru saja kelar membaca &lt;a href="http://www.asp.net/learn/whitepapers/aspnet40/" target="_blank"&gt;Asp.Net 4.0 Beta 2 Overview&lt;/a&gt; dan ga sabar untuk menanti framework ini keluar. Di post ini, aku ingin menyoroti sedikit peningkatan yang membuat asp.net 4 cocok untuk membuat website publik. &lt;/p&gt;  &lt;p&gt;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.&lt;/p&gt;  &lt;h3&gt;1. Accessibility: Bisa mengatur Url&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://geeks.netindonesia.net/blogs/ronaldwidha/image_02C1409E.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://geeks.netindonesia.net/blogs/ronaldwidha/image_thumb_2EDD7BE8.png" width="488" height="45" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Sebagian dari kita yang udah main-main sama Asp.Net MVC pasti ga bisa lepas sama fitur Routing. Tidak seperti Asp.Net yang secara &lt;em&gt;default&lt;/em&gt;, sistem url-nya terikat sama &lt;em&gt;file system&lt;/em&gt;, asp.net MVC punya kontrol lebih.&lt;/p&gt;  &lt;p&gt;Di Asp.net versi lama kita bisa bikin &lt;em&gt;friendly url&lt;/em&gt; dengan membuat &lt;em&gt;HttpModule&lt;/em&gt; khusus yang tugasnya meng-convert url internal dengan eksternal. Sejak Asp.Net 3.5 &lt;a href="http://haacked.com/archive/2008/03/11/using-routing-with-webforms.aspx" target="_blank"&gt;kita jg bisa memakai Routing class dari ASp.Ne MVC&lt;/a&gt;. Tapi di Asp.Net 4 lebih mudah lagi karena nanti akan ada:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Routing bisa nge-&lt;em&gt;map&lt;/em&gt; ke &lt;em&gt;physical file&lt;/em&gt; &lt;/li&gt;    &lt;li&gt;Ngebaca informasi dari url bakal sama gampangya sama ngebaca dari &lt;em&gt;query string&lt;/em&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:cb1793cf-14db-4738-9018-cc4dd4b85822" class="wlWriterEditableSmartContent"&gt;&lt;pre style="background-color:#FFFFFF;overflow:auto;"&gt;&lt;span style="color:#000000;"&gt;Page.RouteData.Values[&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#800000;"&gt;blogtitle&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;] &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;as&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;string&lt;/span&gt;&lt;span style="color:#000000;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Bisa pakai Routing information supaya ga usah masukin url ke &lt;em&gt;mark up&lt;/em&gt;. jadi ga ada yang di &lt;em&gt;hard-code&lt;/em&gt;. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;/p&gt;

&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:d42141aa-b5e0-477c-93d7-492879e91ab0" class="wlWriterEditableSmartContent"&gt;&lt;pre style="background-color:#FFFFFF;overflow:auto;"&gt;&lt;span style="color:#000000;"&gt; NavigateUrl&lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;lt;%$RouteUrl:Search=ronaldwidha%&amp;gt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;h3&gt;2. Accessibility: Permanently Redirecting a Page&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Sebelum Asp.net 4.0 kita harus ngelakuin ini secara manual:&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:bb6a2180-d552-4920-b536-23580acf6c98" class="wlWriterEditableSmartContent"&gt;&lt;pre style="background-color:#FFFFFF;overflow:auto;"&gt;&lt;span style="color:#000000;"&gt;Response.Status &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#800000;"&gt;301 Moved Permanently&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;;
Response.AddHeader(&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Location&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;,&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#800000;"&gt;http://new-location&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;);&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Di Asp.net 4, sekarang kita bisa tinggal: 
  &lt;br /&gt;&lt;/p&gt;

&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:598b0fe1-8d12-4626-b214-1797b4f36439" class="wlWriterEditableSmartContent"&gt;&lt;pre style="background-color:#FFFFFF;overflow:auto;"&gt;&lt;span style="color:#000000;"&gt;RedirectPermanent(&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#800000;"&gt;http://new-location&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;);&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;h3&gt;3. Accessibility: Extensible Browser Capabilities&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Browser Definition&lt;/em&gt; adalah salah satu fitur asp.net 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&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Side Note: &lt;/strong&gt;Scott Hanselman spoke to Chris Woods, a program manager at Microsoft on the Mobile Browse Platform Team about &lt;a href="http://mdbf.codeplex.com/" target="_blank"&gt;a database of mobile device capabilities&lt;/a&gt; which uses the same mechanism.&lt;/p&gt;

&lt;p&gt;Di Asp.net 4, Microsoft sudah masukin &lt;em&gt;browser definition&lt;/em&gt;&amp;#160; untuk &lt;strong&gt;iphone&lt;/strong&gt;, &lt;strong&gt;chrome&lt;/strong&gt;, &lt;strong&gt;safari &lt;/strong&gt;and &lt;strong&gt;opera&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://geeks.netindonesia.net/blogs/ronaldwidha/3giphoneearrings_2_20128469.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="3g-iphone-earrings_2" border="0" alt="3g-iphone-earrings_2" src="http://geeks.netindonesia.net/blogs/ronaldwidha/3giphoneearrings_2_thumb_663F7917.jpg" width="300" height="283" /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;taken from &lt;a href="http://www.geeky-gadgets.com"&gt;http://www.geeky-gadgets.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Fitur ini juga bisa di-&lt;em&gt;extend&lt;/em&gt; menggunakan &lt;em&gt;Provider&lt;/em&gt;.&lt;/p&gt;

&lt;h3&gt;4. Performance: Extensible Output and Object Caching&lt;/h3&gt;

&lt;p&gt;Ga ada website yang bakal survive tanpa a good caching strategy. &lt;/p&gt;

&lt;p&gt;[lanjutannya dalam bahasa inggris: diambil dari &lt;a href="http://www.ronaldwidha.net/2009/10/18/10-features-why-asp-net-4-is-better-for-public-website/"&gt;http://www.ronaldwidha.net/2009/10/18/10-features-why-asp-net-4-is-better-for-public-website/&lt;/a&gt;]&lt;/p&gt;

&lt;p&gt;Asp.Net does always have a caching mechanism built in, but it lacks native support to external distributed caching engines.&lt;/p&gt;

&lt;p&gt;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!&lt;/p&gt;

&lt;p&gt;Or even better, implement your own custom caching strategy based usage patterns, time of day, etc.&lt;/p&gt;

&lt;h3&gt;5. Performance: Control over Client ID&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://geeks.netindonesia.net/blogs/ronaldwidha/image_61D50A1E.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://geeks.netindonesia.net/blogs/ronaldwidha/image_thumb_5A09C524.png" width="344" height="67" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With the prior versions of Asp.net, 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.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Side Note:&lt;/strong&gt; 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.&lt;/p&gt;

&lt;p&gt;Asp.Net 4 introduce &lt;em&gt;ClientIDMode&lt;/em&gt; which lets you set &lt;em&gt;AutoID&lt;/em&gt;, &lt;em&gt;Static&lt;/em&gt;, &lt;em&gt;Predictable&lt;/em&gt; and &lt;em&gt;Inherit&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;Static – specifies the ClientID to use the value as the ID of the web user control without the parent naming containers.&lt;/p&gt;

&lt;p&gt;Predictable – specifies the Client ID with a specified row suffix. This is generally used for controls with repeating templates.&lt;/p&gt;

&lt;h3&gt;6. Performance: More Granular View State Control&lt;/h3&gt;

&lt;p&gt;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 &lt;em&gt;Enabled&lt;/em&gt;, &lt;em&gt;Disabled&lt;/em&gt; and &lt;em&gt;Inherit&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Remember, View State aren’t evil but it has to be utilized carefully.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://geeks.netindonesia.net/blogs/ronaldwidha/image_64D6809F.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://geeks.netindonesia.net/blogs/ronaldwidha/image_thumb_65FACDE4.png" width="322" height="175" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h3&gt;7. Performance: Session State Compression&lt;/h3&gt;

&lt;p&gt;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!&lt;/p&gt;

&lt;h3&gt;8. Performance: Auto-Start Web Applications&lt;/h3&gt;

&lt;p&gt;Some sites have extensive &lt;em&gt;Application_Start &lt;/em&gt;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 Asp.net versions, &lt;em&gt;Application_Start &lt;/em&gt;happens upon the first user visit the site causing terrible experience for this unlucky person. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Side Note: &lt;/strong&gt;hence often we have an automated ping to fake the first request to kick off the application&lt;/p&gt;

&lt;p&gt;Asp.Net 4 with IIS 7.5 introduce an always on mode which start the web site automatically.&lt;/p&gt;

&lt;h3&gt;9. Security: Extensible HTML, URL and HTTP Header Encoding&lt;/h3&gt;

&lt;p&gt;Have you ever had problems of not being able to escape special characters by using &lt;em&gt;HttpUtility.Encode&lt;/em&gt; ? 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.&lt;/p&gt;

&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:2e421a70-946d-4e7c-ab3a-a1da59c23090" class="wlWriterEditableSmartContent"&gt;&lt;pre style="background-color:#FFFFFF;overflow:auto;"&gt;&lt;span style="color:#000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;httpRuntime encoderType&lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Samples.MyCustomEncoder, Samples&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;10. Security : Extensible Http Request Validation&lt;/h3&gt;

&lt;p&gt;Asp.Net 4 introduce a few things that improves security when it comes to handling http requests:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Url character check configuration. 
    &lt;br /&gt;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 &lt;/li&gt;

  &lt;li&gt;Request Validation 
    &lt;br /&gt;This is an attempt to validate all HTTP request data. We have to see how effective it really is. &lt;/li&gt;

  &lt;li&gt;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. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The Bad news is&lt;/strong&gt; there seem to be&amp;#160; not much improvement over the rendering of the web controls. &lt;em&gt;Render=Flow &lt;/em&gt;still generate a bunch of &lt;em&gt;span-&lt;/em&gt;s instead of &lt;em&gt;div-&lt;/em&gt;s which I personally found limiting.&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/18/10_2D00_features_2D00_why_2D00_asp_2D00_net_2D00_4_2D00_is_2D00_better_2D00_for_2D00_public_2D00_website.aspx&amp;amp;subject=10 Fitur kenapa Asp.Net 4 cocok untuk website publik" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/18/10_2D00_features_2D00_why_2D00_asp_2D00_net_2D00_4_2D00_is_2D00_better_2D00_for_2D00_public_2D00_website.aspx&amp;amp;t=10+Fitur+kenapa+Asp.Net+4+cocok+untuk+website+publik" target="_blank" title="Submit 10 Fitur kenapa Asp.Net 4 cocok untuk website publik to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/18/10_2D00_features_2D00_why_2D00_asp_2D00_net_2D00_4_2D00_is_2D00_better_2D00_for_2D00_public_2D00_website.aspx&amp;amp;title=10+Fitur+kenapa+Asp.Net+4+cocok+untuk+website+publik" target="_blank" title="Submit 10 Fitur kenapa Asp.Net 4 cocok untuk website publik to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/18/10_2D00_features_2D00_why_2D00_asp_2D00_net_2D00_4_2D00_is_2D00_better_2D00_for_2D00_public_2D00_website.aspx&amp;amp;phase=2" target="_blank" title="Submit 10 Fitur kenapa Asp.Net 4 cocok untuk website publik to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/18/10_2D00_features_2D00_why_2D00_asp_2D00_net_2D00_4_2D00_is_2D00_better_2D00_for_2D00_public_2D00_website.aspx&amp;amp;title=10+Fitur+kenapa+Asp.Net+4+cocok+untuk+website+publik" target="_blank" title="Add 10 Fitur kenapa Asp.Net 4 cocok untuk website publik to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=184038" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/ronaldwidha/archive/tags/technical/default.aspx">technical</category><category domain="http://geeks.netindonesia.net/blogs/ronaldwidha/archive/tags/asp.net/default.aspx">asp.net</category><category domain="http://geeks.netindonesia.net/blogs/ronaldwidha/archive/tags/beta/default.aspx">beta</category></item><item><title>Berspekulasi tentang Google Wave: akankah Google mengincar Http?</title><link>http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/07/berspekulasi-tentang-google-wave-akankah-google-mengincar-http.aspx</link><pubDate>Wed, 07 Oct 2009 03:57:32 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:183889</guid><dc:creator>ronaldwidha</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/ronaldwidha/rsscomments.aspx?PostID=183889</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/ronaldwidha/commentapi.aspx?PostID=183889</wfw:comment><comments>http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/07/berspekulasi-tentang-google-wave-akankah-google-mengincar-http.aspx#comments</comments><description>&lt;p&gt;Saya akui, saya lagi demam &lt;a href="http://wave.google.com"&gt;Google Wave&lt;/a&gt;. 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?&lt;/p&gt;  &lt;h4&gt;Apa sih Google Wave ini?&lt;/h4&gt;  &lt;p&gt;Ada yang bilang Google Wave ini &lt;a href="http://www.informationweek.com/news/internet/google/showArticle.jhtml?articleID=217700686&amp;amp;subSection=News"&gt;mau ngeslap microsoft dan bertarung dengan Sharepoint&lt;/a&gt;. Google sedangkan beranggapan Google Wave ini adalah pengganti email.&lt;/p&gt;  &lt;p&gt;Perlu diingat bahwa google wave bukan sekedar aplikasi saja tapi ada 3 komponen &lt;strong&gt;yang sangat berbeda:&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The Google Wave client application : ini interface yang kita lihat di htp://wave.google.com. Kebanyakan orang akan menganggap Google Wave yah cuma ini. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://code.google.com/apis/wave/guide.html#WaveAPI"&gt;The Google Wave APIs&lt;/a&gt;, dan &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.waveprotocol.org/"&gt;The Google Wave Federation Protocol&lt;/a&gt;. 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. &lt;a href="http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/03/google-wave-tidak-bersaing-dengan-facebook-atau-twitter-tapi-exchange.aspx"&gt;seperti email servers&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;img src="http://www.waveprotocol.org/_/rsrc/1244336075357/Home/federation_diagram.png?height=291&amp;amp;width=420" alt="" /&gt;     &lt;br /&gt;diambil dari &lt;a href="http://waveprotocol.org"&gt;http://waveprotocol.org&lt;/a&gt;&lt;/p&gt;  &lt;h4&gt;What’s the fuss is all about?&lt;/h4&gt;  &lt;p&gt;Banyak orang &lt;em&gt;mandek&lt;/em&gt; melihat Google Wave di bagian clietnya saja sehingga menganggap Wave sebagai sekedar web aplikasi yang ngegabungin &lt;em&gt;instant messaging &lt;/em&gt;dan &lt;em&gt;email&lt;/em&gt;. &lt;/p&gt;  &lt;p&gt;Beberapa dari kita sudah berpikir lebih jauh untuk melihat cara bagaimana kita bisa mengubah cara kita berkomunikasi dengan orang lain dengan meng-&lt;em&gt;extend &lt;/em&gt;dan &lt;em&gt;augment&lt;/em&gt;&amp;#160; datga yang dengan data dari &lt;em&gt;source &lt;/em&gt;lain menggunakan &lt;em&gt;robot&lt;/em&gt; dan &lt;em&gt;extension (Wave API)&lt;/em&gt;.&lt;/p&gt;  &lt;p&gt;Membaca &lt;a href="http://groups.google.com/group/google-wave-api"&gt;Google Groups yang berdedikasi untuk Google Wave&lt;/a&gt;, 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 &lt;em&gt;real time&lt;/em&gt; dengan sebagian besar masalah yang dibawanya sudah terpecahkan (conflict resolution, etc).&lt;/p&gt;  &lt;p&gt;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.&lt;/p&gt;  &lt;p&gt;Seperti Netscape mengubah cara kita merambah dunia jejaring dari &lt;em&gt;command lines &lt;/em&gt;di &lt;em&gt;terminal window &lt;/em&gt;dengan teks, gambar dan &lt;em&gt;hyperlinking&lt;/em&gt;, Wave mungkin saja bisa mengubah interaksi kita yang cenderung statis ini ke sesuatu yang lebih &lt;em&gt;immersive&lt;/em&gt;.&lt;/p&gt;  &lt;h4&gt;Will Wave protocol be the new Http?&lt;/h4&gt;  &lt;p&gt;Entah, sayangnya otak aku ga cukup kuat untuk baca &lt;a href="http://www.waveprotocol.org/draft-protocol-specs/draft-protocol-spec"&gt;spesifikasinya&lt;/a&gt;. 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 ).&lt;/p&gt;  &lt;p&gt;Kalo benar ini memungkinkan, mungkin kita sebagai developer harus mulai melihat untuk membuat &lt;em&gt;web browser &lt;/em&gt;baru yang menawarkan pengalaman kolaboratif kepada penggunanya. Belanja online bersama, membaca, menulis wiki bersama dan semuanya bisa dilakukan real time.&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/07/berspekulasi-tentang-google-wave-akankah-google-mengincar-http.aspx&amp;amp;subject=Berspekulasi tentang Google Wave: akankah Google mengincar Http?" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/07/berspekulasi-tentang-google-wave-akankah-google-mengincar-http.aspx&amp;amp;t=Berspekulasi+tentang+Google+Wave%3a+akankah+Google+mengincar+Http%3f" target="_blank" title="Submit Berspekulasi tentang Google Wave: akankah Google mengincar Http? to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/07/berspekulasi-tentang-google-wave-akankah-google-mengincar-http.aspx&amp;amp;title=Berspekulasi+tentang+Google+Wave%3a+akankah+Google+mengincar+Http%3f" target="_blank" title="Submit Berspekulasi tentang Google Wave: akankah Google mengincar Http? to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/07/berspekulasi-tentang-google-wave-akankah-google-mengincar-http.aspx&amp;amp;phase=2" target="_blank" title="Submit Berspekulasi tentang Google Wave: akankah Google mengincar Http? to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/07/berspekulasi-tentang-google-wave-akankah-google-mengincar-http.aspx&amp;amp;title=Berspekulasi+tentang+Google+Wave%3a+akankah+Google+mengincar+Http%3f" target="_blank" title="Add Berspekulasi tentang Google Wave: akankah Google mengincar Http? to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=183889" width="1" height="1"&gt;</description></item><item><title>Podcast Dot Net baru!</title><link>http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/06/podcast-dot-net-baru.aspx</link><pubDate>Tue, 06 Oct 2009 17:43:16 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:183879</guid><dc:creator>ronaldwidha</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/ronaldwidha/rsscomments.aspx?PostID=183879</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/ronaldwidha/commentapi.aspx?PostID=183879</wfw:comment><comments>http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/06/podcast-dot-net-baru.aspx#comments</comments><description>&lt;p&gt;&lt;em&gt;Yup, you read it right!&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.netindonesia.net/blogs/ronaldwidha/podcastbaru_3C8F0DD0.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="podcast-baru" border="0" alt="podcast-baru" src="http://geeks.netindonesia.net/blogs/ronaldwidha/podcastbaru_thumb_2C7F7D72.jpg" width="495" height="257" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Setelah memulai &lt;a href="http://www.temanmacet.com/"&gt;Teman Macet&lt;/a&gt; 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 &lt;a href="http://channel9.msdn.com/"&gt;Channel 9&lt;/a&gt;. Host-nya adalah &lt;a href="http://www.twitter.com/hammadrajjoub"&gt;Hammad Rajjoub&lt;/a&gt; (MVP Connected Systems) dan saya sendiri.&lt;/p&gt;  &lt;p&gt;Tunggu tanggal mainnya, untuk sementara pantau terus &lt;a href="http://www.twitter.com/dotnetmepodcast"&gt;@DotNetMEPodcast&lt;/a&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/06/podcast-dot-net-baru.aspx&amp;amp;subject=Podcast Dot Net baru!" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/06/podcast-dot-net-baru.aspx&amp;amp;t=Podcast+Dot+Net+baru!" target="_blank" title="Submit Podcast Dot Net baru! to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/06/podcast-dot-net-baru.aspx&amp;amp;title=Podcast+Dot+Net+baru!" target="_blank" title="Submit Podcast Dot Net baru! to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/06/podcast-dot-net-baru.aspx&amp;amp;phase=2" target="_blank" title="Submit Podcast Dot Net baru! to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/06/podcast-dot-net-baru.aspx&amp;amp;title=Podcast+Dot+Net+baru!" target="_blank" title="Add Podcast Dot Net baru! to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=183879" width="1" height="1"&gt;</description></item><item><title>Google Wave: udah coba public search?</title><link>http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/04/google-wave-udah-coba-public-search.aspx</link><pubDate>Sun, 04 Oct 2009 07:04:18 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:183850</guid><dc:creator>ronaldwidha</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/ronaldwidha/rsscomments.aspx?PostID=183850</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/ronaldwidha/commentapi.aspx?PostID=183850</wfw:comment><comments>http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/04/google-wave-udah-coba-public-search.aspx#comments</comments><description>&lt;p&gt;Di post &lt;a href="http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/03/google-wave-tidak-bersaing-dengan-facebook-atau-twitter-tapi-exchange.aspx" target="_blank"&gt;Google Wave tidak bersaing dengan Facebook atau Twitter, tapi Exchange&lt;/a&gt; aku menekankan bahwa yang menarik dengan &lt;a href="http://wave.google.com" target="_blank"&gt;Google Wave&lt;/a&gt; adalah protocolnya. Google Wave ingin menggantikan email.&lt;/p&gt;  &lt;p&gt;Namun hari ini aku baru saja menemukan satu hal yang menarik tentang fitur Google Wave &lt;em&gt;as how it was originally meant to be used: &lt;/em&gt;sebagai alat kolaborasi!&lt;/p&gt;  &lt;p&gt;Banyak tester beta Google Wave (termasuk saya) tidak bisa mencicipi platform baru ini sebagai alat kolaborasi karena kita belum punya cukup &lt;em&gt;contacts&lt;/em&gt;. Dan kalau kamu menghadapi masalah yang sama, coba ini:&lt;/p&gt;  &lt;p&gt;di textbox di atas di mana ada tulisan &lt;em&gt;in: inbox&lt;/em&gt;, kamu bisa memasukkan &lt;em&gt;query&lt;/em&gt; &lt;em&gt;search &lt;/em&gt;lain. Dan &lt;em&gt;query&lt;/em&gt; yang menarik untuk dicoba adalah &lt;em&gt;with: public&lt;/em&gt;. Query ini akan melihatkan semua Wave yang publik.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.netindonesia.net/blogs/ronaldwidha/googlewave_7AAC6626.gif"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="google-wave" border="0" alt="google-wave" src="http://geeks.netindonesia.net/blogs/ronaldwidha/googlewave_thumb_25CC9D95.gif" width="500" height="453" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Interaksi ini mengingatkan aku sama mIRC, ICQ dicampur dengan forum atau &lt;em&gt;mailing list&lt;/em&gt;. Sekarang aku ngerti apa &lt;a href="http://scobleizer.com/2009/10/01/google-wave-crashes-on-beach-of-overhype/" target="_blank"&gt;kata Scoble: Google Wave itu berisik&lt;/a&gt;. Ayo coba dan kasi tau pendapat kamu!&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/04/google-wave-udah-coba-public-search.aspx&amp;amp;subject=Google Wave: udah coba public search?" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/04/google-wave-udah-coba-public-search.aspx&amp;amp;t=Google+Wave%3a+udah+coba+public+search%3f" target="_blank" title="Submit Google Wave: udah coba public search? to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/04/google-wave-udah-coba-public-search.aspx&amp;amp;title=Google+Wave%3a+udah+coba+public+search%3f" target="_blank" title="Submit Google Wave: udah coba public search? to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/04/google-wave-udah-coba-public-search.aspx&amp;amp;phase=2" target="_blank" title="Submit Google Wave: udah coba public search? to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/ronaldwidha/archive/2009/10/04/google-wave-udah-coba-public-search.aspx&amp;amp;title=Google+Wave%3a+udah+coba+public+search%3f" target="_blank" title="Add Google Wave: udah coba public search? to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=183850" width="1" height="1"&gt;</description></item></channel></rss>