<?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>codesofa &#187; iPhone</title>
	<atom:link href="http://codesofa.com/blog/archive/category/iphone/feed" rel="self" type="application/rss+xml" />
	<link>http://codesofa.com</link>
	<description>chaotic. pragmatic. smart(ass).</description>
	<lastBuildDate>Wed, 04 Aug 2010 16:05:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Plans, reflections and dreams.</title>
		<link>http://codesofa.com/blog/archive/2010/02/12/plans-reflections-and-dreams.html</link>
		<comments>http://codesofa.com/blog/archive/2010/02/12/plans-reflections-and-dreams.html#comments</comments>
		<pubDate>Fri, 12 Feb 2010 00:52:39 +0000</pubDate>
		<dc:creator>marc</dc:creator>
				<category><![CDATA[Information]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[partiql]]></category>

		<guid isPermaLink="false">http://codesofa.com/blog/archive/2010/02/12/plans-reflections-and-dreams.html</guid>
		<description><![CDATA[This is a complete self reflection, so move along if you don&#8217;t want to read anything personal ;) As you may know by know, a few days ago, we announced partiql, a software company. And this is my story behind it, why it&#8217;s such a damn joyride :) About 9 months ago, I sat in [...]]]></description>
			<content:encoded><![CDATA[<p>This is a complete self reflection, so move along if you don&#8217;t want to read anything personal ;)<a href="http://www.entropy.ch"></a></p>
<p>As you may know by know, a few days ago, we announced <a href="http://partiql.com">partiql</a>, a software company. And this is my story behind it, why it&#8217;s such a damn joyride :)</p>
<p>About 9 months ago, I sat in the sun, somewhere between San Jose and Palo Alto and had a nice sandwich, probably Subways. I remember that day pretty clearly, I almost got arrested at Google and Apple at the same day ;)</p>
<p>It was in situations like these when I dreamed of having my own company, getting up late in the morning, creative people around and work on things I like and only a few who I trust tell me what to do in certain situations. Why? I don&#8217;t know. Daydreaming perhaps. I just thought about making a living around the corner of <a href="http://linkedin.com">LinkedIn</a>, <a href="http://twine.com">Radar Networks</a> or <a href="http://digg.com">Digg</a>. It all felt so vibrant, so bold, so pumping. Back home, it was hard at first, realizing that the bank account probably wouldn&#8217;t allow an own startup right now.. Days went by, I started working at Memonic, got quite a good feeling of what it&#8217;s like to work with a startup. They always call(ed) it Roller Coaster, and that&#8217;s probably the right term for it. One day you are down, no users, no one cares about you. The other day you are featured on <a href="http://lifehacker.com">lifehacker.com</a>. Yet when you have to explain the product to someone you suddenly realize that you haven&#8217;t done so much yet but yet you worked like crazy.. WTF? (That&#8217;s valid for everything I&#8217;ve ever done..) However, you get something back, that not everyone gets. You see something grow, something &#8220;getting born..&#8221;</p>
<p>I once had a nice chat with <a href="http://www.entropy.ch">Marc Liyanage</a> about how long he will remain a Software Developer, because I was unsure if I wanted to do this all my life.. He said something like <b>&#8220;writing software is one of the only things you can create something on your own out of nothing&#8221;</b> &#8211; and this sentence has been in my head ever since.</p>
<p>So, this feeling of something getting alive&#8230; I tell you, it&#8217;s quite addictive. You not only get sick and tired of doing the same stuff over and over again, you also feel the need to create something from scratch every now and then. Having tabula rasa once in a while is a nice feeling. And this is why we and specifically I founded <a href="http://partiql.com">partiql.com</a>.. Every day I come across technology I so desperately want to try out, be it at ETH (rarely) or by reading (often), that I would let everything else fall for the moment. &#8220;Es grausams ADHS Chind&#8221; (EN: &#8220;a terrible ADD child&#8221;) &#8211; as my girlfriend once noted :) Also, I have that inner desire to strive for perfection. And this doesn&#8217;t mainly mean the perfection you see, but the perfection I know. I think every developer knows what I&#8217;m talking about, that line of code that shouldn&#8217;t be there, that one element that wasn&#8217;t meant to be in that class.. (But of course also things that you might and will see..). Since Stefan is one of the best partners you can imagine to start up a company, it&#8217;s pretty easy for me to do a lot of refactoring and prototyping. Currently, we have a setup of 4-8 hosts, completely dynamic, running with some pretty fancy software like MongoDB and other software that even I wouldn&#8217;t recommend if we had 20 employees to feed (no offense, former employers). It&#8217;s those risks that make it so exciting. Will the API hold? Will the setup scale for real? Is the App really ready? Will we get a lot of one star rating because we didn&#8217;t live up to the expectations?</p>
<p>Can you feel it? I really cannot tell you to try it out, because it&#8217;s like publicly announcing that you should try cocaine or something.</p>
<p>Even the marketing. Both Stefan and I never did something like this before. Raising expectations before something&#8217;s finished? Not really our style. But, it&#8217;s like adding a bit of concrete into the water you are about to jump into from about 100m (300ft).</p>
<p>There are still many dreams to come. Like providing that space of creativity, sanctuary where other people can experience the same thing, but maybe with some help and a fallback option. Or going completely different ways with other style of applications, other devices.. Whatever will come, I&#8217;m excited as hell to be on this trip now.</p>
<p><b>Wanna know what it&#8217;s like? You hardly get any sleep, you are always nervous (&#8220;chribelig&#8221;) and yet you have that superhero feeling inside of you. A burning desire to tell everyone what you are doing yet you cannot tell anyone. Having good friends around you that help you, that wish you well but who&#8217;s expectations you have yet to meet. It feels like <a href="http://en.wikipedia.org/wiki/Stockholm_syndrome">Stockholm Syndrome</a>, it might torment you, but you still would never let go.</b></p>
<p>Thank you all for the great support so far and I really hope we can live up to the expectations we have set.</p>
]]></content:encoded>
			<wfw:commentRss>http://codesofa.com/blog/archive/2010/02/12/plans-reflections-and-dreams.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Look! UIAlertView is dating UITableView!</title>
		<link>http://codesofa.com/blog/archive/2009/07/15/look-uialertview-is-dating-uitableview.html</link>
		<comments>http://codesofa.com/blog/archive/2009/07/15/look-uialertview-is-dating-uitableview.html#comments</comments>
		<pubDate>Wed, 15 Jul 2009 19:51:26 +0000</pubDate>
		<dc:creator>marc</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[Information]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[sdk]]></category>
		<category><![CDATA[UIAlertView]]></category>
		<category><![CDATA[UITableView]]></category>

		<guid isPermaLink="false">http://codesofa.com/?p=202</guid>
		<description><![CDATA[As you may have guessed, this is about UIAlertView containing a UITableView. Since I started playing around with GameKit, I had the issue that I couldn&#8217;t use the PeerPicker with Client/Server stuff.. I can&#8217;t really get into the stuff we are doing and where we are using it &#8211; but I can offer you some [...]]]></description>
			<content:encoded><![CDATA[<p>As you may have guessed, this is about UIAlertView containing a UITableView. Since I started playing around with GameKit, I had the issue that I couldn&#8217;t use the PeerPicker with Client/Server stuff..<br />
I can&#8217;t really get into the stuff we are doing and where we are using it &#8211; but I can offer you some trick and code to have a UIAlertView displayed with a fully controllable UITableView.</p>
<p>I started off with making it a decorator.. After 20&#8242; I had to give up, because it was just too complicated to decorate objects where you don&#8217;t really know what&#8217;s going on. So I had to subclass it &#8211; unfortunately, but anyway..</p>
<p>Let&#8217;s take a look at what you would probably like to have..</p>
<h3 class="codetitle">Client</h3>
<pre><code class="prettyprint">UIAlertTableView *alert = [[UIAlertTableView alloc] initWithTitle:@"Select Option"
    message:@"select option or create one"
    delegate:self
    cancelButtonTitle:@"Cancel"
    otherButtonTitles:@"Create", nil];
alert.tableDelegate = self;
alert.dataSource = self;
alert.tableHeight = 120;
</code></pre>
<p>And this should be the result:</p>
<p><a href="http://codesofa.com/files/2009/07/alerttable1.png" rel="lightbox"><img src="http://codesofa.com/files/2009/07/alerttable1-300x156.png" alt="" title="alerttable1" width="300" height="156" class="alignnone size-medium wp-image-209" /></a></p>
<p>Alright, so, we just add a UITableView to the UIAlertView as a Subview, right? Hold on, Tiger :)<br />
First of all, if we set the message to nil, we want to have this:</p>
<p><a href="http://codesofa.com/files/2009/07/alerttable2.png" rel="lightbox"><img src="http://codesofa.com/files/2009/07/alerttable2-300x156.png" alt="" title="alerttable2" width="300" height="156" class="alignnone size-medium wp-image-210" /></a></p>
<p>And if we rotate, we want to have the nice effects! Like this:</p>
<p><a href='http://screencast.com/t/Diw6UmXi4' >Rotate Animation</a></p>
<p>If you only want to grab the code without BlahBlah: <a href="http://bitbucket.org/marcammann/uialerttableview/src/">UIAlertTableView on Bitbucket.org</a> (btw. I switched to bitbucket.org &#8211; but that&#8217;s another story)</p>
<p>So, let&#8217;s look at the code a bit:</p>
<h3 class="codetitle">UIAlertTableView.h</h3>
<pre><code class="prettyprint">
#import &lt;UIKit/UIKit.h&gt;

@class UIAlertView;

@interface UIAlertTableView : UIAlertView {
	// The Alert View to decorate
	UIAlertView *alertView;

	// The Table View to display
	UITableView *tableView;

	// Height of the table
	int tableHeight;

	// Space the Table requires (incl. padding)
	int tableExtHeight;

	id<UITableViewDataSource> dataSource;
	id<UITableViewDelegate> tableDelegate;
}

@property (nonatomic, assign) id dataSource;
@property (nonatomic, assign) id tableDelegate;

@property (nonatomic, readonly) UITableView *tableView;
@property (nonatomic, assign) int tableHeight;

- (void)prepare;

@end
</code></pre>
<p>You see: we subclass UIAlertView, we have a UITableView, we have a delegate which needs to implement the protocol as well as a dataSource. Straight forward, I&#8217;d say&#8230;</p>
<p>Now, as for the implementation, one would think: just overload the &#8220;show&#8221; method and insert the TableView as a subview etc. Well, that works &#8211; NOT. First of all: you have to resize your AlertView, then you have to move the buttons down and then you have to place the tableView somewhere (esoteric?).<br />
OkOk, just overwrite the drawRect then? You are getting closer!<br />
But, first, let&#8217;s have a look at the prepare method.</p>
<h3 class="codetitle">UIAlertTableView.m:prepare</h3>
<pre><code class="prettyprint">
- (void)prepare {
	if (tableHeight == 0) {
		tableHeight = 150.0f;
	}

	// Calculate the TableViewHeight with padding
	tableExtHeight = tableHeight + 2 * kTablePadding;

	tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];
	tableView.delegate = tableDelegate;
	tableView.dataSource = dataSource;	

	// Insert it as the first subview
	[self insertSubview:tableView atIndex:0];
}
</code>
</pre>
<p>This code creates the TableView but does not set a real frame yet. It sets the given DataSource and Delegate. To be totally correct, there should be a custom setTableDelegate / setDataSource method which changes them in the tableView &#8211; but this is left as an exercise to the reader :)<br />
After the creation, we insert the tableView as the very first subview of the alertView &#8211; so we know where to find it again and that nothing is hidden because of the tableView.</p>
<p>Now comes the tricky part: drawing.<br />
For that, we use a private API call to the AlertView, called layoutAnimated:(BOOL)animated.<br />
We overload it in our custom subclass because the initial drawing and the drawing on setNeedsLayout goes through that method.<br />
After that method is called, all the elements that belong to the AlertView (title, message, buttons &#8230;) are arranged, so we can use those values for our next computations.</p>
<p>So, this is how it goes:</p>
<h3 class="codetitle">UIAlertTableView.m:layoutAnimated</h3>
<pre><code class="prettyprint">
- (void)layoutAnimated:(BOOL)fp8 {
	[super layoutAnimated:fp8];
	[self setFrame:CGRectMake(self.frame.origin.x, self.frame.origin.y - tableExtHeight/2, self.frame.size.width, self.frame.size.height + tableExtHeight)];

	// We get the lowest non-control view (i.e. Labels) so we can place the table view just below
	UIView *lowestView = [self.subviews objectAtIndex:0];
	int i = 0;
	while (![[self.subviews objectAtIndex:i] isKindOfClass:[UIControl class]]) {
		UIView *v = [self.subviews objectAtIndex:i];
		if (lowestView.frame.origin.y + lowestView.frame.size.height < v.frame.origin.y + v.frame.size.height) {
			lowestView = v;
		}

		i++;
	}

	// TODO: calculate this value
	CGFloat tableWidth = 262.0f;

	tableView.frame = CGRectMake(11.0f, lowestView.frame.origin.y + lowestView.frame.size.height + 2 * kTablePadding, tableWidth, tableHeight);

	for (UIView *sv in self.subviews) {
		// Move all Controls down
		if ([sv isKindOfClass:[UIControl class]]) {
			sv.frame = CGRectMake(sv.frame.origin.x, sv.frame.origin.y + tableExtHeight, sv.frame.size.width, sv.frame.size.height);
		}
	}
}
</code>
</pre>
<p>Step by step: first, we call the superclass - so everything gets arranged.<br />
Then, we set a new frame for the AlertView, which is the same frame + tableHeight + padding. But we also need to rearrange the frame - which is half of that additional height.<br />
After that, we compute the lowest "sitting" normal view - no control object - in the alert view. We loop through it, until we find the first control element - which are usually the buttons, because they are added at the end. You could loop through all views and get the lowest from any non-UIControl objects. But this works :)<br />
This position is used to place the TableView at the correct position - whether you have a message, a title or whatever there.. but it needs to be above the buttons - UI standards.<br />
To be above the buttons, we need to rearrange the buttons, and this is what happens: all UIControl object in the AlertView are moved down by the size we added to the AlertView frame - the complete TableHeight. And this is it.<br />
We resize the AlertView, calculate the position where the TableView is supposed to be inserted at and then move the buttons. If we rotate, this gets calculated again and nicely rearranged.</p>
<p>Note: you can apply the very same method for any other UIView object you want to insert into an UIAlertView.. Be it TextField or ImageView or whatever. (For textField, you should use their private APIs though)</p>
<p>Again, code is here: <a href="http://bitbucket.org/marcammann/uialerttableview/src/">Code on Bitbucket.org</a></p>
]]></content:encoded>
			<wfw:commentRss>http://codesofa.com/blog/archive/2009/07/15/look-uialertview-is-dating-uitableview.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BOSW, a big thank you and Open Source on the iPhone</title>
		<link>http://codesofa.com/blog/archive/2009/04/04/bosw-a-big-thank-you-and-open-source-on-the-iphone.html</link>
		<comments>http://codesofa.com/blog/archive/2009/04/04/bosw-a-big-thank-you-and-open-source-on-the-iphone.html#comments</comments>
		<pubDate>Sat, 04 Apr 2009 22:14:18 +0000</pubDate>
		<dc:creator>marc</dc:creator>
				<category><![CDATA[GottaGo]]></category>
		<category><![CDATA[Information]]></category>
		<category><![CDATA[Transport]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iphone openexpo transport bosw best of swiss web open source oss foss gottago]]></category>

		<guid isPermaLink="false">http://codesofa.com/?p=190</guid>
		<description><![CDATA[Whew, those were a few interesting and pretty exhausting days. Open Source on the iPhone @ OpenExpo The first part of this article is about my morning of that fancy day. I had the really great opportunity to hold a talk at the OpenExpo in Berne. The talk was about Open Source Software on the [...]]]></description>
			<content:encoded><![CDATA[<p>Whew, those were a few interesting and pretty exhausting days.</p>
<p><strong>Open Source on the iPhone</strong> @ OpenExpo</p>
<p>The first part of this article is about my morning of that fancy day. I had the really great opportunity to hold a talk at the OpenExpo in Berne. The talk was about Open Source Software on the iPhone and I think it went quite well. Had a few interesting Mails with questions and the crowds seemed to understand the issues and problems coming with Development and Deployment of Open Source Software.</p>
<p>The Slides are available <a href="http://codesofa.com/files/2009/04/iphone-foss-bern-openexpo-1.pdf">here</a> (english) while there is a video on youtube of the presentation <a href="http://www.youtube.com/watch?v=H5wzTlAC91w">here</a> (english)</p>
<p><strong>Best of Swiss Web</strong></p>
<p>You may have heard about that event called &#8220;Best of Swiss Web&#8221; &#8211; if you don&#8217;t, look it up :) It&#8217;s an award for the &#8220;best&#8221; swiss Websites of the passed year.<br />
Thanks to a wizard called Hannes, Liip decided to participate with GottaGo in this event (as well as with the RaiWeb project &#8211; which is however not part of this article), 2 categories &#8211; Technology Innovation, Public Affairs and was also nominated for the Master &#8211; which is the price of the prices.<br />
The night then started not so bad &#8211; we won bronze, in &#8220;Public Affairs&#8221;. The night went on, nice food, a very nice white wine.. after that, &#8220;Technology Innovation&#8221; was on.. Bronze, Silver.. Silver for SBB and their app.. No word of GottaGo? The light turns up.. Gold! Short before the event I said: I don&#8217;t want to win the Master award, but the Technology Innovation award.<br />
Later on, some glasses of wine later &#8211; an excellent red wine btw. &#8211; the Master was on. Number 1 again.. whooo!<br />
Besides, Liip won 2x silver with the RaiWeb Project!<br />
Now, enough of that. I just want to say &#8220;Thank you&#8221;, really really thank you for helping me, supporting me, criticising me, trying to buy me out of this project, pissing me off with lame comments, giving me a reason to work and last but not least &#8211; let me work. Thank you Liip for never telling me to get up early, never telling me to work afterhours but rather let me work afterhours and let me get up early or late or not getting up at all and of course, pay me enough money that I don&#8217;t have to work 100% :)<br />
Thanks to all the Beta Testers who took time to help me improve this software. And then, there are two guys in particular, one, is my not-so-bossy-and-always-play-to-win-partial-boss Hannes Gassert who worked afterhours to kick out a bad ass presentation about GottaGo. The other is, who would have guessed, Stefan Sicher.. I know you don&#8217;t feel like you&#8217;ve done a lot, but you really made this project a success. A nice idea is nothing without the right presentation.<br />
See <a href="http://www.flickr.com/photos/20696196@N08/sets/72157616271297040/">here</a> for some pictures, and <a href="http://actiontv.ch/showmovie.php?movie=movie104">here</a> for some interviews from that evening. To that Microsoft guy who thought I would wear a suit next year: I wear T-Shirts with heart and soul. And this is why I&#8217;ll most probably never work for you :)</p>
<p>Stay tuned for some hot updates to come now..</p>
]]></content:encoded>
			<wfw:commentRss>http://codesofa.com/blog/archive/2009/04/04/bosw-a-big-thank-you-and-open-source-on-the-iphone.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Beer for Issue!</title>
		<link>http://codesofa.com/blog/archive/2009/02/27/beer-for-issue.html</link>
		<comments>http://codesofa.com/blog/archive/2009/02/27/beer-for-issue.html#comments</comments>
		<pubDate>Fri, 27 Feb 2009 14:42:42 +0000</pubDate>
		<dc:creator>marc</dc:creator>
				<category><![CDATA[Information]]></category>
		<category><![CDATA[Transport]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[0.9.0]]></category>
		<category><![CDATA[appstore]]></category>
		<category><![CDATA[beer]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[issues]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[sdk]]></category>

		<guid isPermaLink="false">http://codesofa.com/?p=185</guid>
		<description><![CDATA[Hi there.. It&#8217;s been a while and I&#8217;m still pretty busy, but I feel like I have to write something this very sunny afternoon. There are a lot of projects in the pipeline, a few will come out sooner or later :) One project which is still making my head go up and down and [...]]]></description>
			<content:encoded><![CDATA[<p>Hi there.. It&#8217;s been a while and I&#8217;m still pretty busy, but I feel like I have to write something this very sunny afternoon.<br />
There are a lot of projects in the pipeline, a few will come out sooner or later :)<br />
One project which is still making my head go up and down and left and right is Transport. I somehow managed to get on the <a href="http://www.bestofswissweb.ch/shortlist">shortlist of this years Best of Swiss Web</a>. Besides that, I found a still secret partner for the work on Transport. There has been a lot of development, of which not all is on github yet &#8211; some parts are just not ready for open source deployment. (But they will be!)<br />
Today, I want to talk about my beta testers &#8211; they are great. Most of them anyway :)</p>
<p>I&#8217;m facing two problems with them though. First, I don&#8217;t know all of them &#8211; which is unfortunate. There are some I just cannot meet because they live in the south of Uguhagdarbia (not quite..) but there are  others which live in the very same city &#8211; Zurich &#8211; and I still haven&#8217;t managed to meet them.</p>
<p>Second, some of them just want to have an application before everyone else does &#8211; (no offense guys..) &#8211; and what I want in return is feedback &#8211; and not always get it. However, there are some very serious beta testers and I really want to thank you :)</p>
<p>This night, I had an insanly great idea to solve both problems at once and actually solve a third problem: get more testers :)</p>
<p>So what is it about? There have been rumors, that Transport will be ready at the end of march, and so I will need testers in the next few weeks.<br />
<em><strong>This is why I proudly announce the &#8220;Beer for Issue&#8221; program :)</strong></em> What is that? My idea is: If you sign up until the 20th of march on beta[AT]codesofa.com with your UDID, name and e-mail (see <a href="http://codesofa.com/code/transport">Apply for Beta</a>) and you are among the first 70 to sign up, then you get into the &#8220;program&#8221;. After that, you will receive a copy of &#8220;Transport.app&#8221; Beta for the iPhone somewhen after the 20th.</p>
<p>`HOLY CRAP WHERE IS THAT BEER!` &#8211; yes, we are coming to it. After that, you will receive instructions of how to report bugs/issues/whatsoever to me :) Since I really appreciate your time and haven&#8217;t figured out a way to show that to you, <span style="color: #000000;"><span style="text-decoration: underline;"><strong>I offer Beer. Free Beer actually</strong>.</span></span> :) The exact rules have to be determined after the signup is completed, but I plan to give out a beer for every fibonacci number of issues you report, starting at 3.. As long as they are not a duplicate. With &#8220;improvement&#8221; requests, I&#8217;m not so sure yet. That will be a mater of personal oppinion, if they are great, I&#8217;ll buy you 2 beers, if they are ridiculous, you&#8217;ll have to buy me 4 to make me implement it ;)</p>
<p>Let&#8217;s make an example: You report 3 issues &#8211; get 1 beer, 4 issues &#8211; still only 1, 5 issues (2+3) &#8211; get 2 beers, 6 &amp; 7 issues &#8211; 2 beers, 8 issues &#8211; 3 beers etc. Maybe there will be more beer &#8211; I don&#8217;t know yet :)</p>
<p>`IS HE INSANE?!` &#8211; No, not at all. This will force me to write good code, so I don&#8217;t have to buy a lot of beers and besides that, I get to know all of you :) It&#8217;s like a release party.. But more fun because everyone worked on it..</p>
<p>In short:</p>
<ul>
<li>Write me an E-Mail with you iPhone/iPod UDID, your name and your e-mail address until march 20th, 2009 to beta[AT]codesofa.com</li>
<li>Report issues on &#8220;Transport&#8221; iPhone app.</li>
<li>Get paid in beer &#8211; and yes, for ladies there will be a special arrangement possible :)</li>
</ul>
<p>Have fun.</p>
<p>btw.: There is some special ruling for the last testing-period testers, I will figure something out &#8211; but you&#8217;ll get more ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://codesofa.com/blog/archive/2009/02/27/beer-for-issue.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GottaGo takes a day off, or two..</title>
		<link>http://codesofa.com/blog/archive/2008/10/31/gottago-takes-a-day-off-or-two.html</link>
		<comments>http://codesofa.com/blog/archive/2008/10/31/gottago-takes-a-day-off-or-two.html#comments</comments>
		<pubDate>Fri, 31 Oct 2008 13:00:00 +0000</pubDate>
		<dc:creator>marc</dc:creator>
				<category><![CDATA[GottaGo]]></category>
		<category><![CDATA[Information]]></category>
		<category><![CDATA[Transport]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[foss]]></category>
		<category><![CDATA[open]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[oss]]></category>
		<category><![CDATA[rename]]></category>
		<category><![CDATA[source]]></category>

		<guid isPermaLink="false">http://lab.codesofa.com/blog/archive/2008/10/31/gottago-takes-a-day-off-or-two.html</guid>
		<description><![CDATA[As I promised yesterday on twitter and facebook, today is a fun day for GottaGo.. So why is that? GottaGo is retiring. But its younger brother, Transport is taking over the spot.. So this is the official announcement that GottaGo is renamed to Transport. There is a new logo, a new name, but the App [...]]]></description>
			<content:encoded><![CDATA[<p>As I promised yesterday on <a href="http://twitter.com/marcammann/status/982696929">twitter</a> and facebook, today is a fun day for GottaGo..<br />
So why is that? GottaGo is retiring. But its younger brother, Transport is taking over the spot..</p>
<p><img class="leftFloated" title="icon" src="http://codesofa.com/files/2008/11/icon.png" alt="" width="57" height="57" />So this is the official announcement that <strong>GottaGo is renamed to Transport</strong>.</p>
<p>There is a new logo, a new name, but the App itself hasn&#8217;t changed much. We fixed a few issues and improved some minor things like the hitboxes for the Locate-Button and for the Date-Refresh-Button, as they are now a lot bigger.</p>
<p>But, this is again not the fun part :)<br />
Ever since the NDA was in place, I tried to figure out how to get around it. I posted a <a href="http://www.codesofa.com/blog/archive/2008/07/23/make-nsxmlparser-your-friend.html">tutorial about NSXMLParser</a>, which was meant to help iPhone Developers because usually, you&#8217;d use DOMDoc and not SAX.</p>
<p>Through personal requests, I was also able to provide some bits and pieces of code because this was some kind of a request of a customer &#8211; where you&#8217;re allowed to talk about code :)<br />
Now that the SDK has fallen, we have more or less a little greenhouse where we can play around in almost free nature.</p>
<p>A brief history of GottaGo/Transport: It started off as a free-time project and continued as such ever after. I started it to have an example of a real application to help other developers with their own problems. Usually, in books, they always write about your Car object, which has an ivar with wheels and such. Yeah, thanks, not really real-world :) So it&#8217;s always nice to look at real code which is used out there. <br />
To look at code, there really is no better way as to look at Free Open Source Software.</p>
<p><strong>This is why I declare that GottaGo/Transport shall from now on be Open Source and distributed under a more or less GPL v.2 license.</strong> So everyone can create their own Transport App or learn from it or improve it. (The latter would be really nice!)</p>
<p>What does this mean? Not so much for the users, as they are only getting better software :) (Yes, I truly believe in FOSS)</p>
<p>For developers this means: Just drop me a line and help developing the best Transport Application for the iPhone there is. This also means that Android developers and iPhone developers in other countries can adapt Transport for their need and release an equally helpful App for their device and country.</p>
<p>For those who don&#8217;t really understand what I&#8217;m doing here: I give everyone the right to improve, copy and adapt my code.</p>
<p>The code is available on:<br />
<a href="https://svn.liip.ch/repos/public/iphone/Transport">https://svn.liip.ch/repos/public/iphone/Transport</a></p>
<p><span id="more-50"></span></p>
<p>Actually, I never said &#8220;My best payment is if someone leaves his car at home and uses GottaGo at home&#8221; <a href="http://liip.to/held">as some newspaper says..</a> . It was more like &#8220;I get money for doing other things, it&#8217;s just cool that people are really getting agile about getting around by train, bus and tram&#8221;. So this still holds: It&#8217;s just cool if someone else has success with the same idea and eventually some code of mine and makes public transit more accessible to anyone with a decent mobile phone.</p>
<p>For my part, I&#8217;m still contributing to Transport. However not that often, since I have some other very very nice things to show you in a few days/weeks.</p>
<p>If you want to get into the Transport code &#8211; beware, there are grown structures ;) I&#8217;m still cleaning up the code and I&#8217;m trying to set up a how-to to get around the code base.</p>
<p>For now, just sneak around, maybe you&#8217;ll find everything yourself. Else: just drop me a line, or wait until the Wiki is set up.</p>
<p>Checkout &#8220;trunk&#8221; for the bleeding edge version or &#8220;tags/0.2.0&#8243; for the currently in-review-waiting-version of Transport.<br />
As mentioned, license is GPL v.2, so play nice! Actually, it&#8217;s more of like creative commons &#8211; just use it and copy it as you like..</p>
<p>There is another small project in the iPhone repository: Weblocate.<br />
This basically opens a website with the users current location as parameters, maybe a few web developers will like the idea. You&#8217;ll just have to find a way to get it on the iPhone :)<br />
Besides that, it&#8217;s a nice example of how to use the locator with a timer.</p>
<p>Code is here:<br />
<a href="https://svn.liip.ch/repos/public/iphone/weblocate">https://svn.liip.ch/repos/public/iphone/weblocate</a></p>
<p>There is a wiki for Liip / Codesofa iPhone stuff:<br />
<a href="https://fosswiki.liip.ch/display/ipho/Home">https://fosswiki.liip.ch/display/ipho/Home</a></p>
<p>Any specs and how-tos will be posted there.<br />
Well then, this is it for today. Hope you liked the surprise. Stay tuned for more FOSS software to follow from Liip and from my side.</p>
]]></content:encoded>
			<wfw:commentRss>http://codesofa.com/blog/archive/2008/10/31/gottago-takes-a-day-off-or-two.html/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>done.</title>
		<link>http://codesofa.com/blog/archive/2008/10/08/done.html</link>
		<comments>http://codesofa.com/blog/archive/2008/10/08/done.html#comments</comments>
		<pubDate>Wed, 08 Oct 2008 00:37:11 +0000</pubDate>
		<dc:creator>marc</dc:creator>
				<category><![CDATA[GottaGo]]></category>
		<category><![CDATA[Information]]></category>
		<category><![CDATA[Transport]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[appstore]]></category>
		<category><![CDATA[objective-c]]></category>

		<guid isPermaLink="false">http://lab.codesofa.com/blog/archive/2008/10/08/done.html</guid>
		<description><![CDATA[ So much for tonight. Thanks Stefan :)]]></description>
			<content:encoded><![CDATA[<p><img class="leftFloated" src="/files/transport_blog.png" alt="" width="63" height="80" align="middle" /> So much for tonight. Thanks Stefan :)</p>
<p style="clear:both;"/>
]]></content:encoded>
			<wfw:commentRss>http://codesofa.com/blog/archive/2008/10/08/done.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>heissi Maroni! &#8211; marrons chauds! &#8211; marrone caldi! &#8211; hot chestnuts! GottaGo in the App Store</title>
		<link>http://codesofa.com/blog/archive/2008/09/24/heissi-maroni-marrons-chauds-marrone-caldi-hot-chestnuts-gottago-in-the-app-store.html</link>
		<comments>http://codesofa.com/blog/archive/2008/09/24/heissi-maroni-marrons-chauds-marrone-caldi-hot-chestnuts-gottago-in-the-app-store.html#comments</comments>
		<pubDate>Wed, 24 Sep 2008 10:25:01 +0000</pubDate>
		<dc:creator>marc</dc:creator>
				<category><![CDATA[GottaGo]]></category>
		<category><![CDATA[Information]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[annapurna]]></category>
		<category><![CDATA[appstore]]></category>
		<category><![CDATA[released]]></category>

		<guid isPermaLink="false">http://lab.codesofa.com/blog/archive/2008/09/24/heissi-maroni-marrons-chauds-marrone-caldi-hot-chestnuts-gottago-in-the-app-store.html</guid>
		<description><![CDATA[Here we go, after two weeks of waiting, Apple released our beloved GottaGo to App Store last night. Get it here: liip.to/gottago or just update :) I&#8217;ll keep you posted about further development and experiences with an  updated app vs. a new app. I keep it short now &#8211; just enjoy.]]></description>
			<content:encoded><![CDATA[<p><img class="rightFloated" src="/files/appstore.jpg" alt="" width="122" height="115" align="middle" /></p>
<p>Here we go, after two weeks of waiting, Apple released our beloved GottaGo to App Store last night.<br />
Get it here: <a href="http://liip.to/gottago">liip.to/gottago</a> or just update :)</p>
<p>I&#8217;ll keep you posted about further development and experiences with an  updated app vs. a new app.</p>
<p>I keep it short now &#8211; just enjoy.</p>
]]></content:encoded>
			<wfw:commentRss>http://codesofa.com/blog/archive/2008/09/24/heissi-maroni-marrons-chauds-marrone-caldi-hot-chestnuts-gottago-in-the-app-store.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>The big naming issue.. a.k.a mv &#8220;GottaGo.app&#8221; &#8220;Transport.app&#8221; ?</title>
		<link>http://codesofa.com/blog/archive/2008/09/18/the-big-naming-issue-a-k-a-mv-gottago-app-transport-app.html</link>
		<comments>http://codesofa.com/blog/archive/2008/09/18/the-big-naming-issue-a-k-a-mv-gottago-app-transport-app.html#comments</comments>
		<pubDate>Thu, 18 Sep 2008 16:59:30 +0000</pubDate>
		<dc:creator>marc</dc:creator>
				<category><![CDATA[GottaGo]]></category>
		<category><![CDATA[Information]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[advice]]></category>
		<category><![CDATA[fahrplan]]></category>
		<category><![CDATA[sbb]]></category>

		<guid isPermaLink="false">http://lab.codesofa.com/blog/archive/2008/09/18/the-big-naming-issue-aka-mv-gottagoapp-transportapp.html</guid>
		<description><![CDATA[Well, maybe the most of those who read my blog on a regular basis know the problem with &#8220;GottaGo&#8221; already. One week after I released &#8220;GottaGo&#8221; (release in the sense of &#8216;appeared in the App Store&#8217;), another company called &#8220;WindyStudious&#8221; released an app with the same name. No big deal &#8211; I thought. Pretty stupid, [...]]]></description>
			<content:encoded><![CDATA[<p>Well, maybe the most of those who read my blog on a regular basis know the problem with &#8220;GottaGo&#8221; already.</p>
<p>One week after I released &#8220;GottaGo&#8221; (release in the sense of &#8216;appeared in the App Store&#8217;), another company called &#8220;WindyStudious&#8221; released an app with the same name. No big deal &#8211; I thought. Pretty stupid, but no big deal.<br />
Problems started later. First of all, it became confusing for my users. Some (I only know 2 who told me) bought the app from &#8220;WindyStudios&#8221; cause they thought it&#8217;s my GottaGo.. So this is not so funny.</p>
<p>Ok, 3 weeks ago, I got a mail from Apple, informing me, that I should update my app because it features non-functional standard iPhone interfaces &#8211; the phone interface. Uhm, well yeah, so I searched through my app to find anything resembling the phone interface &#8211; no I didn&#8217;t, I knew it :)</p>
<p>Long story short: they were talking about the other GottaGo. Great Job! If even Apple is confused, how should customers feel?</p>
<p>Then I wanted to update the information about GottaGo &#8211; did not work because there was another app with the same name. So when I sent the form with the new information, it checked if that name existed already &#8211; so it did. How friggin stupid is this?<br />
It gets even better: 3 e-mails to Apple &#8211; no response.<br />
Alright, so what are we gonna do about it? Renaming.</p>
<p>Of course, geeks like the name. It&#8217;s not something like &#8220;Maps&#8221; or &#8220;Calendar&#8221; &#8211; it&#8217;s the philosophy of the app &#8220;GottaGo&#8221;.<br />
But I noticed some comments in the SBB-Fahrplan app, from people telling that they were waiting for a mobile timetable app for the iPhone. Well &#8211; GottaGo was out there 2 weeks before.<br />
Now with that issues with Apple and the &#8220;not so obvious name&#8221; issue in my neck, I started to think about a new name.<br />
For now, I changed it to &#8220;GottaGo!&#8221; (which seemed to get around the duplicate name issue) &#8211; But that&#8217;s not the end of the game, I guess.</p>
<p>What is the real problem with an easy name? I think, that people on the App Store don&#8217;t have a subtitle or an abstract of an App when they browse through the Apps. Just a name. So your name must be informative and eyecatching. &#8220;GottaGo&#8221; is eyecatching only with a philosophy information &#8211; which, I think, only 2% care about.<br />
Compare this to desktop software: You can release it under any name, as long as the information is right and Google finds it, as soon as you got the geeks on your side, you&#8217;re set.. Not so on the iPhone. Actually, quite a bunch of people using the iPhone are a) not even using the AppStore or b) only downloading games &#8211; most of them are non-geeks.</p>
<p>So what we &#8220;useful application developers&#8221; are trying to do is getting the attention of those who occasionally browse through the apps, and don&#8217;t care much about what&#8217;s behind an app.<br />
The others, who download your stuff anyway are the &#8220;geeks&#8221; (not all of them are real geeks, though). They download everything that is free &#8211; or they read information or they search for something they want. So, with a good information and a good app, you&#8217;ll get them anyway. (the quality maters effect)<br />
But those who browse occasionally through the App Store are the most fascinating. Not only do you have to deal with getting their attention. Your App is your only way to talk to them. They won&#8217;t follow the comments of your app, they won&#8217;t read your blog, they won&#8217;t write you an e-mail, they won&#8217;t file a bug &#8211; they write a comment, that&#8217;s it. Sometimes, they don&#8217;t even update your app for weeks.. If you&#8217;re lucky and they wrote a comment with a complaint you understand (which is about 30% of all complaints) you&#8217;re even in a worse situation that you can&#8217;t response to them. You don&#8217;t get the e-mail addresses of those anywhere, and there is no reply-to-this-comment method &#8211; which is very sad.</p>
<p>But we&#8217;ll discuss this later on, as soon as we see what happens with GottaGo and a much improved version. I&#8217;m very curious about the change in the numbers of API-calls from the new and the old version. I&#8217;ll keep you posted :)<br />
Back to the name. There is another issue with the name now &#8211; publicity. I had that interview with Blick am Abend and so users know the name &#8220;GottaGo&#8221; now &#8211; changing the name now would be very confusing. But nevertheless, what to do?</p>
<p>On one side, there is that bunch of people who don&#8217;t use GottaGo because they don&#8217;t know what it is because they only read the name and nobody recommended it to them. On the other side, there is that bunch of people who are waiting on the new release of &#8220;GottaGo&#8221; and might get confused by a change of the name.<br />
I&#8217;m actually thinking about changing it to &#8220;Transport&#8221; (because it&#8217;s more or less language neutral, eyecatching and informative) &#8211; &#8220;Transit&#8221; was also for discussion, but &#8220;Transport&#8221; sounds better.</p>
<p>I&#8217;m asking for your input. What do you think &#8211; should GottaGo be renamed to &#8220;Transport&#8221; or not?</p>
]]></content:encoded>
			<wfw:commentRss>http://codesofa.com/blog/archive/2008/09/18/the-big-naming-issue-a-k-a-mv-gottago-app-transport-app.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Time for big changes..</title>
		<link>http://codesofa.com/blog/archive/2008/09/11/time-for-big-changes.html</link>
		<comments>http://codesofa.com/blog/archive/2008/09/11/time-for-big-changes.html#comments</comments>
		<pubDate>Thu, 11 Sep 2008 19:17:50 +0000</pubDate>
		<dc:creator>marc</dc:creator>
				<category><![CDATA[GottaGo]]></category>
		<category><![CDATA[Information]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[annapurna]]></category>
		<category><![CDATA[appstore]]></category>
		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://lab.codesofa.com/blog/archive/2008/09/11/time-for-big-changes.html</guid>
		<description><![CDATA[It&#8217;s been a while.. since my last blogpost. If you&#8217;ve read it, you know why. No, there is no change on how codesofa is organized or what I do here.. Just big changes in GottaGo &#8211; don&#8217;t worry, it&#8217;s still free. Let&#8217;s take a look back.. A month ago, I released GottaGo and it was a [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a while.. since my last blogpost. If you&#8217;ve read it, you know why.</p>
<p>No, there is no change on how codesofa is organized or what I do here.. Just big changes in GottaGo &#8211; don&#8217;t worry, it&#8217;s still free.</p>
<p>Let&#8217;s take a look back.. A month ago, I released GottaGo and it was a huge success. Even though I knew it was far from perfect &#8211; I was quite surprised :)</p>
<p>This gave me the chance to get a lot of feedback which resulted in a lot of thoughts. The biggest issue seemed to be the translations. As I mentioned in an earlier blogpost, this has been fixed &#8211; or is beeing fixed right now. Those are actually the easy parts of an update when you had success. Fixing the things the users complained about. Finding things the user will notice only when he sees it, is another thing :)</p>
<p>So another bunch of thoughts.. Soon it was clear &#8211; a big change was needed on how GottaGo works internally. Maybe I&#8217;ll find time in the future to write in detail about it &#8211; or let&#8217;s say as soon as Apple lifts the NDA.</p>
<p>I&#8217;m now just going through all the features we have now &#8211; to wet your tongue a bit ;)</p>
<ul>
<li>Live Search:Search through your contacts and stations as you type</li>
<li>New Locator:Set your desired accuracy and start/stop it whenever you want.</li>
<li>Setting your travel time:Set the time you want to arrive or travel from.</li>
<li>Transparent offline mode:Load your old trips without any internet connection</li>
<li>Station validation:You&#8217;ll be prompted, when your station was wrong</li>
<li>Use addresses or locator for nearby searching:You can even set both to nearby and it will cross-connect them</li>
<li>Keeps Application stateWherever  you close GottaGo, it will come back to that point</li>
<li>Favorites with one value onlyDefine your favorites for your from only, or your to only or both</li>
<li>Very nice UIA lot easier to read and find your way through</li>
</ul>
<p>This is quite a bit, I&#8217;d say &#8211; And that&#8217;s why it took me so long.. Or let&#8217;s say &#8220;us&#8221;.</p>
<p>So, who is this &#8220;us&#8221;:</p>
<ul>
<li>Stefan Sicher &#8211; Had a lot of work, arguing with me about design, usability and the like. But every time he&#8217;s more or less excited again to provide me some fine art &#8211; Even if that means that he has to do the same view 10 times until it fits. (Like the places view..)</li>
<li>The local.ch guys &#8211; Providing me an API which makes GottaGo so damn cool ;)</li>
<li>The liip.ch guys &#8211; Providing me with time and a lot of support through testing and contacts.</li>
<li>Memi Beltrame &#8211; Doing the translation for our &#8220;ragazzi&#8221;</li>
<li>Joel Bez and Jakob Bohnacker &#8211; Doing the translations for our &#8220;amis&#8221;</li>
</ul>
<p>Does the future look any bright? I hope so. Even though I don&#8217;t have any plans for further releases.. Just issue fixing probably.</p>
<p>I think we&#8217;ll start some new projects soon. I kinda need a change :) So don&#8217;t expect any big updates on GottaGo. Just as the rule no.1 in software engineering: &#8221;Release often, release early&#8221;</p>
<p>If anyone&#8217;s interested in some new cool apps, just drop me a line :)</p>
<p>When does it come out? Somewhen in the next two weeks. Beta testing will end as of sunday evening, and I&#8217;ll release it to the AppStore by then. And then it&#8217;s up to Apple  :)</p>
<p>So here are just a few Screenshots and there is of course a video!</p>
<p>Here&#8217;s the video: <a href="http://couch.codesofa.com/static/ggo_010_streaming.mp4">http://couch.codesofa.com/static/ggo_010_streaming.mp4</a> (About 50mb, h.264)</p>
<p><img src="/files/ggo_010_1.png" alt="" hspace="10" width="160" height="230" /><img src="/files/ggo_010_2.png" alt="" width="160" height="230" /><img src="/files/ggo_010_3.png" alt="" hspace="10" width="160" height="230" /><img src="/files/ggo_010_4.png" alt="" width="160" height="230" /><img src="/files/ggo_010_5.png" alt="" hspace="10" width="160" height="230" /><img src="/files/ggo_010_6.png" alt="" width="160" height="230" /></p>
]]></content:encoded>
			<wfw:commentRss>http://codesofa.com/blog/archive/2008/09/11/time-for-big-changes.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://couch.codesofa.com/static/ggo_010_streaming.mp4" length="58620349" type="video/mp4" />
		</item>
		<item>
		<title>There are friends and there are friends..</title>
		<link>http://codesofa.com/blog/archive/2008/08/22/there-are-friends-and-there-are-friends.html</link>
		<comments>http://codesofa.com/blog/archive/2008/08/22/there-are-friends-and-there-are-friends.html#comments</comments>
		<pubDate>Thu, 21 Aug 2008 23:06:44 +0000</pubDate>
		<dc:creator>marc</dc:creator>
				<category><![CDATA[GottaGo]]></category>
		<category><![CDATA[Information]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[nearby]]></category>
		<category><![CDATA[sbb]]></category>
		<category><![CDATA[sdk]]></category>
		<category><![CDATA[stations]]></category>

		<guid isPermaLink="false">http://lab.codesofa.com/blog/archive/2008/08/22/there-are-friends-and-there-are-friends.html</guid>
		<description><![CDATA[If you&#8217;ve ever used &#8220;GottaGo&#8220;, you might have experienced it from time to time: The stations around you disappear on the &#8220;Closest&#8221; Screen. Why does this happen? Let me explain. So far, I used the nearby search from Google to get a list of stations around you. Fairly simple. But.. SBB.ch does i.e. not understand [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;ve ever used &#8220;<a href="http://liip.to/gottago">GottaGo</a>&#8220;, you might have experienced it from time to time: The stations around you disappear on the &#8220;Closest&#8221; Screen.</p>
<p>Why does this happen? Let me explain.</p>
<p>So far, I used the <a href="http://maps.google.com">nearby search</a> from <a href="http://google.com">Google</a> to get a list of stations around you. Fairly simple. But.. <a href="http://sbb.ch">SBB.ch</a> does i.e. not understand &#8220;Bäckeranlage&#8221; but &#8220;Zürich, Bäckeranlage&#8221; which makes sense. But Google only provides &#8220;Bäckeranlage&#8221; &#8211; not so nice to map here. I&#8217;ve seen a comment in the AppStore from someone who noted this problem.. And he is right. This gave me a hard time.. [The fact that I'm in the exam session was no helpful either but nevermind :)]</p>
<p>How was the problem solved so far? With reverse geocoding. With the (great) API provided by <a href="http://www.geonames.org">geonames.org</a>, I could more or less flatten this problems out. More or less? Yes. In the logs (Yes, sorry, I keep logfiles, but it&#8217;s to improve the query results, nothing more. I don&#8217;t see any IDs or sth. Just from where to where you are going and what method was successful for your query) I saw that a lot of requests for simple station names had to be handled by the &#8220;Google Fallback&#8221; &#8211; which is obviously not intended. This &#8220;Google Fallback&#8221; should catch up, when/if you search for an address or a POI (like Subway Restaurant Zurich). Why is that? Because the city mapping from Swiss Postal Service and SBB are quite different. I.e. there is a &#8220;Klein-Basel&#8221; in their database, where there is only a &#8220;Basel&#8221; on the SBB side.  Then there are various ambiguous names, like &#8220;Bern / Liebefeld&#8221; which is also no hit on SBB.ch .. I guess you see the point.</p>
<p>Summary: Google returns list a stations which do not have the same name on SBB.ch which cannot alway be corrected because the reverse geocoder is not always &#8220;right&#8221;.</p>
<p>What do you do in your darkest hours? Yes, you ask your friends. There are friends. I&#8217;d call them &#8220;GottaGo&#8221;&#8216;s Baywatch ;) I was looking for a solution. Since we plan to release the next iteration very soon and we need a lot of work to do. (Btw.: we is me and <a href="http://sichr.com">Stefan Sicher from sichr.com</a> who is working on the new design like a crazy cow ;) &#8211; and no, that design from the last blogpost is not from him, that&#8217;s just a mock-design I used to illustrate the layout)</p>
<p>Again &#8211; solution. I asked the guys over at <a href="http://local.ch">local.ch</a> again to help me out. Guess what &#8211; they did. They didn&#8217;t even say &#8220;Yes, we will look into it&#8221; &#8211; no. Just &#8220;Yes, we do it. Just say what you need so I can do it _before_ holidays&#8221;. Really &#8211; how awesome is this? This will require a few more Horsepower to be squeezed out of my dear &#8220;<a href="http://marc.freeflux.net/blog/archive/2007/04/13/real-man-s-toys.html">gonzo</a>&#8221; but it&#8217;s a real breath of fresh air &#8211; the light at the end of the tunnel ;)</p>
<p>So you might wonder, what they will provide me.. A lot. First of all: Station-names as on SBB.ch (really exactly the same) together with coordinates (<a href="http://en.wikipedia.org/wiki/WGS84">WGS</a> coordinates, they used <a href="http://en.wikipedia.org/wiki/Swiss_coordinate_system">CH1903</a> so far). Together with their superfast services and customized XML interface, this will free us from bloated information we don&#8217;t really need and exact information we really need.</p>
<p>Then there is autocomplete. I was really worried about that.. (Really really worried. I set this up on another server so I could do it with a different IP-Address in case SBB.ch would block this). I got full permission and a customized API to do autocomplete stuff on <a href="http://local.ch">local.ch</a> .. Again: superfast! (I know, SBB.ch does a lot more computing for that stuff, but it was really slow :))</p>
<p>As I read these lines, I wanted to tell Joel to bake a big cake so I could give it to the local team. For all those who asked me to open a Paypal account for donations or sth: abandon <a href="http://endoftheinternet.com">search.ch</a> and use <a href="http://local.ch">local.ch</a> from now on! ;) that would result in a win &#8211; win situation for all of us :)</p>
<p>Again: I just want to thank you <a href="http://blog.local.ch/">guys over at local.ch</a>, namely Vasile, Patrice, Ebi and Joel for your effort. I hope the users will appreciate it as much as I do :)</p>
]]></content:encoded>
			<wfw:commentRss>http://codesofa.com/blog/archive/2008/08/22/there-are-friends-and-there-are-friends.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->