<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ksetyadi&#039;s [B]Log</title>
	<atom:link href="http://blog.ksetyadi.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.ksetyadi.com</link>
	<description>Defining life as if it were (programming) languages</description>
	<lastBuildDate>Wed, 06 Mar 2013 10:01:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Playing with Audio in HTML5</title>
		<link>http://blog.ksetyadi.com/2013/03/playing-with-audio-in-html5/</link>
		<comments>http://blog.ksetyadi.com/2013/03/playing-with-audio-in-html5/#comments</comments>
		<pubDate>Sat, 02 Mar 2013 20:47:27 +0000</pubDate>
		<dc:creator>ksetyadi</dc:creator>
				<category><![CDATA[Codes]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[getusermedia]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript api]]></category>
		<category><![CDATA[mediastream]]></category>
		<category><![CDATA[permission]]></category>

		<guid isPermaLink="false">http://blog.ksetyadi.com/?p=454</guid>
		<description><![CDATA[Recently, we had a little challenge on how to record our own voice using microphone with a very minimum effort from the user and store it in the cloud. What I mean with a minimum effort is that you don&#8217;t (&#8230;)</p><p><a href="http://blog.ksetyadi.com/2013/03/playing-with-audio-in-html5/">Read the rest of this entry &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>Recently, we had a little challenge on how to record our own voice using microphone with a very minimum effort from the user and store it in the cloud. What I mean with a minimum effort is that you don&#8217;t have to record your voice using a very great audio processing software such as <a title="GarageBand" href="http://www.apple.com/ilife/garageband/" target="_blank">GarageBand</a> or <a title="Audacity" href="http://audacity.sourceforge.net/" target="_blank">Audacity</a> and then manually uploading them to the cloud using <strong>ftp</strong> or <strong>scp</strong> (Windows people, please proceed and read the UNIX/Linux manual).</p>
<p>I know those steps are simple but I think we can <a title="Automation" href="http://en.wikipedia.org/wiki/Automation" target="_blank">handover the uploading process to the computer and let that machine do that for us</a>. After all, our wish is their command. So I remember about the audio specification in HTML5 and decide to play with it. (By the way, I&#8217;m thinking of using Flash too, but I think you&#8217;ve already knew my answer. In fact, at the end of this article, I still leverage Flash ability to get the things done). <span id="more-454"></span></p>
<p>First, I need to know how the browser receive audio input via microphone. It turns out that HTML5 introduces a new API, <code>navigator.getUserMedia()</code>. Please beware that most browsers has its own implementation on this, e.g. you will get <code>navigator.webkitGetUserMedia()</code> or <code>navigator.mozGetUserMedia()</code> depends on the browsers. I&#8217;m sure you know which implementation for which browser.</p>
<p>It&#8217;s better to check whether the browser you or other user&#8217;s use support this new API. If the answer was no then you can fallback to anything you wanted on how to handle this kind of situation, including Flash (ha!). But if the answer was yes, congratulations. The journey to the awesomeness of HTML5 is now begin.</p>
<p>Your checking routine will look something like this:</p>
<p><script src="https://gist.github.com/ksetyadi/5073093.js"></script> or this:   <script src="https://gist.github.com/ksetyadi/5073100.js"></script></p>
<p>Next, you have to explicitly request the browser to grant access to the specific hardware, in this case, microphone. You can easily request this permission using a parameter in getUserMedia using <code>{audio: true}</code>. You can also define the video using <code>{video: true}</code>, so if you really want to access both of them, just write <code>{audio: true, video: true}</code>.</p>
<p><script src="https://gist.github.com/ksetyadi/5073195.js"></script></p>
<p>To give the permission, each browsers may implement a different set of rules. Chrome may show a popup on the top and ask whether you give the application to access your hardware (in my case, microphone). Firefox is a little bit confusing by setting the permission throughout the <em><strong>about:config</strong></em> and then change the default value of <em><strong>media.navigator.enabled</strong></em> from <strong>false</strong> to <strong>true</strong>. Others may vary so please read their documentation first.</p>
<p>After you&#8217;ve got the permission, the browser should be ready to record user&#8217;s voice now. The source property of the audio object you created from <code>&lt;audio&gt;</code> should be filled with the object data called <code>MediaStream</code>.</p>
<p>At this point, you can start to record the user&#8217;s voice using only browser and the magic of Javascript. Interesting, huh? ;)</p>
<p>Now the last part is sending the voice data to the server and this is my conclusion:</p>
<p>These steps were not complete as my final goal was to be able to send the voice data to the server and it turns out that I couldn&#8217;t find anywhere in the specification or near to that on how to use this voice data to further process it to the next level. If one of you have found the way to do it (or I might possibly missing one of those APIs), please share your finding in the <del>column</del> comment section and I will update my post.</p>
<p>Flash to the rescue!</p>
<p><em>If you want to know the sample and full source codes, you can visit <a title="Audio HTML5" href="http://ksetyadi.com/labs/audio-html5/" target="_blank">http://ksetyadi.com/labs/audio-html5</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ksetyadi.com/2013/03/playing-with-audio-in-html5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2013, Year of Evolved Technology</title>
		<link>http://blog.ksetyadi.com/2013/01/2013-year-of-evolved-technology/</link>
		<comments>http://blog.ksetyadi.com/2013/01/2013-year-of-evolved-technology/#comments</comments>
		<pubDate>Sat, 05 Jan 2013 20:11:30 +0000</pubDate>
		<dc:creator>ksetyadi</dc:creator>
				<category><![CDATA[Everyday Life]]></category>
		<category><![CDATA[2013]]></category>
		<category><![CDATA[Internet of Things]]></category>
		<category><![CDATA[Internet TV]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[Personal Payment System]]></category>
		<category><![CDATA[predictions]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://blog.ksetyadi.com/?p=422</guid>
		<description><![CDATA[You guess, yet another predictions for this year. 2013. 2012 was a very entertaining year if we talked about mobile. Android and iPhone are always side by side, one overtook another, to lead the market with their innovation and simplicity (&#8230;)</p><p><a href="http://blog.ksetyadi.com/2013/01/2013-year-of-evolved-technology/">Read the rest of this entry &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>You guess, yet another predictions for this year. 2013.</p>
<p>2012 was a very entertaining year if we talked about mobile. Android and iPhone are always side by side, one overtook another, to lead the market with their innovation and simplicity (and a &#8216;little&#8217; fight on patent litigation). Nokia is not the number one anymore but they&#8217;re struggling to get the crown back by teaming up with Microsoft building Windows Phone on their Lumia series. BlackBerry considered no luck and very slow in launching their new shiny OS.</p>
<p>Almost every spotlight goes to mobile.</p>
<p>2013 is coming and this is the year where mobile become more and more adapted. A few players in mobile OS have been declaring them self to become &#8216;the next big thing&#8217; in mobile field. <a title="Ubuntu phone" href="http://www.ubuntu.com/devices/phone" target="_blank">Ubuntu</a>, <a title="Tizen" href="https://www.tizen.org/" target="_blank">Tizen</a>, <a title="Firefox OS" href="http://www.mozilla.org/en-US/firefoxos/" target="_blank">Firefox OS</a> and a few customized-based-on-Android devices ranging  from automobile industry to home automation expected to be exists no longer from now.</p>
<p>So, what is it all about in 2013? For me, it&#8217;s the year full of customized technology. It&#8217;s the year where mobile get the most attention and biggest penetration all over the world. Hence, customized technology will be seen as a new &#8216;toy&#8217; and startups will move to this area, sooner or later.</p>
<p>These are 4 things that, in my prediction, will be the superstar (for one) and upcoming superstar (for others) of 2013:<span id="more-422"></span></p>
<p><strong>1. (Still) Mobile</strong></p>
<p>iPhone, Android, Nokia and BlackBerry will continue the long-lasting battle until they have settled on each other or they conquered the market. The gap between the first group of player (Android and iPhone) and the second group (BlackBerry and Nokia) is become larger. Even though iPhone is still the best device you can ever get, Android has been conquered the market above half of the total market in the world. I don&#8217;t know about BlackBerry or Nokia, but do you still have them in your pocket? I doubt it. I&#8217;m not sure about BlackBerry (as I never own it) but I do feel that <a title="Windows Phone 8" href="http://www.windowsphone.com/en-us/how-to/wp8/start/whats-new-in-windows-phone" target="_blank">Windows Phone 8</a> is a decent one. Don&#8217;t forget to watch out for the new player, including Tizen (Samsung will launch Tizen-based phone this year), Firefox OS and Ubuntu (but they announced that it will be released sometime in 2014. That&#8217;s a year from now).</p>
<p><strong>2. Internet of Things</strong></p>
<p>Finally, I do believe that the Internet of Things will see significant growth this year. Mobile devices are almost everywhere and we always find a new way how to leverage this kind of growth. The Internet of Things is one of the innovative concept I really liked and it will somehow one of the big result we created technology. This year will be the good start to think and do something about it. I personally have a plan to implement this, one step at a time, to create the Internet of Things around my own house.</p>
<p><strong>3. Re-invented TV</strong></p>
<p>Many people think that TV is already dead. For me, it&#8217;s not. It&#8217;s in the state where it needs to be re-booted and touched by innovation. TV is still one of the best source of entertainment, education and information. But the use of TV is the same as we knew it was 20 or 30 years ago. No innovation. This &#8216;device&#8217; has been sitting in almost every house around the world. So we don&#8217;t need to kill it. We need something innovative to make TV enjoyable and fun again. Re-invented TV model such as Yahoo TV, Google TV and Apple TV are one of many ways to use it as a platform. I&#8217;m sure this year it&#8217;s gonna be exciting again.</p>
<p><strong>4. Personal Payment System</strong></p>
<p>E-commerce has been big for the past years and I see no stopping in growth. Many people switch their way buying things from going to the stores to just sit and order it using the online shop through the Internet. Everyone should have been using this kind of services at least once. No cash involved. Credit cards are become popular (or even standard) in terms of buying online. Payment gateways are competing to make those online shop accepted credit cards without pain. I see this as a many lines converge to one point: everyone will have their own payment system. If you don&#8217;t believe this, ask <a title="Square" href="https://squareup.com/" target="_blank">Square</a>.</p>
<p>I know it won&#8217;t be all true but I believe, based on what I&#8217;ve already knew so far, these evolved technologies will take a significant part in 2013. You may or may not agree with me as everybody has their own arguments of what would come in the next coming year. If you don&#8217;t mind, you can share your thought here.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ksetyadi.com/2013/01/2013-year-of-evolved-technology/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Happy New Year!</title>
		<link>http://blog.ksetyadi.com/2013/01/happy-new-year/</link>
		<comments>http://blog.ksetyadi.com/2013/01/happy-new-year/#comments</comments>
		<pubDate>Fri, 04 Jan 2013 13:29:14 +0000</pubDate>
		<dc:creator>ksetyadi</dc:creator>
				<category><![CDATA[Everyday Life]]></category>
		<category><![CDATA[happy new year]]></category>
		<category><![CDATA[new year 2013]]></category>

		<guid isPermaLink="false">http://blog.ksetyadi.com/?p=411</guid>
		<description><![CDATA[I know, it&#8217;s been the 4th day of January 2013 and I&#8217;m just too late just to say &#8220;Happy New Year&#8221; but before you trash me with any kind of words, let me defend my self. I didn&#8217;t remember the (&#8230;)</p><p><a href="http://blog.ksetyadi.com/2013/01/happy-new-year/">Read the rest of this entry &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>I know, it&#8217;s been the 4th day of January 2013 and I&#8217;m just too late just to say &#8220;Happy New Year&#8221; but before you trash me with any kind of words, let me defend my self.</p>
<p>I didn&#8217;t remember the last time I updated my blog. <a title="The Distance using Haversine Formula" href="http://blog.ksetyadi.com/2012/09/the-distance-using-haversine-formula/" target="_blank">I just saw it in</a> and it said September 30, 2012. I felt it was a year ago since then, but I was wrong.</p>
<p>So, what&#8217;s up? (A few people who either subscribed or visited my blog regularly asked me what happened. Thanks guys, you&#8217;ve made me write again).<span id="more-411"></span></p>
<p>Well, I&#8217;ve been busy (sounds cliche, right?) doing my role at U Connectivity Services and I&#8217;m kinda excited with something I&#8217;m working on. I&#8217;ve been working through many technologies and across platforms and one of the best thing I really really enjoying is connecting and partnering with great team and people out there. It really is a priceless experience.</p>
<p>But hey, you might asked what kind of technologies and platforms I&#8217;m working on (and get excited with). To be honest, web and mobile development, which is one of the biggest part of my past experience, is just only a small part of what I&#8217;m working on right now.</p>
<p>I have a chance to work on cloud platform and understand how do they work. I have a chance to work on some telecommunication technology such as IVR. I also have a chance to learn more about speech recognition and how a machine can &#8220;hear&#8221; the tone (I learned from the code itself, thanks to <a title="Performous" href="https://github.com/performous/performous" target="_blank">Performous</a>). I do also have a chance to be involved in one ambitious project that the only objective is to change the way people communicate with others (not necessarily brands but sure, brands can take the advantage of it) especially when they&#8217;re outside. I can&#8217;t tell you what it is but it will surely &#8211;hopefully&#8211; come in the next few months.</p>
<p>Lots of things bigger than my past are coming in and I&#8217;m ready to take part of it and all of these are the sums of advanced technologies that some are not yet present in Indonesia (but it already exists outside of this country. Hoho, now you&#8217;re trying to guess what it is).</p>
<p>So, here I am, still love doing nifty stuff with my own code and creating stuff using all possible devices &#8211;or you might say, Things (Android, iPhone, Mac, even television and LED monitors) with additional managing tasks targeting some specific objectives. My spirit to work is now a little bit enhanced. I used to think that solving problems was enough (as a software engineer). It turns out I need more than that and I arrived with one simple yet beautiful mantra: &#8220;Deliver, deliver and deliver.&#8221;</p>
<p>Details will be elaborate as I write more and more posts in this blog. Happy New Year 2013, everyone!</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ksetyadi.com/2013/01/happy-new-year/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Distance using Haversine Formula</title>
		<link>http://blog.ksetyadi.com/2012/09/the-distance-using-haversine-formula/</link>
		<comments>http://blog.ksetyadi.com/2012/09/the-distance-using-haversine-formula/#comments</comments>
		<pubDate>Sat, 29 Sep 2012 19:29:56 +0000</pubDate>
		<dc:creator>ksetyadi</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[geocode]]></category>
		<category><![CDATA[great-circle distance]]></category>
		<category><![CDATA[haversine]]></category>

		<guid isPermaLink="false">http://blog.ksetyadi.com/?p=371</guid>
		<description><![CDATA[Over the last weekend, there&#8217;s a simple question running on my head: &#8220;How can I compute the distance between two points on the earth?&#8221; I&#8217;ve already knew, since in the university, how to compute the distance between two points in (&#8230;)</p><p><a href="http://blog.ksetyadi.com/2012/09/the-distance-using-haversine-formula/">Read the rest of this entry &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>Over the last weekend, there&#8217;s a simple question running on my head:</p>
<p>&#8220;How can I compute the distance between two points on the earth?&#8221;</p>
<p>I&#8217;ve already knew, since in the university, <a title="Distance between two points" href="http://en.wikipedia.org/wiki/Distance" target="_blank">how to compute the distance</a> between two points in the plane. But I was wondering whether the formula was also work for the non-plane ellipsoidal shape like earth. So I&#8217;ve done a little search on the Internet and I found that the formula was a little bit different.</p>
<p>I&#8217;ve come across this <a title="Great-circle distance" href="http://en.wikipedia.org/wiki/Great-circle_distance" target="_blank">great-circle distance</a> and <a title="Haversine formula" href="http://en.wikipedia.org/wiki/Haversine_formula" target="_blank">Haversine formula</a>. Never heard about them before but the basic of the both, which is called <a title="Trigonometry" href="http://en.wikipedia.org/wiki/Trigonometry" target="_blank">trigonometry</a>, was once familiar. So I did a little reading on these subjects (but I&#8217;m not going to proof the formula; hello, mathematicians *smile*) and figured out how I can make a better use of it.<span id="more-371"></span></p>
<p>To make everything simple, I&#8217;ve used <a title="Google Geocode API" href="https://developers.google.com/maps/documentation/geocoding/" target="_blank">Google Geocode API</a> to translate addresses to latitude and longitude points which means to get the correct result, you should always use the full address (along with the country) when possible.</p>
<p><script src="https://gist.github.com/3804953.js?file=gistfile1.py"></script></p>
<p>To see the full codes, please check <a title="Haversine Formula" href="https://github.com/ksetyadi/haversine-formula" target="_blank">my github</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ksetyadi.com/2012/09/the-distance-using-haversine-formula/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>First Official Day!</title>
		<link>http://blog.ksetyadi.com/2012/09/first-official-day/</link>
		<comments>http://blog.ksetyadi.com/2012/09/first-official-day/#comments</comments>
		<pubDate>Mon, 10 Sep 2012 12:05:19 +0000</pubDate>
		<dc:creator>ksetyadi</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[cto]]></category>
		<category><![CDATA[ucs]]></category>

		<guid isPermaLink="false">http://blog.ksetyadi.com/?p=367</guid>
		<description><![CDATA[I&#8217;m really excited to start my new role at U Connectivity Services as their new Chief Technology Officer. So many things to be read and so many things to be learned but these things are only make me feel more (&#8230;)</p><p><a href="http://blog.ksetyadi.com/2012/09/first-official-day/">Read the rest of this entry &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m really excited to start my new role at U Connectivity Services as their new Chief Technology Officer. So many things to be read and so many things to be learned but these things are only make me feel more challenged.</p>
<p>I&#8217;m bursting with excitement.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ksetyadi.com/2012/09/first-official-day/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Challenges Will Always Be Bigger than Us</title>
		<link>http://blog.ksetyadi.com/2012/09/challenges-will-always-be-bigger-than-us/</link>
		<comments>http://blog.ksetyadi.com/2012/09/challenges-will-always-be-bigger-than-us/#comments</comments>
		<pubDate>Sat, 08 Sep 2012 18:47:15 +0000</pubDate>
		<dc:creator>ksetyadi</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.ksetyadi.com/?p=334</guid>
		<description><![CDATA[I planned to move for the next (big) challenges and yesterday was my last day in the current employment. If some of you were questioning where was I in the last couple of months, I bet you&#8217;ve already knew it. (&#8230;)</p><p><a href="http://blog.ksetyadi.com/2012/09/challenges-will-always-be-bigger-than-us/">Read the rest of this entry &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>I planned to move for the next (big) challenges and yesterday was my last day in the current employment. If some of you were questioning where was I in the last couple of months, I bet you&#8217;ve already knew it. Yes, I have worked at Lazada Indonesia (one of Rocket Internet&#8217;s fastest growing startup) and only took 3-months probation there before I decided to move on.</p>
<p>Here&#8217;s my last email to all employees regarding my resignation:<span id="more-334"></span></p>
<blockquote><p>Hi all Lazadans,</p>
<p>it&#8217;s been a great ride for me to be in one ship with you all. Although most of you were never talked to me (because mostly I&#8217;m always be a shy person *ahem*), at least we saw each other on the way in and out of this building. This is my last day of my journey with Lazada&#8217;s ship and as every [other] journeys, I have to continue to another journeys.</p>
<p>I&#8217;m very delighted to be with all of you this several months and saw a fantastic growth resulted by extraordinary teams we have here. If this ship always keep the pace and speed like this, I&#8217;m pretty sure this ship will finally overtake all e-commerce ship in Indonesia which has no team like I saw in this Lazada ship.</p>
<p>As every wise man said (sure, I always want to be a wise man, but I know it&#8217;s hard! :D), this is not a goodbye nor sayonara. Instead, this is more like a &#8220;see you around&#8221; because literally, I&#8217;m still around this area afterwards.</p>
<p>So if we&#8217;re met someday, don&#8217;t be shy to say hello and talk to me (of course, if I have borrowed your money and I forgot to pay, you must say &#8220;hello&#8221; and &#8220;talk about debt&#8221;, seriously).</p>
<p>So, thanks for everything, guys! You&#8217;ve worked very hard to achieve something great and I&#8217;m sure you&#8217;ll achieve it in no time! Just make sure that if you have a party regarding your achievements, don&#8217;t forget to invite me using my personal contact below:</p>
<p><a href="mailto:kristiono.setyadi@gmail.com" target="_blank">kristiono.setyadi@gmail.com</a></p>
<p>See you around!</p>
<p>PS: There will be pizzas around IT division table. First come, first serve! ;)<br />
Best Regards,</p>
<p>Kristiono Setyadi</p></blockquote>
<p>There you are. Despite of many pros and cons, I&#8217;m really happy to work on challenges and communicate with so many people there. That&#8217;s the whole point of being a developer: <strong>happy with what you&#8217;re working on and who you&#8217;re working with</strong>.</p>
<div id="attachment_353" class="wp-caption alignleft" style="width: 508px"><a href="http://blog.ksetyadi.com/wp-content/uploads/2012/09/photo-1.jpg"><img class="size-full wp-image-353" title="photo 1" src="http://blog.ksetyadi.com/wp-content/uploads/2012/09/photo-1.jpg" alt="" width="498" height="371" /></a><p class="wp-caption-text">Farewell Party</p></div>
<p>&nbsp;</p>
<div id="attachment_354" class="wp-caption alignleft" style="width: 510px"><a href="http://blog.ksetyadi.com/wp-content/uploads/2012/09/photo-2.jpg"><img class="size-large wp-image-354" title="photo 2" src="http://blog.ksetyadi.com/wp-content/uploads/2012/09/photo-2-1024x764.jpg" alt="" width="500" height="373" /></a><p class="wp-caption-text">Farewell Party</p></div>
<p>Thanks <a title="Deci Putra Laksamana" href="http://www.facebook.com/deci.laksamana" target="_blank">Deci</a> for taking the pictures and thanks to <a title="Marsha Vidya" href="https://twitter.com/marshathata" target="_blank">Marsha Vidya</a> for the camera. Pictures indeed worth a thousand words.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ksetyadi.com/2012/09/challenges-will-always-be-bigger-than-us/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Signing Off from Koprol</title>
		<link>http://blog.ksetyadi.com/2012/08/signing-off-from-koprol/</link>
		<comments>http://blog.ksetyadi.com/2012/08/signing-off-from-koprol/#comments</comments>
		<pubDate>Mon, 27 Aug 2012 18:13:43 +0000</pubDate>
		<dc:creator>ksetyadi</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[koprol]]></category>
		<category><![CDATA[yahoo]]></category>

		<guid isPermaLink="false">http://blog.ksetyadi.com/?p=321</guid>
		<description><![CDATA[It&#8217;s been almost two years after I joined and &#8220;signed-up&#8221; with Yahoo! and assigned as one of the Koprol developers. I never thought that it would ended up this way but I believed that everything was happened for a reason. (&#8230;)</p><p><a href="http://blog.ksetyadi.com/2012/08/signing-off-from-koprol/">Read the rest of this entry &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been almost two years after I joined and &#8220;signed-up&#8221; with Yahoo! and assigned as one of the Koprol developers. I never thought that it would <a title="Thanks Yahoo! Koprol, Challenges Ahead" href="http://blog.ksetyadi.com/2012/04/thanks-yahoo-koprol-challenges-ahead/" target="_blank">ended up this way</a> but I believed that everything was happened for a reason. The truth is, there are lots of reasons.</p>
<p>I am a proud developer when the product I&#8217;ve contributed in was used by almost two millions of people, mostly young people. I also proud that my fellow developers always embrace new technologies, new possibilities and new techniques along the way we built the product. I am a proud developer when many users <a href="http://sikodok.com/2011/09/30/koprol-for-android-v-2/" target="_blank">gave us feedback about how the Koprol for Android app should behave</a>.<span id="more-321"></span></p>
<p>I am still a proud developer when everything was <a href="http://finance.yahoo.com/news/yahoo-discontinue-yahoo-koprol-august-102211881.html" target="_blank">stopped</a> because you have to cross some path in the middle of the road. Not to be pushed away but to find a new way and still kept the passion.</p>
<p>Today, August 28 2012, our mark in this world will be closed down. Everyone who are willing to export their data should be doing it until midnight August 27 (by the time you&#8217;re reading this, it&#8217;s probably too late). Those who have thousands of memories are prompted to kept their data downloaded. If they don&#8217;t do that, everything, every single thing from your photos with friends, meetup, status updated and even your wedding party photos, will be destroyed in just a few seconds.</p>
<p>This is probably one of the saddest day in my life where the product you&#8217;re attached to very much is no longer available, exists, or even alive. This is the most important day to learn things, when something goes wrong but you can&#8217;t fix things up, never blame it to somebody (or, some products). Instead, learn from mistakes and keep everything close so you know how and what to do in your next destination. This is unarguably the darkest day in Koprol (and Koprol communities) history. But the dark almost certainly followed by the light.</p>
<p>IceHouse and BaritoLabs, you&#8217;re the most suitable team to bring the light on. Koprol communities are waiting for your next step. You have the privileges to do so :)</p>
<p><a href="http://blog.ksetyadi.com/wp-content/uploads/2012/08/Screen-Shot-2012-08-27-at-11.47.03-PM.png"><img class="alignleft size-full wp-image-326" title="Signing off from Koprol" src="http://blog.ksetyadi.com/wp-content/uploads/2012/08/Screen-Shot-2012-08-27-at-11.47.03-PM.png" alt="" width="530" height="342" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ksetyadi.com/2012/08/signing-off-from-koprol/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>HTTP Methods Every Web Developer Must Know</title>
		<link>http://blog.ksetyadi.com/2012/08/http-method-every-web-developer-must-know/</link>
		<comments>http://blog.ksetyadi.com/2012/08/http-method-every-web-developer-must-know/#comments</comments>
		<pubDate>Sun, 19 Aug 2012 19:08:30 +0000</pubDate>
		<dc:creator>ksetyadi</dc:creator>
				<category><![CDATA[Codes]]></category>
		<category><![CDATA[connect]]></category>
		<category><![CDATA[delete]]></category>
		<category><![CDATA[get]]></category>
		<category><![CDATA[head]]></category>
		<category><![CDATA[http method]]></category>
		<category><![CDATA[options]]></category>
		<category><![CDATA[patch]]></category>
		<category><![CDATA[post]]></category>
		<category><![CDATA[put]]></category>
		<category><![CDATA[trace]]></category>
		<category><![CDATA[w3c]]></category>

		<guid isPermaLink="false">http://blog.ksetyadi.com/?p=291</guid>
		<description><![CDATA[I&#8217;ve been programming web for years and I saw a lot of so-called web programmers doing web programming in their own preferred language. Most of them I&#8217;ve known were using PHP while a small group of them use Ruby and (&#8230;)</p><p><a href="http://blog.ksetyadi.com/2012/08/http-method-every-web-developer-must-know/">Read the rest of this entry &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been programming web for years and I saw a lot of so-called web programmers doing web programming in their own preferred language. Most of them I&#8217;ve known were using <a title="PHP" href="http://www.php.net/" target="_blank">PHP</a> while a small group of them use <a title="Ruby" href="http://www.ruby-lang.org/en/" target="_blank">Ruby</a> and <a title="Python" href="http://www.python.org/" target="_blank">Python</a>. But the languages doesn&#8217;t make any differences when it comes to <a title="HTTP Method" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html" target="_blank">HTTP Method</a>.</p>
<p>A few weeks ago, I&#8217;ve worked with someone who really has expertise in PHP and has doing PHP for 6 years, give or take. I really love working with him as his knowledge about PHP overtakes mine and I do love to learn from him. One thing that I missed about was when he was using the wrong method for particular HTTP requests. He used GET where he should used POST, recklessly using (again!) GET instead of DELETE. But when I asked him about whether he was understand in what he&#8217;s doing, he answered, &#8220;it works. From the first day I learn PHP, it still works.&#8221;</p>
<p>I don&#8217;t want to judge him and throw all the mistakes on everything he read but this is dangerous as he will, in the future, be working with a beginner programmer in pair-programming. He could mistakenly put the wrong concepts and mix things up between GET, POST, PUT and DELETE (and another not-so-famous method in HTTP).</p>
<p>Trying so hard to remember all HTTP methods (and all their purposes) is just as hard as <a href="https://blogs.oracle.com/bloggerkedar/entry/java_development_without_an_ide" target="_blank">writing &#8220;Hello World&#8221; in Java without using an IDE</a> for beginners. If you&#8217;re a web veteran and can spell all HTTP methods without thinking then you should not wasting your time reading this. Go get your things done. To those who are still confused and don&#8217;t care before about those methods, go read ahead.<span id="more-291"></span></p>
<h2>The Four (Plus One) Elements</h2>
<p>Two of them are probably the most frequently used by you and two (plus one) of them are rarely use even though most of programmers are aware of their existence.</p>
<p><strong>GET</strong></p>
<p>&#8220;I get something!&#8221;</p>
<p>&#8220;Get the data and back off!&#8221;</p>
<p>As you might know, GET should always only getting the data from the specified resources and <em>should not</em> create any action other than retrieval. If you want to save the data to database, modify files, etc., do not use GET. This is important as GET (and HEAD, see below) is considered &#8220;safe&#8221;.</p>
<p><strong>HEAD</strong></p>
<p>We can say that this is the light version of GET because HEAD is actually the same as GET but ignoring the response body. When do we use HEAD instead of GET? Testing links, check for modifications, etc., that is for something that you didn&#8217;t need to read the response body and just okay with the response header.</p>
<p><strong>POST</strong></p>
<p>If GET retrieved the data then POST is a method to store data, create new resources, etc. <em>POST to GET is like &#8220;write&#8221; to &#8220;read&#8221;</em>. Pretty simple. (You might be wondering why I simplify things and not telling the truth about the vary responses, whether it&#8217;s <em>200</em>, <em>201</em>, or <em>204</em>. If you&#8217;re really curious about those response codes, please refer to <a title="Status Code Definitions" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html" target="_blank">RFC2616: HTTP Status Code Definitions</a>. ).</p>
<p><strong>PUT</strong></p>
<p>PUT, simply put, is practically the same with POST. The difference between PUT and POST is in its behavior. <a title="PUT vs POST" href="http://stackoverflow.com/questions/630453/put-vs-post-in-rest/630475#630475" target="_blank">Read this explanation</a> for a brief and easy-to-understand answer.</p>
<p><strong>DELETE</strong></p>
<p>As the name suggests, DELETE is the &#8220;opposite&#8221; of PUT. Again, <em>DELETE to PUT is like &#8220;erase&#8221; to &#8220;write&#8221;</em>. No big deal. (I know some people who use POST to delete or destroy the data/resource but that should not happened).</p>
<p>&#8220;<em>So if PUT and DELETE are identical with POST, why we would do something using PUT and DELETE instead of POST?</em>&#8220;, you asked.</p>
<p>PUT and DELETE is <a title="Idempotency" href="http://en.wikipedia.org/wiki/Idempotence" target="_blank">idempotency</a>. I repeat, idempotency. No matter how much you use PUT or DELETE, if you do that more than one within the same resource, it will be counted as one. This rule is not applicable for POST as everytime you do the POST, the (same) data will be stored/created over and over again. <a href="http://www.artima.com/lejava/articles/why_put_and_delete.html" target="_blank">Elliotte Rusty Harold explained about this in an interview six years ago</a>.</p>
<p>There&#8217;s more than this. You can see another three methods: <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html" target="_blank">TRACE</a>, <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html" target="_blank">CONNECT</a>, and <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html" target="_blank">OPTIONS</a> and the relatively new method: <a title="PATCH" href="http://tools.ietf.org/html/rfc5789" target="_blank">PATCH</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ksetyadi.com/2012/08/http-method-every-web-developer-must-know/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Common Rules in Programming</title>
		<link>http://blog.ksetyadi.com/2012/08/common-rules-in-programming/</link>
		<comments>http://blog.ksetyadi.com/2012/08/common-rules-in-programming/#comments</comments>
		<pubDate>Tue, 31 Jul 2012 19:15:36 +0000</pubDate>
		<dc:creator>ksetyadi</dc:creator>
				<category><![CDATA[Codes]]></category>
		<category><![CDATA[access control]]></category>
		<category><![CDATA[best practice]]></category>
		<category><![CDATA[comments]]></category>
		<category><![CDATA[configurations]]></category>
		<category><![CDATA[constants]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://blog.ksetyadi.com/?p=266</guid>
		<description><![CDATA[Writing code is never been easy. Well, let me re-phrase: Writing readable code is never been easy. Many programmers work on their code alone. They define and write the specification, design the system, write codes and library and write documentation, (&#8230;)</p><p><a href="http://blog.ksetyadi.com/2012/08/common-rules-in-programming/">Read the rest of this entry &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>Writing code is never been easy.</p>
<p>Well, let me re-phrase: Writing readable code is never been easy.</p>
<p>Many programmers work on their code alone. They define and write the specification, design the system, write codes and library and write documentation, all by them self. They never have a problem with version control, never experience a single conflict, and never have to deal with different approach and algorithms. Everything is on their head and they just write it out. No problem.</p>
<p>On the other hand, few programmers (if not many of them) struggling hard to read someone else&#8217;s code trying to understand on what he/she was doing at the time he/she wrote their codes. The later will always have to understand the logic, flow and &#8220;magic&#8221; around their former friend&#8217;s code. This is not an easy task considering every programmers had already have their own style. But still, they need to introduce massive unstructured yet not logic code into their brain.<span id="more-266"></span></p>
<h2>Introducing Best Practice</h2>
<p>Almost every programming languages (if not all) has a thing called &#8220;best practice.&#8221; This kind of discipline will not only avoid you from unnecessary headache because of different variable naming conventions but also saves you time by knowing where particular variable was declared, and so on. Best practice will not guarantee you to a bug-free programming but it reduces illogical branch of &#8220;if-else&#8221; and getting lost in loop inside loop. Best practice will make everyone think as much the same as yours and focusing on the solution instead of understanding what you&#8217;re trying to solve. Best practice is&#8230; a life saver.</p>
<p>So, I decided to share little things (yes, just a little, no big deal) that have made programmers around the world happy and later thank you for not writing such a messy code.</p>
<p><strong>Constants</strong></p>
<p>Should you ever need a variable which is not changing over time (or in many cases just one time), you should use constants. Mathematical and physical constants like Phi, <em>e</em>, G, etc. will not change over time and stay the same for the rest of execution. Constants help you minimize memory usage and also quick-to-find variable defined as constants.</p>
<p>Another good candidates for constants (but also eligible to be defined as configurations, see below) including per page pagination, dev mode and log mode flags, database configuration, and such things like that. Later on, you will realize how much time you have been saved by defining constants as constants.</p>
<p><strong>Configurations</strong></p>
<p>Configurations are just a set of variables, not more and not less. The term &#8216;configuration&#8217; picked because there are some variables that: use a lot, rarely change but can be changed in the middle of execution, point to a specific, you know, configuration in your application, and should be placed in one set whether it&#8217;s a separate file or class. Constants can be made as configurations if it can be changed in the middle of execution. Otherwise, leave it as constants.</p>
<p><strong>Access Control</strong></p>
<p>So many programmers don&#8217;t care about access level modifiers. I mean, they let their methods, any of them, to be public without knowing the consequences. As mentioned in <a title="Java Access Control" href="http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html" target="_blank">this page</a>, you should give your method or member private access first, which means that only method and properties at the same class can only access it. If you need more broaden access, use protected and, as the last resort, public. This way you can protect your specific method or member from the &#8216;outside world&#8217;.</p>
<p><strong>Comments</strong></p>
<p>No matter how you finished your work, you always need to go back once for a while (for fixing bugs or add features, in example). Comments let you remember code snippets, algorithm, sort method, even randomize number you&#8217;ve created before. You will not forgot, six months later, why you choose &#8216;switch&#8217; over &#8216;if-else&#8217;, shift-left over multiplication, and using cookies instead of session. Comments make you focus on what needs to be done, not re-understanding your intention before. This is even a big advantage if you&#8217;re working on a team. Other people will understand your intention when you remove 10 lines of codes and write a new method, instead.</p>
<h2>Conclusions</h2>
<p>I know there&#8217;s a lot of best practice out there regardless programming languages you use. It&#8217;s there. Even though every programming languages has its own &#8216;best practice&#8217;, I&#8217;m sure they share the same thing: to make you and your team productive. If you have another best practice (in general or in your own favorite programming language), let me know by leaving your comments below.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ksetyadi.com/2012/08/common-rules-in-programming/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Thanks Yahoo! Koprol, Challenges Ahead</title>
		<link>http://blog.ksetyadi.com/2012/04/thanks-yahoo-koprol-challenges-ahead/</link>
		<comments>http://blog.ksetyadi.com/2012/04/thanks-yahoo-koprol-challenges-ahead/#comments</comments>
		<pubDate>Sun, 15 Apr 2012 19:38:28 +0000</pubDate>
		<dc:creator>ksetyadi</dc:creator>
				<category><![CDATA[Everyday Life]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[basketball]]></category>
		<category><![CDATA[dream team]]></category>
		<category><![CDATA[foosball]]></category>
		<category><![CDATA[koprol]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[yahoo]]></category>

		<guid isPermaLink="false">http://blog.ksetyadi.com/?p=243</guid>
		<description><![CDATA[It&#8217;s been a great ride for me and one of those important milestones to reach at this time. I joined Yahoo! at October 4th, 2010. Prior to that, I was doing web development for one of the good tech company (&#8230;)</p><p><a href="http://blog.ksetyadi.com/2012/04/thanks-yahoo-koprol-challenges-ahead/">Read the rest of this entry &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a great ride for me and one of those important milestones to reach at this time.</p>
<p>I joined <a title="Yahoo" href="http://yahoo.com" target="_blank">Yahoo!</a> at October 4th, 2010. Prior to that, I was doing web development for one of the good tech company in Bandung, <a title="Voucha" href="http://voucha.co.id/" target="_blank">Voucha</a>. Having a great leader and colleagues were like your family at Voucha, it&#8217;s a tough decision to move on. After a little bit discussion with my wife and my family, I decided to move to Yahoo! and still kept the good relationship with them, <a title="Voucha's group on Facebook" href="http://id-id.facebook.com/voucha" target="_blank">Voucha&#8217;s big family</a>.</p>
<p>First day at Yahoo! was really formal. I rarely wore a suit and a fancy shoes. Deep in my heart, I know it&#8217;s (used to be?) a technology company so I should comfortable wearing my best t-shirt or any shirt I like to wear. It&#8217;s just not common in here, Indonesia, wearing a t-shirt in a first day of employment. So here I was, wearing all those things like a salesman working for IBM, except for the fancy tie.</p>
<p>I was assigned to <a title="Koprol" href="http://koprol.com" target="_blank">Koprol</a>, a social location-based service Yahoo! had acquired earlier. The atmosphere was really different here. The first day I stepped in to Koprol&#8217;s office, I felt different. I felt comfy and I just thought, &#8220;I like it! This is like having a <a title="Hacker Culture" href="http://en.wikipedia.org/wiki/Hacker_%28programmer_subculture%29" target="_blank">hacker-culture</a> on a <a title="Startup" href="http://en.wikipedia.org/wiki/Startup_company" target="_blank">startup</a> even though it&#8217;s already bought by the Internet giant. But this whole thing is&#8230; awesome!&#8221;<span id="more-243"></span></p>
<p>Everyone at Koprol were really supportive. We code, discuss and doing some hacking together. At lunch time, we usually went out together and sometimes try something new like eating food we never eat before, visiting a we&#8217;re-just-open restaurant, go rushing discounts, etc. Back from lunch, we start to code again, discuss a little bit and brainstorming about features. Near the end of the day, some of us watching TV, playing game console (PlayStation) and do hacking-stuff with our own toys. We do it everyday and that&#8217;s what keep us going. That was one thing among others that keep us woke in the morning and drove our cars/motorcycles toward our office. Everyone was in a high-spirit as if they were going towards their own toys, money, and food. Except, we&#8217;re not doing this for money. We&#8217;re doing this for fun.</p>
<p>This pace was become higher and higher as our office joined Yahoo! Editorial, Sales and Marketing team at Sentra Senayan II, Jakarta. We still kept the hacker-culture and tried to minimize the top-down procedure which still used in many (traditional) companies in Indonesia. Our leader, <a title="Fajar AB" href="http://twitter.com/#!/fajarb" target="_blank">Fajar</a>, <a title="Daniel Armanto" href="http://twitter.com/#!/armanto" target="_blank">Daniel</a> and <a title="Satya Witoelar" href="http://twitter.com/#!/satya" target="_blank">Satya</a>, were not like bosses in term of leadership. They&#8217;re friends in any circumstances and positions. They laughed with us, ate the lunch with us, played foosball together with us, and even shared cubicles with us. No barrier, no door and no procedure if we need them. Just made steps to their cubicles and talked to them. Just like what you did with the rest of the team.</p>
<p>Within the new supportive office, we need also to improve our skills. So we held an internal <a title="Dojo" href="http://en.wikipedia.org/wiki/Dojo" target="_blank">Dojo</a> covering many technologies from Yahoo! or outside of Yahoo!, adopting <a title="Scrum" href="http://en.wikipedia.org/wiki/Scrum_%28development%29" target="_blank">scrum</a>/<a title="Agile" href="http://en.wikipedia.org/wiki/Agile_software_development" target="_blank">agile</a> at an early stage phase and implementing the <a title="TDD" href="http://en.wikipedia.org/wiki/Test-driven_development" target="_blank">Test-Driven Development (TDD)</a>. This is where I even realized that I was in a dream team. With every new technologies and method introduced to the team, no one get upset. No one get lazy and prefer not to learn those new things. Instead, everyone was eager to learn and began adopting those new things to them self first before we implemented those in to the team. After a week or two, without any further explanation and kinky procedure, we use it in our own daily life at work, at our team.</p>
<p>We&#8217;re not just learning new things related to our work but also learning new things outside of it. We have a club covering basketball, badminton and foosball. Even we have an <a title="YFoosball Tournament Championship" href="http://yfoosball.ksetyadi.com/" target="_blank">internal foosball championship</a> here! Everyone, with no exception, joining the championship. Some of us doing it for a challenge and to win, some of us will be doing it for fun, and some of us will doing it just for laugh. The interesting part was, our leader were joining too and you&#8217;ll be wondered that there&#8217;s no salary cut or cancelled bonus even though they, our leader, never win the game. Fair enough, wasn&#8217;t it? :)</p>
<p>It was all romantic. Until one day, April 5th, 2012 to be exact, Yahoo! <a title="Yahoo Laid Off Koprol's Developer" href="http://thenextweb.com/asia/2012/04/06/uncertain-future-for-yahoos-location-based-service-koprol-as-entire-developer-team-is-laid-off/" target="_blank">decided to ditch our team</a> because one or many several reasons. First time I heard the news, I was shocked. What I was thinking at that time was not about losing a job (I was thinking about that too, of course, after I thought about what I&#8217;m going to say after this), but about losing this team. It&#8217;s just a job and you can find a replacement within no time. But a dream team? I doubt it.</p>
<p>So, just like every wise men says, a picture is worth a thousand words. But I&#8217;m going to give you few thousands of words by uploading a few pictures of our dream team.</p>
<p>Brief note: Many of those pictures were picked from <a title="Satya's Flickr" href="http://www.flickr.com/photos/tya/" target="_blank">Satya Witoelar&#8217;s Flickr</a>, while others are <a title="Daniel's Flickr" href="http://www.flickr.com/photos/armanto/" target="_blank">Daniel Armanto&#8217;s</a> picture.</p>
<div id="attachment_245" class="wp-caption alignnone" style="width: 485px"><a href="http://blog.ksetyadi.com/wp-content/uploads/2012/04/first_scrum_planning.jpg"><img class="size-full wp-image-245" title="Scrum Planning" src="http://blog.ksetyadi.com/wp-content/uploads/2012/04/first_scrum_planning.jpg" alt="Scrum Planning" width="475" height="355" /></a><p class="wp-caption-text">Scrum Planning. No limit, no boundaries.</p></div>
<div id="attachment_246" class="wp-caption alignnone" style="width: 483px"><a href="http://blog.ksetyadi.com/wp-content/uploads/2012/04/dojo_hack.jpg"><img class="size-full wp-image-246" title="dojo_hack" src="http://blog.ksetyadi.com/wp-content/uploads/2012/04/dojo_hack.jpg" alt="" width="473" height="361" /></a><p class="wp-caption-text">Dojo and hacking stuff. We love it.</p></div>
<div id="attachment_247" class="wp-caption alignnone" style="width: 487px"><a href="http://blog.ksetyadi.com/wp-content/uploads/2012/04/estimate_story.jpg"><img class="size-full wp-image-247" title="estimate_story" src="http://blog.ksetyadi.com/wp-content/uploads/2012/04/estimate_story.jpg" alt="" width="477" height="359" /></a><p class="wp-caption-text">Estimating story a.k.a &quot;Poker time!&quot;</p></div>
<div id="attachment_248" class="wp-caption alignnone" style="width: 488px"><a href="http://blog.ksetyadi.com/wp-content/uploads/2012/04/discuss.jpg"><img class="size-full wp-image-248" title="discuss" src="http://blog.ksetyadi.com/wp-content/uploads/2012/04/discuss.jpg" alt="" width="478" height="359" /></a><p class="wp-caption-text">Discuss about features and API integration</p></div>
<div id="attachment_249" class="wp-caption alignnone" style="width: 490px"><a href="http://blog.ksetyadi.com/wp-content/uploads/2012/04/choppers.jpg"><img class="size-full wp-image-249" title="choppers" src="http://blog.ksetyadi.com/wp-content/uploads/2012/04/choppers.jpg" alt="" width="480" height="360" /></a><p class="wp-caption-text">Almost every engineer has their own chopper!</p></div>
<div id="attachment_250" class="wp-caption alignnone" style="width: 491px"><a href="http://blog.ksetyadi.com/wp-content/uploads/2012/04/basketball.jpg"><img class="size-full wp-image-250" title="basketball" src="http://blog.ksetyadi.com/wp-content/uploads/2012/04/basketball.jpg" alt="" width="481" height="321" /></a><p class="wp-caption-text">Basketball club, sparring with Microsoft, Telkomsel, etc.</p></div>
<div id="attachment_251" class="wp-caption alignnone" style="width: 490px"><a href="http://blog.ksetyadi.com/wp-content/uploads/2012/04/foosball.jpg"><img class="size-full wp-image-251" title="foosball" src="http://blog.ksetyadi.com/wp-content/uploads/2012/04/foosball.jpg" alt="" width="480" height="362" /></a><p class="wp-caption-text">As I said before, we love foosball!</p></div>
<div id="attachment_252" class="wp-caption alignnone" style="width: 493px"><a href="http://blog.ksetyadi.com/wp-content/uploads/2012/04/all_barito.jpg"><img class="size-full wp-image-252" title="all_barito" src="http://blog.ksetyadi.com/wp-content/uploads/2012/04/all_barito.jpg" alt="" width="483" height="346" /></a><p class="wp-caption-text">Can you spot the bosses? Probably you can&#39;t. They are much the same like us :)</p></div>
<p>&nbsp;</p>
<p>Thanks, Koprol. Thanks, Yahoo!. It&#8217;s an awesome journey to be with you all. I&#8217;ll never regret the time we had together and if life was like a disc, I would pause and play the part when we&#8217;re working as a team, over and over again. There&#8217;s so many lessons I haven&#8217;t learn from you all, guys.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ksetyadi.com/2012/04/thanks-yahoo-koprol-challenges-ahead/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>
