Wirawan Winarto

Microsoft Student Partner
See also: Other Geeks@INDC
WP7 Apps Publishing Available for Indonesia

Seperti yang ditulis di blog Jimmy, sekarang developer dari Indonesia bisa berpartisipasi di dalam WP7 Marketplace. Yalla Aps sebelumnya hanya mendukung 30 negara, namun kini bertambah menjadi 69 negara dengan Indonesia salah satunya :

Detail beritanya bisa dibaca di sini.

Kesempatan buat developer (terutama freelancer dan student) untuk mencari tambahan uang saku.

Untuk publish aplikasi, developer perlu berlangganan dulu annual subscription (USD 99) dan otomatis mendapatkan 100 credits untuk submit aplikasi. Pembayaran bisa dilakukan dengan Visa, MasterCard, atau AMEX. Try it!

Share this post: | | | |
Posted: Mar 09 2011, 09:50 PM by wirawan | with no comments
Filed under: ,
(Web) Developer Unplugged Contest

Sekedar berbagi,

IE team mengumumkan peluncuran Dev Unplugged, kontes web developer global untuk mengembangkan game berbasis web dan aplikasi di HTML5. Total hadiahnya US$ 40,000. Berikut ini beritanya :

The contest asks developers to create and submit web apps built with HTML5 around one of two themes – eitherGAMING or MUSIC – which will be voted on by both an esteemed panel of judges, as well as the general public. To make things more interesting, corp has managed to negotiate rights to characters from the Hellboy comics and music from AWOLNATION and Ra Ra Riot which can optionally be used by the developers for their app submissions. The contestants stand a chance to win up to$40,000 worth of prizes, including an all-expense paid trip to attend the “Future of Web Apps Las Vegas” event for the grand winner (all prizes will be fulfilled by corp directly – no need our involvement).

  1. This is a great opportunity for us to engage with our web developers in APAC to tell them our HTML5 story for IE9 and to also encourage them to join the contest.
  2. Potentially, this can also be a good IE9 PR sustenance story post-RTW (around the beginning of Apr), especially if we can get developer teams from APAC into the top 40 finalists.

CALL TO ACTION

Since this contest is being run entirely from Redmond, there is not much more that we need to do in the field besides to drive publicity locally for the contest in your market. Pleasereach out to your web developer audience and let them know about this contest. Send it to them viaMSDN Flash, promote it on our MSDN websites or blogs, tweet about it and share it on Facebook!

This contest is also a good carrot to use to engage with your compete user groups (PHP UG, Ruby on Rails UG, etc.). There is no limitation on the back-end or scripting language used to create the web app, except that the front-end must be using HTML5!

registrasinya bisa diakses di : BeautyOfTheWeb
Share this post: | | | |
Having A Sip of Code Contracts for C# 4.0

Baru dicoba, langsung ditulis. Jadi maaf jika kurang begitu mendalam. Code Contracts adalah fitur lungsuran proyek Microsoft Research, Spec#. Secara garis besar, Microsoft mendefinisikan Code Contracts demikian :

Code Contracts provide a language-agnostic way to express coding assumptions in .NET programs. The contracts take the form of pre-conditions, post-conditions, and object invariants. Contracts act as checked documentation of your external and internal APIs. The contracts are used to improve testing via runtime checking, enable static contract verification, and documentation generation. Code Contracts bring the advantages of design-by-contract programming to all .NET programming languages.

Apabila selama ini, kita menggunakan Debug.Assert() untuk memberitahukan error kepada developer sendiri dan if (boolean) throw (exception) untuk menangani boundary, maka Code Contracts punya fungsi yang kurang lebih mirip. Namun dengan fitur yang lebih luas.

Untuk mendapatkannya, anda bisa mendownload Code Contracts Premium di sini untuk Visual Studio 2010 Team System dan Ultimate. Kemudian lakukan instalasi

Setelah instalasi selesai, jalankan Visual Studio. Create project dan cek properties-nya, kemudian pilih menu Code Contracts dan aktifkan Static Checking dan Show Squiggles.

Untuk menunjukkan fungsionalitasnya, saya akan memberikan sebuah kode sederhana (rada ngasal), untuk menangani transfer duit via rekening. Misalnya seperti berikut ini :

Sebenarnya banyak yang suka menulis kode seperti di atas, termasuk saya. Namun (menurut Microsoft Research), penulisan seperti itu mencampuradukkan antara requirement (contract) dengan behavior utama program. Sehingga kode pun menjadi terlihat crowded.

Ada lima macam kontrak yang didefinisikan oleh Code Contracts, yaitu :

  1. Pre-Condition : ini requirement pada pemanggil method, misalnya parameter tidak boleh negatif.
  2. Post-Condition : ini mewakili constraint pada akhir method, bisa berupa final state atau return value.
  3. Invariant : ini adalah contract yang memberikan constraint state selama object tersebut visible, misalnya di sepanjang pemrosesan sebuah string nilainya tidak boleh null
  4. Assumption / Assertion : kurang lebih mirip dengan Debug.Assert(), misalnya untuk mengasumsikan angka hasil pelemparan dadu yang digenerate secara random (dalam kasus ini, angka random tidak dapat dinyatakan hasilnya tanpa asumsi).
  5. Legacy : misalnya untuk menandai akhir dari sebuah rangkaian contracts (untuk kepentingan binary rewriter)

Dengan Code Contracts, kita bisa memanfaatkan method Contract.Required (untuk memeriksa pre-condition) dan Contract.Ensures(untuk memeriksa post-condition) :

Jelas kan? Kode menjadi lebih clean karena contract dan behavior dipisahkan dengan jelas.

Fitur Code Contracts yang masih dalam proses pengembangan ini, tidak hanya sampai di situ. Apabila kita lihat, pada bagian Error List, Code Contracts juga memberikan warning dan informasi, misalnya : berapa banyak assertions yang sukses, gagal, dan tidak terbukti (unproven). Bahkan ada pula contract suggestion yang direkomendasikan kepada developer.

Apabila anda suka nonton film detektif, maka di sana biasanya dikisahkan seorang teroris dapat dicegah jauh-jauh sebelum dia melakukan teror. Di dalam Code Contracts ini kita juga dapat mendeteksi kekeliruan kode sebelum kode tersebut dieksekusi. Cukup cek tooltip pada bagian yang di-highlight :

Di dalam kode di atas muncul bahwa salah satu contract bersifat unproven, karena selalu valid tidaknya nilai contract tersebut belum dapat dibuktikan pada saat compile-time (misalnya karena nilai contract tersebut harus menunggu input dari user. Walaupun untuk kasus ini sebenarnya dapat digunakan Assumption atau Assertion).

Atau jika misalnya saya dengan sengaja memanggil method TransferDuit dengan parameter invalid (misalnya jumlah kurang dari nol), maka secara otomatis akan diberitahukan kekeliruan tersebut pada saat pemanggilan method. Ya. Diberitahukan pada pemanggilan method, bukan di dalam method yang dipanggil :

Masih banyak fitur CodeContracts lainnya untuk mendukung testing, misalnya document generation, yang bisa anda eksplorasi sendiri. Saya pun masih dalam proses mencobanya. Namun saya rasa produk ini cukup menjanjikan untuk digunakan di kemudian hari.

Share this post: | | | |
Posted: Jan 30 2011, 02:38 AM by wirawan | with no comments
Filed under: ,
Imagine Cup Algorithm : 4 Through

Imagine Cup - Algorithm Invitational Match 3 has ended today.

Fifty more contestants are through to the next round. The good news is there are four Indonesians among them. The highest scorer of this match is Fly from Russia with 45.206 points. Meanwhile the highest scorer from Indonesia is still arya_n_n with 30.164 points. The complete leaderboard can be seen here.

Here are the top 10 contestants from Indonesia :

the ones printed in blue are through to the next round

But I think some guys from my campus, STT Telkom, have done their jobs very well. About six or seven students from my campus took part on this match and three of them through to the next round. I guess they have worked very hard during last Christmas and New Year holiday. Good luck for your next round journey!

Share this post: | | | |
What I Have Done Through This Year

This year is full of crazy stuffs that will be remembered for my whole life. Here are my short reviews about what I have done through this year.

  • The journey started back on February 2007, I met Umar for the first time and began to know about Imagine Cup. A very nice way to enter the world of .NET.

  • After that, I led my team, Garuda, finished third on National Imagine Cup 2007 - Software Design Competition. We developed a cool project named Cakrawala. Despite it is a very good idea, I admitted that it was an immature project, but luckily we executed it well.

  • Some of my other notable achievements are : I took my team represented STT Telkom on the National ACM ICPC 2007, also went through to the Asia Regional ACM ICPC 2007, semi-finalist of Indonesian ICT Awards 2007, and at last finished third on Pimnas IT National Algorithm and Programming Contest.

  • A way back, I was chosen as Microsoft Student Partner for STT Telkom. I delivered my first talk on MSP Gathering about Project Hoshimi 2008. So far, I have talked on some campuses about Imagine Cup. Being a Microsoft Student Partner is always a wonderful experience for me.

  • I started blogging here on October 2007. My first post does not getting much attention and I also have no time for blogging after that. Only after the second post, this blog is getting a bit popular. I have two hopes for the next year : posting some technical posts and watching English Premier League. Until now, I am too busy to do either of them.

  • I stepped down from my position as Programming Club vice-president by the end of this year. The guy who replaces me is also a .NET freak specializes on Microsoft Expressions.

Of course, there are still more things to do. There are also still more challenges ahead.

Wish you all the best for 2007 and... may the Force be with you!

Share this post: | | | |
The Evaluation Is Not So F#-ing Lazy

Everytime I write F# down. It looks like a swear.

In functional programming languages, lazy evaluation is a well-known feature. The opposite of lazy evaluation is a strict evaluation. In a strict evaluation strategy, the innermost expressions are evaluated first. While in a non-strict evaluation strategy, the outermost expressions are evaluated first. Look at this easy example :

The advantage of strict evaluation is clear, it is more efficient since all functions are only evaluated once. Meanwhile, in non-strict evaluation, the functions like g(1,3) above sometimes are evaluated twice (or more). Inversely, non-strict evaluation is considered more expressive, for example it supports infinitive data structures, etc.

Hence people came up with a solution called lazy evaluation. Lazy evaluation is a form of non-strict evaluation, but it uses memoization, to work efficiently. Memoization is a way to remember the result produced by an evaluation. The results produced are shared across the functions so that it does not need to evaluate the same expression twice. Another advantage of lazy evaluation is it only evaluates a function that is necessary, while in strict evaluation strategy the same program may loop forever or crash during the useless calculations. By avoiding unnecessary calculations, lazy evaluation can work faster.

There are some disadvantages of lazy evaluations as well. One of them is the difficulty to predict the complexity of program. It is because sometimes we cannot predict which functions are evaluated and which functions are not. Thus it is also makes errors harder to debug.

Strict evaluation is used by old functional programming languages, like Lisp and ML. While lazy evaluation is used by newer functional programming languages, such as Miranda and Haskell. How about F#? Fortunately, F# gives us both alternatives to choose. F# does not do lazy evaluation by default. It allows us to easily create a lazily evaluated function by adding the Lazy keyword. It also allows us to build a lazily evaluated functions on the top of strictly evaluated functions. Look at the meaningless code below on how to declare a laziness :

This is just information, not tutorial. The manuals will help you more.

Share this post: | | | |
I Am On ACM ICPC Asia Regional 2007

After a week without blogging, I want to inform you my activity.

I am currently representing STT Telkom on ACM ICPC (International Collegiate Programming Contest) Asia Regional 2007 at National University of Singapore. We took off yesterday morning to Batam and enjoyed one-day sight-seeing there before taking a ferry-ride to Singapore. This morning we met with other contestants from South East Asian and East Asian countries for practice sessions and some public lectures at National University of Singapore - School of Computing campus.

We do not set any target, since this is our first participation in such a big event. Meanwhile, there are contestants from some universities in some countries like Japan, China, Korea, Singapore, etc. that surely are more experienced than us and more prepared for this contest. They have professional coaches, great teamwork, and much experience from past competitions. Those are things that we do not have (it is Arif with me in the photo below).

Just like Imagine Cup that is sponsored by Microsoft, ACM ICPC is also sponsored by big companies, such as IBM and Lenovo. No wonder if all contestants were asked to attend a lecture today about IBM's RUP (Rational Unified Process). Lenovo also demonstrated their products and offered SGD 3000 (about Rp 20 million)-valued laptops as additional prizes for the winner of this contest. Moreover, National University of Singapore also gives priorities for the winners to receive scholarships for continuing their studies in Computer Science and Information System PhD. programs there.

The contest starts tomorrow. We will strive for best. Hopefully God will be kind enough to give me miraculous touch so that Indonesia can win this contest and I get the laptop (dream on...).

Share this post: | | | |
Posted: Dec 13 2007, 04:45 PM by wirawan | with 9 comment(s)
Filed under: , , ,
Unpad Imagine Cup 2008 Roadshow

Twenty years ago... just kidding. It was this morning.
We held an Imagine Cup 2008 Campus Roadshow at Padjajaran University (Unpad). The event itself is considerably big, since it was attended by 105 students from D3 programs of Computer Engineering Dept, Informatics Engineering Dept, and Informatics Management Dept.

There were four MSPs on duty : Ronald (ITB), Sultan (Unpad), Dira (Unpad), and me (STT Telkom). Besides us, there was Umar who helped us deliver our speech.

The first presentation was delivered by Umar. He talked about categories in Imagine Cup, starting from Software Design until Photography. The presentation did not quite work as we had expected because there are some problems with our laptops.

I talked next. My speech is about Project Hoshimi. I did about 10 minutes introduction and continued it with a demo of Project Hoshimi 2008. And on the last part of my presentation, I expressed my optimism that Indonesian Hoshimiers can reach worldwide final next year.

Why? I showed them this chart showing our positions in the last three years :

You see, we are going up. Every year is just getting better.
So I think it is reasonable enough to expect ourselves to go to the worldwide final next year.
For your information, there will be six teams who compete in the worldwide final, which is only one step further from top-12 round we had reached last year.

The last presentation was delivered by Ronald. It was a demo of Expression Blend.

Thanks to Dira and Sultan who had worked hard for this event. Thanks for the "wayang". Thanks for the lunch, as well. I never thought that Unpad had such a big enthusiasm on Imagine Cup. Hm... Is this a sign that one of Imagine Cup winners will come from Unpad? Let's see.

Share this post: | | | |
Trying F# on Visual Studio 2008

Just tried F# on Visual Studio Team System last night. It ran smoothly... so far.

The first thing I tried is a little Fibonacci code...


Then testing some simple codes below...


For you who came from object-oriented background, this language might looks like an alien language. But it is not that difficult to familiarize yourself with these syntaxes. Trust me.

If you want to have a taste of F# just follow these easy steps :

  1. Remove any previously installed version of Microsoft Research F#.
  2. Install Microsoft Visual Studio. (I tried it on Team System 2008)
  3. Install Microsoft Research F#. You can download it here.
  4. After all steps above are done. Open your Visual Studio.
  5. Choose Tools, then Add-In Manager.
  6. Check "F# Interactive for Visual Studio" check-box.
  7. Try it, click New Projects >> Other Project Types >> F# Projects.
  8. Have fun!

Just want you to know, as Mr. Somasegar has stated earlier here, F# will be the first class citizen of .NET in the future. That means F# will get the same support as C#, VB .NET, and C++. F# itself is actually a multi-paradigm programming language. It supports object-oriented programming as well, but it was designed mainly for functional programming.

I will write the detail later because I have to prepare for my speech tomorrow.

Share this post: | | | |
Pimnas IT Winner Is Using Silverlight

I hope it is not too late to inform this. Since I have no time for blogging this month.

Pimnas IT was held on Satya Wacana Christian University, Salatiga at October 29 - November 2, 2007. One of its categories is called LPIKM (Lomba Produk Inovasi dan Kreativitas Mahasiswa). In the category, Team A3 (Amel, Ario, and Ali), which was representing STT Telkom, delivered a project named UCIL that means a programming language simulator "Untuk Anak Kecil". Much like Zeddy's AYU, its syntax is also based on Bahasa Indonesia. (although I think it is not a fair comparison, because AYU is far more complex and UCIL strong point is on its animation).

The most interesting point of UCIL is that it was developed on .NET 3.0 and powered by Microsoft Silverlight. Those technologies that I guess were fairly foreign to the judges.

After presenting their product in front of the judges, Team A3 was finally announced as the winner and awarded with Rp 7.500.000. Just want you to know, nearly all teams participating there were using Java, Team A3 was the only one who used .NET.

The news can be seen here.

I have been introducing Microsoft technologies for about three months here and Windows Presentation Foundation gains much attention from students of STT Telkom. Many students have changed their interests from Flash to Silverlight, from Java to .NET, etc. Don't get me wrong. I never force them to use Microsoft technologies, I only give them alternative. *peace*

At least, I think I have done my job as an evangelist.

Share this post: | | | |
Hi, This Is My First Post!

Hello!

My name is Wirawan Winarto,
I am the new Microsoft Student Partner from STT Telkom.

I am delighted to inform you that I will start blogging here from now on (until Umar tell me to blog somewhere else...). This blog will focus mainly on my adventure as Microsoft Student Partner and Microsoft Imagine Cup.

Last month, I was chosen (or should I say : elected?) as the new MSP. A while back, I was a stand-up comedian the vice-president of STT Telkom Programming Club. I led my team finish third on National Microsoft Imagine Cup this year. I was very lucky to be elected as MSP, considering there are dozens of guys in STT Telkom that are smarter than I am.

Actually, STT Telkom has another MSP. He is Leonardi. He eats XBox for breakfast.

For me, technology has never been an easy matter. Sometimes it is fun. Sometimes it is even irritating.

It's nice to join all geeks here. I never consider myself as a geek, so you don't need to worry because this blog will remain a blog, not a white-paper or user-manuals.

Share this post: | | | |