<?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>#ekynoxe</title>
	<atom:link href="http://blog.ekynoxe.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.ekynoxe.com</link>
	<description>development   /   design   /   photography</description>
	<lastBuildDate>Thu, 20 May 2010 10:28:01 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Git on Gentoo?</title>
		<link>http://blog.ekynoxe.com/2010/05/03/git-on-gentoo/</link>
		<comments>http://blog.ekynoxe.com/2010/05/03/git-on-gentoo/#comments</comments>
		<pubDate>Mon, 03 May 2010 12:36:40 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[git]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[gitosis]]></category>

		<guid isPermaLink="false">http://blog.ekynoxe.com/?p=190</guid>
		<description><![CDATA[I wanted a while ago to set-up my own private git repositories on my vserver, but never got the time to dig into it properly.
I have installed git with gitosis on ubuntu and on mac osX several times in the past months, but I have to admin that although I&#8217;ve done it all in command [...]]]></description>
			<content:encoded><![CDATA[<p>I wanted a while ago to set-up my own private git repositories on my vserver, but never got the time to dig into it properly.</p>
<p>I have installed git with gitosis on ubuntu and on mac osX several times in the past months, but I have to admin that although I&#8217;ve done it all in command line on the servers, the internals were still a bit obscure to me.<br />
My vserver runs Gentoo, and initially I installed git and gitosis via emerge. </p>
<p>However, unlike my previous installs where I blindly (but successfully) followed the instructions and how-tos, I could not find anything else than how to <a href="http://en.gentoo-wiki.com/wiki/Git">host a public repository on Gentoo</a>. Remember: these instructions are for a <strong>public</strong> repo!</p>
<p>That means that you&#8217;ll be able to <strong>pull</strong> from the server, but not <strong>push</strong>.</p>
<p>The explanation is simple: the way it&#8217;s presented will only ever user git-daemon, provided by git, that is designed to only server pull requests.</p>
<p><strong>These instructions work well</strong> and in 10 minutes I had a public repo working flawlessly, but I wanted a private one where I could push my code and use it for automated deployments.</p>
<p>Killing git-daemon &#8211; Back to square one.<br />
Like many out there, I guess, I followed the excellent <a href="http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way/">scie.nti.st</a> guide.</p>
<p>For Gentoo, this has to be changed slightly though.</p>
<p>Assuming you&#8217;ve setup git and it&#8217;s working fine<br />
<code>emerge -av dev-util/git</code><br />
you haved cloned gitosis<br />
<code>git clone git://eagain.net/gitosis.git</code><br />
and you are trying to install it<br />
<code>cd gitosis<br />
python setup.py install<br />
</code><br />
python setup tools might not be installed on your system.<br />
On gentoo, to install them, use the following<br />
<code>emerge -av dev-python/setuptools</code></p>
<p>Adding the git user takes slightly different options too</p>
<p><code>adduser \<br />
--system   \<br />
--shell /bin/sh   \<br />
--comment   'git version control'  \<br />
 --home-dir   /home/git   \<br />
git</code></p>
<p>Now, the part that confused me, the gitosis init. As there is no sudo on my system (and I believe on many others), i could not execute the indicated command. Ok, no big deal in the end, just do by hand what the sudo options do for you:</p>
<p>By becoming the git user and switching to its home directory, you cover the -H and -u options of the sudo command that you&#8217;d otherwise use on other systems.<br />
<code>su git<br />
cd /home/git</code></p>
<p>then run the init script with the public key of your remote account uploaded in the /tmp folder f your server<br />
<code>gitosis-init < /tmp/id_rsa.pub</code></p>
<p>Now follow the rest of the tutorial and you're good to go.</p>
<p>Just one last thing, unlike the automatic emerge of the gitosis ebuild, your repositories will be in <strong>/home/git/repositories</strong> by default.</p>
<p>If you ALSO want public repositories, you can always use git-daemon when you want too. It works independently and can be in parallel of gitosis.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ekynoxe.com/2010/05/03/git-on-gentoo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Orange Social Life is a winner</title>
		<link>http://blog.ekynoxe.com/2010/03/31/orange-social-life-is-a-winner/</link>
		<comments>http://blog.ekynoxe.com/2010/03/31/orange-social-life-is-a-winner/#comments</comments>
		<pubDate>Wed, 31 Mar 2010 16:48:20 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Orange]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[work project]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://blog.ekynoxe.com/?p=162</guid>
		<description><![CDATA[On March 18 2010, Orange Social Life won the mobile news award of the most innovative service 
Launched in August 2009, Social Life has consistently attracted customers and offers a wide range of social networks integration.
Having worked on it since it&#8217;s very very early stages, it feels great to look at it and feel proud [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://photo.ekynoxe.com/blog/2010/03/social_life_web.jpg" rel="lightbox[162]"><img src="http://photo.ekynoxe.com/blog/2010/03/social_life_web-219x300.jpg" alt="" title="social_life_web" width="219" height="300" class="alignleft size-medium wp-image-170" /></a>On March 18 2010, Orange Social Life won the <a href="http://www.mobilenewsawards.co.uk/">mobile news award</a> of the most innovative service </p>
<p>Launched in August 2009, Social Life has consistently attracted customers and offers a wide range of social networks integration.</p>
<p>Having worked on it since it&#8217;s very very early stages, it feels great to look at it and feel proud that we all made it!<br />
I remember the day when my boss came around and asked my availabilities for &#8216;the months to come&#8217; =)<br />
These months started by creating an HTML and JavaScript mobile prototype to be demonstrated around the business units. It already has live update of a twitter feed and notifications.</p>
<p>The interface was going to be really different from anything that had been done so far, promoting social activity through some cleverly expanding friends icons on the home screen depending on their amount of activity, easy access to communication functions directly from there, and deep integration of the social networks in the usual device capabilities.</p>
<p>Things have slightly changed since then, but the concept is the same, and it works!<br />
The whole service sits on top of a pretty big architecture to allow integration through a single access point into all the required social networks. We&#8217;ve worked together countless hours into the specifications of this API, the integration with Orange&#8217;s partners, developers, manufacturers and vendors, done quite a few business trips around Europe to finally bring it all together!</p>
<p>Now, it&#8217;s been <a href="http://newsroom.orange.co.uk/2010/03/19/orange-scores-hatrick-at-the-mobile-news-awards-2010/">rewarded</a> for it&#8217;s simplicity over some bigger players in the market and from the point where I stand in R&#038;D, for most of my work to be hidden from the outside world, I am exstatic to see that what we do in R&#038;D (along with <a href="http://blog.ekynoxe.com/2009/11/19/orange-snapshot-mms-to-share-photos-on-twitter/">Snapshot</a>) is real stuff that makes it out.</p>
<p>Happy about my second award in the month =)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ekynoxe.com/2010/03/31/orange-social-life-is-a-winner/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Orange Snapshot wins an award!</title>
		<link>http://blog.ekynoxe.com/2010/03/31/snapshot-wins-an-award/</link>
		<comments>http://blog.ekynoxe.com/2010/03/31/snapshot-wins-an-award/#comments</comments>
		<pubDate>Wed, 31 Mar 2010 16:47:50 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Orange]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[work project]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://blog.ekynoxe.com/?p=176</guid>
		<description><![CDATA[Ok, it&#8217;s an internal award from our R&#038;D innovation process in the UK, but still, a recognition is a recognition!
Thanks again to everyone that made the service to go live, all the users and everyone that judged the competition!


]]></description>
			<content:encoded><![CDATA[<p>Ok, it&#8217;s an internal award from our R&#038;D innovation process in the UK, but still, a recognition is a recognition!<br />
Thanks again to everyone that made the service to go live, all the users and everyone that judged the competition!</p>
<p><a href="http://photo.ekynoxe.com/blog/2010/03/snapshot_award_full.jpg" rel="lightbox[176]"><img src="http://photo.ekynoxe.com/blog/2010/03/snapshot_award_full-300x225.jpg" alt="" title="snapshot_award_full" width="300" height="225" class="alignnone size-medium wp-image-177" /></a></p>
<p><a href="http://photo.ekynoxe.com/blog/2010/03/snapshot_award_mobile.jpg" rel="lightbox[176]"><img src="http://photo.ekynoxe.com/blog/2010/03/snapshot_award_mobile-225x300.jpg" alt="" title="snapshot_award_mobile" width="225" height="300" class="alignnone size-medium wp-image-178" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ekynoxe.com/2010/03/31/snapshot-wins-an-award/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Orange snapshot: mms to share photos on twitter</title>
		<link>http://blog.ekynoxe.com/2009/11/19/orange-snapshot-mms-to-share-photos-on-twitter/</link>
		<comments>http://blog.ekynoxe.com/2009/11/19/orange-snapshot-mms-to-share-photos-on-twitter/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 09:04:08 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[work project]]></category>
		<category><![CDATA[work]]></category>

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

In a flash&#8230;
Sometimes you are requested to do a quick job at work, that &#8220;should not last longer than 2/3 days&#8221;.
We&#8217;ve all been there, all done it and in my case in R&#038;D with Orange, seen too many times the &#8220;project&#8221; end up in a drawer somewhere.
However, this time, I have been assigned on that [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://photo.ekynoxe.com/blog/2009/11/snapshot-mob.jpg" rel="lightbox[snapshot]"><img src="http://photo.ekynoxe.com/blog/2009/11/snapshot-mob-93x300.jpg" alt="snapshot-mob" title="snapshot-mob" width="93" height="300" class="alignleft size-medium wp-image-137" /></a><br />
<a href="http://photo.ekynoxe.com/blog/2009/11/snapshot.jpg" rel="lightbox[snapshot]"><img src="http://photo.ekynoxe.com/blog/2009/11/snapshot-300x225.jpg" alt="snapshot" title="snapshot" width="300" height="225" class="alignright size-medium wp-image-138" /></a><br />
<strong>In a flash&#8230;</strong></p>
<p>Sometimes you are requested to do a quick job at work, that &#8220;should not last longer than 2/3 days&#8221;.<br />
We&#8217;ve all been there, all done it and in my case in R&#038;D with Orange, seen too many times the &#8220;project&#8221; end up in a drawer somewhere.</p>
<p>However, this time, I have been assigned on that &#8220;little project&#8221; called snapshot, for which the goal was simple: our team racing designer was creating the graphical design and I was translating that into XHTML/CSS as well as XHTML-MP templates for mobiles as quickly as I could</p>
<p>As you&#8217;d expect from super quick things like these (mind you I was already assigned 100% on two other high profile projects before that came on), we had to cut corners. For example, there is no support for older browsers like IE6 for the moment. No time to work on that unfortunately, but it should not be too difficult to adapt the templates and CSS and found yet again a hacky way around double margins, wrong positioning and lack of png support.</p>
<p>Integration was quick with the dev team, although not super smooth, but for once it was going to make it as a product! It&#8217;s now all on <a href="http://snapshot.orange.co.uk">http://snapshot.orange.co.uk</a> and it&#8217;s <a href="http://www.techcrunch.com/2009/11/16/twitter-mms/">official</a></p>
<p>Some features might be added sooner or later to the site, but hopefully it will be kept simple!</p>
<p>From initial feedback, it seems the most wanted feature is the ability to rotate the pictures, and it will be done soon!</p>
<p>So for one of the very few R&#038;D projects I worked on that actually made it to the market and I can showcase, it&#8217;s celebration day!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ekynoxe.com/2009/11/19/orange-snapshot-mms-to-share-photos-on-twitter/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Api token access with authlogic and login</title>
		<link>http://blog.ekynoxe.com/2009/11/04/api-token-access-with-authlogic-and-login/</link>
		<comments>http://blog.ekynoxe.com/2009/11/04/api-token-access-with-authlogic-and-login/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 20:48:21 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[authlogic]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://blog.ekynoxe.com/?p=111</guid>
		<description><![CDATA[Creating an API for one project at work, one odbrhw tasks was to implement a token based authentication for some resources, but the client specifically requested not to have to handle cookies.
Also, it was requested for the user to still have to login with it&#8217;s own login and password, rather than with a permanent token, [...]]]></description>
			<content:encoded><![CDATA[<p>Creating an API for one project at work, one odbrhw tasks was to implement a token based authentication for some resources, but the client specifically requested not to have to handle cookies.<br />
Also, it was requested for the user to still have to login with it&#8217;s own login and password, rather than with a permanent token, like a permanent API key.<br />
The solution I implemented used the excellent authlogic capabilities with the single_access_token, although used slighlty differently from it&#8217;s original purpose.</p>
<p>Rather than keeping the single access token generated at user registration untouched, like a standard API key, I enforced it&#8217;s regeneration at both login and logout. Returned in the login response, that token then has to be provided by the client for every request that needs authentication, effectively playing the same role as a cookie.</p>
<p>With this solution, the client looses the ability to stay logged in by storing the credentials in the client&#8217;s machine, but as the project it&#8217;s been created for only required an API, there was no problem with that.<br />
Implementing this solution simply puts a little big more work on the client to store and provide the token in the requests parameters, but I still found it an elegant solution to get around my problem.</p>
<p>The following code implements this solution in the Application and the User_Session controllers, showing the regeneration of the token in both login and logout actions with authlogic&#8217;s reset_single_access_token method.</p>
<p><strong>app &gt; controllers &gt; user_sessions_controller</strong><br />
<code></p>
<pre class="brush: ruby; highlight: [7,17];">
 class UserSessionsController &lt; ApplicationController

  def create
    @user_session = UserSession.new(params[:user_session])
    respond_to do |format|
      if @user_session.save
        current_user.reset_single_access_token!
        format.xml
      else
       format.xml {render :xml=&gt;@user_session.errors, :status=&gt;:unauthorized}
      end
    end
  end

  def destroy
    if(@user_session = UserSession.find)
      current_user.reset_single_access_token!
      @user_session.destroy
      respond_to do |format|
        format.xml {render :xml=&gt;{:status=&gt;'200 ok'},:status=&gt; :ok}
      end
    else
      respond_to do |format|
         format.xml  {render :xml=&gt;@user_session.errors, :status=&gt; :not_found}
      end
    end
  end
end
</pre>
<p></code></p>
<p><strong>app &gt; models &gt; user</strong><br />
<code></p>
<pre class="brush: ruby; highlight: [2];">
class User &lt; ActiveRecord::Base
  acts_as_authentic
end
</pre>
<p></code></p>
<p><strong>app &gt; views &gt; users_sessions &gt; create.xml.builder</strong><br />
<code></p>
<pre class="brush: ruby; highlight: [5];">
xml.instruct! :xml, :version=&gt;&quot;1.0&quot; 

xml.user{
    xml.user_id(current_user.id)
    xml.user_credentials(current_user.single_access_token)
}
</pre>
<p></code></p>
<p><strong>app &gt; controllers &gt; users_controller</strong><br />
<code></p>
<pre class="brush: ruby; highlight: [2];">
class UsersController &lt; ApplicationController
  before_filter :check

  def create
  end

  def index
  end

  def update
  end

  def show
  end

end
</pre>
<p></code></p>
<p><strong>db &gt; migrate &gt; create_users</strong><br />
<code></p>
<pre class="brush: ruby; highlight: [8];">
class CreateUsers &lt; ActiveRecord::Migration
  def self.up
    create_table :users do |t|
      t.string  :username
      t.string  :crypted_password
      t.string  :password_salt
      t.string  :persistence_token
      t.string  :single_access_token, :null =&gt; false

      t.timestamps
    end
  end

  def self.down
    drop_table :users
  end
end
</pre>
<p></code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ekynoxe.com/2009/11/04/api-token-access-with-authlogic-and-login/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Over the air 2009</title>
		<link>http://blog.ekynoxe.com/2009/10/05/over-the-air-2009/</link>
		<comments>http://blog.ekynoxe.com/2009/10/05/over-the-air-2009/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 10:00:26 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[UX]]></category>
		<category><![CDATA[conferences]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[development]]></category>

		<guid isPermaLink="false">http://blog.ekynoxe.com/?p=87</guid>
		<description><![CDATA[Over the Air &#8211; 24 hours of mobile development and mobile conferences &#8211; September 25th &#8211; 26th 2009
Key note by Nick Alliot (OMTP), Rick Fant (vodafone), and Caroline Lewko(WIP)
The global trend was said to see the desktop applications to be more and more ported onto mobile devices, requiring the same level of standardization and development [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://overtheair.org/blog/">Over the Air</a> &#8211; 24 hours of mobile development and mobile conferences &#8211; September 25th &#8211; 26th 2009</p>
<p><strong>Key note by Nick Alliot (OMTP), Rick Fant (vodafone), and Caroline Lewko(WIP)</strong></p>
<p>The global trend was said to see the desktop applications to be more and more ported onto mobile devices, requiring the same level of standardization and development tools that the desktop web has benefiting for the past years.<br />
It became clear that the ratio of web developers to native apps developers (100 to 1) was very much in favor of pushing forward web activities for mobile devices.</p>
<p>The BONDI APIs are part of the possible answers to the problematic, through fast standard activities driven by reference implementation, offering local APIs to browsers such as device status and geolocation, all thinking about the security of devices, apps and users and letting the market and the developers decide the level of protection they require. The next delivery of the BONDI APIs is expected to be V1.5 for Q1 2010.</p>
<p>Rick Fant from Vodafone then presented the new &#8220;360&#8243; new web connected services and Vodafone apps division to go with them, following as much as possible open standards to allow any developer to produce any application as long as they are not of objectionable content. It seems Vodafone 360 services will have connected widgets supporting the latest web standards, and should be delivered for Xmas 2009. Supporting ideas like connected contacts, the 360 services should be available on S60 devices, and will also incorporate JIL widgets, W3C standards and handset APIs to enable developers to quickly produce applications.</p>
<p>Following Rick, Caroline Lewko, from WIP, presented here company&#8217;s products and the API wiki they host, including an interesting summary of current application stores that are flourishing on the market. It is indeed more than 15 mobile app stores that have been recently, or will be soon available on the web, amongst which it can be forth noting the presence of the following</p>
<ul>
<li>china mobile</li>
<li>vodafone
<li>
<li>orange app store</li>
<li>Nokia OVI</li>
<li>blackberry (that chose a &#8216;no free app&#8217; approach)</li>
<li>get jar (independent, mostly free apps)</li>
</ul>
<p>More information on <a href="http://wipwiki.com/index.php/appstores">http://wipwiki.com/index.php/appstores</a>, <a href="http://www.wipconnector.com/">http://www.wipconnector.com/</a> and <a href="http://wipjam.com/">http://wipjam.com/</a>.<br />
This key note, although slightly too commercial I think to be very honest (sponsors oblige I guess) gave the tone of the trend: app stores, app stores, app stores and a bit of  the design process. It is important to note that many factors are still ignored from developers and even development companies in their process to develop mobile apps:</p>
<ul>
<li>Keeping an eye on the target not to miss it is important. Too many mobile application started with a good idea but did not succeed as the market evolved quickly during the development.</li>
<li>Don&#8217;t forget UX or the application will get dropped</li>
<li>Platform choice might be a difficult one to do, but will be critical to reach the target market</li>
<li>How do you apply charging and generate revenue through the apps you sell?</li>
<li>The submission process might be long and painful for some app stores, faster for others. It is yet to be understood fully why the android app store releases the apps straight away after submission when the Vodafone process is said to take up to 10 days, and the apple one up to&#8230;. 4 weeks!</li>
</ul>
<p><strong>UX mobile design</strong></p>
<p>The first session I attended concerned application design through an iterative process of paper prototyping and user reviews. All details about this session here <a href="http://blog.ekynoxe.com/2009/09/27/on-the-developers-mobile-mountain/">http://blog.ekynoxe.com</a>. Presenter was <a href="http://www.tomhume.org/">Tom Hume</a> from Future Platforms.</p>
<p><strong>cross platform programming</strong></p>
<p>The second session of the day concerned the creation of cross platform mobile applications. Wolfram Kriesing pointed out that there are many ways applications can be built and distributed on mobile devices: as part of the pre-installed software, as a native application such as a Symbian bundle, as a web application which access is limited to mobile phones browsers, and as W3C widgets.<br />
The emphasis of this session was to make developers realize that developing a native application will only reduce the number of users it reaches, but this is only one aspect of the problem.<br />
Widgets should not only be thought as only a mobile application, but should have a wider range such as the ability to be published on iGoogle or other desktop web platforms. But as there is no killer app that can do everything and do it well at the same time, a better approach is to concentrate on simple use cases only, and execute them well across many devices and OS.</p>
<p>Recommended specifications to follow include:</p>
<ul>
<li><a href="http://www.jil.org/">JIL spec</a></li>
<li><a href="http://bondi.omtp.org">BONDI spec</a></li>
<li><a href="http://www.w3.org/Mobile/Specifications">W3C spec</a></li>
<li><a href="http://phonegap.com/">open source &#8220;phoneGAP&#8221;</a></li>
<li><a href="http://www.forum.nokia.com/Technology_Topics/Web_Technologies/Web_Runtime/">nokia WRT (only nokia)</a></li>
<li><a href="http://chrome.blogspot.com/2009/07/google-chrome-os-faq.html">G Chrome OS?</a></li>
</ul>
<p><strong>Ericsson Labs APIs</strong></p>
<p><a href="https://labs.ericsson.com">Ericsson labs</a> presented their <a href="https://labs.ericsson.com/apis">APIs</a>. Unlike common belief, they are not Sony Ericsson, but do work on mobile application APIs, providing also coding resources, hosting for some applicationss, a showroom for publication and hosting of IMS solutions. Their model highlights a centralized provision of telco enablers and internet enablers. At the moment, Ericsson provides mobile Java communication APIs, Mobile Java push to allow push notifications to be sent to mobile devices, Mobile Maps as a set of J2ME and web developer tools for developers, SMS send and receive and Web location to enhance web applications with location based services. Their coming APIs will include mobile location, streaming media, media fabric (Ericsson does aggregation from providers and streams to devices)<br />
At the moment, these APIs are available on JAVA and Android phones, but Ericsson Labs is pushing to extend their coverage of technologies in the future.<br />
All web APIs are available from any platform as they are exposed as a REST architecture. </p>
<p><strong>W3C recommendations</strong></p>
<p>Later on, at one of the W3C sessions on mobile web best practices, it&#8217;s been obvious that the recommendations on mobile devices include the same set than for desktop devices for their basis, but also incorporate mobile devices specifics such as follows:</p>
<ul>
<li>No popups as everything happens in a single window, it would not make sense.</li>
<li>No link using the &#8220;target=blank&#8221; property to minimize the number of windows opened on the mobile device&#8217;s screen, if the device allows it anyways.</li>
<li>Work in one column only, because of the limited width most mobile screens only accommodate</li>
<li>Get the markup right so as to limit the possibility of errors at display, which can be more critical on a mobile device than on a larger screen.</li>
<li>Use DL list instead of tables for tabular data for mobiles. It appears that many mobile browsers are unable to render tables relatively to the small size of the screen, forcing the view to scroll horizontally which is both inconvenient and can be impossible to do.</li>
</ul>
<p>The flip cards given out at the session summarize these points, but require the reader to also comply with desktop standards.<br />
<a rel="lightbox[1005]" href="http://photo.ekynoxe.com/blog/2009/10/w3c1.jpg"><img src="http://photo.ekynoxe.com/blog/2009/10/w3c1-150x150.jpg" alt="w3c flip cards" title="w3c" width="150" height="150" class="size-thumbnail wp-image-104" /></a></p>
<p><strong>Mobile push notifications</strong></p>
<p>Mobile push notifications (by dale lane, <a href="http://dalelane.co.uk/blog/?p=938">http://dalelane.co.uk/blog/?p=938</a>)<br />
Alongside the standard polling and long polling techniques to retrieve new data from a mobile application, some platforms use SMS push in order to trigger the device to fetch data such as Betavine.<br />
Another solution developed by IBM is called MQTT for MQ Telemetry Transport. It has been created for applications with time critical issues such as fire alarm for deaf people for example.<br />
The technology, which resembles SIP in some ways in its subscribe/notify mechanism, is available online with client libraries available in many languages, but some aspects of the protocol have been deliberately kept in the commercial versions, such as security with encryption of payload data.</p>
<p>On the subject of designing the application not require too much data exchanges, it has also been suggested to incorporate caching, which can be done using google gears to cache on the background</p>
<p><strong>The Hackathon!!</strong></p>
<p>Some of the best projects in the Hackathon of Friday night included:</p>
<ul>
<li>Drinker, an app that helps you count the pints you&#8217;ve had by displaying a disk that grows bigger with the amount of drinks (supposedly easier to press)</li>
<li><a href="http://www.tomhume.org/2009/09/project-bluebell.html">Project Blue bell</a> which use bluetooth signals from mobile phones in the conference hall to generate both a musical and a visual representation.</li>
<li>An offline wiki editor for android.</li>
<li>A Bondi password generator/storage. This was generating a random password and keeping it on a mobile for the user to find easily afterwards.</li>
<li>A <a href="http://friendhangman.com/">hangman game</a> for which the words are based on the twitter usernames of a given hash tag. This has been hugely successful and continues to live and expand outside OTA09.</li>
<li>The non coding but truly amazing hair blowing holodeck project from <a href="http://www.ewanspence.com/blog/2009/09/28/project-holodeck-pyrotechnics-and-presentations-over-the-air-2009/">ewan spence</a></li>
</ul>
<p><strong>The highlights and what to remember from my point of view</strong></p>
<ul>
<li>TWITTER TWITTER TWITTER!!! We can&#8217;t highlight enough how much the tweets have played an importance in this conference. Unless you have experienced it for real in such a reunion of geeks, you can&#8217;t really understand how much twitter can deliver! It&#8217;s quite impressive the amount of updates and exchanges that have been taking place over the two days of the conference and even after it.</li>
<li>Good ideas in the contests, and good small apps that can go forward quickly! I can cite directly the creepy <a href="http://friendhangman.com/">friendhangman</a> from <a href="http://twitter.com/makoto_inoue">Makoto Inoue</a> or Something around you by Alfredo Morresi, Stefano Zingarini, &#038; Robert (Jamie) Munro</li>
<li>Teens Dragons Den gave some critical insight into the future of oure apps and the market segements we are targetting right now. One of the most striking remarks that must be remembered, not only for teenagers apps, but I think for any app that will hit the market was <strong>&#8220;can you get it on &#8216;regular phones&#8217;? None of my friends use Android.&#8221;</strong> Just remember who the target market is and build on purpose is the message here!</li>
<li>BONDI APIs have been very much in the line of fire from all developers during the contest, and later on twitter, as many tweet suggested. Several developers dropped the idea of using them altogether saying there <em>&#8220;The BONDI SDK isn&#8217;t an SDK, there is a runtime &#8230; but no actual developer tools!&#8221;</em>. That can summarize quite well the general feeling about it as only one contestant in the competition, Kai Hendry for his BONDI password generator, managed to have an app working with the BONDI APIs.</li>
</ul>
<p><a rel="lightbox[1005]" href="http://photo.ekynoxe.com/blog/2009/10/tube_bean_bags.jpg"><br />
<img src="http://photo.ekynoxe.com/blog/2009/10/tube_bean_bags-150x150.jpg" alt="tube_bean_bags" title="tube_bean_bags" width="150" height="150" class="alignright size-thumbnail wp-image-103" /></a></p>
<p>Altogether an amazing two days of interactive conferences and great fun.<br />
Thanks to you all for that, and thanks for the bean bags that did raise a few looks in the tube back home!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ekynoxe.com/2009/10/05/over-the-air-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>On the developers&#8217; mobile mountain</title>
		<link>http://blog.ekynoxe.com/2009/09/27/on-the-developers-mobile-mountain/</link>
		<comments>http://blog.ekynoxe.com/2009/09/27/on-the-developers-mobile-mountain/#comments</comments>
		<pubDate>Sun, 27 Sep 2009 19:49:59 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[UX]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://blog.ekynoxe.com/?p=72</guid>
		<description><![CDATA[Attending the Over The Air conference 2009 in Imperial College London, I had the chance to assist to some very good sessions, including a cool workshop on designing mobile apps conducted by Thom Hume, MD of Future Platforms in Brighton.
Entitled &#8216;Many ways up the mobile mountain&#8217;, the topic was about following an iterative process to [...]]]></description>
			<content:encoded><![CDATA[<p>Attending the <a href="http://overtheair.org/blog/">Over The Air conference 2009</a> in Imperial College London, I had the chance to assist to some very good sessions, including a cool workshop on designing mobile apps conducted by <a href="http://www.tomhume.org/">Thom Hume</a>, MD of <a href="http://www.futureplatforms.com/">Future Platforms</a> in Brighton.<br />
Entitled &#8216;Many ways up the mobile mountain&#8217;, the topic was about following an iterative process to build an application for a specific character &#8211; intended to act as a market segment &#8211; and a specific mobile device.</p>
<p>In teams of 4-5 people, we were all given the same requirements in terms of target market (or character), but almost all different devices.</p>
<p>The target character: Jeremy, keen mountaineer, 42, 2 kids and dyslexic, is not an uber-user of the web and prefers voice chats, but will not mind using emails.</p>
<p>The application was to be designed to help him enjoy his mountaineering experience, while enabling him to share it with friends and family.</p>
<p>Now, that&#8217;s where it becomes interesting: each team is given one device on the first iteration of the design, and that will change on the second one. This might seem to be a detail, but as we will see, it had a great impact on some teams later on!</p>
<p>For the first iteration, my team was given a nice wooden representation of a Nokia 6210 which did not have all the fancy gadgets you can find on a top of the range device, and with this in mind, the team went only for a limited, but still relevant set of features that would be do-able on the little handset. But in the process, <a href="http://twitter.com/matyjas">Matyjas</a> rightly pointed at the fact that for iteration two, we might have a way more rubbish device. And this was the real key of the session for many teams!<br />
At the end of this first iteration, we integrated a member from another team to simulate a quick 5-min user testing and got feedback on our &#8220;product to-be&#8221;. Interestingly, we had Tara, graphic and UX designer from <a href="http://ribot.co.uk/">ribot</a> and she commented on the importance of making textual input easy and intuitive. Indeed we had neglected that in what we have been talking about, and this was going to go in the pool of improvements for iteration #2.</p>
<p>After I presented our team&#8217;s first app ideas and the &#8220;user testing&#8221; feedback, we have been handed our second device, which was like an old Sony Ericsson p900. Interestingly, this device was in almost all points identical to the newer nokia, including the screen resolution that was really close, so we decided not to change much of our application, except a slight re-factoring of the proposed UI, as we had a touchscreen with this new device.</p>
<p>My team did not have to apply many changes because the two devices were quite similar, but as already suggested, for others, it&#8217;s been a different story altogether. The most impressive change being for teams that initially went berserk on apps features, but were then handed a clam-shell phone without almost all media capabilities. What do you do in that case? Yeah, you&#8217;re stuck! One team even considered getting rid their first design altogether!</p>
<p>It was clear at that point, at least to me, that pure developers, like most of the people in the room and some in the team, do not think far enough in the life cycle of their future application. yes, we do have some fantastic high end devices available like the iPhone or the Gphones, but one must not forget that the majority of the users out there:</p>
<ul>
<li>don&#8217;t own one of these super high end devices</li>
<li>are not interested into gadget features</li>
<li>don&#8217;t even know what twitter, facebook and other hype social activities are</li>
</ul>
<p>Hence, if your application is targeted at the average user, there is probably no real need to cram as much of these functions trendy amongst technology savvy users as you can. The UX will only be clearer to everyone, simpler to build and leave you with more time to refine it properly instead of integrating lots of APIs.</p>
<p>Conclusions drawn from this workshop were interesting from a developer point of view, but I think also from a general UX design point of view:</p>
<p><strong>Lessons learned</strong></p>
<ul>
<li>Don&#8217;t ignore the importance of the key features (The text in our case!)</li>
<li>Constraints boost creativity and passion (that has to be remembered and repeated everywhere!!)</li>
<li>More voices help (probably only up to a certain point)</li>
<li>Basic ideas translate well across devices</li>
<li>The second iteration helped in refining, or re-defining the application</li>
<li>User testing helps a lot! (And must probably be always integrated in any project, which is sadly not the case!)</li>
</ul>
<p><strong>Difficulties encountered</strong></p>
<ul>
<li>Starting out is tough, specially in defining the scope of work</li>
<li>You&#8217;re on mobile, so think of the size of these buttons (whether hardware or touchscreen elements). That has been dubbed the gloved man problematic ;)</li>
</ul>
<p><strong>Changes required for #2</strong></p>
<ul>
<li>Device constraints almost pushed some teams to completely throw away their #1</li>
</ul>
<p><strong>Surprising facts</strong></p>
<ul>
<li>Basic devices can be better in some cases (especially when you try to design an app for the average user)</li>
<li>It&#8217;s tempting to over-crowd the app with unnecessary features for the target market</li>
<li>Paper prototyping helps concentrate more on the actual functionality rather than the polish</li>
<li>Did I say constraints bring passion?</li>
</ul>
<p>If this type of exercise might be common practice for designers, being still more of a developer, it was a great session to understand the basic principles of UX and common mistakes made in teams where designers are either neglected, not understood, or even worse, non existent!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ekynoxe.com/2009/09/27/on-the-developers-mobile-mountain/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>403</title>
		<link>http://blog.ekynoxe.com/2009/09/27/403/</link>
		<comments>http://blog.ekynoxe.com/2009/09/27/403/#comments</comments>
		<pubDate>Sun, 27 Sep 2009 12:51:15 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://blog.ekynoxe.com/2009/09/27/403/</guid>
		<description><![CDATA[Does that mean I am forbidden to access my hotel room? ;)

]]></description>
			<content:encoded><![CDATA[<p>Does that mean I am forbidden to access my hotel room? ;)</p>
<p><a href="http://photo.ekynoxe.com/blog/2009/09/p_480_360_F0CFD67F-D580-4E4C-A51D-9469BF576C48.jpeg" rel="lightbox[74]"><img src="http://photo.ekynoxe.com/blog/2009/09/p_480_360_F0CFD67F-D580-4E4C-A51D-9469BF576C48.jpeg" alt="" width="225" height="300" class="alignnone size-full wp-image-364" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ekynoxe.com/2009/09/27/403/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend and Xdebug</title>
		<link>http://blog.ekynoxe.com/2009/09/17/zend-and-xdebug/</link>
		<comments>http://blog.ekynoxe.com/2009/09/17/zend-and-xdebug/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 21:50:01 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Zend]]></category>
		<category><![CDATA[xdebug]]></category>

		<guid isPermaLink="false">http://blog.ekynoxe.com/?p=53</guid>
		<description><![CDATA[After having coded most of my sites all from scratch with some of my own libraries, I am getting into using Zend framework, PHPUnit, and Xdebug.
If the two first ones have been of little trouble to install, I can&#8217;t say the same for Xdebug.
At first I have followed all the common tutorials that you can [...]]]></description>
			<content:encoded><![CDATA[<p>After having coded most of my sites all from scratch with some of my own libraries, I am getting into using Zend framework, PHPUnit, and Xdebug.</p>
<p>If the two first ones have been of little trouble to install, I can&#8217;t say the same for Xdebug.</p>
<p>At first I have followed all the common tutorials that you can find around the web:</p>
<ul>
<li>downloading the pre-compiled xdebug.so for my PHP install</li>
<li>simply copying to the proper folder</li>
<li>modifying my php.ini configuration by adding the correct zend_extension parameter for [xdebug].</li>
</ul>
<p>Until here, nothing fancy, it seems to work for most. BUT, when every install how-to on the web says &#8220;that&#8217;s it you&#8217;re done&#8221;, nothing happened for me. Xdebug was not loaded, there was no error message and everything was still running fine.</p>
<p>That&#8217;s when things started to get complicated, given the amount of combination possible of wrong configuration parameters and pre-compiled available shared objects, <strong>all of which would fail silently if anything would go wrong</strong>.</p>
<p>I tried to change zend_extension to zend_extension_ts because I was running PHP 5.2.8, but this did not change anything, I tried to compile xdebug.so manually and use the compiled object with the several parameters combination I have already tested with the pre-compiled version&#8230; Nothing. not  single error or idicatio that could put me on the right way!</p>
<p>Then, I came across an old article on <a href="http://devzone.zend.com/article/2803">devzone.zend.com</a> that I have discarded at first for its age (December 2007&#8230;) but that I ended up reading thoroughly and the following lines flashed before me:</p>
<p><em>Please note that phpize and php-config must match the PHP version you are using, so do not just copy them to your system from some other PHP installation. When your development tools are in place, you can download and compile xdebug</em></p>
<p>The phpize command on my system was not pointing to the proper one, as I compiled my own AMP install on the Mac. Running the proper phpize (in /usr/local/php/bin/ for me), it gave kind of a weird result:</p>
<p class="code">PHP Api Version:         20041225<br />
Zend Module Api No:<br />
Zend Extension Api No:   </p>
<p>Yep! No Zend API version numbers at all. As phpise is a simple shell script that extracts the API numbers from the PHP and Zend configurations, I thought there was a problem simply with my PHP install, and not with xdebug at all.</p>
<p>As I was running 5.2.8, I upgraded to PHP 5.3, cleaned all xdebug.so files, cleaned my php.ini file and tried it all again!</p>
<p>The pre-compiled version <strong>DID NOT WORK</strong> either, but compiling it myself from source, this time phpize giving the right API numbers:</p>
<p class="code">PHP Api Version:         20090626<br />
Zend Module Api No:      20090626<br />
Zend Extension Api No:   220090626</p>
<p>And finally xdebug worked!<br />
So, a few things to remember:</p>
<ul>
<li>sort your PHP install properly first, with the commands pointing to the right places. That&#8217;s also valid for php-config that is required for the compilation of xdebug</li>
<li>trying the pre-compiled version might not work on your system, so compile your own, it&#8217;s simple enough and the article on zend.com(<a href="http://devzone.zend.com/article/2803">http://devzone.zend.com/article/2803</a>), albeit old, is still valid</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.ekynoxe.com/2009/09/17/zend-and-xdebug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fix that Web Site!</title>
		<link>http://blog.ekynoxe.com/2009/09/09/fix-that-web-site/</link>
		<comments>http://blog.ekynoxe.com/2009/09/09/fix-that-web-site/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 18:00:36 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[DNS]]></category>

		<guid isPermaLink="false">http://blog.ekynoxe.com/?p=23</guid>
		<description><![CDATA[I can&#8217;t recall how many times I&#8217;ve entered a domain name in a browser, say &#8216;domain.com&#8217;, only to wait 30 seconds and get an ugly 502 Bad gateway error in return.
The problem? Enter http://domain.com instead of http://www.domain.com and see what happens.

you are served the expected website, the url stays the same
you are redirected to http://www.domain.com [...]]]></description>
			<content:encoded><![CDATA[<p>I can&#8217;t recall how many times I&#8217;ve entered a domain name in a browser, say &#8216;domain.com&#8217;, only to wait 30 seconds and get an ugly 502 Bad gateway error in return.<br />
The problem? Enter http://domain.com instead of http://www.domain.com and see what happens.</p>
<ol>
<li>you are served the expected website, the url stays the same</li>
<li>you are redirected to http://www.domain.com or some other url</li>
<li>you get a 502, Bad gateway timeout</li>
</ol>
<p>I don&#8217;t know if it&#8217;s laziness, lack of knowledge or simply host providers being plain rubbish, but it&#8217;s an annoying problem that can be solved extremely simply!</p>
<p>Most of websites that are not configured properly often get away with it as many internet users believe that &#8216;www&#8217; is a compulsory part of any web URL.<br />
In fact it&#8217;s only because of an old practice of naming hosts according to the services they provide, in our case a web site, with www. FTP using ftp.domain.come etc.<br />
But it has nothing to do with any technical issue or any standard.<br />
Not many (if any) &#8216;Mr average&#8217; know this!</p>
<p>One of the problems is that with the advent of new web browsers that suggest you URLs from your history, or even perform straight away an interactive search of web resources that match your typing, it is very easy to fall into the usual consumer laziness and let the browser find everything for you. That way, you get into the habit of accessing a website just by typing the domain name, without www or any other prefix, and sometimes even without the top level domain (The &#8216;.com&#8217; or other &#8216;.something&#8217;).</p>
<p>I&#8217;m the first to do it and that&#8217;s why I probably end up on these poorly configured web servers from time to time.<br />
But I am still quite astonished to it see happen, as it can seriously lead to some misunderstanding from the average user. If I don&#8217;t know anything of internet, don&#8217;t care about &#8216;www&#8217;s, just type a domain name in my browser and get an error page, I&#8217;m not going to try very long to search for how to access that site!</p>
<p>That problem has a simple solution though.</p>
<p>First, if you have access to them, check your DNS records.<br />
This step might not be compulsory, but it won&#8217;t harm to check them anyways.<br />
Your domain will have an A record to point your domain name to the IP of the host of your web site:</p>
<p class="code">domain.com           A              0.0.0.0</p>
<p>You can also add either an A or a CNAME record for the www sub-domain. The syntax differs:</p>
<p class="code">domain.com        A        0.0.0.0<br />
www.domain.com        A        0.0.0.0<br />
www.domain.com        CNAME        domain.com.</p>
<p>Second, check your web server configuration that it actually is accepting requests from sub-domains and serving the proper files.<br />
In Apache, for example, you can set it up by adding a virtual host:</p>
<p class="code">Listen 80<br />
NameVirtualHost *<br />
<br/><br />
&lt;VirtualHost *&gt;<br />
ServerName www.domain.com<br />
DocumentRoot /home/httpd/htdocs/<br />
&lt;/VirtualHost&gt;<br />
<br/><br />
&lt;VirtualHost *&gt;<br />
ServerName domain.com<br />
DocumentRoot /home/httpd/htdocs/<br />
&lt;/VirtualHost&gt;</p>
<p>or using a server alias:</p>
<p class="code">Listen 80<br />
NameVirtualHost *<br />
<br/><br />
&lt;VirtualHost *&gt;<br />
ServerName domain.com<br />
ServerAlias www.domain.com<br />
DocumentRoot /home/httpd/htdocs/<br />
&lt;/VirtualHost&gt;</p>
<p>So yes, I admit, you have to have access to the DNS entries and the configuration files of the server. But even if you don&#8217;t and it&#8217;s down to the host provider to configure the DNS and the web server files, it is very easy to set these up properly.</p>
<p>Ok, again, you might argue that you could serve a different version of the site with http://domain.com and http://www.domain.com, but if you don&#8217;t and there is no redirection in place, just make sure you don&#8217;t serve a 502.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ekynoxe.com/2009/09/09/fix-that-web-site/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
