<?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</title>
	<atom:link href="http://codesofa.com/feed" rel="self" type="application/rss+xml" />
	<link>http://codesofa.com</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Fri, 12 Feb 2010 01:03:30 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<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 the sun, [...]]]></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>Leaving Liip, off to something new.</title>
		<link>http://codesofa.com/blog/archive/2009/08/13/leaving-liip-off-to-something-new.html</link>
		<comments>http://codesofa.com/blog/archive/2009/08/13/leaving-liip-off-to-something-new.html#comments</comments>
		<pubDate>Thu, 13 Aug 2009 09:50:00 +0000</pubDate>
		<dc:creator>marc</dc:creator>
				<category><![CDATA[Information]]></category>
		<category><![CDATA[liip leave goodbye]]></category>

		<guid isPermaLink="false">http://codesofa.com/?p=217</guid>
		<description><![CDATA[ByeBye
Well, these lines are for sure not very easy to write.
As of October 1st, I will not be a Liiper, Liiparanian oder whatever anymore. After 3 years, I thought I&#8217;m up for a change. 3 years. A quite common time to stay at a tech company..
I probably don&#8217;t really need to talk about the details [...]]]></description>
			<content:encoded><![CDATA[<p><strong>ByeBye</strong><br />
Well, these lines are for sure not very easy to write.<br />
As of October 1st, I will not be a Liiper, Liiparanian oder whatever anymore. After 3 years, I thought I&#8217;m up for a change. 3 years. A quite common time to stay at a tech company..<br />
I probably don&#8217;t really need to talk about the details of me leaving Liip &#8211; the thing is just, that I grew out of it. Things changed, I changed, Liip changed &#8211; and at some point we diverted onto different paths. As you may have noticed, my aggression level rose with the ongoing work with customers who didn&#8217;t seem to have even the slightest idea of what we were doing. This has nothing to do with Liip &#8211; but with the kind of companies. I had to learn, that I don&#8217;t want to work at a consulting agency anymore &#8211; or informally said, I won&#8217;t play a code whore any longer :) This might change one day &#8211; never say never.<br />
I really enjoyed my time at Liip &#8211; I didn&#8217;t always enjoy the projects, but who does. I hope Liip grows and gets friggin huge or whatever the plans are with Liip :) I wouldn&#8217;t wanna miss a day I spent at Liip together with a few very inspiring people. I learned a lot and I hope somebody learned a bit from me, too.<br />
I&#8217;m currently training 2 very fresh minds at Liip to get up and running with the day to day business &#8211; which I enjoy a lot. Seeing others getting into Liip, all fascinated and deadly tired after each day &#8211; reminds me of my first days at Bitflux, 3 years ago..<br />
Liip gave me the great opportunity to work part times, 50% studies, 50% work and when I had some tough times at ETH, I didn&#8217;t have to deal a lot with customers. Thank you again for being so flexible and giving me the chance to get some motivations for my studies. If it wouldn&#8217;t be for Liip, I wouldn&#8217;t write this blog and would have missed a chance to meet a lot of very interesting people.</p>
<p><strong>Future?</strong><br />
I don&#8217;t really know, where this is all going. For the time being, I will work on a handful very interesting projects &#8211; sorry, NDA here. In September, my ETH studies will continue after my 1 year absence. My interests have shifted a bit and my vision of where I want to go became clearer in this year &#8211; all in all, I don&#8217;t regret postponing my studies &#8211; but I&#8217;m eager to get going again.<br />
Besides that, there will be some other announcement coming &#8211; sometimes around October &#8211; about projects and things like that. I hope you don&#8217;t mind me delaying everything &#8211; but the last few weeks/months were a bit tough.</p>
<p><strong>Conclusion</strong><br />
1. I&#8217;m still coding &#8211; like crazy.<br />
2. Thank you, Liip</p>
<p><strong>So long, and thanks for all the fish!</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://codesofa.com/blog/archive/2009/08/13/leaving-liip-off-to-something-new.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 trick [...]]]></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"><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"><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>Rant-an-Plan!</title>
		<link>http://codesofa.com/blog/archive/2009/06/23/rant-an-plan.html</link>
		<comments>http://codesofa.com/blog/archive/2009/06/23/rant-an-plan.html#comments</comments>
		<pubDate>Tue, 23 Jun 2009 22:06:34 +0000</pubDate>
		<dc:creator>marc</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Information]]></category>
		<category><![CDATA[rant explain twitter liip]]></category>

		<guid isPermaLink="false">http://codesofa.com/?p=198</guid>
		<description><![CDATA[It&#8217;s been a while &#8211; not for me, but for you. I prepared some blog posts, which are not yet done, or are not ready for an announcement yet. But this one is kind of a special one.. It&#8217;s about ranting and my plans..
Recent happenings made me write this one :) For a few years [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a while &#8211; not for me, but for you. I prepared some blog posts, which are not yet done, or are not ready for an announcement yet. But this one is kind of a special one.. It&#8217;s about ranting and my plans..</p>
<p><strong>Recent happenings</strong> made me write this one :) For a few years or so, there has been this tool called Twitter &#8211; very nice thing, if you use it right. Lately &#8211; for a few months or so? &#8211; I&#8217;ve come to use Twitter as an outlet for my work/life imbalance. And users and especially friends have noticed that.. I heard a few times now, that I sound arrogant, disrespectful and maybe a bit harsh. Fortunately, I know most of my followers and they know that I&#8217;m usually not arrogant and only sometimes disrespectful (e.g. wearing a T-Shirt at BoSW ;)). About the rest I really should not care, should I? Well, since I gained some publicity at Open Expo and at BoSW, you may find my tweets pretty quick. So, this is quite a new situation &#8211; people watching me. The problem is, they are not only watching me, they also identify me with the company I work for.</p>
<p><strong>So, I think I need to explain myself for once and for all</strong> &#8211; I&#8217;m no man of bullshitbingo. I don&#8217;t think, light would have been that much of a success if it wouldn&#8217;t take the shortest path from A to B.<br />
I like being honest, being direct and being precise. What I really really hate is feedback in the form of &#8220;well, I somehow really don&#8217;t like to look of that button in the sense of&#8230;.&#8221; &#8211; WTF?! I really don&#8217;t want to being forced to parse your sentence and getting out the core essence. Could you please do that for me? And this is no wonderland. Don&#8217;t feel personally attacked if your code is crap. That happens.<br />
Unfortunately, it happens to me more often than I&#8217;d wish :)<br />
When I rant, I really don&#8217;t think I could do it so much better &#8211; about that I really don&#8217;t know &#8211; but I know that it is crap. Did you ever drive a Fiat? You somehow just know that it is crap, even if you couldn&#8217;t actually build a better one yourself.<br />
It&#8217;s not that I&#8217;m arrogant &#8211; I would be if I take the nice way and not telling others the truth.</p>
<p>Why I really love twitter is the instant feedback. It&#8217;s the valve for so much &#8211; happiness, hate.. everything. And usually you twitter within the first 60 seconds of your thought. If someone wrote &#8220;Gosh, I hate GottaGo, it&#8217;s just sooo friggin slow&#8221; on Twitter &#8211; that would be the best feedback ever. It&#8217;s what someone really cares about &#8211; the first impression if you will.<br />
Or even a less precise one: &#8220;Holy crap, which moron did that GottaGo thing?!&#8221; &#8211; Sounds personal, eh? Well, it is not. It is against the ideas and the code behind GottaGo, not against me. But I know instantly that something that I did really failed for that guy &#8211; again, an important first impression.<br />
<em>Catching that is so important for a developer.</em> (Since it&#8217;s Twitter, you can respond!)</p>
<p><strong>I&#8217;d really like to say &#8220;Sorry&#8221;, but I don&#8217;t see any reason</strong>. Usually, I mean what I tweet. I may think &#8220;why couldn&#8217;t I just wait a minute before I tweeted&#8221; but the core of what I mean is there &#8211; with emotions! When I say, &#8220;[Ubuntu] Linux developers seem to be a bunch of morons if they wonder why they don&#8217;t have a real user base&#8221;, then I most probably mean it that way. (This example is based on the Ubuntu redesign debate). I could write that sentence as &#8220;Linux developers may not doing the right thing when they think they know UI design better than a UI specialist&#8221;. How nice of me, right? Well, it&#8217;s not really my opinion. Because in my eyes, they are a bunch of.. They are sure not in a way of development and whatnot, but socially and user friendliness?<br />
Blahblah.. what I want to say is: I mean what I say, it&#8217;s the most honest thing I can offer you. Deal with it and use it or stop writing software and making decisions.</p>
<p><strong>Is it really necessary to be rude and do it in public? No.</strong> It&#8217;s just so convenient. And usually, I fight with a problem until I&#8217;m reeeeally pissed off. That&#8217;s the moment I twitter :) Why? Because I usually hate it so bad that I&#8217;d love to squeeze and punch someone really hard. And twitter gives me the same opportunity as we did in Kindergarten: pulling your pants down and tell others you have an ugly girlfriend!<br />
Yes, I really need to grow up &#8211; one day. Until then, my idealism will hunt and bug you all. Until I&#8217;m dull and worn out, I will always be honest and direct &#8211; and I expect the same from you.</p>
<p>To the company: my company must hate me for my tweets &#8211; I would :) They really don&#8217;t have anything to do with this. And they are not really forbidding me to tweet.. And if you prefer a nice looking company, filled with ties and lies, you are probably better off without me.</p>
<p>If you still think that you can&#8217;t stand it anymore: please please please please unfollow me and we can go drink a beer or whatever. I really don&#8217;t mind someone not following me.</p>
]]></content:encoded>
			<wfw:commentRss>http://codesofa.com/blog/archive/2009/06/23/rant-an-plan.html/feed</wfw:commentRss>
		<slash:comments>2</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 iPhone and [...]]]></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 left 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>Use pastie.org with LaunchBar</title>
		<link>http://codesofa.com/blog/archive/2009/01/08/use-pastieorg-with-launchbar.html</link>
		<comments>http://codesofa.com/blog/archive/2009/01/08/use-pastieorg-with-launchbar.html#comments</comments>
		<pubDate>Thu, 08 Jan 2009 06:08:24 +0000</pubDate>
		<dc:creator>marc</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[applescript launchbar pastie]]></category>

		<guid isPermaLink="false">http://codesofa.com/?p=177</guid>
		<description><![CDATA[Since a while, I&#8217;m having senile insomnia, so I thought, I should use it for good. One thing that always bugs me at work is the work with pastie (or any other paste-thing) because of the copy &#8211; paste &#8211; copy thing.
So I wrote a very little script to use it with LaunchBar.
What does it [...]]]></description>
			<content:encoded><![CDATA[<p>Since a while, I&#8217;m having senile insomnia, so I thought, I should use it for good. One thing that always bugs me at work is the work with <a href="http://pastie.org">pastie</a> (or any other paste-thing) because of the copy &#8211; paste &#8211; copy thing.<br />
So I wrote a very little script to use it with <a href="http://www.obdev.at/products/launchbar/beta.html">LaunchBar</a>.</p>
<p>What does it do? It takes your clipboard, pastes it to pastie and pastes the returned URL back into the clipboard..</p>
<p>Here is the script:</p>
<h3 class="codetitle">pastie.scpt</h3>
<pre><code class="prettyprint">set pastieURL to "http://pastie.org/pastes"
try
set responseURL to (do shell script "curl http://pastie.caboo.se/pastes/create -H 'Expect:' -F 'paste[parser]=plaintext' -F 'paste[body]=" &amp; (the clipboard) &amp; "' -F 'paste[authorization]=burger' -s -L -o /dev/null -w '%{url_effective}'")
set the clipboard to responseURL
end try</code></pre>
<p>Save this to &#8220;~/Library/Application Support/LaunchBar/Actions/&#8221; (works with LaunchBar 5) and it will detect it automatically. Type the name of your script and you&#8217;re done. So much for my insomnia :)</p>
<p><strong>UPDATE:</strong> Just found out about <a href="http://www.shadowlab.org/Software/spark.php">Spark</a> which let&#8217;s you define shortcuts for Apple Scripts &#8211; which is another nice way.</p>
]]></content:encoded>
			<wfw:commentRss>http://codesofa.com/blog/archive/2009/01/08/use-pastieorg-with-launchbar.html/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>For those who don&#8217;t use an RSS reader ;)</title>
		<link>http://codesofa.com/blog/archive/2008/11/09/for-those-who-dont-use-an-rss-reader.html</link>
		<comments>http://codesofa.com/blog/archive/2008/11/09/for-those-who-dont-use-an-rss-reader.html#comments</comments>
		<pubDate>Sun, 09 Nov 2008 14:21:49 +0000</pubDate>
		<dc:creator>marc</dc:creator>
				<category><![CDATA[Information]]></category>

		<guid isPermaLink="false">http://codesofa.com/?p=138</guid>
		<description><![CDATA[If  you read this post in your favorite news reader, then please open the page for once ;)
You may have noticed: The codesofa-design changed quite a lot. Thanks to a very unfair deal with Stefan, I was able to get this very awesome new design. (Unfair for him btw.)
So, why is this new design? It&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>If  you read this post in your favorite news reader, then please open the page for once ;)</p>
<p>You may have noticed: The codesofa-design changed quite a lot. Thanks to a very unfair deal with <a href="http://ubersuper.com">Stefan</a>, I was able to get this very awesome new design. (Unfair for him btw.)<br />
So, why is this new design? It&#8217;s all about code. That&#8217;s why the layout changed from fixed to dynamic width. That means, that users/developers with 24&#8243; screens will be able to read code much better.. And those with smaller screens will be able to read it in a slightly better way. That&#8217;s why there is also a code prettifyer..<br />
For doing all of that and more, I switched to <a href="http://wordpress.org">Wordpress</a> &#8211; for now. I intended to switch to  <a href="http://habariproject.org/">Habari</a>, but it didn&#8217;t quite give me the support I wanted for now.. So I chose Wordpress, because with Wordpress, you can export to anywhere :) But for now, I&#8217;m pretty happy with it, since there are a lot of features I really like. (Besides that Stefan was able to do the templates on his own, without me hacking the XSLs around ;))</p>
<p>You may have noticed, that your RSS reader double-posted the last 10 posts.. This is because of some fancy IDs I was too lazy to change. But all the permalinks, comments and RSS links are still the same. If you find a permalink which doesn&#8217;t work anymore, then please tell me.<br />
There might also be some quirks here and there with older blog-posts &#8211; just drop me a line :)<br />
I hope you like the new design, because I love it :) Thanks again, Stefan.</p>
]]></content:encoded>
			<wfw:commentRss>http://codesofa.com/blog/archive/2008/11/09/for-those-who-dont-use-an-rss-reader.html/feed</wfw:commentRss>
		<slash:comments>3</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 itself hasn&#8217;t changed [...]]]></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>
	</channel>
</rss>
