<?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>uxebu » blog &#187; mobile</title>
	<atom:link href="http://uxebu.com/tag/mobile/feed/" rel="self" type="application/rss+xml" />
	<link>http://uxebu.com/blog</link>
	<description></description>
	<lastBuildDate>Mon, 23 Apr 2012 19:10:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>EmbedJS 0.2 and AMD</title>
		<link>http://uxebu.com/blog/2011/10/17/embedjs-0-2-and-amd/</link>
		<comments>http://uxebu.com/blog/2011/10/17/embedjs-0-2-and-amd/#comments</comments>
		<pubDate>Mon, 17 Oct 2011 15:43:16 +0000</pubDate>
		<dc:creator>Jens Arps</dc:creator>
				<category><![CDATA[development tools]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[html5apps]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[dojo]]></category>
		<category><![CDATA[embedjs]]></category>

		<guid isPermaLink="false">http://uxebu.com/blog/?p=1843</guid>
		<description><![CDATA[During JSConf.eu, we released EmbedJS 0.2. That release was mainly about a fundamental architectural change: the move to the AMD pattern for our features. Let me explain why we decided to do this, why we think this is a big step forward and what this means for the user. Modules AMD stands for &#8220;Asynchronous Module [...]]]></description>
			<content:encoded><![CDATA[<p>During JSConf.eu, we released EmbedJS 0.2. That release was mainly about a fundamental architectural change: the move to the AMD pattern for our features. Let me explain why we decided to do this, why we think this is a big step forward and what this means for the user.<br />
<span id="more-1843"></span></p>
<h2>Modules</h2>
<p>AMD stands for &#8220;Asynchronous Module Definition&#8221;. So, what are modules? I&#8217;ll quote the definition from the <a href="http://wiki.commonjs.org/wiki/Modules/1.1" target="_blank">CommonJS Module specification</a>, as it describes it very well:</p>
<blockquote><p>This specification addresses how modules should be written in order to be interoperable among a class of module systems that can be both client and server side, secure or insecure, implemented today or supported by future systems with syntax extensions. These modules are offered privacy of their top scope, facility for importing singleton objects from other modules, and exporting their own API.</p></blockquote>
<p>So, modules are isolated parts of code that live in their own scope and are kind of self-contained. Well, that is pretty much how we see the individual Features in EmbedJS – we made our feature implementations as small as possible and reduced dependencies as much as possible. Many of EmbedJS&#8217; features are also browser-independent, so why not make it possible to use some of the tools in a non-browser environment?</p>
<p>(If you want to learn more on modules and why we need them, I recommend <a href="http://twitter.com/briancavalier" target="_blank">@briancavalier</a>&#8216;s <a href="http://briancavalier.com/presentations/pgh-js-amd-10-2011/" target="_blank">presentation on modules</a>.)</p>
<h2>Features in EmbedJS</h2>
<p>So far, I didn&#8217;t really explain what I mean with &#8220;Features&#8221;, so let me do another quote, this time from the <a href="http://uxebu.github.com/embedjs/" target="_blank">Project Page</a>:</p>
<blockquote><p>EmbedJS uses the concept of features: Functionalities are split up into features, as fine-grained as possible, and each feature might have multiple implementations.</p></blockquote>
<p>Our Features are kinda small and contain only few methods, sometimes even just one. The asyc-promise feature, for example, will get you Promises, and the transport-jsonp feature will get you a method for pull in data via jsonp – and that&#8217;s it.  If multiple methods are contained within one feature, this is because they are too closely related to each other to split them up, like the html-class feature, which contains the <code class="codecolorer text mac-classic"><span class="text">addClass</span></code>, <code class="codecolorer text mac-classic"><span class="text">removeClass</span></code>, <code class="codecolorer text mac-classic"><span class="text">toggleClass</span></code> and <code class="codecolorer text mac-classic"><span class="text">hasClass</span></code> methods.</p>
<h2>AMD vs CommonJS Modules 1.1</h2>
<p>Now that we knew modules were the way to go, there was another, quite important question to solve: There are two common patterns for modules, so which one do we want to apply? One pattern is described in the above mentioned CommonJS Wiki, the other pattern is described in the <a href="https://github.com/amdjs/amdjs-api/wiki/AMD" target="_blank">AMD wiki</a>.</p>
<p>Well, there have been <a href="http://tagneto.blogspot.com/2011/04/on-inventing-js-module-formats-and.html" target="_blank">some</a> <a href="http://unscriptable.com/index.php/2011/09/30/amd-versus-cjs-whats-the-best-format/" target="_blank">blog</a> <a href="http://blog.millermedeiros.com/2011/09/amd-is-better-for-the-web-than-commonjs-modules/" target="_blank">posts</a> lately that compare the pros and cons of each of them, so I don&#8217;t want to repeat all of this – but I&#8217;m hiving a similar tendency towards AMD. Besides this, there was another big reason to go with AMD: Remember, EmbedJS is based on the <a href="http://dojotoolkit.org/" target="_blank">Dojo Toolkit</a>, and it&#8217;s a <a href="http://dojofoundation.org/" target="_blank">Dojo Foundation Project</a> – and we hope that the efforts that went into making EmbedJS might flow back into the Dojo Toolkit one day. And as the Dojo Toolkit uses the AMD approach, the decision was quickly made to do so as well.</p>
<h2>Implications for EmbedJS</h2>
<p>There are several huge benefits for EmbedJS in using the AMD approach. The most noteworthy surely is the ease-of-use for developers. In your code, when you find you want an EmbedJS method, you <a href="http://uxebu.github.com/embedjs/docs/" target="_blank">look up the feature name</a> that provides this method, add it to the require statement and there you go. Man, easy.</p>
<p>A second important thing is that EmbedJS now plays really nice with AMD based projects. In fact, you could see EmbedJS now as a collection of small useful modules, that can be easily integrated – and also easily extended.</p>
<p>The third major benefit is that we can now get rid of all the custom tools we built around EmbedJS – you can load features with any AMD loader (though we use and recommend RequireJS) and build it with any AMD optimizer/builder (we recommend r.js).</p>
<p>Let&#8217;s have an extra word on</p>
<p><strong>Building</strong></p>
<p>It was always possible with EmbedJS to create a custom build that would contain only the features you wanted/needed in your project. But, you had to use our build tool that we created. And learning &amp; using Yet-Another-Build-Tool™ is always… well, let&#8217;s just say it would be cool to avoid it (and, not to forget, so is maintaining it). We did a lot to improve that, we created a GUI that allowed you to just &#8220;click together&#8221; the features you wanted, and we worked on a dynamic loader that would ease development. But still, the situation was far from ideal, and people just ended up going for our ready-made &#8220;kitchensink&#8221; builds that contained <em>all</em> of the features.</p>
<p>Now, we still provide those ready-made builds that contain only the implementations for a given platform (and are stripped of require/define calls), but I really hope that using the AMD approach and using an AMD optimizer to deploy will become the more adopted style.</p>
<h2>Q: Cross-target? A: The Feature Plugin</h2>
<p>One goal of EmbedJS is to allow for easy cross-device development. We got rid of run-time branching but instead went for an approach that held the different implementations for a given feature in separate files, so that one only has to deploy the actually needed code to a given device – and not all the alternate implementations, that sit useless in the device&#8217;s memory and never get used. We needed to achieve that with &#8220;in-house&#8221; means provided by the AMD approach. Lucky us, there&#8217;s the concept of <a href="https://github.com/amdjs/amdjs-api/wiki/Loader-Plugins" target="_blank">loader-plugins</a>, and so I created a <a href="https://github.com/jensarps/AMD-feature" target="_blank">feature-plugin for AMD loaders</a>. The idea is simple yet effective: You create an implementation map that maps a feature name to an implementation, and if there are multiple implementations, you supply tests that tells the plugin which feature to use.</p>
<p>When you&#8217;re ready to deploy, you have two choices: I f you really don&#8217;t know on what target your code is going to end up, you can use the dynamic implementation map containing the tests for the optimizer, and you&#8217;ll get a build that contains all of the available implementations. Then, during runtime, the feature plugin will run the tests and load the specific implementation. But, if you <em>do</em> know what target your code will run on, you provide a specific implementation map that doesn&#8217;t contain tests but directly maps to the according implementations, and you will only have those in your built file.</p>
<h2>Synopsis</h2>
<p>AMD is exactly what we needed to make EmbedJS more what we want it to be – an easy to use JavaScript toolbox that is especially handy for cross-target scenarios such as cross-platform mobile development. So, please don&#8217;t hesitate and check it out on Github, read the project page and check out the examples!</p>
<p>&nbsp;</p>
<p><strong>Resources / Further Reading</strong></p>
<ul>
<li><a href="https://github.com/uxebu/embedjs" target="_blank">EmbedJS on GitHub</a></li>
<li><a href="http://uxebu.github.com/embedjs/" target="_blank">EmbedJS Project Page</a></li>
<li><a href="http://uxebu.github.com/embedjs/docs/" target="_blank">EmbedJS API Docs</a></li>
<li><a href="https://github.com/jensarps/AMD-feature" target="_blank">AMD-Feature plugin</a></li>
<li><a href="https://github.com/amdjs/amdjs-api/wiki" target="_blank">AMD Wiki</a></li>
<li><a href="http://wiki.commonjs.org/wiki/CommonJS" target="_blank">CommonJS Wiki</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://uxebu.com/blog/2011/10/17/embedjs-0-2-and-amd/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Explaining EmbedJS</title>
		<link>http://uxebu.com/blog/2011/01/31/explaining-embedjs/</link>
		<comments>http://uxebu.com/blog/2011/01/31/explaining-embedjs/#comments</comments>
		<pubDate>Mon, 31 Jan 2011 14:02:28 +0000</pubDate>
		<dc:creator>Jens Arps</dc:creator>
				<category><![CDATA[development tools]]></category>
		<category><![CDATA[dojo]]></category>
		<category><![CDATA[frontend engineering]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[uxebu]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[embedjs]]></category>
		<category><![CDATA[memory usage]]></category>
		<category><![CDATA[optimize]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://uxebu.com/blog/?p=1366</guid>
		<description><![CDATA[Last week, we tagged the current state of EmbedJS 0.1. This is a large step for us, and something we have been waiting for and wanting to do for a long time. And with doing so, the need arises to answer a lot of questions – and we better start sooner than later. So, here [...]]]></description>
			<content:encoded><![CDATA[<p>Last week, we tagged the current state of EmbedJS 0.1. This is a large step for us, and something we have been waiting for and wanting to do for a long time. And with doing so, the need arises to answer a lot of questions – and we better start sooner than later. So, here it is, the first part of „Explaining EmbedJS“.</p>
<h2>What is it?</h2>
<p>It‘s a JavaScript Toolkit, especially aimed at embedded devices. Embedded devices, that is phones, tablet devices, TVs, car dashboards and the like. Devices that are capable of running JavaScript. We are sure that this list is going to grow over time – and will hopefully one day also include devices like your fridge. EmbedJS is based on the Dojo Toolkit.<br />
<span id="more-1366"></span></p>
<h2>Why?</h2>
<p>Because the toolkits and frameworks that exist focus on desktop browsers and therefore have a different approach – an approach we didn‘t find that suitable for embedded/mobile development. And the JS frameworks that target mobile devices are flawed, too: either they target only a specific device or platform, or they provide far more than we do need and want.</p>
<p>What we wanted was a toolkit that offered a unified API across different platforms, but with the best implementation that was available for each platform. And we didn‘t want to ship code that implemented a certain feature for, say, an old Blackberry device to an iPhone. Plus, we wanted that API to be small – enough to assist us in our daily work, but not that bloated that we would ship code to a phone that we wouldn‘t need in most of our projects.</p>
<h2>The Dojo Toolkit</h2>
<p>We at uxebu have a strong affinity to the <a href="http://dojotoolkit.org/" target="_blank">Dojo Toolkit</a> – most of us are committers – for a good reason: we believe that it has done many things right, and that it has an excellent code quality. Thus, finding a starting point for our venture to what was later to be EmbedJS was pretty easy: It was the very core of the Dojo Toolkit, dojo._base.</p>
<p>We examined the code and split it into its smallest parts (features, how we call them in EmbedJS). After having the features all nicely separated, we could look for the best implementation for each of the platforms we wanted to support, and put it into a separate file. Then we optimized our code, tweaking here and there, but also using the code from dojo._base as it was, because it already was the best implementation.</p>
<p>And we needed to find means to put all these tiny parts together again, respecting any given dependecies, to create a file that then contained all the feature‘s implementations for a given platform – so the EmbedJS Tools were born, including our highly flexible build system.</p>
<h2>API</h2>
<p>EmbedJS‘ API is a small subset on Dojo‘s API. It provides around 70 methods, from the fields language enhancement (like Array manipulation or JSON), OO (like classes and inheritance), transport (like JSONP or XHR), event system (like connecting to DOM events or methods), DOM manipulation (like style or node creation) and misc things like Promises or pub/sub.</p>
<p>We kept the method signatures intact so that you can import your existing knowledge from working with the Dojo Toolkit to EmbedJS. There are only a few minor changes where we<br />
a) found a new name highly useful, e.g <code class="codecolorer text mac-classic"><span class="text">dojo.io.script.get()</span></code> is <code class="codecolorer text mac-classic"><span class="text">embed.jsonp()</span></code><br />
b) we needed to strip given functionality for the sake of code size.</p>
<p>All methods in EmbedJS are available under the embed namespace as well as under the dojo namespace. I.e. to call the connect method you can use <code class="codecolorer text mac-classic"><span class="text">dojo.connect()</span></code> and <code class="codecolorer text mac-classic"><span class="text">embed.connect()</span></code>.</p>
<p>The full API documentations is <a href="http://embedjs.org/apidocs/dools/app/apidoc/embedjs/" target="_blank">here</a>, though it‘s undergoing some updates right now.</p>
<h2>Summary</h2>
<p>I didn‘t want to dig too deep in the first article on EmbedJS, but I guess you got the point: EmbedJS is a highly optimized Dojo core, and offers you a specialized, optimal build for a given platform. To explain how the build system works, how we manage dependencies, how we separate our features and our implementations and how one can create a project-oriented custom build will need another blog post – but if you are too curious, you are invited to take a look at <a href="https://github.com/uxebu/embedjs" target="_blank">the source code at github</a>; a lot is self-explenatory there. A further source of information is the <a href="http://uxebu.github.com/embedjs/" target="_blank">EmbedJS project page</a>, as well as the <a href="https://github.com/uxebu/embedjs-tools" target="_blank">EmbedJS Tools source</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://uxebu.com/blog/2011/01/31/explaining-embedjs/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>BarCamp Munich 2010 &#8211; seen through JavaScript and mobile eyes</title>
		<link>http://uxebu.com/blog/2010/10/16/barcamp-munich-2010-seen-through-javascript-and-mobile-eyes/</link>
		<comments>http://uxebu.com/blog/2010/10/16/barcamp-munich-2010-seen-through-javascript-and-mobile-eyes/#comments</comments>
		<pubDate>Sat, 16 Oct 2010 15:47:05 +0000</pubDate>
		<dc:creator>wolfram</dc:creator>
				<category><![CDATA[business]]></category>
		<category><![CDATA[event]]></category>
		<category><![CDATA[html5apps]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[uxebu]]></category>
		<category><![CDATA[w3c widgets]]></category>
		<category><![CDATA[barcamp]]></category>
		<category><![CDATA[conference]]></category>

		<guid isPermaLink="false">http://uxebu.com/blog/?p=1281</guid>
		<description><![CDATA[First and foremost big thanks to the organizers and sponsors of this awesome BarCamp. It almost seems as if BarCamps have already passed their tipping point, but still every time I discover new and interesting things, I meet people who attend for the first time and are excited about it, which makes it really awesome [...]]]></description>
			<content:encoded><![CDATA[<p>First and foremost big thanks to the organizers and sponsors of this awesome <a href="http://barcampmunich.mixxt.de/">BarCamp</a>. It almost seems as if BarCamps have already passed their tipping point, but still every time I discover new and interesting things, I meet people who attend for the first time and are excited about it, which makes it really awesome and fun. Maybe the tipping point had been reached but I guess the BarCamp is just on it&#8217;s way to become an integral part of the web culture and establishes itself as a standard event type besides the normal (mostly commercial) conferences. And as I always like to point out the people at BarCamps are those that want to go there, not those that have to be there (because their company had sent them or alike). We enjoyed it and have hopefully also brought value to it &#8211; that is what a BarCamp is all about: participate.<br />
Thank you!<br />
And let&#8217;s move on, which I do right this moment, sitting on the train going to the next (commercial) event the <a href="http://webtechcon.de">WebTechCon in Mainz</a> to bring the cross platform mobile web to it :).<br />
<span id="more-1281"></span></p>
<h2>&#8220;Modern Company&#8221; session &#8211; uxebu as the example</h2>
<p>But before I dive into the tech sessions I would like to mention that I really felt the need to hold a session which I had called &#8220;Modern Company&#8221; where I tried to show our philosophy at uxebu, how we work together, how we use the modern media, how it all came about and why we do it this way. First I didn&#8217;t know where to start. Then I started to talk about when and how the idea for uxebu came about, that we <a href="">decided online to found it</a> and really met some months later. Thanks to our open source background and our history we wanted to continue the same spirit inside the company, I tried to show how and based on what facts we grow our team (the word &#8220;hiring&#8221; seems such a one-sided process). I realize now that I forgot a lot of the good stuff, but maybe this is the chance to make this become a separate talk to hold at other events.<br />
I really loved the discussion and the questions that it had started, <a href="http://titanpad.com/izRqsSTAoT">notes had been taken</a>, a lot of critical questions came up and had been answered by <a href="http://twitter.com/tobeytailor">Tobias</a> and me. One interesting mentioning came up about <a href="http://www.faz.net/s/Rub8EC3C0841F934F3ABA0703761B67E9FA/Doc~E80113EC3EB3F48A5A14211D237BF109D~ATpl~Ecommon~Scontent.html">an article which mentioned a company that pays the same salary to all employees</a>. Thank you for all this input, I really enjoyed it and will definitely talk about this more and will prepare some more info next time.</p>
<h2>JavaScript &#8211; a topic of big interest</h2>
<p>We had founded uxebu purely for doing JavaScript consulting and pushing the limits and it is just really exciting to see how much interest this language is gaining in the last years. Not only <a href="http://jsconf.com">jsconf</a> the mother of all JavaScript events underlines this but also a lot of other conferences and events like <a href="http://2010.full-frontal.org/">fullfrontal</a>, <a href="http://fronteers.nl/">fronteers</a>, <a href="http://js1k.com/home">js1k</a>, <a href="http://10k.aneventapart.com/">10k Apart</a>, <a href="http://events.jquery.org/2010/boston/">jQueryConf</a> and so on which <a href="http://twitter.com/netzzwerg">Béla Varga</a> listed in his &#8220;<a href="http://www.slideshare.net/netzzwerg/javascript-rock-and-roll">JavaScript Rock&#8217;n Roll</a>&#8221; session.<br />
The &#8220;<a href="http://nodejs.org/">node.js</a>&#8221; session and &#8220;JavaScript Rock&#8217;n Roll&#8221; (by <a href="http://twitter.com/netzzwerg">Béla (@netzzwerg)</a> and <a href="http://twitter.com/tobeytailor">Tobias Schneider (@tobeytailor)</a>) made it very obvious that JavaScript is a hot topic, the BarCamp was not necessarily overcrowded with programmers, but still those two sessions had been very well filled and the discussions had been really fun. The conclusion of the &#8220;node.js&#8221; session that Tobias drew and evangelized was &#8220;node.js is currently very hyped and just not yet ready for production, so use at your own risk, it&#8217;s not even alpha yet&#8221;. Everybody also agreed that node.js is not the new saviour and a replacement for Apache, it&#8217;s another tool you should add to your tool belt, use it when it comes in handy and be sure to know how and when to use it. Final conclusion was, as usual, if you should use it depends on what you want to do :).<br />
Béla opened up the &#8220;JavaScript Rock&#8217;n Roll&#8221; session by giving a very good overview of what toolkits exist out there, who created them and what they are good for. He very well layed out some of the advantages and disadvantages, the rough corners and what is hard and what easy to learn. Shortly the discussion about the right JavaScript IDE came up but as usual there is no one-fits-all solution, choose yourself! Everybody was very carefully listening when <a href="http://twitter.com/tobeytailor">@tobeytailor</a> dove deep into the details of <a href="http://www.ecma-international.org/publications/standards/Ecma-262.htm">ECMAScript</a>, JavaScript, the differences, the latest specification, the changes, prototypes, <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/proto">__proto__</a> and so on. Other interesting topics in those sessions had been <a href="http://promotejs.com/">promotejs</a>, <a href="http://github.com/madrobby/vapor.js">vapor.js</a>, <a href="http://www.slideshare.net/jensarps/the-hitchhikers-guide-to-client-side-persistent-storage">details about storage mechanisms</a>, <a href="http://jquerymobile.com/">jQueryMobile</a>, <a href="http://embedjs.org/">embedJS</a>, <a href="http://apparat.io">apparat.io</a><br />
That was real &#8220;JavaScript Rock&#8217;n Roll&#8221;!</p>
<h2>Native vs. Web</h2>
<p>On Saturday, the first day of the BarCamp, I had offered a session &#8220;Mobile: Native vs. Web&#8221; but didn&#8217;t see too many hands raised, so I just didn&#8217;t put it in the schedule, later some people asked me when this session would take place and that I should hold it on Sunday, which I fortunately then did together with <a href="http://twitter.com/flowdi">Florian Detig</a>. And I have to say I am very glad we did so, because 1) we (at uxebu) have a lot of awesome stuff to talk about and 2) it was really fun interacting with the audience and passing on all this information. It is always amazing again how much there is to say about how to create an app which can also be submitted into any of the various app stores by just using web technologies (the <a href="http://www.yourappshop.com">adult industry proved that again</a>). HTML, CSS and JavaScript are just way to underestimated for being of good use in the mobile world. Florian first showed his <a href="http://prezi.com/otqop-_wynvl/">awesome slides</a> (I think they are really cool!). I continued the talk and dove a bit deeper into the mobile web topic, after my try of explaining the different movements in the native API space with players like W3C&#8217;s DAP, BONDI, JIL, WAC we deeply went into answering and discussing web technologies on mobile devices, I talked about our experiences, showed some projects we realized and answered a couple questions.<br />
Not really a surprise but still impressing was the positive feedback we got when I showed of <a href="http://apparat.io">apparat.io</a>, our soon to be launched service that will be able to convert a web app into a native app (You want to know about it first &#8211; follow <a href="http://twitter.com/apparatio">@apparatio</a>). The release date for the private beta will be the 25th October 2010, people who follow @apparatio will get accounts first. I also showed our project <a href="http://embedjs.org">embedJS</a> a toolkit (based on dojo) optimized for mobile usage.</p>
<p>All in all the BarCamp just made it obvious again that we are playing in an very interesting field and that we at uxebu are pushing the limits, that is fun, as much as the BarCamp was big fun, we will be back next time, for sure!<br />
Thanks again and keep up the good work!</p>
]]></content:encoded>
			<wfw:commentRss>http://uxebu.com/blog/2010/10/16/barcamp-munich-2010-seen-through-javascript-and-mobile-eyes/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Forgotten tricks for iPhones Safari</title>
		<link>http://uxebu.com/blog/2010/04/28/forgotten-tricks-for-iphones-safari/</link>
		<comments>http://uxebu.com/blog/2010/04/28/forgotten-tricks-for-iphones-safari/#comments</comments>
		<pubDate>Wed, 28 Apr 2010 14:18:21 +0000</pubDate>
		<dc:creator>Nikolai Onken</dc:creator>
				<category><![CDATA[frontend engineering]]></category>
		<category><![CDATA[html5apps]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://uxebu.com/blog/?p=1171</guid>
		<description><![CDATA[Safari om the iPhone is an incredible powerful browser and comes with a whole bunch of features. Besides the amazing support for CSS3, a superfast rendering engine and great JavaScript support, there are a few hidden gems I want to explain in this (and maybe following) blogposts. If you are interested in mobile web development, [...]]]></description>
			<content:encoded><![CDATA[<p>Safari om the iPhone is an incredible powerful browser and comes with a whole bunch of features.<br />
Besides the amazing support for CSS3, a superfast rendering engine and great JavaScript support, there are a few hidden gems I want to explain in this (and maybe following) blogposts. If you are interested in mobile web development, maybe you will find a few features you haven&#8217;t seen before.</p>
<h2>Making your web app iPhone ready</h2>
<p>Note: <a href="http://static.uxebu.com/~nonken/a/safariGems">you can visit the example used in this blog post from your iPhone here.</a></p>
<p><object width="500" height="344"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=11241853&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=11241853&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="500" height="344"></embed></object><br />
<span id="more-1171"></span><br />
The most well-known and really most important meta tag you need to know about is the viewport meta-tag. It allows you to define the minimum and maximum zoom-level and whether or not the user is allowed to zoom into the view. You disable zooming by setting the minimum-scale to the same value as maximum-scale. At the same time you can define the viewport width and height by setting the &#8220;device-width&#8221; or &#8220;device-height&#8221; properties. If you have a website with a width of 960px and you want it to be zoomed in to fit exactly that width, all you need to do is to set width to 960. Since your website should run on several devices though with different resolutions it is not recommended to set an absolute width and instead use the predefined device-width and device-height values. This ensures that your viewport has exactly the size supported by the device.</p>
<div class="codecolorer-container javascript twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #339933;">&lt;</span>meta <span style="color: #000066;">name</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;viewport&quot;</span> content<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;width=device-width,minimum-scale=1.0,maximum-scale=1.0&quot;</span><span style="color: #339933;">/&gt;</span></div></td></tr></tbody></table></div>
<p>Now lets get to the juicy part. When creating an HTML5 app for the iPhone you can define an icon which you will see on the start screen of your iPhone. Once you set this meta tag, the user won&#8217;t be able to see a difference between a native application and a web application on your iPhones homescreen.</p>
<div class="codecolorer-container javascript twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #339933;">&lt;</span>link rel<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;apple-touch-icon&quot;</span> href<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;/yourIcon.png&quot;</span><span style="color: #339933;">/&gt;</span></div></td></tr></tbody></table></div>
<p>To add even another level of detail you can define a startup screen for your application. This is especially useful when your application supports offline mode using cache manifests.</p>
<div class="codecolorer-container javascript twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #339933;">&lt;</span>link rel<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;apple-touch-startup-image&quot;</span> href<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;/startupImage.png&quot;</span><span style="color: #339933;">&gt;</span></div></td></tr></tbody></table></div>
<p>All of those features wouldn&#8217;t be complete if you couldn&#8217;t hide the browsers chrome once you start your application from the homescreen. To disable the chrome just insert following tag:</p>
<div class="codecolorer-container javascript twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #339933;">&lt;</span>meta <span style="color: #000066;">name</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;apple-mobile-web-app-capable&quot;</span> content<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;yes&quot;</span><span style="color: #339933;">&gt;</span></div></td></tr></tbody></table></div>
<p>Now after you have added this meta tag you want to be able to differenciate between the user launching the app from the homescreen of the browser.</p>
<div class="codecolorer-container javascript twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #006600; font-style: italic;">// navigator.standalone</span><br />
<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;standalone&quot;</span> <span style="color: #000066; font-weight: bold;">in</span> navigator<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>navigator.<span style="color: #660066;">standalone</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Started from homescreen&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><span style="color: #000066; font-weight: bold;">else</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Started in browser&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #000066; font-weight: bold;">else</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Not supporting standalone property&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<p>Last but not least you can even control the look and feel of the status bar on the top. You can either use the default status bar or a black status bar or a semi translucent status bar:</p>
<div class="codecolorer-container javascript twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #339933;">&lt;</span>meta <span style="color: #000066;">name</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;apple-mobile-web-app-status-bar-style&quot;</span> content<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;black/default/black-translucent&quot;</span> <span style="color: #339933;">/&gt;</span></div></td></tr></tbody></table></div>
<p>These are the most important things you need to know to make a simple website be HTML5 app ready on your iPhone (note: this only works on the iPhone but won&#8217;t hurt other devices and platforms). A &#8220;normal&#8221; user won&#8217;t be able to differentiate between a native or a HTML5 app anymore. Do you know of similar features of other phones? Do you think we should standardize the discussed features? (Some are already). </p>
<p>If you need support getting your website or web application HTML5 app ready, feel free to <a href="http://uxebu.com/contact">contact us</a>.</p>
<p>Enjoy</p>
<h2>Dowload</h2>
<ul>
<li>
<a href="http://static.uxebu.com/~nonken/a/safariGems/safariGems.tgz">Source</a>
</li>
<li><a href="http://developer.apple.com/safari/library/documentation/AppleApplications/Reference/SafariWebContent/ConfiguringWebApplications/ConfiguringWebApplications.html">Docs</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://uxebu.com/blog/2010/04/28/forgotten-tricks-for-iphones-safari/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Developing Widgets for Bada Devices</title>
		<link>http://uxebu.com/blog/2010/03/25/developing-widgets-for-bada-devices/</link>
		<comments>http://uxebu.com/blog/2010/03/25/developing-widgets-for-bada-devices/#comments</comments>
		<pubDate>Thu, 25 Mar 2010 11:06:36 +0000</pubDate>
		<dc:creator>wolfram</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[development tools]]></category>
		<category><![CDATA[frontend engineering]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[Tumbles]]></category>
		<category><![CDATA[w3c widgets]]></category>
		<category><![CDATA[bada]]></category>
		<category><![CDATA[widgets]]></category>

		<guid isPermaLink="false">http://uxebu.com/blog/2010/03/25/developing-widgets-for-bada-devices/</guid>
		<description><![CDATA[Developing Widgets for Bada Devices]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.badadev.com/developing-widgets-for-bada-devices/">Developing Widgets for Bada Devices</a></p>
]]></content:encoded>
			<wfw:commentRss>http://uxebu.com/blog/2010/03/25/developing-widgets-for-bada-devices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mobile Web – does the adult industry point the way (again)?</title>
		<link>http://uxebu.com/blog/2010/02/26/mobile-web-%e2%80%93-does-the-adult-industry-point-the-way-again/</link>
		<comments>http://uxebu.com/blog/2010/02/26/mobile-web-%e2%80%93-does-the-adult-industry-point-the-way-again/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 12:35:31 +0000</pubDate>
		<dc:creator>Nikolai Onken</dc:creator>
				<category><![CDATA[business]]></category>
		<category><![CDATA[frontend engineering]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[uxebu]]></category>
		<category><![CDATA[w3c widgets]]></category>
		<category><![CDATA[app stores]]></category>
		<category><![CDATA[cross-platform]]></category>

		<guid isPermaLink="false">http://uxebu.com/blog/?p=1054</guid>
		<description><![CDATA[During a very intense week at the Mobile World Congress in Barcelona and a lot of very interesting meetings, discussions and talks, one incident surprisingly stuck out. At one of the evening events, I randomly met the folks behind http://www.yourappshop.com, a platform which allows you to distribute iPhone applications through other means than the official [...]]]></description>
			<content:encoded><![CDATA[<p>During a very intense week at the Mobile World Congress in Barcelona and a lot of very interesting meetings, discussions and talks, one incident surprisingly stuck out. At one of the evening events, I randomly met the folks behind <a href="http://www.yourappshop.com">http://www.yourappshop.com</a>, a platform which allows you to distribute iPhone applications through other means than the official Apple app store – you don’t need a jailbroken iPhone as you need when using alternative app stores such as <a href="http://cydia.saurik.com/">Cydia</a>. But before I explain in more detail what they are doing lets have a look at the current app store hype.<br />
<span id="more-1054"></span></p>
<h2>Is the app store concept flawed?</h2>
<p>Lately I have been reading <a href="http://www.spiegel.de/netzwelt/web/0,1518,679750,00.html">more</a> and <a href="http://www.spiegel.de/netzwelt/netzpolitik/0,1518,679959,00.html">more</a> articles, <a href="http://twitter.com/tomiahonen/status/9580847661">tweets</a> and <a href="http://www.quirksmode.org/blog/archives/2010/02/the_iphone_obse.html">blogposts</a> stating their concerns about the fact that Apple almost randomly removes applications and that people for some reason have distorted views of the mobile application and app store reality.</p>
<p>I am not in favor of allowing any kind of application into an app store by default, there is no reason why you should have to do that (a bakery also selects which producs it wants to sell). The problem really is though, that Apple is running the only official app store for the iPhone. One app store controlling the entire market for a device is plainly wrong!</p>
<p>Not only does it cripple innovation but it also shows one major flaw of Apples strategy – the factor of competence. How on earth does Apple, a hardware and software manufacturer think it has the competence to judge whether an application should be admitted or not? Maybe in these days when mobile applications don’t go further than simple games or information display/exchange – but what if applications are starting to come with real security implications?</p>
<p><strong>An example:</strong><br />
Imagine you are writing an application reading your heartrate and writing an ECG (This is not too far fetched, <a href="http://uxebu.com/blog/2010/01/25/humanapi-the-browser-in-the-real-world/">look at our research project HumanApi</a>). Is Apple seriously trying to tell that they can judge whether such an app should make it into the app store or not? They by far don’t have the competence of the medical industry, no way!</p>
<p>A much more interesting app store concept would be to have certified stores by companies I trust (or community driven in other application use-cases). Looking at the medical example, wouldn’t it make much more sense if companies like Siemens, Phillips, and other medical device manufacturers start an alliance and run their own store, so I can trust the apps I am using, so that as a developer, I know that qualified people are judging my application? Not only would this guarantee much higher quality but it also would foster competition which we are lacking here.</p>
<h2>Companies == lemmings?</h2>
<p>Where does this &#8220;I need an app as well&#8221; come from? Why do people care so much when their application gets rejected by the Apple app store?</p>
<p><strong>An example:</strong><br />
On february 23rd, large German online publisher <a href="http://www.spiegel.de/netzwelt/web/0,1518,679750,00.html">Spiegel Online</a> wrote an article about the fact that Apple might disapprove an application of the famous yellow press publisher &#8220;<a href="http://bild.de">Bild</a>&#8220;. On february 24th they <a href="http://www.spiegel.de/netzwelt/netzpolitik/0,1518,679959,00.html">posted another front-page article</a> questioning whether legal means would be the only way to go?!?</p>
<p>Now that is insane, not only will it cost those folks a lot of money to run law suits against Apple, on top of that they are forcing their way into technology without future – already today, the Apple app store is not the only way to legally distribute your applications to the iPhone! Apple is a new player in the mobile industry and albeit its amazing achievements, <a href="http://communities-dominate.blogs.com/brands/2010/02/phone-market-shares-for-year-of-2009-and-last-quarter-2009.html">never forget looking at marketshares</a>.</p>
<p>To summarize: For whatever kind of reason, one of the biggest German online newspaper sees Apple rejecting applications as being threatening enough to write an article – how more blatantly can the reality be distorted?</p>
<h2>What can and should we do?</h2>
<p>Back to the surprising incident I was mentioning earlier: When the folks behind <a href="http://www.yourappshop.com/">http://www.yourappshop.com</a> showed me their application store – for the iPhone! – one thought came to my mind &#8220;Does the Adult Industry point the way (again)?&#8221;  (whether you and I approve adult content or not is a different discussion, what we need to take out of this is the fact that they are showing a very viable way to go).</p>
<p>YourAppShop developed an app store entirely based on web technologies (lots of HTML5 which is supported by the iPhone browser and many many more devices) – which allows you to download web based applications to your homescreen, watch image slideshows, even videos. Everything works off- and online. To the well traveled mobile web developer all of this is nothing new, it is all part of HTML5. The folks of YourAppStore though were creative enough to build it so that the end-user does not feel the difference between a real native app (from the Apple store) and an application based on web technologies, payment for the service included! </p>
<p>Why don’t people (especially the folks in decision making positions) see that you can write amazing applications for the iPhone based on technology which also will work on other phones and which does not have to pass the QA of Apple? </p>
<p>If you are not too bothered about adult content (NSFW) take a look at <a href="http://www.yourappshop.com">http://www.yourappshop.com</a> from within your iPhone browser and visit one of their stores – the way they have set up a viable ecosystem using web technologies will give you a new impression of what we actually are able to do today.</p>
<p>As much as people might have concerns with the adult industry, they are showing us how we can get out of the app store restrictions – technology of today can be used to write successful applications and you can be monetizing the potential (more than 8.000.000 downloads for YourAppShop should say enough), Now that sounds great doesn’t it <a href="http://twitter.com/bild_aktuell">@Bild.de</a> and <a href="http://twitter.com/spiegel_alles">@Spiegel.de</a>?</p>
<p>And as if its not enough, Apple itself is showing a great example of the potential of web applications running on the iPhone with their online help: <a href="http://help.apple.com/iphone">http://help.apple.com/iphone</a> &#8211; go visit their site, and add the application to your homescreen by clicking on the &#8220;+&#8221; button in the bottom toolbar (Not to mention the fact that iPhone applications where meant to be build using the web stack in the first place). </p>
<p>As an application developer/creator, your goal should not be to only run on one platform, unless you don’t care about having sustainable and solid business case or unless your target-group is only the group of iPhone users (which I can’t believe is ever true).</p>
<p><a href="http://uxebu.com/blog/2010/02/15/eventninja-a-mobile-cross-platform-app/">We showed that there is technology which allows you to write applications for more than one platform</a>, technology which works whether there is an app store in between or not, technology which has a future, technology the web is built with – HTML/JavaScript/CSS or better, HTML5 apps. Use it and stop wasting time being afraid that Apple will ruin your business because they are rejecting an application – you shouldn’t have to care less!!</p>
<h2>Conclusion</h2>
<p>Jumping into the &#8220;We need to have an iPhone app&#8221; mantra without any second thought is very dangerous, its not good for your business. Analyze your requirements and check carefully if you can’t cover your needs with an application based on web technologies (which <a href="http://uxebu.com/blog/2010/02/15/eventninja-a-mobile-cross-platform-app/">as we proved still can make it into the Apple store</a> if they approve of your content). The advantage of applications based on web technology is overwhelming:</p>
<ul>
<li>Standardized technology stack (HTML5)</li>
<li>HTML5 apps work in mobile browsers, can be distributed over app stores or even can be integrated into traditional websites.</li>
<li>Much lower development costs.</li>
<li>Huge amount of target platforms</li>
</ul>
<p>Of course there are application cases where you need to access the devices hardware in ways the browser doesn&#8217;t yet allow you to (games or applications with extreme performance requirements for example) &#8211; but especially publishers and content driven apps should think twice.</p>
<p>If you are looking into building a mobile application and are not sure whether you should go for the native iPhone, native Android or any other native platform (and spend tons of money on it) or whether you should build on top of the much more open technology stack of the web, <a href="/contact">feel free to contact us and we can take a closer look at your requirements</a>.</p>
<p>Back to the <a href="http://www.vdz.de">folks who are planning to sue Apple (VDZ)</a> – start putting your apples into the right basket, build a web based application store as you can see with YourAppShop and you will have complete freedom over what you want to sell and what not. Your customers won’t feel the difference, they might even like it more because you can offer better prices (no profit sharing with Apple). Sueing Apple won’t help a thing, don’t waste your money and time.</p>
]]></content:encoded>
			<wfw:commentRss>http://uxebu.com/blog/2010/02/26/mobile-web-%e2%80%93-does-the-adult-industry-point-the-way-again/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>HumanApi &#8211; the browser in the real world</title>
		<link>http://uxebu.com/blog/2010/01/25/humanapi-the-browser-in-the-real-world/</link>
		<comments>http://uxebu.com/blog/2010/01/25/humanapi-the-browser-in-the-real-world/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 14:32:06 +0000</pubDate>
		<dc:creator>Nikolai Onken</dc:creator>
				<category><![CDATA[frontend engineering]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[uxebu]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[humanapi]]></category>

		<guid isPermaLink="false">http://blog.uxebu.com/?p=922</guid>
		<description><![CDATA[During the Oredev speakers dinner last November, I was having an interesting discussion about the car industry and how Google in one swipe mangled up the turn-to-turn navigation market. During this discussion and other interesting conversations at the following JsConf, it it became more and more clear that we (web developers) should be able to [...]]]></description>
			<content:encoded><![CDATA[<p>During the <a href="http://www.oredev.org" target="_blank">Oredev</a> speakers dinner last November, I was having an interesting discussion about the car industry and how Google in one swipe mangled up the turn-to-turn navigation market. During this discussion and other interesting conversations at the following <a href="http://jsconf.eu">JsConf</a>, it it became more and more clear that we (web developers) should be able to write applications for instance for cars, write applications for phones we can plug into cars, and write those applications using web technologies &#8211; meaning JavaScript, HTML and CSS. </p>
<p><span id="more-922"></span></p>
<p>Since that discussion, the idea developed further and after some time, things started to take shape. </p>
<p>Lets take a look at the first prototype of a web based application (is this the first JavaScript ECG ever?) which reads your heart rate, sends it to the mobile phone via bluetooth and displays it in a native application driven by PhoneGap, meaning &#8211; the actual application is written using JavaScript, HTML(5), CSS.</p>
<div style="text-align: center; margin: 40px; 0">
<object width="500" height="375"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=8915705&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=8915705&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="500" height="375"></embed></object>
</div>
<p>Because the quality of the above video isn&#8217;t that good I have recorded a screencast from the iPhone simulator. This video only shows the applications look and feel since the simulator is not connected to the Polar hardware via Bluetooth.</p>
<div style="text-align: center; margin: 40px; 0">
<object width="300" height="514"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=8849502&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=8849502&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="300" height="514"></embed></object>
</div>
<p><a href="http://humanapi.org/category/videos/">More videos are available here</a></p>
<p>After I got a first prototype running, the thoughts of what this could potentially mean would not stop popping up in my mind &#8211; the consequences for the web-development community are immense and the challenges we as web developers can face are broadened in a way that tons of exciting new things are lying ahead of us.</p>
<p>In this blogpost I will give you a quick outline the features of this prototype and the components I used.</p>
<h2>Setup</h2>
<p>To get the HumanApi ECG running I used following components:</p>
<ul>
<li><a href="http://phonegap.com">PhoneGap</a></li>
<li><a href="http://apple.com/iphone">iPhone</a></li>
<li><a href="http://www.polarusa.com/us-en/products/accessories/T31_coded_Transmitter">Polar T31</a></li>
<li><a href="http://arduino.cc/en/Main/ArduinoBoardBluetooth">Arduino BT</a></li>
<li><a href="http://danjuliodesigns.com/sparkfun/sparkfun.html">HRMI</a></li>
<li><a href="http://code.google.com/p/btstack/">btstack</a></li>
<li>little stuff</li>
</ul>
<p>Lets take a quick look at each of the components:</p>
<h2>PhoneGap</h2>
<p><a href="http://phonegap.com">PhoneGap</a> is one of the really cool projects out there. It not only allows you to deploy JS, HTML and CSS based applications on a range of mobile phones but it also gives you great APIs to access features of the phone. Because the iPhone SDK allows us to evaluate JavaScript from within Objective C it is relatively simple to execute JavaScript calls within the webkit webview. This essentially allows you to communicate with for instance bluetooth. If more widget runtimes would give us possibilities to inject APIs into the runtime (W3C?) and make available in JavaScript we would be able to write very cool apps! (More on that in a different blogpost soon).</p>
<h2>iPhone</h2>
<p>besides the fact that Apple is blocking certain functionality of the phone (bluetooth for instance), it is an amazing device and allows you to do all kinds of stuff (e.g. inject JS into the webkit view). Its performance is very good as well and therefor makes a great prototyping device. To get this HumanApi prototype running I unfortunately had to jailbreak the device. We are slowly reaching a point in time where blocking device functionality will hurt Apple and other manufacturers/operators, they are locking their devices out from an amazing amount of possible application usecases.</p>
<h2>Polar T31</h2>
<p><a href="http://www.polarusa.com/us-en/products/accessories/T31_coded_Transmitter">The Polar T31</a> is a simple heart rate transmitter which you can use to monitor your heart rate when doing sports. This device is perfect for our prototype because we indirectly can send the data to our iPhone.</p>
<h2>Arduino BT</h2>
<p>Because I can not communicate between the iPhone and the Polar T31 directly I had to create a bridge using the <a href="http://arduino.cc/en/Main/ArduinoBoardBluetooth">Arduino BT</a>. Essentially the Arduino receives the heart rate (using the HRMI) from the T31 and sends it to my iPhone via bluetooth.</p>
<h2>HRMI</h2>
<p>The <a href="http://danjuliodesigns.com/sparkfun/sparkfun.html">human heart rate interface</a> is a great little project by Dan Julio, who developed this hardware to receive the heart rate signal from the T31. Furthermore you can easily connect the HRMI to the Arduino BT and therefore send the heart rate to your iPhone via bluetooth.</p>
<h2>btstack</h2>
<p>As I wrote before, Apple does not allow to access the full bluetooth stack on the device &#8211; even though the hardware is available. Luckily <a href="http://code.google.com/p/btstack/">Matthias Ringwald</a> has developed a library for the iPhone which lets you access the different bluetooth profiles &#8211; without his amazing work this HumanApi prototype never would have been able to exist.</p>
<h2>Your own HumanApi</h2>
<p>If you want to develop your own application accessing hardware, feel free to contribute to the HumanApi project. There would be nothing more amazing than seeing for instance the ECG app running on Andriod and other platforms. </p>
<p>A good start are the <a href="http://humanapi.org">articles on humanapi.org</a>, the <a href="http://groups.google.com/group/humanapi">forum</a>, the <a href="http://github.com/nonken/humanapi">GIT repository</a> or these folks on twitter: <a href="http://twitter.com/nonken">@nonken</a>, <a href="http://humanapi.org">@humanapi</a>, <a href="http://twitter.com/uxebu">@uxebu</a>. </p>
<h2>Conclusion</h2>
<p>Essentially we are at a point where we as JavaScript developers could be writing applications we never thought of a few years ago. It is to us and to the industry now to demand that we get better and more access to the devices hardware &#8211; there is no reason why JavaScript developers get &#8220;discriminated&#8221; over native developers in the way how we can access device features</p>
<p><strong>I want to close this article with a short comparison:</strong></p>
<p>Often mobile developers, using web technologies, are compared to native developers on the example of games. &#8220;Ohhh but you can not write amazing 3D games using JavaScript&#8221; &#8211; funnily enough I even hear JavaScript developers trying to &#8220;defend&#8221; themselves agreeing to the above stated fact &#8211; &#8220;Yes we can&#8217;t write games, but phones are getting better so one day we will&#8221;. </p>
<p>We don&#8217;t need to make these kind of comparisons and should start demanding better access to the devices hardware. What stops us from saying &#8220;We don&#8217;t have to develop games, we can write home automation systems, medical applications (<a href="http://twitter.com/#search?q=mhealth">#mhealth</a>), apps for the cars industry and so much more amazing stuff &#8211; and we can do it cross platform! (And WebGL is on its way btw. ;) )&#8221;? </p>
<p>Right now it is not the language which is stopping us. App store policies, manufacturers and operators are stopping us because we have to hack our way into the devices! </p>
<p>Enjoy hacking</p>
]]></content:encoded>
			<wfw:commentRss>http://uxebu.com/blog/2010/01/25/humanapi-the-browser-in-the-real-world/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Dojo.workshop(&#8220;Haifa&#8221;) &#8211; the summary</title>
		<link>http://uxebu.com/blog/2009/08/12/dojoworkshophaifa-the-summary/</link>
		<comments>http://uxebu.com/blog/2009/08/12/dojoworkshophaifa-the-summary/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 11:11:18 +0000</pubDate>
		<dc:creator>Nikolai Onken</dc:creator>
				<category><![CDATA[dojo]]></category>
		<category><![CDATA[event]]></category>
		<category><![CDATA[frontend engineering]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[uxebu]]></category>
		<category><![CDATA[w3c widgets]]></category>
		<category><![CDATA[dojo.beer()]]></category>

		<guid isPermaLink="false">http://blog.uxebu.com/?p=624</guid>
		<description><![CDATA[August 9th was the day for the first Dojo event in Israel and thanks to Yoav Rubin from IBM Research Labs in Haifa, we were able to hold the event in the great Auditorium of the amazingly located IBM building in Haifa. To give you a little impression of what kind of working environment the [...]]]></description>
			<content:encoded><![CDATA[<p>August 9th was the day for the first Dojo event in Israel and thanks to <a href="http://yoavrubin.blogspot.com">Yoav Rubin</a> from IBM Research Labs in Haifa, we were able to hold the event in the great Auditorium of the amazingly located IBM building in Haifa.<br />
To give you a little impression of what kind of working environment the folks at IBM have, I uploaded a panorama image from Yoav&#8217;s office.</p>
<p><center><a href="http://hub.uxebu.com:33550/wp-content/uploads/2009/08/1411050085_9690da53f7_o.jpg"><img src="http://hub.uxebu.com:33550/wp-content/uploads/2009/08/1411050085_9690da53f7_o-1024x142.jpg" alt="IBM Haifa" title="IBM Haifa" width="50%" class="alignnone size-large wp-image-625" /></a></center><br />
<span id="more-624"></span></p>
<p>The day started as planned with coffee and snacks and a <a href="http://www.slideshare.net/nonken/dojo-introduction-1844594">Dojo introduction</a> giving everybody who wasn&#8217;t really familiar with the Dojo Toolkit a better idea of what it actually is. A few demos such as <a href="http://code.google.com/p/xray-project">xRay</a> where shown to show some of the advanced features of Dojo such as live charting, custom themeing and much more.<br />
After a short break we continued with a talk on how to <a href="http://www.slideshare.net/nonken/event-list">design mobile architectures with the Dojo Toolkit</a> for platforms such as <a href="http://www.phonegap.com">PhoneGap</a>, W3C widgets and other mobile platforms supporting JavaScript/HTML and CSS. This is a very interesting topic and it was great to share the experience we made at uxebu on finding viable solutions for the challenges we face.  The third talk was a quick overview of the current documentation efforts for Dojo and different ways of finding the information you need when you are stuck or simply looking for API docs or similar.<br />
Before the break, Tomer Mahlin from IBM in Jerusalem, who is working on the BIDI implementation in Dojo, gave a very interesting talk on the challenges, developers face when writing applications supporting BIDI. Not having to deal with the issues you get confronted with when having to develop BIDI applications, this talk was eye opening and very interesting.<br />
After a great lunch we jumped into a hands on session building a very simple mobile app running on both PhoneGap and devices with a widget runtime supporting W3C widgets installed. This gave the audience a glimpse into mobile development and the challenges but also really exciting features.</p>
<p>In total there were about 45 people attending the event which is an amazing amount of people for such a first time event, thanks again to everyone attending and especially to Yoav Rubin and the folks at IBM to make this happen.</p>
<p>I am already looking forward to the next Dojo event in Israel and hope that we can be part of it again.</p>

<a href='http://uxebu.com/blog/2009/08/12/dojoworkshophaifa-the-summary/1411050085_9690da53f7_o/' title='IBM Haifa'><img width="150" height="150" src="http://uxebu.com/blog/wp-content/uploads/2009/08/1411050085_9690da53f7_o-150x150.jpg" class="attachment-thumbnail" alt="IBM Haifa" title="IBM Haifa" /></a>
<a href='http://uxebu.com/blog/2009/08/12/dojoworkshophaifa-the-summary/nikolaionken_dojo2/' title='nikolaionken_dojo2'><img width="150" height="150" src="http://uxebu.com/blog/wp-content/uploads/2009/08/nikolaionken_dojo2-150x150.jpg" class="attachment-thumbnail" alt="nikolaionken_dojo2" title="nikolaionken_dojo2" /></a>
<a href='http://uxebu.com/blog/2009/08/12/dojoworkshophaifa-the-summary/img_0131/' title='img_0131'><img width="150" height="150" src="http://uxebu.com/blog/wp-content/uploads/2009/08/img_0131-150x150.jpg" class="attachment-thumbnail" alt="img_0131" title="img_0131" /></a>
<a href='http://uxebu.com/blog/2009/08/12/dojoworkshophaifa-the-summary/img_0130/' title='img_0130'><img width="150" height="150" src="http://uxebu.com/blog/wp-content/uploads/2009/08/img_0130-150x150.jpg" class="attachment-thumbnail" alt="img_0130" title="img_0130" /></a>
<a href='http://uxebu.com/blog/2009/08/12/dojoworkshophaifa-the-summary/img_01311/' title='img_01311'><img width="150" height="150" src="http://uxebu.com/blog/wp-content/uploads/2009/08/img_01311-150x150.jpg" class="attachment-thumbnail" alt="img_01311" title="img_01311" /></a>
<a href='http://uxebu.com/blog/2009/08/12/dojoworkshophaifa-the-summary/img_0133/' title='img_0133'><img width="150" height="150" src="http://uxebu.com/blog/wp-content/uploads/2009/08/img_0133-150x150.jpg" class="attachment-thumbnail" alt="img_0133" title="img_0133" /></a>

<p>Following are the slides to give you a little impression of the events content. </p>
<div style="width:425px;text-align:left" class="mhx" id="__ss_1844597"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/nonken/event-list" title="EventNinja, Dojo and mobile">EventNinja, Dojo and mobile</a><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=eventlist-090811111712-phpapp01&#038;stripped_title=event-list" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=eventlist-090811111712-phpapp01&#038;stripped_title=event-list" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">documents</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/nonken">nonken</a>.</div>
</div>
<div style="width:425px;text-align:left" class="mhx" id="__ss_1844594"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/nonken/dojo-introduction-1844594" title="Dojo Introduction">Dojo Introduction</a><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=dojointroduction-090811111614-phpapp02&#038;stripped_title=dojo-introduction-1844594" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=dojointroduction-090811111614-phpapp02&#038;stripped_title=dojo-introduction-1844594" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">documents</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/nonken">nonken</a>.</div>
</div>
<div style="width:425px;text-align:left" class="mhx" id="__ss_1848277"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/guest0176bf4/bidi-support-in-dojo14" title="Bidi Support In Dojo1.4">Bidi Support In Dojo1.4</a><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=bidisupportindojo1-406august2009-090812072918-phpapp02&#038;stripped_title=bidi-support-in-dojo14" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=bidisupportindojo1-406august2009-090812072918-phpapp02&#038;stripped_title=bidi-support-in-dojo14" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">presentations</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/guest0176bf4">guest0176bf4</a>.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://uxebu.com/blog/2009/08/12/dojoworkshophaifa-the-summary/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Dojo.workshop in Haifa, Israel &#8211; August 9th</title>
		<link>http://uxebu.com/blog/2009/07/30/dojoworkshop-in-haifa-israel-august-9th/</link>
		<comments>http://uxebu.com/blog/2009/07/30/dojoworkshop-in-haifa-israel-august-9th/#comments</comments>
		<pubDate>Thu, 30 Jul 2009 11:08:04 +0000</pubDate>
		<dc:creator>Nikolai Onken</dc:creator>
				<category><![CDATA[business]]></category>
		<category><![CDATA[dojo]]></category>
		<category><![CDATA[event]]></category>
		<category><![CDATA[uxebu]]></category>
		<category><![CDATA[dojo.workshop]]></category>
		<category><![CDATA[israel]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://blog.uxebu.com/?p=607</guid>
		<description><![CDATA[The news have been announced already on the Dojotoolkit.org and Dojocampus.org blogs but I nevertheless wanted to mention the dojo.workshop in Haifa, Israel on August 9th. Already now we have more than 50 signups and thanks to Yoav Rubin from IBM research labs we can have a full day of Dojo-ness. It is interesting to [...]]]></description>
			<content:encoded><![CDATA[<p>The news have been announced already on the <a href="http://dojotoolkit.org/2009/07/27/dojo-workshop-haifa-israel-august-9th-more-info-and-schedule">Dojotoolkit.org</a> and <a href="http://dojocampus.org/content/2009/07/09/dojoworkshophaifa-august-9th/">Dojocampus.org</a> blogs but I nevertheless wanted to mention the dojo.workshop in Haifa, Israel on August 9th.<br />
Already now we have more than 50 signups and thanks to <a href="http://yoavrubin.blogspot.com">Yoav Rubin</a> from IBM research labs we can have a full day of Dojo-ness.<br />
<span id="more-607"></span><br />
It is interesting to hear that many attending people are interested in how to write mobile applications with the Dojo Toolkit and we will try to spend some time on giving people insight about where things currently stand.<br />
As I am discussing in the upcoming issue of the <a href="http://www.jsmag.com/">JSMag</a>, using JavaScript libraries on mobile environments is something you have to do with caution since most of the libraries were not written intentionally for mobile platforms.<br />
Dojo at this point is a very good choice (yes I am biased ;) and yes, Dojo needs a lot of optimization for mobile) especially if you are working on delivering applications both to mobile devices and desktop clients. It is no fun having to use different tools for similar environments. So I am looking forward to lots of mobile hacking in Haifa.</p>
<p>Following some more details for the event. You can find all info also at the <a href="http://dojocampus.org/content/2009/07/09/dojoworkshophaifa-august-9th/">DojoCampus.org event page</a> and things are still subject to change.</p>
<p><strong>Location:</strong></p>
<p>IBM Haifa Research Lab<br />
Haifa University Campus</p>
<p><a href="http://maps.google.com/maps?f=q&#038;source=s_q&#038;hl=en&#038;geocode=&#038;q=Israel,+Haifa,+Haifa+University&#038;sll=32.763315,35.004501&#038;sspn=0.2096,0.176811&#038;ie=UTF8&#038;z=14&#038;iwloc=A">Google map</a></p>
<p><strong>Time:</strong></p>
<p>09:30 &#8211; 15:00</p>
<p><strong>Schedule</strong></p>
<p>09:30 &#8211; 10:00 &#8211; Gathering</p>
<p>10:00 &#8211; 10:15 &#8211; Welcome and introduction</p>
<p>10:15 &#8211; 10:45 &#8211; Overview of Dojo Dijit and Dojox</p>
<p>11:00 &#8211; 12:00 &#8211; Dojo and Mobile</p>
<p>12:00 &#8211; 12:30 &#8211; Dojo based JavaScript API Docs generator</p>
<p>12:30 &#8211; 13:00 &#8211; Hacking mobile (this session might be extended)</p>
<p>13:00 &#8211; 14:00 &#8211; Lunch</p>
<p>14:10 &#8211; 14:30 &#8211; Support for bidirectional languages in Dojo</p>
<p>14:30 &#8211; 15:00 &#8211; Projects demonstration </p>
<p>If you want to give a talk about your experience with Dojo or anything Web related, leave a comment at the <a href="http://dojocampus.org/content/2009/07/09/dojoworkshophaifa-august-9th/">DojoCampus.org event page</a> or send an email to nonken(_at_) dojotoolkit.org and we&#8217;ll make sure you get added to the schedule.</p>
<p>After the main event we will either continue hacking or go for food/drinks/dojo.beers() into town.</p>
<p>If you would like to attend, please add your name to the list below, so we can be sure that we will have enough space.</p>
<p><iframe width="300" height="250" frameborder="0" src="http://doodle.com/summary.html?pollId=d6y8m9mfarzd3xwc"> </iframe></p>
<p>Looking forward to being in Haifa and meeting lots of Dojo, web, JavaScript folks.</p>
]]></content:encoded>
			<wfw:commentRss>http://uxebu.com/blog/2009/07/30/dojoworkshop-in-haifa-israel-august-9th/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>EventNinja: A mobile must-have Widget for the mobile2.0</title>
		<link>http://uxebu.com/blog/2009/06/16/eventninja-a-mobile-must-have-widget-for-the-mobile20/</link>
		<comments>http://uxebu.com/blog/2009/06/16/eventninja-a-mobile-must-have-widget-for-the-mobile20/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 08:31:43 +0000</pubDate>
		<dc:creator>wolfram</dc:creator>
				<category><![CDATA[business]]></category>
		<category><![CDATA[dojo]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[uxebu]]></category>
		<category><![CDATA[w3c widgets]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[mobile2.0]]></category>
		<category><![CDATA[phonegap]]></category>
		<category><![CDATA[w3c]]></category>

		<guid isPermaLink="false">http://blog.uxebu.com/?p=493</guid>
		<description><![CDATA[We have been writing and talking about EventNinja already for a bit. Now you can have it! Just visit EventNinja.net and test it on your iPhone and other mobile devices. EventNinja is on its way into the different AppStores and we will keep you updated on new versions coming out. What will you get? At [...]]]></description>
			<content:encoded><![CDATA[<p>We have been writing and <a href="http://twitter.com/EventNinja_app">talking about EventNinja</a> already for a bit. <strong>Now you can have it!</strong> Just visit <a href="http://www.eventninja.net">EventNinja.net</a> and test it on your iPhone and other mobile devices. EventNinja is on its way into the different AppStores and we will keep you updated on new versions coming out.<br />
What will you get? At first, you&#8217;re getting the best app out there to lead you around a conference like the <a href="http://mobile20.eu">mobile2.0 in Barcelona</a> in a few days on the 18th and 19th of June 2009. If you are attending be sure to have EventNinja on your mobile! So that you have all the info at hand when searching for the next talk to attend. It&#8217;s not just a list of all relevant upcoming web developer events on your phone (and browser). It is even more, you can get in depth info about the events, their schedule, all the twitter messages for an event, directions and many more features.<br />
If you are at the <a href="http://mobile20.eu">mobile2.0</a> be sure to visit us to get even more!</p>
<p>Enjoy the short video we prepared to give you an impression of what EventNinja can do</p>
<p><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/DClZnEaBHLI&#038;hl=en&#038;fs=1&#038;rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/DClZnEaBHLI&#038;hl=en&#038;fs=1&#038;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object></p>
<p><span id="more-493"></span></p>
<h2>EventNinja in Action</h2>
<p>The EventNinja widget contains multiple pages, as you are used to from mobile applications. The <em>home page</em> shows all the events, allows you to search and filter them. Along the top bar you have the search bar, the &#8220;Help&#8221; and the &#8220;About&#8221; pages linked.<br />
Clicking on the icon to the right of each event takes you to <em>the details page</em> of the event, from where you can go to multiple other places, like <em>the map</em>, to see where it exactly takes place,<em> the schedule</em> of the event. If the event has twitter tags saved for it can go to a page which shows you all <em>the latest twitter messages</em> flying in. Try it on <a href="http://www.eventninja.net">EventNinja.net</a> and explore the features.</p>
<h2>EventNinja Features</h2>
<h3>User Features</h3>
<ul>
<li>List of web developer events</li>
<li>Searchable and filterable by tags, location and full-text search</li>
<li>Exact location of the event</li>
<li>Watch all twitter messages for each event</li>
<li>Find out about details of an event</li>
</ul>
<h3>Technology Features</h3>
<ul>
<li>Events are stored, retrieved and filtered by a Google Calendar</li>
<li>Everything built on top of the <a href="http://www.dojotoolkit.org">Dojo Toolkit</a></li>
<li>pure HTML, CSS, JavaScript based widget</li>
<li>using <a href="http://www.phonegap.com">PhoneGap</a> to run on <a href="http://www.apple.com/iphone/">iPhone</a>, <a href="http://www.android.com/">Android</a> and <a href="http://www.blackberry.nl/">Blackberry</a></li>
<li>Plugin architecture, allows for a modular enhancement of the widget</li>
<li><strong>Fully</strong> customizable via client-side templates and CSS of course</li>
</ul>
<p>As you figure right from the list of features and cleverly combining them we can hook this widget onto any calendar, customize the features (via plugins), style and brand it the way we like it and have your custom widget.</p>
<p>This gives customization a far broader meaning. Just imagine combining the two components 1) base of the widget and 2) the twitter plugin. You get a widget which shows you all tweets for a certain event -that&#8217;s just a new widget itself, without writing a line of new code. Which again is a very different use case, than the widget you get here. Just hook in another plugin which allows replying via twitter and you get a full blown twitter client in the context of events.<br />
The limits of what is thinkable is just limited by the plugins you can write.</p>
<h2>EventNinja for the mobile2.0 Conference</h2>
<p>Mobile2.0 is the first conference where you can really use EventNinja to get all the info possible, the schedule, twitter messages, etc. There surely will follow many more conferences and events that EventNinja can and will be used at. See the screenshots below to get a feeling of what it looks like for this conference.</p>

<a href='http://uxebu.com/blog/2009/06/16/eventninja-a-mobile-must-have-widget-for-the-mobile20/screenshot-20090612-150714/' title='screenshot-20090612-150714'><img width="150" height="150" src="http://uxebu.com/blog/wp-content/uploads/2009/06/screenshot-20090612-150714-150x150.png" class="attachment-thumbnail" alt="screenshot-20090612-150714" title="screenshot-20090612-150714" /></a>
<a href='http://uxebu.com/blog/2009/06/16/eventninja-a-mobile-must-have-widget-for-the-mobile20/screenshot-20090612-150809/' title='screenshot-20090612-150809'><img width="150" height="150" src="http://uxebu.com/blog/wp-content/uploads/2009/06/screenshot-20090612-150809-150x150.png" class="attachment-thumbnail" alt="screenshot-20090612-150809" title="screenshot-20090612-150809" /></a>
<a href='http://uxebu.com/blog/2009/06/16/eventninja-a-mobile-must-have-widget-for-the-mobile20/screenshot-20090612-150819/' title='screenshot-20090612-150819'><img width="150" height="150" src="http://uxebu.com/blog/wp-content/uploads/2009/06/screenshot-20090612-150819-150x150.png" class="attachment-thumbnail" alt="screenshot-20090612-150819" title="screenshot-20090612-150819" /></a>
<a href='http://uxebu.com/blog/2009/06/16/eventninja-a-mobile-must-have-widget-for-the-mobile20/screenshot-20090612-150840/' title='screenshot-20090612-150840'><img width="150" height="150" src="http://uxebu.com/blog/wp-content/uploads/2009/06/screenshot-20090612-150840-150x150.png" class="attachment-thumbnail" alt="screenshot-20090612-150840" title="screenshot-20090612-150840" /></a>
<a href='http://uxebu.com/blog/2009/06/16/eventninja-a-mobile-must-have-widget-for-the-mobile20/screenshot-20090612-150917/' title='screenshot-20090612-150917'><img width="150" height="150" src="http://uxebu.com/blog/wp-content/uploads/2009/06/screenshot-20090612-150917-150x150.png" class="attachment-thumbnail" alt="screenshot-20090612-150917" title="screenshot-20090612-150917" /></a>
<a href='http://uxebu.com/blog/2009/06/16/eventninja-a-mobile-must-have-widget-for-the-mobile20/cap/' title='cap'><img width="150" height="150" src="http://uxebu.com/blog/wp-content/uploads/2009/06/cap-150x150.png" class="attachment-thumbnail" alt="cap" title="cap" /></a>

<h2>Are events missing?</h2>
<p>EventNinja for webdevelopers is driven by the great amount of community events.<br />
If you see that events are missing, please contact us and we will add them immediately. If you organize events yourself let us know as well. You can send any kind of info about the event, e.g. name, location, tags, speakers, twitter tags, schedule details, price, and much more.</p>
<h2>You want an EventNinja?</h2>
<p>Send an email to eventninja _ at _ uxebu.com if you are interested in a customized version of EventNinja, are interested in the technology or simply want to chat. At the <a href="htt[://www.mobile20.eu">mobile2.0</a> conference you will recognize us easily when you look for the guys with those caps, hurry, because we are spreading caps and maybe there will be many more wearing this cap :-).</p>
]]></content:encoded>
			<wfw:commentRss>http://uxebu.com/blog/2009/06/16/eventninja-a-mobile-must-have-widget-for-the-mobile20/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

