Teori Yang Tidak Harus Anda Percaya

Hingga tulisan ini diluncurkan, dua orang teman saya dalam jarak dua kamar masih asyik masyuk saling curhat mengenai keadaan hubungan masing-masing dengan wanita masing-masing. Hmm,sejauh ini saya dengar mereka dalam kondisi sedang mengejar target. Belum ada status resmi sudah menjadi pasangan. Dan keduanya saling update, dan bertanya apakah harus memutuskan untuk mengungkapkan perasaannya sekarang atau ditunda lagi.

Hari menunjukkan pukul setengah 1 pagi, untuk meringankan pikiran dari segala kerumitan hidup dan kerasnya nasib pengangguran ibu kota mari kita memikirkan beberapa teori yang sebenarnya tidak harus anda percaya. Beberapa teori ini berhubungan dengan hubungan muda-mudi yang sumbernya saya dapatkan dari beberapa orang. In the end, It’s just for fun.

Hukum Paretto 40-70

image

Dalam urusan project management sering kali kita mendengar Hukum Paretto 80 : 20 dimana 80 % pekerjaan dapat dikerjakan di 20% akhir waktu. Dalam urusan mendekati pasangan (biasanya diterapkan oleh seorang cowok kepada seorang cewek) Paretto yang berlaku adalah 40 – 70. Hal tersebut diartikan demikian : Saat yang tepat atau hasil maksimal akan didapat untuk mengungkapkan perasaan terhadap seorang cewek adalah pada saat Anda sudah memiliki informasi mengenai cewek tersebut (perasaan sang cewek, pribadi, dsb) dalam kisaran 40 – 70 % dengan implikasi sebagai berikut :

  • Kurang dari 40 %, artinya Anda memiliki informasi yang masih minim. Dalam peperangan, kekurangan intelijen dapat berakibat fatal . Begitu juga dalam kasus ini, informasi yang terlalu sedikit akan membuat anda terlalu gegabah. Sangat nekad. Bisa jadi gerak-gerik yang ditunjukkan hanya karena Anda sedang terlibat suatu kegiatan yang membuat sering bertemu, kerja kelompok atau lainnya. Tidak bertahan lama. Hanya kondisi yang membuat anda berpikir demikian.
  • Lebihd ari 70 %. Informasi yang Anda miliki sudah begitu banyak. Terlalu lengkap mungkin. Dalam peperangan hal ini sebenarnya sangat diperlukan. Tapi untuk mencapai kondisi itu biasanya dibutuhkan waktu yang cukup lama. Artinya, dalam waktu yang cukup lama tersebut mungkin saja salah satu pihak akhirnya merasa lebih senang berteman, salah satu pihak sudah memadamkan niat atau salah satu pihak sudah didapatkan oleh orang lain. Terlambat.

So, 40 – 70. Perkiraannya seperti itu. Tidak terlalu nekat. Dan juga tidak terlambat.

Hukum Infinity

imageTeori ini pertama kali saya dengar dari rekan Hana. Dalam suatu sesi siang itu ia memaparkan bahwa dalam suatu hubungan muda-mudi ada fenomena menarik. Misalkan diagram diatas menggambarkan grafik waktu dan tingkat usaha/sayang seorang lelaki/wanita maka hal yang terjadi adalah sebagai berikut :

  • Lak-laki, dari awal masa sebelum jadi, PDKT rasa,usaha atau apapun itu namanya nilai nya sangat besar. Penasaran. Merasa tertantang. Namun seiring berjalan dengan waktu hal ini berkurang hingga mendekati suatu nilai konstan. Tidak nol. Tetapi juga tidak tingg. Steady.
  • Perempuat, dari awal masa sebelum jadi, PDKT, usaha, tingkat perhatian , rasa sayang pada awalnya mungkin tidak seberapa. Terkadan NOL besar. Tapi seiring dengan waktu, melihat usaha dari sang pria, niat dan berbagai trik dan tipuan dari lawan jenis, hal tersebut akan membesar seiring waktu berjalan. Dan sering kali malah menjadi-jadi sehingga disebut mendekati tak hingga . Infinite!

Hukum Rentang Waktu

Teori ini saya dapatkan dari seorang legenda, pemikat wanita, telah meniduri ratusan wanita (so he said) . ya dia adalah Barney Stinson, tokoh dalam serial How I Met Your Mother. Teorinya mengenai hubungan muda-mudi sungguhlah banyak sekali namun yang akan saya sampaikan hanya satu rumus yang sangat berguna ini. Formulanya adalah : 

t(allowed) = c + n, dimana n adalah masa hubungan, dan c adalah waktu sekarang.

Teori nya berbunyi janganlah memikirkan, merencanakan hal-hal pada masa dimana masa tersebut lebih lama dari jangka waktu anda telah membina hubunga. Sebagai contoh , jika masa hubungan anda baru berumur 1 tahun, jangan berpikir jauh-jauh tentang rencana 2 tahun setelah masa sekarang. So, jika Anda baru jadian 3 hari, jangan mengumbar janji tentang hal-hal seminggu ke depan :p .

Menyimpan Data secara Lokal pada Windows Phone

Pada blogpost sebelumnya telah dibahas bagaimana kita dapat memanfaatkan data dari suatu web service untuk dikonsumsi di dalam aplikasi Windows Phone kita, termasuk cara yang elegan untuk menampilkan data tersebut menggunakan DataBinding. Lalu bagaimana jika kita ingin menyimpan data ke dalam Windows Phone device ? Jawabannya adalah IsolatedStorage. Isolated Storage adalah tempat penyimpanan lokal yang dapat digunakan untuk keperluan penyimpanan pada aplikasi Windows Phone. Dikatakan Isolated karena hanya satu aplikasi saja yang dapat memanfaatkannya. Jika memang membutuhkan dua atau lebih aplikasi untuk bertukar data, sebaiknya menggunakan skema cloud.

Ketika sebuah aplikasi berjalan, aplikasi bekerja dengan sejumlah data. Beberapa diantaranya bersifat temporary dan hanya diperlukan pada sesi tertentu. Beberapa diantaranya tidak dan perlu disimpan. Untuk itulah Isolated Storage berguna. Seluruh operasi IO harus menggunakan IsolatedStorage dan tentu saja demi keamanan aplikasi tidak dapat mengakses operating system storage dan space yang dimiliki aplikasi lain. Gambar dibawah ini menunjukkan struktur penyimpanan pada aplikasi di Windows Phone.

clip_image002

Terdapat dua bagian penyimpanan, yaitu filefolder standar dan berkas khusus untuk menyimpan setting dari aplikasi.

Perlu diketahui bahwa storage space pada mobile device sangat terbatas. Namun Windows Phone tidak membatasi kuota untuk tiap aplikasi agar memberikan fleksibilitas yang tinggi bagi para developer. Namun tentunya sebagai developer, kita harus dapat memperhitungkan seberapa besar storage yang akan dipergunakan dengan bertanggung jawab. Setiap temporary file harus segera dihapus dan berikan kebebasan bagi user untuk dapat menghapus apa yang sudah disimpannya. Akan lebih baik jika memberikan transparansi bagi pengguna, membiarkan pengguna mengetahui seberapa banyak ia telah menggunakan space pada mobile device. Tentu saja kita dapat memikirkan mekanisme penyimpanan data pengguna di-cloud apakah itu di server miliki aplikasi kita atau di tempat pihak ketiga. Biarkan aplikasi pada device bersifat thin sehingga nyaman digunakan. Apakah ada pengguna yang mau menggunakan aplikasi yang menghabiskan banyak tempat di mobile device-nya ? That’s how smartphone became not smart anymore J.

IsolatedStorage untuk File

1. Klik kanan pada Project, Add New Item dan Pilih Windows Phone Portrait Page dan beri nama sesuai dengan keinginan anda, pada contoh ini adalah IsolatedStorage.xaml lalu pilih Add.

clip_image004

2. Tambahkan satu buat textbox dan sebuah button. Nantinya button click event akan menyimpan string pada textbox sebagai input ke dalam isolated storage.

clip_image006

3. Berikutnya tambahkan sebuah textblock dan sebuah button. Pada button yang kedua kita akan memanggil string apapun yang sudah disimpan dalam isolatedstorage.

clip_image008

4. Sekarang double-click pada button pertama untuk menangani penyimpanan data ke dalam isolatedstorage. Tambahkan dua namespace berikut :

private void button1_Click(object sender, RoutedEventArgs e)

        {

            IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication();

            isf.CreateDirectory("Data");

            StreamWriter sw = new StreamWriter(new IsolatedStorageFileStream("Data\myfile.txt", FileMode.Create, isf));

            sw.WriteLine(textBox1.Text);

            sw.Close();

        }

Yang dilakukan oleh kode diatas adalah memanggil IsolateStorage spesifik untuk aplikasi , kemudian membuat sebuah folder bernama Data. Pembuatan folder dapat dimaksudkan untuk kemudahan organisasi data. Kemudian pada baris berikutnya membuat sebuah stream writer dengan masukan sebuah file isolatedstorage lalu menyimpan nilai dari textBox1. Cukup straighforward.

5. Selanjutnya double-click pada button kedua untuk menangani pembacaan data dari isolatedstorage tersebut. Ketikkan kode berikut ini :

private void button2_Click(object sender, RoutedEventArgs e)

   {

       IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication();

       StreamReader sr = null;

       try

       {

           sr = new StreamReader(new IsolatedStorageFileStream("Data\myfile.text",FileMode.Open,isf));

           textBlock1.Text = sr.ReadLine();

           sr.Close();

       }

       catch (Exception ex)

       {

           MessageBox.Show("error");

       }

   }

6. Tekan F5 dan mari kita lihat bagaimana aplikasi bekerja.

clip_image010 clip_image012

IsolatedStorage untuk Application Setting

Beberapa aplikasi memerlukan masukan dari pengguna yang harus disimpan untuk digunakan kembali ketika aplikasi akan dijalankan. Skenario ini berlaku misalnya untuk preferences, URL atau informasi umum. Seperti aplikasi .NET lainnnya , aplikasi Windows Phone juga mendukung penyimpanan application setting. Untuk keperluan ini dapat menggunakan IsolatedStorageSettings.ApplicationSettings. Application Setting sendiri merupakan instansiasi dari IEnumerable.

1. Tidak perlu membuat halaman baru mari kita gunakan saja kembali IsolatedStorage.xaml untuk keperluan ini. Pada event handler button pertama ubah kodenya menjadi seperti dibawah ini :

IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;

settings.Add("duration", "daily");

settings.Save();

Kode diatas cukup straightforward : kita melakukan pemanggilan instansiasi dari ApplicationSetting , menambahkan sebuah nilai dan key serta menyimpannya.

2. Pada event handler button kedua ubah kodenya menjadi seperti ini :

IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;

            string value = "";

            try

            {

                settings.TryGetValue("duration", out value);

                MessageBox.Show(value.ToString());

            }

            catch

            {

                MessageBox.Show("error");

            }

Kode diatas akan melakukan pemanggilan instansiasi dari applicationsetting, mencoba mendapatkan nilai duration dan menampilkannya dengan MessageBox.

3. Tekan F5 dan perhatikan hasilnya.

clip_image014 clip_image016

Tekan tombol pertama untuk menyimpan setting dari aplikasi tersebut. Tampak tidak terjadi apa-apa tapi percayalah setting tersebut berhasil disimpan. Untuk membuktikannya tekan tombol kedua dan akan menampilkan MessageBox berisikan nilai yang disimpan pada setting aplikasi.

Beberapa tips untuk berurusan dengan IsolatedStorageSettings :

  1. Usaha untuk memperoleh suatu nilai dari IsolatedStorageSetting akan melemparkan nilai error jika nilai tersebut belum pernah dimasukkan sebelumnya. Pastikan setting sudah diinisialisasi atau SELALU cek menggunakan .Contain
  2. Kita dapat menyimpan data apapun pada setting namun jangan lupa untuk melakukan casting kembali ketika nilai tersebut hendak digunakan

Bekerja dengan Data pada Windows Phone

Aplikasi sudah pasti banyak berhubungan dengan data. Tidak terkecuali aplikasi pada Windows Phone. Pada blogpost ini mari kita melihat beberapa aspek terkait data pada aplikasi Windows Phone. Skenario yang paling umum agar smartphone hanya bertindak sebagai presentation layer saja adalah data yang diperlukan tidak  disimpan di dalam phone memory itu sendiri. Artinya, data disimpan disuatu tempat dan dikonsumsi ketika diperlukan. Untuk itu diperlukan suatu mekanisme untuk mengonsumsi data tersebut. Selanjutnya bagaimana data tersebut dapat ditampilkan kepada user.

Sebagai studi kasus kita akan menggunakan data gempa yang digunakan rekan Veri untuk membuat aplikasi bing maps Earthquake Locator dan rekan Billy yang sudah mengimplementasikannya menggunakan kontrol Map di Windows Phone. Hanya saja fokus kali ini lebih ditekankan bagaimana data tersebut dikonsumsi,dan ditampilkan menggunakan fitur Databinding pada Silverlight di Windows Phone.

Untuk keperluan ini, buat lah sebuah project Windows Phone Application, tambahkan sebuah button dan sebuah ListBox dan beri nama agar dapat mudah diakses.

image

Konsumsi Web Service

Untuk mengonsumsi service dari suatu tempat (hosting sendiri, Azure, 3rd party API) ada dua strategi yang dapat digunakan. Jika service tersebut memiliki metadata tertentu (seperti WSDL) maka kita dapat mengenerate client class secara otomatis menggunakan fitur Visual Studio. Jika tidak kita dapat menggunakan kelas yang menunjang networking yaitu WebClient. Penggunaan WebClient membutuhkan tiga bagian yaitu (1) deklarasi kelas, (2) menentukan event handler setelah pemanggilan service dan (3) pemanggilan service itu sendiri secara asinkronus.

   1: private void Button_Click(object sender, RoutedEventArgs e)

   2:         {

   3:             string url = "http://bmg.go.id/dataXML/gempaterkini.xml";

   4:             WebClient feeder = new WebClient();

   5:             feeder.DownloadStringCompleted += new DownloadStringCompletedEventHandler(feeder_DownloadStringCompleted);

   6:             feeder.DownloadStringAsync(new Uri(url));

   7:  

   8:         }

   9:  

  10:         void feeder_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)

  11:         {

  12:         }

Kembalian dari pemanggilan service tersebut adalah data dalam format XML. Format lainnya seperti JSON,ATOM, atau raw text pun sebenarnya tidak masalah. Untuk membaca data kembalian ini mari kita gunakan LINQ to XML. Pembahasan secara penuh tentang LINQ dalam Bahasa Indonesia sudah pernah dibahas secara lengkap oleh bung Ronald pada ebook Perjalanan ke Desa LINQ .

Tambahkan referensi terhadap Linq.Xml dan direktif pada kode sumber.

image image

 

Untuk menampung data kembalian tersebut dan future use mari kita buat kelas sederhana, yang terdiri dari beberapa string.

   1: public class EQItem

   2:    {

   3:        public String Date { get; set; }

   4:        public String Time { get; set; }

   5:        public String Magnitude { get; set; }

   6:        public String Depth { get; set; }

   7:        public String Area { get; set; }

   8:  

   9:    }

 

 

Selanjutnya tambahkan pada bagian event handler feeder_DownloadStringCompleted. Untuk contoh ini data yang akan diambil adalah waktu, jam, kedalaman,kekuatan gempa serta tempat kejadiannya. Untuk setiap data gempa dari file XML kita akan membuat suatu EQItem dalam koleksi IEnumerable<XElement> yang akan dikembalikan oleh query Linq. Selanjutnya data tersebut dijadikan ItemSource dari ListBox yang sudah didefinisikan sebelumnya.

   1: void feeder_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)

   2:         {

   3:             if (e.Error != null)

   4:                 return;

   5:             XElement xmlBMGfed = XElement.Parse(e.Result);

   6:  

   7:             BMGListBox.ItemsSource = from BMGfeed in xmlBMGfed.Descendants("gempa")

   8:                                      select new EQItem

   9:                                      {

  10:                                          Date = BMGfeed.Element("Tanggal").Value,

  11:                                          Time = BMGfeed.Element("Jam").Value,

  12:                                          Depth = BMGfeed.Element("Kedalaman").Value,

  13:                                          Magnitude = BMGfeed.Element("Magnitude").Value,

  14:                                          Area = BMGfeed.Element("Wilayah").Value

  15:                                      };

  16:          }

 

DataTemplate dan Databinding

DataTemplate dan Databinding adalah dua hal yang sangat berguna dalam data presentation di aplikasi Silverlight. Dan hal ini juga berlaku untuk Silverlight pada Windows Phone. Secara sederhana, DataTemplate berguna untuk mengkustomisasi sebuah item untuk menampilkan sejumlah data. Misalkan, sebuah ListBox yang pada dasarnya dapat menampilkan sejumlah data string dapat kita kustomisasi tampilannya untuk menampilkan data-data gempa tadi dalam lay-out  yang juga dapat kita tentukan. Sementara itu DataBinding adalah sebuah proses untuk menghubungkan UI dengan business logic. Selain dapat mempersingkat penulisan code-behind dan membuat kode lebih bersih, jika dilakukan dengan baik , DataBinding dapat membantu kita untuk melakukan perubahan secara otomatis dari UI ke dalam data dan sebaliknya,konversi tipe data dan sebagainya.

Contoh penggunaan databinding pada kasus ini adalah suatu textblock yang Text nya kita Bind ke properti yang terdapat pada kelas EQItem seperti magnitude,date,depth dan sebagainya. Menggunakan teknik ini, hal yang biasanya kita lakukan dengan setting text pada kode tidak perlu kita lakukan lagi.

<ListBox Name="BMGListBox" Margin="0,0,-12,0"  

        ScrollViewer.VerticalScrollBarVisibility="Auto" 

        Canvas.Left="30" 

        Canvas.Top="94">

        <ListBox.ItemTemplate>

            <DataTemplate>

                <StackPanel Orientation="Vertical" 

                            Margin="0,0,0,17" 

                            Width="432">

                    <TextBlock VerticalAlignment="Center" 

                               Foreground="#FFC8AB14" 

                               Style="{StaticResource PhoneTextSubtleStyle}" 

                               Text="{Binding Area}"></TextBlock>

                    <StackPanel Orientation="Horizontal">

                        <TextBlock MinWidth="200" 

                                   VerticalAlignment="Center" 

                                   Text="{Binding Date}" 

                                    TextWrapping="Wrap" 

                                    Style="{StaticResource PhoneTextLargeStyle}"/>

                        <TextBlock HorizontalAlignment="Right" 

                                   VerticalAlignment="Center" 

                                   Text="{Binding Time}" 

                                   TextWrapping="Wrap" 

                                   Style="{StaticResource PhoneTextLargeStyle}"/>

                      </StackPanel>

                      <StackPanel Orientation="Horizontal">

                          <TextBlock MinWidth="200" 

                                     VerticalAlignment="Center" 

                                     Text="{Binding Magnitude}" 

                                     TextWrapping="Wrap" 

                                     Style="{StaticResource PhoneTextLargeStyle}"/>

                          <TextBlock HorizontalAlignment="Right" 

                                     VerticalAlignment="Center" 

                                     Text="{Binding Depth}" 

                                     TextWrapping="Wrap" 

                                     Style="{StaticResource PhoneTextLargeStyle}"/>

                      </StackPanel>

            </StackPanel>

        </DataTemplate>

    </ListBox.ItemTemplate>

</ListBox>

 

Tekan F5 untuk melihat aplikasi bekerja. Tekan tombol dan data gempa akan segera ditampilkan ke layar tergantung seberapa cepat koneksi internet yang didapat oleh emulator.

image

Jika menginginkan pengetahuan lebih lanjut mengenai bagaimana bekerja dengan data pada aplikasi Silverlight secara umum (dan juga WPF), MIcrosoft team telah memperkenalkan MVVM pattern yang sangat berguna terutama jika aplikasi bekerja cukup banyak dengan data. Source code lengkap dapat diperoleh disini :

 

http://cid-3543a916eed05fb8.office.live.com/embedicon.aspx/Code/BMGApps.zip

Mau Kemana Setelah Wisuda ?

Baru saya tersadar akhir-akhir ini begitu banyak tulisan tentang kehidupan pribadi. Tentunya hal ini menyenangkan jika yang membaca memiliki keterkaitan dengan sepak terjang penulis, menjadi salah satu aktor di dalamnya atau memiliki kesamaan, setidaknya lokasi tempat kejadian. Tapi,ada satu hal yang tidak hanya saya sadari akhir-akhir ini, justru ini merupakan sesuatu yang sudah saya pikirkan sejak tiga bulan yang lalu dan hingga saat ini belum begitu terang benderang hasil pemikiran itu. Satu pertanyaan sederhana : Mau Kemana Setelah Wisuda ?

Usia bergerak, kata dewasa kini melekat. Artinya, inilah saatnya sebagai manusia mulai memilih dan memikirkan jalan hidup yang ingin dilalui. Pendidikan demokratis ala keluarga Suharto sudah demikian melekat sehingga dari Pekanbaru hanya memberikan pengarahan tanpa satu pun pemaksaan. Empat tahun sudah mengenyam pendidikan di Institut Teknologi di Bandung, kini saatnya harus menentukan : Mau Kemana Setelah Wisuda ?

Melanjutkan Studi

image Banyak diantara teman-teman yang sudah memutuskan bahkan sudah ada pula yang memulai masa melanjutkan studinya setelah melalui masa strata-1. Sebagian ada yang melanjutkan di luar, Singapura, Jepang dan Korea. Tentunya ada keuntungan tersendiri bagi mereka yang beruntung dapat kuliah di luar negeri. Perbedaan budaya salah satunya. Pengalaman baru adalah yang banyak mereka kejar. Lari dari Indonesia sempat terpikir oleh beberapa diantara mereka. Apakah lantas kuliah di dalam negeri tidak lebih baik ?

Tidak sama sekali. Rasanya melanjutkan studi kembali di dalam negeri tidak memiliki stigma apa pun, setidaknya bagi saya. Dekat dengan keluarga adalah salah satu hal yang paling dirasakan. Ingin berbakti pada negeri, kata orang-orang yang mengaku nasionalis. Mendapat beasiswa di dalam negeri , ikatan dinas oleh pemerintah daerah. Ataupun keunggulan tambahan setahun bagi teman-teman yang mengikuti pilot program fasttrack di tempat saya berkuliah sebelum ini.

Studi Strata-2 tentunya memiliki sedikit perbedaan dari S-1. Lebih advanced bagi sebagian orang. Tapi tentu saja perbedaan itu sedikit banyak  dipengaruhi oleh keluaran yang diinginkan dari jenjang ini, yaitu tidak hanya sekedar problem solver tapi seorang optimizer. Tidak hanya melihat problem dan menemukan solusinya, tapi dapat meng-enhance kembali solusi yang telah diajukan,menjadi solusi yang lebih elegan.

Kemampuan penelitian merupakan hal yang lebih ditonjolkan jika dibandingkan tingkat S-1. Artinya bagi mereka yang meneruskan bidang studi yang serumpun dengan studi yang pernah ditempuh akan membuat seseorang menjadi lebih expert di bidang itu. Bagi yang tidak maka akan memperkaya keilmuan yang telah dimiliki. Karena tidak jarang sebagian dari teman-teman yang berlatar belakang engineering memilih untuk migrasi ke bidang lain yang lebih manusiawi : bisnis atau seni.

Mencari Kerja

image Dan bekerja tentu saja. Biasanya nanti akan mengerucut menjadi dua : Bekerja sesuai dengan hal yang disenangi atau bekerja untuk sesuatu yang lain. Bekerja sesuai dengan hal yang disenangi maka mudah saja. Harusnya mahasiswa-mahasiswa informatika tentunya jika menyenangi dunia IT akan tetap berada pada jalur tersebut. Bidang perusahaan tidak masalah. Meskipun, dari hasil saya berbincang dengan salah seorang senior memberikan jalur karir yang menarik. Untuk awal sekali, beradalah di vendor atau konsultan. Membuat kita terus belajar dan belajar, tidak hanya satu teknologi. Dan tetap berhubungan dengan orang banyak. Setelahnya , jika berminat pindahlah ke tempat end user. Artinya di tempat dimana IT menjadi supporting system agar bisnis tetap berjalan. Misalnya namun tidak terbatas pada perusahaan telekomunikasi dan bank. Kemudian jika ada kesempatan pindahlah ke prinsipal, perusahaan yang membuat teknologi tersebut. Mari kita sebut saja seperti Microsoft, IBM, Oracle dan sebagainya. Bekerja untuk hal yang disenangi biasanya tidak membuat kita jenuh. Schumi bekerja dengan membalap. Itu adalah hobinya. Ronaldo bekerja dengan bermain bola. Itu adalah hal yang dicintainya.

Bekerja untuk sesuatu yang lain. Kasus pertama adalah untuk pengalaman yang menunjang keinginan besar lainnya. Misalnya pengalaman kerja di bidang yang berhubungan dengan bisnis/manajemen akan memperbesar kesempatan mahasiswa teknik yang ingin meneruskan S2 tapi di bidang manajemen/bisnis. Maka pengalaman kerja tersebut mutlak diperlukan. Beberapa perguruan tinggi mensyaratkan itu. Contoh kedua adalah untuk “tabungan” . Biasanya perusahaan yang dicari adalah perusahaan yang memberikan insentif cukup tinggi dengan berbagai kompensasi. Atau untuk sekedar stepping stone. Mengincar perusahaan yang dapat mempermudah untuk lebih maju lagi diperusahaan lain.

Bekerja tentunya jauh berbeda dari lingkungan sekolah. Disini dituntut tanggungjawab yang lebih besar dan diemban oleh pribadi dewasa. Sedikit sekali ruang toleransi terhadap kesalahan. Ayah saya sempat berkata, bekerja bisa saja membuat kita bosan karena melakukan hal yang monoton setiap hari. Saya belum bisa membuktikan kata-kata tersebut. Mungkin nanti.

Memulai Usaha

Sebagian dari kita punya visi yang berbeda, memilih setelah lulus untuk memulai usaha.Memilih untuk tidak bekerja pada orang lain . Memilih untuk menciptakan lapangan kerja. Tidak hanya itu , beberapa dari kita memulai usaha bahkan sejak bangku kuliah. Hal yang saya sebut usaha disini bentuknya bisa bermacam-macam. Seorang alumnus planologi baru-baru ini saya dengar membuka gerai makanan Bebek Garang dan sudah cukup sukses di Bandung. Dalam konteks di rumpun ilmu yang saya geluti beberapa diantaranya membuka jasa IT Consultan dan Software Development. Rasanya setiap angkatan memiliki satu atau dua grup untuk itu.

Saya sempat mengikuti kuliah umum dari salah satu dosen SBM beberapa bulan lalu. Ada fakta menarik. Agar negara dapat sejahtera dibutuhkan enterpreneur dengan persentase sekitar 2% saja dari jumlah populasi masyarakat Indonesia. Lebih lanjut lagi, bidang keteknikinformatikaan yang tergolong dalam industri kreatif menjadi salah satu hal yang didorong dengan sangat dalam platform pembangunan ekonomi Indonesia 2020. Fakta lainnya bahwa memang Indonesia saat ini begitu berkembang dan migrasi dari tenaga manual menjadi berbantukan komputer menjadi lahan yang tersebar dimana-mana. Mungkin ini yang coba dimanfaatkan teman-teman.

Tidak hanya itu, saat ini juga menjamur apa yang dikenal dengan istilah start-up company. Indonesia menjadi tempat dimana para penggiat IT banyak sekali mendirikan perusahaan kecil, meluncurkan service yang bersifat IT-related  dan bergantung pada perkembangan pengguna internet dan mobile device yang sangat besar saat ini. Momentum ini diperkuat dengan terbentuknya komunitas dalam negeri seperti #startupLokal, fowab, Suwec, dan bancakan di kota-kota Indonesia serta semakin besarnya ekspos media mulai dari dalam negeri,  Singapura hingga Amerika. Sejumlah IT Company milik pemuda bangsa ini telah menarik perhatian besar sejumlah pemilik dana . Contoh terbesar adalah Koprol yang diakuisisi oleh Yahoo!. Ada lagi Urbanesia dan Tokopedia yang dimodali oleh East Ventures, perusahaan kapital dari Singapura.

Salah satu karakteristik untuk IT startup adalah “How to Fail Fast”. Jika gagal, gagal lah dengan cepat. Lalu kembangkan lagi sesuatu yang lain. Contoh terbaik dari hal ini adalah pendirian PayPal yang merupakan usaha ke-5 dari foundernya . Facebook dan twitter mungkin salah satu pengecualian. Satu dari sepuluh saja . Tapi kemampuan untuk bangkit kembali dari kegagalan dan membuat hal baru lagi itu lah yang menjadi kekuatan bagi orang-orang yang mau memulai usaha terutama di bidang IT.

 

Mungkin ada pilihan lainnya namun saat ini tiga hal diatas adalah hal yang terus saya pertimbangkan. Jalan mana yang akan dipilih. Ini adalah saat-saat yang kritis. Artinya, keputusan saat ini bisa jadi akan berpengaruh terhadap hidup dua puluh atau tiga puluh tahun ke depan. Keputusan saat ini dapat berhubungan dengan keluarga atau pun calon keluarga. Keputusan saat ini adalah hal yang harus dipikirkan dengan masak-masak, jangan setengah matang.

Pasti akan ada yang dikesampingkan. Mungkin akan ada yang dikorbankan. Justru ini yang membuat perbincangan Mau Kemana Setelah Wisuda merupakan topik yang begitu amat menarik bagi saya dan sebagian teman-teman saya. Dan bahwa sekarang saya menghadapi sesuatu yang paling alamiah dan natural dalam hidup : PILIHAN. Bahwa hidup adalah pilihan , dan setiap pilihan punya konsekuensinya masing-masing. Sesuatu yang saya ketahui sejak lama namun begitu menghadapinya secara langsung membuat saja tidak habis berpikir bahwa hal ini menjadi sesuatu yang amat sulit.

Detik ini, hanya ingin berdoa agar pilihan yang saya ambil nantinya adalah yang terbaik dan diridhoi olah Allah SWT. Amin.

ComboBox vs ListPicker in Windows Phone

Anda sedang membangun aplikasi Silverlight pada Windows Phone. Suatu saat anda ingin menampilkan sejumlah daftar pilihan,misalnya daftar bahasa yang digunakan, daftar lokasi tempat dan sebagainya. Anda ingat di Silverlight inilah saatnya menggunakan ComboBox. Tapi tidak dalam Silverlight pada Windows Phone.

Meskipun kontrol ini tetap tersedia pada Silverlight for Windows Phone, penggunaannya pada skenario diatas adalah tidak tepat. Mengapa ? Karena secara alami, ComboBox didesain untuk digunakan oleh pointer atau mouse yang memiliki presisi cukup tinggi. Pada lingkungan berbasis touch,dalam hal ini adalah device yang running Windows Phone penggunaan ComboBox menjadi kurang relevan. Untuk hal ini, pada Windows Phone diperkenalkan kontrol ListPicker. Contoh dari kontrol ini adalah list accent color dan format tanggal pada aplikasi setting di emulator.

image image

Namun ternyata hingga rilis versi RTM, kontrol tersebut masih belum terdapat pada kontrol standar. Anda harus implementasi sendiri. Kabar baiknya dengan rilisnya Silverlight Toolkit for Windows Phone November update : (http://silverlight.codeplex.com/releases/view/55034) sekarang kita dapat menggunakan kontrol tersebut dalam aplikasi Windows Phone kita.

Bersamaan dengan rilisnya kontrol tersebut, terdapat beberapa kontrol lain seperti AutoCompleteBox, LongListSelector dan PageTransitions serta komponen yang telah ada pada versi sebelumnya seperti GestureService, ContextMenu, DatePicker, TimePicker dan WrapPanel.

Pada contoh dibawah ini akan coba dibandingkan penggunaan ComboBox biasa dengan ListPicker.

   1: <StackPanel x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">

   2:            <ComboBox Width="200">

   3:                <sys:String>Pekanbaru</sys:String>

   4:                <sys:String>Bandung</sys:String>

   5:                <sys:String>Jakarta</sys:String>

   6:            </ComboBox>

   7:            <tookit:ListPicker Header="location">

   8:                <sys:String>Pekanbaru</sys:String>

   9:                <sys:String>Bandung</sys:String>

  10:                <sys:String>Jakarta</sys:String>

  11:            </tookit:ListPicker>

  12:        </StackPanel>

Jika kita run aplikasi maka terlihat perbedaan dari kedua kontrol tersebut. ListPicker cukup responsif ketika mendapatkan masukan.

image

ListPicker memiliki fitur untuk menampilkan daftar pilihan pada layar utama. Mungkin state tersebut dapat dianggap ketika fokus utama berada pada kontrol tersebut. Untuk melakukannya kita perlu mendefinisikan FullMode dan melakukan beberapa pengaturan.

   1: <tookit:ListPicker ItemsSource="{Binding}" Header="language" FullModeHeader="LANGUAGE" CacheMode="BitmapCache" >

   2:                <tookit:ListPicker.ItemTemplate>

   3:                    <DataTemplate>

   4:                        <StackPanel Orientation="Horizontal">

   5:                            <TextBlock MinWidth="30" Text="{Binding Key}"></TextBlock>

   6:                            <TextBlock Margin="10,0,0,0" Text="{Binding Value}"></TextBlock>

   7:                        </StackPanel>

   8:                    </DataTemplate>

   9:                </tookit:ListPicker.ItemTemplate>

  10:                <tookit:ListPicker.FullModeItemTemplate>

  11:                    <DataTemplate>

  12:                        <StackPanel Orientation="Horizontal">

  13:                            <TextBlock Text="{Binding Value}"  FontSize="43" FontFamily="{StaticResource PhoneFontFamilyLight}"/>

  14:                        </StackPanel>

  15:                    </DataTemplate>

  16:                </tookit:ListPicker.FullModeItemTemplate>

  17:            </tookit:ListPicker>

Yang baru saja kita lakukan adalah mendefinisikan ItemTemplate dari ListPicker, atau dengan kata lain mendefinisikan bagaimana menyajikan data item jika ada pada mode FullMode. Untuk contoh implementasi dapat menggunakan KeyValuePair .

Mode biasa

image

FullMode

image

Kontrol-kontrol yang tersedia pada Silverlight toolkit benar-benar dapat membantu kita untuk mengembangkan aplikasi tanpa perlu implementasi kontrol-kontrol yang berguna seperti listpicker,datetime picker dan sebagainya.

http://cid-3543a916eed05fb8.office.live.com/embedicon.aspx/Code/ListPickerApps.zip

Navigasi Pada Windows Phone

Navigasi pada Windows Phone menggunakan model navigasi yang diperkenalkan pertama kali pada Silverlight 3 (http://www.silverlight.net/learn/videos/silverlight-videos/navigation-framework/). Terdapat dua elemen penting yaitu Frame dan Page.


Frame,terintegrasi dengan keseluruhan tampilan aplikasi pada Windows Phone dan hanya satu frame yang boleh digunakan sepanjang aplikasi. Beberapa karakteristik yang berhubungan dengan frame adalah properti yang dapat digunakan (full screen, orientasi), dapat mengekspose area halaman yang berada di dalamnya dan menyediakan lokasi yang disediakan untuk system tray dan application bar. System tray merupakan suatu area yang menampilkan informasi status dari keadaan sistem, seperti baterai , sinyal dan lain-lain. Sementara application bar menyediakan tempat untuk suatu task yang paling sering digunakan.

Page,sebuah page akan mengisi seluruh bagian isi dari sebuah frame. Karakteristik utama dari sebuah page adalah mengandung sebuah title, dan dapat menampilkan application bar secara spesifik pada halaman tertentu.


Untuk melakukan navigasi dapat memanfaatkan sepenuhnya kelas NavigationService . Kelas ini bersifat static, dan cukup dengan memberikan halaman yang dituju sebagai parameter. Sebagai contoh dibawah ini telah dibuat terlebih dahulu dua buah halaman, dan kita akan melakukan navigasi ketika tombol di tekan.


   1: private void button1_Click(object sender, RoutedEventArgs e)

   2:         {

   3:             NavigationService.Navigate(new Uri("/SecondPage.xaml",UriKind.Relative));

   4:         }

Selanjutnya, terkadang kita membutuhkan passing parameter ketika melakukan navigasi dari satu halaman ke halaman lainnya. Apabila data yang ingin di-share cukup besar sebaiknya variabel tersebut ditempatkan di App resources namun jika cukup kecil misalnya untuk mengirimkan id dari suatu produk untuk keperluan retrieve produk detail pada halaman selanjutnya, query string bisa dijadikan alternatif yang baik.

Konsep dari query string persis sama dengan method GET saat kita coding di PHP. Yang perlu dilakukan adalah melekatkan pasangan key dan value pada saat berpindah dari satu halaman ke halaman lainnya. Pada contoh dibawah dilempar sebuah nilai dengan key msg dan value title dari page title.

   1: private void button1_Click(object sender, RoutedEventArgs e)

   2:        {

   3:            NavigationService.Navigate(new Uri("/SecondPage.xaml?msg="+this.PageTitle.Text,UriKind.Relative));

   4:        }

Selanjutnya pada halaman yang dituju, kita perlu meng-override method OnNavigatedTo.Method ini adalah method yang dieksekusi ketika halaman berpindah dari satu ke yang lainnya. Lakukan retrieve value yang diperlukan lalu proses sesuai dengan keinginan.

   1: protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)

   2:        {

   3:            base.OnNavigatedTo(e);

   4:

   5:            string msg = "";

   6:

   7:            if (NavigationContext.QueryString.TryGetValue("msg", out msg))

   8:

   9:                textBlock1.Text = "Dari halaman"+msg;

  10:        }

Jika Anda membuat project dengan template DataBound maka kode ini segera langsung anda dapatkan karena skenario template tersebut adalah untuk membangun aplikasi master/detail dimana terdapat kebutuhan menampilkan data-data detail berdasarkan daftar pada halaman master.

Contoh program kecilnya dapat diunduh disini.
http://cid-3543a916eed05fb8.office.live.com/embedicon.aspx/Code/NavigationApps.zip