<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Burcu Dogan&#039;s Blog</title>
	<atom:link href="http://burcudogan.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://burcudogan.com</link>
	<description>Burcu Dogan is a software engineer, a technologist and an open source enthusiastic.</description>
	<lastBuildDate>Thu, 05 Jan 2012 08:01:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='burcudogan.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Burcu Dogan&#039;s Blog</title>
		<link>http://burcudogan.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://burcudogan.com/osd.xml" title="Burcu Dogan&#039;s Blog" />
	<atom:link rel='hub' href='http://burcudogan.com/?pushpress=hub'/>
		<item>
		<title>Android&#8217;s RTP implementation</title>
		<link>http://burcudogan.com/2011/06/05/android-rtp-implementation-is-based-on-udp/</link>
		<comments>http://burcudogan.com/2011/06/05/android-rtp-implementation-is-based-on-udp/#comments</comments>
		<pubDate>Sun, 05 Jun 2011 23:49:10 +0000</pubDate>
		<dc:creator>Burcu Dogan</dc:creator>
				<category><![CDATA[Regular]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[rtp]]></category>
		<category><![CDATA[rtsp]]></category>
		<category><![CDATA[streaming]]></category>

		<guid isPermaLink="false">http://burcu.me/?p=742</guid>
		<description><![CDATA[Although still being not really mature, Android is supporting RTSP streaming for a long time. In theory, it&#8217;s very trivial to play an RTSP link with MediaPlayer controller. MediaPlayer player = new MediaPlayer("rtsp://..."); player.prepare(); player.start(); But in practice, MediaPlayer implementation is not fair enough to give you responses and you basically dont know what&#8217;s going [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=burcudogan.com&amp;blog=21440216&amp;post=742&amp;subd=burcudo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Although still being not really mature, Android is supporting RTSP streaming for a long time. In theory, it&#8217;s very trivial to play an RTSP link with MediaPlayer controller.</p>
<pre>MediaPlayer player = new MediaPlayer("rtsp://...");
player.prepare();
player.start();</pre>
<p>But in practice, MediaPlayer implementation is not fair enough to give you responses and you basically dont know what&#8217;s going on since your media is not playing. I will be generally talking about network layer, so you will have a basic idea how to configure your media servers.</p>
<h3>RTSP and RTP</h3>
<p>Generally we call it RTSP. But RTSP streaming has two phases: RTSP and mostly RTP to transform actual media data. RTSP is a stateful protocol. While making the first connection, it agrees on a bunch of details and exchanges data about the media being served between client and server. These are done with a family of directives.  These directives are sent on TCP 554. The RTSP flow includes OPTIONS, DESCRIBE, SETUP, PLAY/PAUSE/etc. On the request made for SETUP directive, client specifies what transform protocol it&#8217;ll support (in this case, it&#8217;s RTP) and on which protocol and which port. Android clients choose UDP and a range starting form 15000 to 65k. This range may change from phone to phone, manufacturer to manufacturer. Summary: There is absolutely no standard at  all. If you look at native MediaPlayer implementation in Android codebase, you will see no specific range as well. So, it&#8217;s very likely for you to have trouble. Another bad point is, RTP is usually supported on a port range between 9k-15k on TCP (e.g. Blackberry devices). And if you read tips and tricks about configuring a server, you won&#8217;t be able to catch the Android fact.</p>
<p><strong>Note</strong>: This post was a draft for about a year, I reviewed it and posted. There&#8217;s nothing over-dated according to my practical knowledge. If you are against me, contact me for fixes.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/burcudo.wordpress.com/742/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/burcudo.wordpress.com/742/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/burcudo.wordpress.com/742/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/burcudo.wordpress.com/742/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/burcudo.wordpress.com/742/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/burcudo.wordpress.com/742/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/burcudo.wordpress.com/742/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/burcudo.wordpress.com/742/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/burcudo.wordpress.com/742/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/burcudo.wordpress.com/742/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/burcudo.wordpress.com/742/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/burcudo.wordpress.com/742/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/burcudo.wordpress.com/742/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/burcudo.wordpress.com/742/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=burcudogan.com&amp;blog=21440216&amp;post=742&amp;subd=burcudo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://burcudogan.com/2011/06/05/android-rtp-implementation-is-based-on-udp/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7526ec3e801f8ba99f6746498a154a6?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">thejbf</media:title>
		</media:content>
	</item>
		<item>
		<title>Implementing Interfaces/Protocols in JavaScript?</title>
		<link>http://burcudogan.com/2010/09/10/implementing-interfacesprotocols-in-javascript/</link>
		<comments>http://burcudogan.com/2010/09/10/implementing-interfacesprotocols-in-javascript/#comments</comments>
		<pubDate>Fri, 10 Sep 2010 15:17:18 +0000</pubDate>
		<dc:creator>Burcu Dogan</dc:creator>
				<category><![CDATA[Regular]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://blog.burcudogan.com/?p=715</guid>
		<description><![CDATA[Several years later, I decided to read Pro JavaScript Design Patterns by Harmes and Diaz again. This book has almost become controversial for its introductory section which presents a suggestion to implement interfaces in JavaScript. Pro JS Design Patterns implements an Interface object, simply by attaching the several method attributes to an object during creation. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=burcudogan.com&amp;blog=21440216&amp;post=715&amp;subd=burcudo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Several years later, I decided to read <a href="http://www.amazon.com/JavaScript-Design-Patterns-Recipes-Problem-Solution/dp/159059908X">Pro JavaScript Design Patterns by Harmes and Diaz</a> again. This book has almost become controversial for its introductory section which presents a suggestion to implement <em>interfaces in JavaScript</em>.</p>
<p>Pro JS Design Patterns implements an Interface object, simply by attaching the several method attributes to an object during creation. The interface class is more likely to be a Factory class since it creates a new class definition based on the input parameters.</p>
<pre>// Constructor.
var Interface = function(name, methods) {
    this.name = name;
    this.methods = [];
    for(var i = 0, len = methods.length; i &lt; len; i++) {
        this.methods.push(methods[i]);
    }
};
// create Widget class which implements an interface with two methods: addSubView and removeFromSuper.
var Widget = new Interface('Widget', ['addSubView', 'removeFromSuper']);</pre>
<p>Once you initialize Widget, you ensure that Widget is implementing <em>addSubView</em> and <em>removeFromSuper</em> methods. This is a methodology/concept book is presenting. In this blog post, I’ll try to explain you why conceptually it makes no sense to implement an Interface object in JS.</p>
<h2>There is no “before run-time”</h2>
<p>Dynamic languages are forming the classes at the run-time. Interfaces are invented to find failures during compiling time &#8212; long before code is being run. If you develop control methodologies or test against a structure, it might be very pointless due to the fact they are going to be executed in run-time. If your situation is not critical, <strong>let it fail on actual code</strong> during the test. Nevertheless, you can always check if required methods are implemented by the instance and raise flags if something has gone bad for critical operations or not-trusted objects comes from an AJAX request for example.<br />
If you truly want to make “before run-time” checks, your problem turns out to be a<em> unit-testing</em> one. You can simply write external test code to consume your JS library and check if your object is implementing your set of methods. This is absolutely is not a solution since you are able to modify object structure during the execution (see next section). You, again, can’t be sure your code is going to break it all or not.</p>
<h2>Hierarchy or functionality changes at run-time</h2>
<p>Almost any object is changeable during run-time &#8212; although there are some exceptions with [global] object in browser implementations since window is the [global] object and modification is a security problem . Hierarchy may change, properties may change. So, there is again no guarantee that a Factory created object will agree a certain protocol during the run-time.</p>
<h2>The cost</h2>
<p>Nothing comes for free. Factory like initialization is an overhead, huge or small, it’s still overhead. It requires extra iterations over objects during creation. And you’re required to iterate over same properties while implementing the methods.</p>
<p>Consequently, there is almost no practical point to create classes from an Interface factory at all. If your code is getting large, write automated tests and find ways to share schema around the developers more efficiently.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/burcudo.wordpress.com/715/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/burcudo.wordpress.com/715/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/burcudo.wordpress.com/715/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/burcudo.wordpress.com/715/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/burcudo.wordpress.com/715/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/burcudo.wordpress.com/715/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/burcudo.wordpress.com/715/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/burcudo.wordpress.com/715/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/burcudo.wordpress.com/715/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/burcudo.wordpress.com/715/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/burcudo.wordpress.com/715/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/burcudo.wordpress.com/715/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/burcudo.wordpress.com/715/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/burcudo.wordpress.com/715/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=burcudogan.com&amp;blog=21440216&amp;post=715&amp;subd=burcudo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://burcudogan.com/2010/09/10/implementing-interfacesprotocols-in-javascript/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7526ec3e801f8ba99f6746498a154a6?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">thejbf</media:title>
		</media:content>
	</item>
		<item>
		<title>Twifighting: Compare tweets per hour</title>
		<link>http://burcudogan.com/2010/05/16/twifighting-compare-tweets-per-hour/</link>
		<comments>http://burcudogan.com/2010/05/16/twifighting-compare-tweets-per-hour/#comments</comments>
		<pubDate>Sun, 16 May 2010 08:48:03 +0000</pubDate>
		<dc:creator>Burcu Dogan</dc:creator>
				<category><![CDATA[Regular]]></category>

		<guid isPermaLink="false">http://blog.burcudogan.com/?p=554</guid>
		<description><![CDATA[Yesterday, I put some code and graphics together and launched Twifighting: a simple tool which compares how trendy your phrases are in Twitter&#8217;s ecosystem. It&#8217;s an easy tool I always needed, to make some market research, to gather the latest interest metrics and etc. I simply thought that I&#8217;m not the only one on the comparison [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=burcudogan.com&amp;blog=21440216&amp;post=554&amp;subd=burcudo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Yesterday, I put some code and graphics together and launched <a href="http://twifighting.com">Twifighting</a>: a simple tool which compares how trendy your phrases are in Twitter&#8217;s ecosystem. It&#8217;s an easy tool I always needed, to make some market research, to gather the latest interest metrics and etc. I simply thought that I&#8217;m not the only one on the comparison need side, that&#8217;s how I decided to launch it. It&#8217;s funny to watch the metrics from <a href="http://twifighting.com/#Gordon%20Brown|David%20Cameron">Gordon Brown vs David Cameron</a>, <a href="http://twifighting.com/#Obama|BP">Obama vs BP</a> and etc. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I became a huge addict! I&#8217;m planning a minor update with some useful features and fix some of the usability problems. If you have any feedback, please drop it here.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/burcudo.wordpress.com/554/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/burcudo.wordpress.com/554/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/burcudo.wordpress.com/554/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/burcudo.wordpress.com/554/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/burcudo.wordpress.com/554/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/burcudo.wordpress.com/554/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/burcudo.wordpress.com/554/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/burcudo.wordpress.com/554/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/burcudo.wordpress.com/554/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/burcudo.wordpress.com/554/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/burcudo.wordpress.com/554/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/burcudo.wordpress.com/554/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/burcudo.wordpress.com/554/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/burcudo.wordpress.com/554/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=burcudogan.com&amp;blog=21440216&amp;post=554&amp;subd=burcudo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://burcudogan.com/2010/05/16/twifighting-compare-tweets-per-hour/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7526ec3e801f8ba99f6746498a154a6?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">thejbf</media:title>
		</media:content>
	</item>
		<item>
		<title>Setting bounds of a map to cover collection of POIs on Android</title>
		<link>http://burcudogan.com/2010/04/20/setting-bounds-of-a-map-to-cover-collection-of-pois-on-android/</link>
		<comments>http://burcudogan.com/2010/04/20/setting-bounds-of-a-map-to-cover-collection-of-pois-on-android/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 10:51:14 +0000</pubDate>
		<dc:creator>Burcu Dogan</dc:creator>
				<category><![CDATA[Regular]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[maps]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://blog.burcudogan.com/?p=521</guid>
		<description><![CDATA[Lately, as I browse web for maps related questions on Android, what&#8217;s frequently requested is an example of setting bounds of a map (zooming to a proper level and panning) to be able show all of the pins given on the screen. Most of the maps APIs provide this functionality such as Google Maps API, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=burcudogan.com&amp;blog=21440216&amp;post=521&amp;subd=burcudo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Lately, as I browse web for maps related questions on Android, what&#8217;s frequently requested is an example of setting bounds of a map (zooming to a proper level and panning) to be able show all of the pins given on the screen.</p>
<p>Most of the maps APIs provide this functionality such as Google Maps API, so developers seem to have problems with implementing theirs. Google Maps API for Android does not provide functionality for setting bounds to a box. Instead, what&#8217;s provided is to zoom to a span.</p>
<p><code>com.google.android.maps.MapController.<strong>zoomToSpan</strong>(int latSpanE6, int lonSpanE6)</code></p>
<p>latSpanE6 is the difference in latitudes * 10^6 and similarly lonSpanE6 is the difference longitude * 10^6. You may question how map controllers know where to zoom in just by the differences. For examples, kms between longitudes differ from equator to poles. Fortunately, Google maps projection has them in the same length. This may remind you the infamous <a href="http://answers.yahoo.com/question/index?qid=20090824125304AAiAM3j">South America versus Greenland syndrome</a>. Although Greenland is much much smaller than South America, it doesnt look so with this map projection.</p>
<p>On the below, I implemented a boundary arranger method for MapView. Method takes three arguments: items, hpadding and vpadding. items as you may guess is a list of POIs. Other arguments are a little bit more interesting. hpadding and vpadding is the percentage of padding you would like to leave horizontally and vertically so that pins don&#8217;t appear just on the corners. For instance, if you assign 0.1 for hpadding, 10% padding will be given from top and bottom.</p>
<p>BTW, You&#8217;ll have to extend the existing MapView and add this method to your own MapView to use this method properly.</p>
<pre class="java">public void <strong>setMapBoundsToPois</strong>(List&lt;GeoPoint&gt; items, double hpadding, double vpadding) {

    MapController mapController = this.getController();
    // If there is only on one result
    // directly animate to that location

    if (items.size() == 1) { // animate to the location
        mapController.animateTo(items.get(0));
    } else {
        // find the lat, lon span
        int minLatitude = Integer.MAX_VALUE;
        int maxLatitude = Integer.MIN_VALUE;
        int minLongitude = Integer.MAX_VALUE;
        int maxLongitude = Integer.MIN_VALUE;

        // Find the boundaries of the item set
        for (GeoPoint item : items) {
            int lat = item.getLatitudeE6(); int lon = item.getLongitudeE6();

            maxLatitude = Math.max(lat, maxLatitude);
            minLatitude = Math.min(lat, minLatitude);
            maxLongitude = Math.max(lon, maxLongitude);
            minLongitude = Math.min(lon, minLongitude);
        }

        // leave some padding from corners
        // such as 0.1 for hpadding and 0.2 for vpadding
        maxLatitude = maxLatitude + (int)((maxLatitude-minLatitude)*hpadding);
        minLatitude = minLatitude - (int)((maxLatitude-minLatitude)*hpadding);

        maxLongitude = maxLongitude + (int)((maxLongitude-minLongitude)*vpadding);
        minLongitude = minLongitude - (int)((maxLongitude-minLongitude)*vpadding);

        // Calculate the lat, lon spans from the given pois and zoom
        mapController.zoomToSpan(Math.abs(maxLatitude - minLatitude), Math
.abs(maxLongitude - minLongitude));

        // Animate to the center of the cluster of points
        mapController.animateTo(new GeoPoint(
              (maxLatitude + minLatitude) / 2, (maxLongitude + minLongitude) / 2));
    }
} // end of the method</pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/burcudo.wordpress.com/521/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/burcudo.wordpress.com/521/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/burcudo.wordpress.com/521/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/burcudo.wordpress.com/521/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/burcudo.wordpress.com/521/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/burcudo.wordpress.com/521/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/burcudo.wordpress.com/521/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/burcudo.wordpress.com/521/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/burcudo.wordpress.com/521/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/burcudo.wordpress.com/521/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/burcudo.wordpress.com/521/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/burcudo.wordpress.com/521/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/burcudo.wordpress.com/521/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/burcudo.wordpress.com/521/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=burcudogan.com&amp;blog=21440216&amp;post=521&amp;subd=burcudo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://burcudogan.com/2010/04/20/setting-bounds-of-a-map-to-cover-collection-of-pois-on-android/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7526ec3e801f8ba99f6746498a154a6?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">thejbf</media:title>
		</media:content>
	</item>
		<item>
		<title>W3C Widgets: The good, the bad and the ugly</title>
		<link>http://burcudogan.com/2010/04/04/w3c-widgets-the-good-the-bad-and-the-ugly/</link>
		<comments>http://burcudogan.com/2010/04/04/w3c-widgets-the-good-the-bad-and-the-ugly/#comments</comments>
		<pubDate>Sun, 04 Apr 2010 20:24:46 +0000</pubDate>
		<dc:creator>Burcu Dogan</dc:creator>
				<category><![CDATA[Regular]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[w3c widgets]]></category>
		<category><![CDATA[web standards]]></category>

		<guid isPermaLink="false">http://blog.burcudogan.com/?p=468</guid>
		<description><![CDATA[It hasn&#8217;t been a while since ppk wrote about totally a new W3C movement called &#8220;Widgets&#8220;. A Widget is a downloadable archive of HTML, JavaScript, CSS and a configuration file. It&#8217;s a downloadable web front-end. Basically it&#8217;s designed to build mobile apps to avoid extra network usage consumed to download heavy weight pages, CSS and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=burcudogan.com&amp;blog=21440216&amp;post=468&amp;subd=burcudo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>It hasn&#8217;t been a while since <a href="http://www.quirksmode.org/blog/archives/2009/04/introduction_to.html">ppk</a> wrote about totally a new W3C movement called &#8220;<a href="http://www.w3.org/TR/widgets/">Widgets</a>&#8220;. A Widget is a downloadable archive of HTML, JavaScript, CSS and a configuration file. It&#8217;s a downloadable web front-end. Basically it&#8217;s <em>designed to build mobile apps</em> to avoid extra network usage consumed to download heavy weight pages, CSS and JS. With Widgets, you only consume network traffic for data transmission. Before getting into details I have to share a fact that according to my knowledge, <a href="http://www.opera.com/">Opera Mobile</a> is the only browser around with Widgets support.</p>
<p>You can <a href="http://widget.developer.vodafone.com/en/howtobuildawidget">read  Vodafone&#8217;s tutorial to make a Widget first</a> to have an initial look.</p>
<h2>The Good</h2>
<p>For many years, I&#8217;ve been in a huge debate with people who uses work  force inefficiently by their 35k different platforms and SDKs. Half of  the developer have written HTML once in their life and JavaScript has a  very large developers base. Every new mobile platform is usually  re-inventing the wheel once again and this default action is usually driven by business fears.</p>
<p>Widgets make software accessible anywhere you can run a browser. It&#8217;s definitely &#8220;Write once, run everywhere&#8221;. And the complaints about slow page transmission is being fixed by running them from local resources.</p>
<p>Widgets will push mobile web browsers to act more similarly as applications base grow. Many of the extensions such as geo-location APIs dont really fit each other and some mobile browsers provide totally non-standard features. If web applications dominates the mobile, community will push browsers to act better.</p>
<p>It&#8217;s easy to get in. You dont have to download SDKs, learn another language and read documentation/tutorials to learn something new.</p>
<h2>The Bad</h2>
<p>Performance. Native apps run fast. Even Dalvik empowered Android is horrible and not really responsive compared to other platforms&#8217; applications because of Java. Heavy JS on web browsers are not scalable and just like most of the other browsers, Safari on iPhone has rendering issues even on local websites.</p>
<p>Forget the advantages of Web when it comes to releasing software. No on the fly updates at all. Software should be downloaded again and again as new versions release.  Accessibility to internal platform is questionable. Open platforms like Android provide access to internals such as contact lists, file system and invoking other applications. If mobile  operating system manufacturers cant meet at providing the similar APIs, this wont work.</p>
<h2>The Ugly</h2>
<p>I find the old-generation of mobile development community is very ill-minded. They use the know-how to make money and this community is interested in their complex and closed environments.</p>
<p>On the other hand, the only contributor is Opera for now. I&#8217;m not really sure if they go for larger market share or not. If an open standard acts like a diverse platform for Opera browser phones, it&#8217;s the same story.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/burcudo.wordpress.com/468/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/burcudo.wordpress.com/468/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/burcudo.wordpress.com/468/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/burcudo.wordpress.com/468/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/burcudo.wordpress.com/468/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/burcudo.wordpress.com/468/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/burcudo.wordpress.com/468/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/burcudo.wordpress.com/468/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/burcudo.wordpress.com/468/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/burcudo.wordpress.com/468/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/burcudo.wordpress.com/468/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/burcudo.wordpress.com/468/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/burcudo.wordpress.com/468/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/burcudo.wordpress.com/468/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=burcudogan.com&amp;blog=21440216&amp;post=468&amp;subd=burcudo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://burcudogan.com/2010/04/04/w3c-widgets-the-good-the-bad-and-the-ugly/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7526ec3e801f8ba99f6746498a154a6?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">thejbf</media:title>
		</media:content>
	</item>
		<item>
		<title>Probably I&#039;m a &quot;products person&quot;</title>
		<link>http://burcudogan.com/2010/02/24/probably-im-a-products-person/</link>
		<comments>http://burcudogan.com/2010/02/24/probably-im-a-products-person/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 21:47:19 +0000</pubDate>
		<dc:creator>Burcu Dogan</dc:creator>
				<category><![CDATA[Regular]]></category>
		<category><![CDATA[personal development]]></category>
		<category><![CDATA[products]]></category>

		<guid isPermaLink="false">http://blog.burcudogan.com/?p=444</guid>
		<description><![CDATA[It all started when I was younger, almost 15 years ago. As a rebellious child, I decided to publish my own newspaper to share my opinions about products I use daily. I wrote critics, future notes and reviews almost about everything &#8212; from plugs to kitchen tools. Reviewing was boring, but manufacturing was very costly, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=burcudogan.com&amp;blog=21440216&amp;post=444&amp;subd=burcudo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>It all started when I was younger, almost 15 years ago. As a rebellious child, I decided to publish my own newspaper to share my opinions about products I use daily. I wrote <em>critics, future notes and reviews almost about everything</em> &#8212; from plugs to kitchen tools. Reviewing was boring, but manufacturing was very costly, and my cheap implementations would be looking very ugly. So, I gave up fast.</p>
<p>I was introduced to programming and computing technology very long time ago. I was pushed to it and fascinated by the flow of bits and bytes. But everything was embodied in 1996, the day I met the Web. Finally there was an easy and cheap way to distribute products. And to be able to ship products, I had to learn programming. This is how I started.</p>
<p>Now as a professional, I still couldn&#8217;t understand why I&#8217;m not also responsible for budget, strategy, concept, ux  et al as a developer. I&#8217;m a products person, I want to code for beautiful products to change mindsets and push the limits for more market visibility. I&#8217;m driven by breakthrough concepts, user interaction improvement, performance, cognition and reasoning. If you cant convince me, I perform bad. To be honest, I&#8217;m not sure this is how a developer should act but this is my formula. My time is valuable and if you want me to invest it in your project, you have to convince me. I never remember myself applying for a company to work on a product I dont believe that I can dedicate myself to.</p>
<p>Most probably this makes me an inefficient developer. I get angry when we don&#8217;t make enough revenue and we ship features that turns into invisible toys that 80% doesnt even use. I find myself crazily analysing the logs where available and trying to understand how users think.</p>
<p>Now ask me how many companies I started. Actual the number is &#8220;one&#8221; &#8212; the sector was totally out of technology business. We had great recognition from major industry players in the USA and our main service was quite profitable for college students. I made some huge mistakes in the past two years with losing the entrepreneurship I have inside. Now I decided to be a half entrepreneur and half time&amp;energy investor.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/burcudo.wordpress.com/444/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/burcudo.wordpress.com/444/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/burcudo.wordpress.com/444/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/burcudo.wordpress.com/444/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/burcudo.wordpress.com/444/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/burcudo.wordpress.com/444/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/burcudo.wordpress.com/444/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/burcudo.wordpress.com/444/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/burcudo.wordpress.com/444/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/burcudo.wordpress.com/444/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/burcudo.wordpress.com/444/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/burcudo.wordpress.com/444/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/burcudo.wordpress.com/444/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/burcudo.wordpress.com/444/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=burcudogan.com&amp;blog=21440216&amp;post=444&amp;subd=burcudo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://burcudogan.com/2010/02/24/probably-im-a-products-person/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7526ec3e801f8ba99f6746498a154a6?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">thejbf</media:title>
		</media:content>
	</item>
		<item>
		<title>Custom Scroll Distance for UIScrollView</title>
		<link>http://burcudogan.com/2009/12/05/custom-horizontal-scroll-distance-for-uiscrollview/</link>
		<comments>http://burcudogan.com/2009/12/05/custom-horizontal-scroll-distance-for-uiscrollview/#comments</comments>
		<pubDate>Sat, 05 Dec 2009 23:01:27 +0000</pubDate>
		<dc:creator>Burcu Dogan</dc:creator>
				<category><![CDATA[Regular]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[objective-c]]></category>

		<guid isPermaLink="false">http://blog.burcudogan.com/?p=413</guid>
		<description><![CDATA[Most recently, I was trying to create a slider for users to navigate between different items. A scroll view was working fine since it implements most of the scrolling behavior I needed in my application natively. But the content I want to scroll was smaller in width and UIScrollView is designed to scroll multiples of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=burcudogan.com&amp;blog=21440216&amp;post=413&amp;subd=burcudo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Most recently, I was trying to create a slider for users to navigate between different items. A scroll view was working fine since it implements most of the scrolling behavior I needed in my application natively. But the content I want to scroll was smaller in width and <strong>UIScrollView </strong>is designed to scroll multiples of its width. This was truly a problem. It was possible to scroll 2-3 items once a time and there were no focus, although I was looking for a one-to-one transition between different items.</p>
<p>There were possibilities to listen touches and calculate the positioning of the next item and scroll to it. But to be honest, I had no time to try out fancy and not-stable solutions. Instead of losing myself in the rules of UIScrollView, I wanted UIScrollView to get lost in me. Remind the rule: &#8220;Only scroll multiples of its width horizontally&#8221;. Great, so why not modifying scroll view&#8217;s size? Well, just because I want other items to be visible and lined together to give user a feeling that it is a slider.</p>
<p>&nbsp;</p>
<p>Normally, that is where you stop, but there appeared a trick to make it work my way. I decided not to clip the subviews of scroll view and TA-DA! Images were lined up together and were visible even though they were not in the bounds of my scroll view. Very simple and clean solution. Inline note please: Before moving to the &#8220;how&#8221;, I want to point out <strong>there is a problem with this trick</strong>. You cannot interact with items out of the scroll view boundaries. If your items are tiny, this is a huge problem because scrolling will only be active for 50-60 pixels. Consequently, use this trick if items are at least %50-%60 of the whole screen.</p>
<p>Start a new window-based Xcode project. Create a view controller with a xib file. Open xib file and add a UIScrollView to the main view. Return back to the controller you created and add a property to connect UIScrollView. Return back to Interface Builder. Modify the width, height and positioning of the view. Connect controller&#8217;s scroll view to UIScrollView we created.<strong> Enable paging and uncheck &#8220;Clip Subviews&#8221;</strong>. Our scroll view is ready to be filled. On the viewDidLoad method, I&#8217;m going to add several images.</p>
<pre>// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {

    [super viewDidLoad];
    int i = 0, cx = 0;

    for(;;i++){
	UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"image%d.png", i + 1]];

	if(image == nil) break;

	UIImageView *view = [[UIImageView alloc] initWithImage:image];
	view.frame = CGRectMake(cx,0, scrollView.frame.size.width, scrollView.frame.size.height);
	[scrollView addSubview:view];

	[view release];
	cx += scrollView.frame.size.width;
    }

    scrollView.contentSize = CGSizeMake(cx, scrollView.frame.size.height);
}</pre>
<p>And finally build and run. It is going to work.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/burcudo.wordpress.com/413/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/burcudo.wordpress.com/413/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/burcudo.wordpress.com/413/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/burcudo.wordpress.com/413/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/burcudo.wordpress.com/413/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/burcudo.wordpress.com/413/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/burcudo.wordpress.com/413/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/burcudo.wordpress.com/413/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/burcudo.wordpress.com/413/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/burcudo.wordpress.com/413/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/burcudo.wordpress.com/413/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/burcudo.wordpress.com/413/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/burcudo.wordpress.com/413/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/burcudo.wordpress.com/413/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=burcudogan.com&amp;blog=21440216&amp;post=413&amp;subd=burcudo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://burcudogan.com/2009/12/05/custom-horizontal-scroll-distance-for-uiscrollview/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7526ec3e801f8ba99f6746498a154a6?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">thejbf</media:title>
		</media:content>
	</item>
		<item>
		<title>Why should developers blog?</title>
		<link>http://burcudogan.com/2009/11/14/why-should-developers-blog/</link>
		<comments>http://burcudogan.com/2009/11/14/why-should-developers-blog/#comments</comments>
		<pubDate>Sat, 14 Nov 2009 08:57:17 +0000</pubDate>
		<dc:creator>Burcu Dogan</dc:creator>
				<category><![CDATA[Regular]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[personal development]]></category>

		<guid isPermaLink="false">http://blog.burcudogan.com/?p=376</guid>
		<description><![CDATA[If I make an statistical study out of my friends and colleges who are developers, I can barely can say 10% of them are blogging. Is blogging a nightmare, a time waster, a cheap-seat show where bloggers act like significant people for them? I don&#8217;t know. I have one prediction: They don&#8217;t like writing. These [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=burcudogan.com&amp;blog=21440216&amp;post=376&amp;subd=burcudo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>If I make an statistical study out of my friends and colleges who are developers, I can barely can <strong>say 10% of them are blogging</strong>. Is blogging a nightmare, a time waster, a cheap-seat show where bloggers act like significant people for them? I don&#8217;t know. I have one prediction: They don&#8217;t like writing. These people are tech savvy, they are not like my mother who doesn&#8217;t know how to publish on Web. They have sufficient writing capabilities their readers won’t complain about. They have weekends off and most of them are single.</p>
<p>I started my Internet fanaticism with writing in 1996-97. But releasing my first personal took another 10 years to happen, just a few years ago in 2006. Since I started to blog technically in a more personal area, my life changed fast. I have met dozens of people regardless of geological distances, interchanged great amount of knowledge, made friends, found people who can challenge me and found jobs. Besides these benefits, I have other reasons to blog technically:</p>
<h2>1. It&#8217;s natural: You have passion for technology</h2>
<p>You don&#8217;t have to have a reason. This should be very natural. If you are passionate about technology, you are also passionate about the trends in tech. Blogging is the top of the game since 2002-2003. Regretting the fashions won’t make you a cooler person. Early adoption gives a better impression. Running a blog and not making money out of it gives me one obvious signal: <em>I&#8217;m passionate about what I&#8217;m doing, this is not just a job to earn my life.</em></p>
<h2>2. Self promotion</h2>
<p>Isn&#8217;t it obvious? Nowadays if you are not on the Web, you are nowhere. You will at least have a personal space to introduce yourself to the world of networks. It&#8217;s good because you can find others who are interested in similar technologies and are passionate for similar concepts.</p>
<h2>3. Self improvement</h2>
<p>How could writing improve my own abilities? It&#8217;s usually being asked. Being socially active is the best thing to find more people who can challenge your existing capabilities. I understand you were the smartest of your family, you had great marks at high school, was a top student at college and now a superstar employee. But due to the existence of your blog, everyday you have replies back to you from smarter people around to remind you are still a beginner. This is a great opportunity to see there are no limits and you are never done.</p>
<p>On the other hand, your blog serves as a timeline which captures your interests, technical knowledge and other capabilities. You can easily review yourself by taking a look at your older posts.</p>
<h2>4. Sharing Knowledge</h2>
<p>And obviously, sharing knowledge has its factor. It’s common for others to struggle where you went down. You may like to share an exceptional bug, a trick to make things work, a newly released product, methodologies, stories, experiences and reviews.</p>
<p>Blogging makes you a better developer. More people you meet, the better person you will be. Physically there are many constraints but an online representation of yours will fasten things. And as a blogger, I want to get that as an RSS feed! <strong>Now there is one thing I&#8217;m curious about. Do you blog or not? Why or why not?</strong></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/burcudo.wordpress.com/376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/burcudo.wordpress.com/376/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/burcudo.wordpress.com/376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/burcudo.wordpress.com/376/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/burcudo.wordpress.com/376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/burcudo.wordpress.com/376/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/burcudo.wordpress.com/376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/burcudo.wordpress.com/376/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/burcudo.wordpress.com/376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/burcudo.wordpress.com/376/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/burcudo.wordpress.com/376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/burcudo.wordpress.com/376/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/burcudo.wordpress.com/376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/burcudo.wordpress.com/376/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=burcudogan.com&amp;blog=21440216&amp;post=376&amp;subd=burcudo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://burcudogan.com/2009/11/14/why-should-developers-blog/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7526ec3e801f8ba99f6746498a154a6?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">thejbf</media:title>
		</media:content>
	</item>
		<item>
		<title>Maps Development on Android: Registering a Maps API key</title>
		<link>http://burcudogan.com/2009/11/06/maps-development-on-android-registering-a-maps-api-key/</link>
		<comments>http://burcudogan.com/2009/11/06/maps-development-on-android-registering-a-maps-api-key/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 12:29:57 +0000</pubDate>
		<dc:creator>Burcu Dogan</dc:creator>
				<category><![CDATA[Regular]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[maps]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://blog.burcudogan.com/?p=307</guid>
		<description><![CDATA[Location based applications are  musts on mobile platforms. Android does not have maps natively but Google Maps team is providing an add-on that comes with Android SDK (at least 1.5). In this post, I&#8217;m not going to show you how to pop out maps on your little mobile screen, but underline the application signature details [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=burcudogan.com&amp;blog=21440216&amp;post=307&amp;subd=burcudo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Location based applications are  musts on mobile platforms. Android does not have maps <em>natively</em> but Google Maps team is providing an add-on that comes with Android SDK (at least 1.5). In this post, I&#8217;m not going to show you how to pop out maps on your little mobile screen, but underline the application signature details related with Maps API.</p>
<p>First of all in our to show map tiles properly, we need an API key. This is all because you are requesting from Google Data API and have to agree with the terms of service. I&#8217;m also sure that quote rules also apply.</p>
<p>Every Android application is signed with a signature of the publisher. While obtaining a key, you must provide the MD5 summary of your signature to Google, and Google activates possible transactions between Maps API and the application your signature signs. In order to complete these actions, you have to</p>
<ol>
<li>Obtain the MD5 summary of your signature. If you do not have a signature, you can use the default one.</li>
<li><a href="http://code.google.com/android/maps-api-signup.html">Sign up for an API key</a> directly from Google by providing the hash of your signature.</li>
<li>Use API key with map elements and generate a sample map view.</li>
</ol>
<h2>Obtaining an API key</h2>
<p>You will have to use the keytool to obtain information about signatures. If you haven&#8217;t created one, Android SDK puts a default one in your <code>~/.android</code> directory. In this tutorial, I&#8217;m going to show you how to register with this default signature. Open a terminal prompt and enter</p>
<pre>$ keytool -list -keystore <strong>~/.android/debug.keystore</strong></pre>
<p>It&#8217;s going to ask you the password of the keystore (debug.keystore). Default is &#8220;android&#8221;. If you receive a MalformedKeyringException, you are giving the wrong password. If everything works great, it will output a few lines of information including the hash. Please read the summary line and copy the hash.</p>
<pre>Certificate fingerprint (MD5): <strong>E8:F4:F2:BF:03:F3:3A:3D:F3:52:19:9B:58:20:87:68</strong></pre>
<p>After obtaining the summary key, you can jump to the next level &#8212; <a href="http://code.google.com/android/maps-api-signup.html">signing up for an API key</a>. Give the hash as input and register. Please note the API key Google has given to you.</p>
<h2>Generating Maps on Android</h2>
<p>Android SDK comes with two archives. First one is the <code>android.jar</code> which contains the standard platform libraries. And <code>maps.jar</code> which is a library dedicated to generation of maps. In the maps API, you will notice <a href="http://code.google.com/android/add-ons/google-apis/reference/com/google/android/maps/MapView.html">MapView</a>. You can extend MapView to customize and add new features to show a custom map view. Or <a href="http://developer.android.com/guide/tutorials/views/hello-mapview.html">invoke the existing methods</a> to perform simple operations like panning, zooming and adding overlays to show information on the default map. There are great tutorials about Android&#8217;s map view and controller on web, I simply didn&#8217;t want to copy-cat the existing. Google&#8217;s <a href="http://developer.android.com/guide/tutorials/views/hello-mapview.html">Hello, MapView</a> is a place to start.</p>
<h2>Multiple-Developer Cases</h2>
<p>A signature can only be associated with a single API-key. What you are going to do if development is made across a team? You <strong>dont need to </strong>create different signatures for each developer and register them to use Data API one by one. Register a single signature and obtain a key. Then, <em>distibute the signature among the developers</em> &#8211; better add it to your version controlling system.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/burcudo.wordpress.com/307/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/burcudo.wordpress.com/307/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/burcudo.wordpress.com/307/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/burcudo.wordpress.com/307/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/burcudo.wordpress.com/307/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/burcudo.wordpress.com/307/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/burcudo.wordpress.com/307/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/burcudo.wordpress.com/307/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/burcudo.wordpress.com/307/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/burcudo.wordpress.com/307/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/burcudo.wordpress.com/307/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/burcudo.wordpress.com/307/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/burcudo.wordpress.com/307/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/burcudo.wordpress.com/307/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=burcudogan.com&amp;blog=21440216&amp;post=307&amp;subd=burcudo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://burcudogan.com/2009/11/06/maps-development-on-android-registering-a-maps-api-key/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7526ec3e801f8ba99f6746498a154a6?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">thejbf</media:title>
		</media:content>
	</item>
		<item>
		<title>Redis: New Persistent Key-Value Store</title>
		<link>http://burcudogan.com/2009/11/02/redis-new-persistent-key-value-store/</link>
		<comments>http://burcudogan.com/2009/11/02/redis-new-persistent-key-value-store/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 21:16:23 +0000</pubDate>
		<dc:creator>Burcu Dogan</dc:creator>
				<category><![CDATA[Regular]]></category>
		<category><![CDATA[databases]]></category>
		<category><![CDATA[redis]]></category>

		<guid isPermaLink="false">http://blog.burcudogan.com/?p=324</guid>
		<description><![CDATA[Most recently, I&#8217;m working on Redis which is a key-value datastore with interesting characteristics. It&#8217;s ultra fast and has built in atomic operations to handle concurrent usage. Although everything lives in-memory, Redis syncs with hard disk time to time to serve as permanent storage. Most impressively, downloading Redis and making a working build doesn&#8217;t take [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=burcudogan.com&amp;blog=21440216&amp;post=324&amp;subd=burcudo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Most recently, I&#8217;m working on <a href="http://code.google.com/p/redis/">Redis</a> which is a key-value datastore with interesting characteristics. It&#8217;s ultra fast and has built in atomic operations to handle concurrent usage. Although everything lives in-memory, Redis syncs with hard disk time to time to serve as permanent storage. Most impressively, downloading Redis and making a working build doesn&#8217;t take more than a few minutes.</p>
<p>Redis explains itself as a non-volatile memcached with various in-built data structures. Instead of only key and string value pairs, you can have lists and sets as values. There are atomic pop/push operations to work on these structures and increment/decrement functionality to work on numeric values.</p>
<p>Several client libraries are available including Perl, Python, Erlang, C++, Ruby, Scala and PHP. To write a more meaningful post, I&#8217;d like to add lines from a simple Python script.</p>
<pre>
import redis

storage = redis.Redis()
storage.keys("a*")  # returns keys starting with a

storage.get("key1") # returns the value of "key1"
storage.set("key1", "hello world") # setting the value of "key1"
storage.delete("key1") # deletes the pair with key1.

# working on lists
storage.push('key2', 'This is the first value', tail=True)
storage.push('key2', 'This is the second value', tail=True)
print storage.pop('key2')
</pre>
<p>Most of <a href="http://code.google.com/p/redis/wiki/CommandReference">these methods</a> are ported to client libraries and are available in downloadable Redis archive.</p>
<p>Although Redis can not be distributed, it&#8217;s easy to set up a slave node to replicate the master. Since it syncs with hard-disk in certain intervals, there might be data-loss in possible system crashes. So, setting up a slave may decrease the risks. It&#8217;s also advised to use Redis on a central server and manage sharding in the application level.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/burcudo.wordpress.com/324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/burcudo.wordpress.com/324/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/burcudo.wordpress.com/324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/burcudo.wordpress.com/324/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/burcudo.wordpress.com/324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/burcudo.wordpress.com/324/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/burcudo.wordpress.com/324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/burcudo.wordpress.com/324/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/burcudo.wordpress.com/324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/burcudo.wordpress.com/324/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/burcudo.wordpress.com/324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/burcudo.wordpress.com/324/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/burcudo.wordpress.com/324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/burcudo.wordpress.com/324/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=burcudogan.com&amp;blog=21440216&amp;post=324&amp;subd=burcudo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://burcudogan.com/2009/11/02/redis-new-persistent-key-value-store/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7526ec3e801f8ba99f6746498a154a6?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">thejbf</media:title>
		</media:content>
	</item>
	</channel>
</rss>
