<?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>RasterGrid Blog &#187; Telecommunication</title>
	<atom:link href="http://rastergrid.com/blog/category/programming/telecom/feed/" rel="self" type="application/rss+xml" />
	<link>http://rastergrid.com/blog</link>
	<description>A technical blog from Daniel Rákos (aka aqnuep)</description>
	<lastBuildDate>Tue, 07 Sep 2010 20:49:44 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Common pitfalls of iPhone development</title>
		<link>http://rastergrid.com/blog/2010/05/common-pitfalls-of-iphone-development/</link>
		<comments>http://rastergrid.com/blog/2010/05/common-pitfalls-of-iphone-development/#comments</comments>
		<pubDate>Mon, 10 May 2010 19:04:20 +0000</pubDate>
		<dc:creator>Daniel Rákos</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Graphics]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Telecommunication]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[mobile technology]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[OpenGL]]></category>
		<category><![CDATA[phone]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://rastergrid.com/blog/?p=234</guid>
		<description><![CDATA[

I haven&#8217;t written any posts lately. This is because I dug into iPhone application development and this really consumed most of my spare time. As you may remember, I&#8217;ve already mentioned that I would like to start dealing with mobile platforms as a target for my OpenGL related experiments and projects.  After Android, this time [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_light-green" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Frastergrid.com%252Fblog%252F2010%252F05%252Fcommon-pitfalls-of-iphone-development%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FcZPyzL%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Common%20pitfalls%20of%20iPhone%20development%22%20%7D);"></div>
<p>I haven&#8217;t written any posts lately. This is because I dug into iPhone application development and this really consumed most of my spare time. As you may remember, I&#8217;ve already mentioned that I would like to start dealing with mobile platforms as a target for my OpenGL related experiments and projects.  After Android, this time I got my hands on a Mac mini and took a look at the currently most popular mobile gaming platform. Actually, these initial experiments wouldn&#8217;t take that long time if I would have to deal with just a new API and not with a brand new world with its own benefits and drawbacks.</p>
<p><span id="more-234"></span>I have a long experience in using Windows and Linux as a development platform with tons of different development environment and programming languages. Beside that, I&#8217;ve also done some Mac application development, at least if we can call a cross-platform application so that works on all of these three desktop operating systems. Taking in consideration these facts I thought that starting to develop under Mac OS X targeting the iPhone platform will be piece of cake as I just have to master one another programming language and API, namely Objective-C and Cocoa Touch. Well, it turned out that I was too optimistic and this is not that simple as it looks like (at least for me, who hardly ever used a Macintosh before).</p>
<h2><img class="alignleft" title="Mac OS X Leopard" src="http://www.rastergrid.com/blog/wp-content/uploads/2010/05/leopard-logo.png" alt="Mac OS X Leopard" width="150" height="172" />The GUI of Mac OS X Leopard</h2>
<p>The first thing I&#8217;ve found very unusual is the user interface of the operating system. Primarily, I&#8217;m talking about the following little differences:</p>
<p>- The menu of the windows is at the top of the desktop, not the top of the window.</p>
<p>- The system buttons on the window title bar are on the left side, not on the right side.</p>
<p>- Double-clicking the title bar doesn&#8217;t maximize the window, it minimizes it instead.</p>
<p>- The most used key combinations like Copy-Paste and stuff like that are also different.</p>
<p>Okay, I know that these are such things that everybody know who already seen the GUI of Mac OS X, but still, it&#8217;s quite annoying that Apple is going totally against the rest of the PC world. I agree that different operating systems can define their own direction regarding to the layout of the GUI, but I wonder how I didn&#8217;t notice such huge conceptual differences when I&#8217;ve first started to work on Linux after several years of Windows user experience?</p>
<p>Anyway, these are just small things and it&#8217;s just a matter of time to get used to the new interface. Also, I can say that the Mac OS X user experience is excellent. I don&#8217;t say that it is any better than that of Windows or some well-made Linux distributions but it is not worse either.</p>
<h2><img class="alignleft" title="Xcode" src="http://www.rastergrid.com/blog/wp-content/uploads/2010/05/xcode.png" alt="" width="150" height="150" />The Xcode IDE</h2>
<p>Those who heard anything about iPhone development know that the only legal possibility to write applications for this mobile platform is to do it under Mac OS X using the Xcode development environment. I know that thousands of people will blame me for what I&#8217;m going to say but I sincerely think that Xcode is the worst development environment I&#8217;ve worked with lately.</p>
<p>First of all, it was completely alien for me even though I worked with dozens of development environments ranging from basic text editors to full-fledged development environments with every tool integrated within them. While the most used editor features like syntax highlighting and code completion work flawless, there are huge amount of features missing from it that are common in other IDEs like a source code outline window. But this is not the only thing I can complain about&#8230;</p>
<p>As I mentioned it before, I dealt with many different development environments, the most noticeable ones are CodeGear RAD Studio, Visual Studio and Eclipse. What is common in these (and a lot of other Windows and Linux IDEs)  is that if you migrate from one to another you&#8217;ll most probably won&#8217;t notice too much except some minor differences in key bindings. I think actually this is the way how it should work as if I would be the head of a software development company I would invest in a development environment that can be easily learned no matter what my future employees used earlier. This reduces competence development cost and enables the programmers to work more effectively in a relatively short time-frame. Well, it seems that Apple disagrees with me as comparing the aforementioned IDEs and Xcode is like comparing an armchair with a stool.</p>
<p>In spite of all his faults, Xcode has also some clever solutions for some usual tasks that makes it popular even though Apple gone again against the rest of the world with this software so I don&#8217;t say that Xcode is completely useless, but what&#8217;s for sure is that it has a long way to go in order to be able to compete with the other development environments out there. I don&#8217;t even understand why didn&#8217;t they just made a simple Eclipse plugin for their purposes like all other players do?</p>
<p>While maybe I&#8217;ve already scared many of you from using Xcode, yet I haven&#8217;t talked about the &#8220;feature&#8221; that made me the most frustrated about my new development platform. As I already mentioned, there are big differences between the key bindings of usual PC platforms and Mac OS X. I haven&#8217;t really worried about them, because for the basic navigation it is not a huge burden to get used to it, but when it comes to code writing I&#8217;m more choosy&#8230;</p>
<p>It seems like in the Mac world the Home and End keys have totally different meaning, in particular they don&#8217;t control the position of the cursor in the current line instead they control it in the scope of the file. As I&#8217;m heavily using these keys during source code editing I figured out it would be a huge burden to get used to this little but important difference. Fortunately, Xcode has possibility to change the key bindings of the editor but I was already quite pessimistic about how much hassle I will have with the key binding so I thought one step further and started to google for a quasi normal key binding for Xcode. Soon, I&#8217;ve found a Visual Studio-like one <a title="Code Dojo - How to make Xcode feel like MS Visual Studio (MSVC)" href="http://www.codedojo.com/?p=580" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.codedojo.com/?p=580&amp;referer=');">here</a> that you can download below:</p>
<p><a title="Visual Studio Key Bindings for Xcode" href="http://rastergrid.com/blog/wp-content/uploads/2010/05/files/MSVC_xcode_config.zip">Visual Studio Key Bindings for Xcode</a></p>
<p>In order to install it, you only need to unzip the file <strong>MSVC.pbxkeys</strong>, copy it to /Users/YourUserName/Library/Application Support/Xcode/Key Bindings/ (if the directory doesn&#8217;t exist, just create it), restart Xcode and select the configuration set in the key binding tab of Xcode&#8217;s preferences window.</p>
<h2><img class="alignleft" title="Apple Developer Program" src="http://www.rastergrid.com/blog/wp-content/uploads/2010/05/apple-logo.png" alt="" width="150" height="184" />The Apple Developer Program</h2>
<p>While the new key configuration already solved most of my problems that prevented me to efficiently start working on my first iPhone application, soon I realized how much of hassle an iPhone developer has to deal with on a daily basis&#8230;</p>
<p>As soon as I mastered the very basics of developing for the iPhone OS, I registered myself for the Apple Developer Program. It costs you $99 per year but it most probably worths its price as beside the fact that they deal with the publishing and marketing of your application, according to other developers I know, they also give adequate support for the money. The registration itself was very straightforward. I just had to fill and fax an application form and next day my developer program was already active. What made me outrageous at the end is the amount of administrative work that is required from the iPhone developers in order to solve the most simple tasks.</p>
<p>If you just want to play with the iPhone Simulator, the basic configuration of Xcode and the iPhone SDK is adequate, but as soon as you would like to try out your application on a real device, things get more complicated. As an example, I wrote my first cube rotating OpenGL app and wanted to test it on the iPhone of my friend. First, I thought that this will need only three things: connect the iPhone to the Mac, select the real device as target in Xcode and then press the Build&amp;Go button. Well, it turned out that it is much much more complicated.</p>
<p>First, you have to create a certificate on your Mac that you have to upload in the Apple Provisioning Portal and then download it from there, install on your Mac, then connect the iPhone to the Mac, open the Organizer in Xcode, copy the device identifier of the iPhone, go back to the Portal, add the device, then go back to Xcode and copy the reverse URI of your application and then add the application in the Portal, create a provisioning profile with the device-application pair on the Portal, download it and add to Xcode and now you can select the device as target and press the Build&amp;Go. This would be even acceptable if you would have to do it only once, as a preparation for development, but this is not the case. You have to create an individual provisioning profile for each and every device-application pair that you want to test. This is simply too much, especially in the early phases of development as you may start with several different test projects.</p>
<h2><img class="alignleft" title="iPhone SDK" src="http://www.rastergrid.com/blog/wp-content/uploads/2010/05/iphone_sdk.png" alt="" width="150" height="187" />iPhone SDK and Mac OS X Leopard</h2>
<p>You may think that after these steps I&#8217;ve already had my box rotating app running on the iPhone. Well, if it is so, then you&#8217;re wrong. Things got just more annoying after this&#8230; After investing money into a Mac mini and paying $99 to Apple for entering the Developer Program I though that I can startup with my first real project but I was wrong as well.</p>
<p>I bought the Mac mini from the brother-in-law of one of my friends. As he already developed some iPhone applications on the Mac earlier, I&#8217;ve already had Xcode and iPhone SDK 3.0 installed on it. The problem I&#8217;ve encountered is that just the day before my friend, Imi brought his iPhone to my place in order to test the application he had to update the firmware of the phone to iPhone OS 3.1.3. You may wonder, but Xcode with iPhone SDK 3.0 doesn&#8217;t work with an iPhone device that has the version 3.1.3 of OS installed on it.</p>
<p>Well, I thought I will just download the latest version of the SDK from Apple&#8217;s website, but I faced some further surprises&#8230; Actually there is a free download of Xcode 3.2 and iPhone SDK 3.2 at the site what you can freely download. The problem with this is that it works only on Mac OS X Snow Leopard but not on Leopard.</p>
<p>At this point I was thinking about that I&#8217;ve already invested a huge amount of money and now I have to pay another $29 for the OS update just to run my box rotating app on a real device. Anyway, I&#8217;ve chosen to invest this remaining amount as I really want to develop some games for iPhone. Unfortunately, I figured it out soon that you can order the OS update only inside US and there is no any way to grab a downloadable version for your money (at least as far as I can tell because I was already too pissed off to spend more time on Apple&#8217;s site to look around for a solution).</p>
<p>Our next idea was to downgrade the operating system of the phone to match the SDK what we have but Imi informed me that the oldest OS what you can downgrade for is 3.1.2. This was the time when I gone mad. I really found it ridiculous that someone buys a developer machine that was earlier capable for the purpose and afterwards, due to some stupid decision at Apple, it is simply not capable for it anymore, unless you pay more money to them for the OS upgrade. Anyway, at this time I would have been already satisfied if I can pay that $29 for the upgrade just to run the app.</p>
<p>It was actually pure luck that I didn&#8217;t give it up and started to google for people who met the same problem lately. Fortunately, I&#8217;ve found a guy struggling with the same problem and he <a title="iPhone SDK 3.1.3 Download for Leopard (if you don’t have Snow Leopard!)" href="http://www.dropthenerd.com/iphone-sdk-3-1-3-download-for-leopard-if-you-dont-have-snow-leopard/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.dropthenerd.com/iphone-sdk-3-1-3-download-for-leopard-if-you-dont-have-snow-leopard/?referer=');">posted</a> a download link for the SDK 3.1.3 that works also on Leopard. He really saved the day! If you are having the same problem just grab the SDK from the following address:</p>
<p><a title="iPhone SDK 3.1.3 and Xcode 3.1.4" href="http://developer.apple.com/iphone/download.action?path=%2Fiphone%2Fiphone_sdk_3.1.3__final%2Fiphone_sdk_3.1.3_with_xcode_3.1.4__leopard__9m2809a.dmg" onclick="pageTracker._trackPageview('/outgoing/developer.apple.com/iphone/download.action?path=_2Fiphone_2Fiphone_sdk_3.1.3_final_2Fiphone_sdk_3.1.3_with_xcode_3.1.4_leopard_9m2809a.dmg&amp;referer=');">Download iPhone SDK 3.1.3 and Xcode 3.1.4</a></p>
<h2>Conclusion</h2>
<p>Without the intension to blame the guys at Apple or anybody else, I can say that becoming an iPhone developer involves much more trouble that I have ever thought it could. Anyway, now I managed to get to the point where I can actually start to be productive so I won&#8217;t give it up now&#8230;</p>
<p>I planned to talk also about implementation related issues and tips in this article that you are most probably more interested in, but it seems that this topic is left for a future article as I had so much things to share now that it simply didn&#8217;t fit into the time-box. Anyway, I will recap on the topic in the near future.</p>

]]></content:encoded>
			<wfw:commentRss>http://rastergrid.com/blog/2010/05/common-pitfalls-of-iphone-development/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Going mobile with OpenGL ES</title>
		<link>http://rastergrid.com/blog/2010/04/going-mobile-with-opengl-es/</link>
		<comments>http://rastergrid.com/blog/2010/04/going-mobile-with-opengl-es/#comments</comments>
		<pubDate>Sun, 18 Apr 2010 16:34:53 +0000</pubDate>
		<dc:creator>Daniel Rákos</dc:creator>
				<category><![CDATA[Graphics]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Samples]]></category>
		<category><![CDATA[Telecommunication]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[mobile technology]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[OpenAL]]></category>
		<category><![CDATA[OpenGL]]></category>
		<category><![CDATA[OpenGL ES]]></category>
		<category><![CDATA[phone]]></category>

		<guid isPermaLink="false">http://rastergrid.com/blog/?p=230</guid>
		<description><![CDATA[

Many things have changed since the first time the public put their hands on the first mobile phone device as these days the end user rarely makes their choices when buying a mobile equipment based on their telephony capabilities. In fact, nowadays these devices are one of the most popular entertainment platforms out there. The [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_light-green" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Frastergrid.com%252Fblog%252F2010%252F04%252Fgoing-mobile-with-opengl-es%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2Fa5rKKQ%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Going%20mobile%20with%20OpenGL%20ES%22%20%7D);"></div>
<p>Many things have changed since the first time the public put their hands on the first mobile phone device as these days the end user rarely makes their choices when buying a mobile equipment based on their telephony capabilities. In fact, nowadays these devices are one of the most popular entertainment platforms out there. The main problem for application developers is that these platforms tended to be very heterogeneous from point of view of hardware architecture as well as that of API support. Meanwhile things have changed. While the underlying hardware still varies a lot from device to device the work of application developers has been eased by having cross platform mobile operating systems and open standards. In particular OpenGL ES that is an embedded version of the popular graphics API. In this article I would like to talk about some of the big players of the mobile OS industry and about using OpenGL ES for creating impressive mobile applications.</p>
<p><span id="more-230"></span>The first version of the OpenGL ES specification has been released in order to provide a lightweight API for embedded graphics using a well-defined subset of the functionalities provided by the desktop version of OpenGL. While the specification is already out quite for a while, the wide adoption in the industry and the interest of application developers for it became strong only in the recent past. Currently, we have several mobile platforms that are bundled with 3D accelerators and provide a set of features via OpenGL ES that makes developers capable of creating games that weren&#8217;t possible even on desktop platforms about ten years ago.</p>
<h3>Going 3D on mobiles</h3>
<p>Those who know me, know that well that I was always interested in graphics, especially when using it for entertainment purposes. In particular, I was about to develop video games since the first time I&#8217;ve put my hands on a computer. This is no different now as well as now I&#8217;m writing about OpenGL ES and mobile platforms because I got interested in creating games for mobile phones.</p>
<p>As I&#8217;ve already mentioned before, the problem with developing for mobile equipments is the variety of hardware and software platforms that they are built on. As being somebody who is already familiar with desktop OpenGL, having OpenGL ES in the tool-set already eliminates some of the burden that I must face with.</p>
<p>Also when talking about application platform things have also changed a lot. Nowadays, we have just a few big players in the mobile OS industry thus easing the work of the developers. More precisely, if an application developer plans to go mobile and would like to grab the biggest market audience, can limit their efforts on the following platforms:</p>
<ul>
<li><strong>iPhone OS</strong> &#8211; This is the one that drives Apple&#8217;s iPhone mobile devices as well as the iPod Touch. It provides an application platform similar to that Mac developers got used to. It can be said that this platform is the most popular in the industry, especially when dealing with gaming applications.</li>
<li><strong>Android</strong> &#8211; This is the newest player in the field, brought by Google. While it&#8217;s a newbie in the industry it already captured the attention of tons of developers. We can say that currently Android and iPhone are dictating the direction of mobile entertainment.</li>
<li><strong>Symbian OS</strong> &#8211; Symbian has the largest share in most markets worldwide, still not that popular in the mobile gaming industry. It is the operating system running most of today&#8217;s Nokia phones.</li>
<li><strong>Windows Mobile</strong> &#8211; Microsoft&#8217;s product built on Windows CE, the company&#8217;s embedded operating system.</li>
<li><strong>RIM Blackberry OS</strong> &#8211; Operating system primarily designed for the business industry.</li>
</ul>
<p>While most of these mobile operating systems are built on the same design conceptions it is very difficult for the developer to create cross-platform applications for all these platforms as they vary on the language and tool-set support that minimizes the possibilities for code reuse. Unfortunately this is against the one of the most important rule of mobile development as to maximize portability.</p>
<p>It is not 100% true that there is no way to provide optimum portability for all these platforms, but if we choose this direction we are limited to two possibilities: cross-platform Java applications and web-based applications. While these seem to be excellent alternatives to native programming of the platforms, they severely limit the developer in creating applications that fully take advantage of the underlying hardware. This is when OpenGL ES comes into picture as all these platforms have API support thus providing at least some form of code reuse possibility when dealing with entertainment applications.</p>
<p>Now, I would like to continue with talking about the two platforms that I&#8217;m most interested in.</p>
<h3>iPhone OS</h3>
<p>I started to get involved in iPhone game development because one of my friends pushed me to after seeing the great success of his brother-in-law, <a title="zhooley's iPhone applications" href="http://www.zhooley.hu/iphone/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.zhooley.hu/iphone/?referer=');">zhooley</a> who had some great titles. Currently I don&#8217;t have a Mac yet to develop on, but already read some stuff about iPhone development. This is where the following information come from.</p>
<p>iPhone is currently is the most important platform for mobile application developers. It became such an important factor in the industry thanks to Apple&#8217;s AppStore. Previously there was little to no way for the end users to extend their mobile software base so easily. While this is good for the end user, it is maybe even better for application developers as AppStore provides them quite a large market audience.</p>
<p>The secret why iPhone is an excellent gaming platform lies in the palette of features that the phone hardware and the software frameworks provide. Just to mention the most important ones:</p>
<ul>
<li>Touch screen control with support for multi-touch events capturing the movement of up to five fingers.</li>
<li>Three accelerometers for tracking the spacial movement and direction of the device in all axes.</li>
<li>MVC inspired GUI framework for enhanced productivity.</li>
<li>Support for several industry standard APIs like OpenGL ES, OpenAL and much more.</li>
</ul>
<p>But that&#8217;s enough from the general speaking, let&#8217;s see what&#8217;s about OpenGL ES support on the iPhones&#8230;</p>
<p>As far as I can tell, not being an iPhone owner, the graphics hardware bundled with the mobile comes in form of PowerVR accelerators: MBX and SGX.</p>
<p>The PowerVR MBX has OpenGL ES 1.1 support, that is roughly equivalent to OpenGL 1.5, running a tile-based deferred renderer that is suitable for most 3D applications. That means it has only fixed function capabilities, however that is usually enough for most mobile applications. Also note that it has very limited amount of texture memory of 24MB.</p>
<p>The PowerVR SGX is a more powerful processor that also supports OpenGL ES 2.0, roughly equivalent to OpenGL 2.0, but has optimized fixed function shaders that provide flawless backward compatibility for OpenGL ES 1.1 applications.</p>
<p>The most important thing is still that all iPhones are able to do floating point maths natively and efficiently that is an important factor when dealing with OpenGL applications as the usage of the fixed point types can be quite a burden for developers, especially for those migrating from desktop development.</p>
<p>Additionally, the OpenGL ES implementation on iPhone provides some nice extensions like <a title="GL_OES_framebuffer_object" href="http://www.khronos.org/registry/gles/extensions/OES/OES_framebuffer_object.txt" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.khronos.org/registry/gles/extensions/OES/OES_framebuffer_object.txt?referer=');">GL_OES_framebuffer_object</a>, <a title="GL_OES_compressed_paletted_texture" href="http://www.khronos.org/registry/gles/extensions/OES/OES_compressed_paletted_texture.txt" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.khronos.org/registry/gles/extensions/OES/OES_compressed_paletted_texture.txt?referer=');">GL_OES_compressed_paletted_texture</a> and <a title="GL_OES_point_sprite" href="http://www.khronos.org/registry/gles/extensions/OES/OES_point_sprite.txt" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.khronos.org/registry/gles/extensions/OES/OES_point_sprite.txt?referer=');">GL_OES_point_sprite</a>. Also, thanks to the iPhone simulator that comes with the SDK it is easy to test the application during development without an actual device. Still, one important hint to mention is that the iPhone simulator has different OpenGL ES capabilities than the actual hardwares and also the performance characteristics measured on the simulator should not be taken as valid measurements because the simulator does not really simulate the graphics hardware but only the software platform.</p>
<p>iPhone development is done using the Cocoa API and preferably Objective-C, however C, C++ and Objective-C++ can be also used for development. One just has to interface somehow the Cocoa API and the rest can be done almost in any native programming language. That is one of the key advantages of the iPhone platform that one can develop native applications and no need for Java or web-based solutions.</p>
<p>While iPhone may seem to be a perfect choice for mobile game platform, we should not forget about one big disadvantage of it, in particular that one cannot develop legal iPhone applications without owning a Mac.</p>
<h3>Android</h3>
<p>The Android platform was suggested by one of my workmates who just brought a Droid. That phone is actually a device capable to compete with the iPhone from both features and performance point of view.</p>
<p>Android is the big hit of the last year and my forecast is that it will be one of the most relevant platforms of the upcoming years. Google adopted the idea of Apple and they also created an open market for the softwares that the end user can easily download and install on their devices. This is the AndroidMarket that can easily become a powerful competitor of the AppStore.</p>
<p>While, as I said earlier, the Motorola Droid, as an example, does support about the same feature set that makes the iPhone an excellent gaming platform, this cannot be said about most of the phones running Android on them. This is maybe one of the biggest disadvantages of the Android platform. However, we can take this also as an advantage as it makes it possible for more phones to adopt this operating system.</p>
<p>As the Android operating system is running on various phones from different vendors with different hardware capabilities, there isn&#8217;t too much to talk about the graphics hardware capabilities except that some devices not just don&#8217;t have a graphics accelerator but they also lack of floating point support. This is another disadvantage as it forces developers to stick to fixed point math in their OpenGL ES applications to maximize portability or they have to maintain two different rendering paths.</p>
<p>Originally, Android supported only OpenGL ES 1.0 that is roughly equivalent to OpenGL 1.3. However, since NDK r3 there is also OpenGL ES 2.0 support for Android as well. The feature set here varies much more from both hardware point of view and extension support.</p>
<p>Development for Android is done in Java using a proprietary SDK for accessing the Android API. The SDK comes with a simulator that works fine, except the long initial boot time that I was really surprised about when first trying it out.</p>
<p>One advantage of the SDK that it can be used in virtually any operating system so application developers can work on either Windows, Linux, MacOSX or other platform. There is also a nice Eclipse plugin that makes application development for Android even easier. That&#8217;s why I started with this one.</p>
<p>Just to illustrate how easy to put together some working demo with a good SDK, I&#8217;ve created a simple box rotating app to demonstrate OpenGL ES usage on Android. From installation till having a working application it took no more than two hours. You can find the download links for both the source code and the binary release at the end of the article.</p>
<h3>Why mobile games?</h3>
<p>I am a person who was, is and will be interested in developing computer games. Previously, I was working with desktop platforms and at the time when I was 10 years old it was satisfactory to put together some simple 2D game but not now.</p>
<p>I had always planned to create a state-of-the-art game engine and use it for some game, like most people like me do, but the efforts of one is simply unsatisfactory to compete with the players in the industry out there. Even if I feel the capability to be able to write such an engine but it would take that much time that I simply don&#8217;t have since I am working. Even if I would manage to accomplish it in a year or two then the problem with content creation comes into picture. For an AAA PC game content creation takes several times more than the actual programming and here I even lack the knowledge to achieve it. On the other hand mobile game creation is a much shorter process when you can get to actual results in a matter of weeks that is far better compared to PC game creation.</p>
<p>Also, I would never use third party game engines, except some basic libraries like OpenGL, a physics library and things like that because otherwise I wouldn&#8217;t feel the results being my own creation.</p>
<p>Having game development as a hobby works well during high school and university but it gets quite difficult after you are out there in the world having a job and responsibilities. Maybe I should have been already taking my time before to develop something concrete for PC but, as most fellow hobbyist know, you usually end up having hundreds of unfinished projects.</p>
<p>While I would never forget about desktop platforms and I will actively keep myself up with the evolution of the industry, mobile application development opened another world for me where I can unfold myself.</p>
<h3>HelloAndroid Demo</h3>
<p>Source code: <a href="http://rastergrid.com/blog/wp-content/uploads/2010/04/files/helloandroid_src.zip">helloandroid_src.zip</a><br />
Binary release: <a href="http://rastergrid.com/blog/wp-content/uploads/2010/04/files/HelloAndroid.apk">HelloAndroid.apk</a></p>

]]></content:encoded>
			<wfw:commentRss>http://rastergrid.com/blog/2010/04/going-mobile-with-opengl-es/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Calling Name Presentation</title>
		<link>http://rastergrid.com/blog/2010/01/calling-name-presentation/</link>
		<comments>http://rastergrid.com/blog/2010/01/calling-name-presentation/#comments</comments>
		<pubDate>Mon, 11 Jan 2010 16:40:57 +0000</pubDate>
		<dc:creator>Daniel Rákos</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Telecommunication]]></category>
		<category><![CDATA[CNAP]]></category>
		<category><![CDATA[GSM]]></category>
		<category><![CDATA[mobile technology]]></category>
		<category><![CDATA[phone]]></category>

		<guid isPermaLink="false">http://rastergrid.com/blog/?p=8</guid>
		<description><![CDATA[

There are plenty of mobile subscriber services available to the end user already but wondering why most of these are not really used by anyone and some of them are not even known by end users. There are some exceptions like the Selective Ring Back Tone which conquered quite big audience in the recent past. [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_light-green" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Frastergrid.com%252Fblog%252F2010%252F01%252Fcalling-name-presentation%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Calling%20Name%20Presentation%22%20%7D);"></div>
<p>There are plenty of mobile subscriber services available to the end user already but wondering why most of these are not really used by anyone and some of them are not even known by end users. There are some exceptions like the Selective Ring Back Tone which conquered quite big audience in the recent past. If you are interested what mobile network feature will be the big hit of the next few years you definitely have to read this article.</p>
<p><span id="more-8"></span>As you probably already know it from the About page of from my CV, I&#8217;m currently working in the telecommunication industry. This topic is very far from my domain of interest if we view it very strictly, however, I managed to find the perfect thing what caught my attention during the last one and half year.</p>
<p>The problem with telecom software development is that you usually implement very specific network related functionalities that are not directly visible to the end user. This makes the whole development process a bit too abstract for me as I like much more practical things. Of course, these internals also have their important purpose, however, it is not the same thing as something you can see and play with on your mobile phone.</p>
<p><a href="http://rastergrid.com/blog/wp-content/uploads/2010/01/cnap.png"><img class="alignleft size-full wp-image-50" title="Calling Name Presentation" src="http://rastergrid.com/blog/wp-content/uploads/2010/01/cnap.png" alt="Calling Name Presentation" width="137" height="260" /></a>Fortunately I had luck and joined the company right before a very great service needed to be implemented. Yes, this is calling name presentation (CNAP for short). As the standard says: &#8220;Calling Name Presentation (CNAP) provides the name identification of the calling party (e.g., personal name, company name, “restricted”, “not available”) to the called subscriber&#8221;. This means in practice that when somebody calls you your phone will receive not just the number of the callee but also her name information if such is available. More specifically if somebody calls you, you can see her name even if she&#8217;s number is not in the contact list stored in your mobile device (note that the image on the left is just an illustration).</p>
<p>This information is got from a database which stores names associated with phone numbers. In real life one probably tells the desired name for herself when making the subscription contract, using some nasty SMS code or using some customer service line. Of course this is just what the standard tells but the actual implementation is much more comprehensive and it is improved all the time with additional features.</p>
<p>We developed the first version of the feature not much after I&#8217;ve joined the company with my then manager being the design architect of the feature from implementation point of view. Later he was promoted and left the development line so somebody had to take his place as the responsible of the feature. Fortunately at that time I was one of those who knew the implementation the most so I had the luck to take his place.</p>
<p>It quickly became obvious that CNAP will be a very popular service in the near future so we put huge efforts in promoting and improving it. Since that we made a much more refined version of CNAP and we continuously improve it and I really like that I have great effect on how the functionality evolves over time. I am really proud that I could take key position in developing such a robust new technology and I hope the great audience will like it.</p>

]]></content:encoded>
			<wfw:commentRss>http://rastergrid.com/blog/2010/01/calling-name-presentation/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
