Loading...
January 3, 2013#

Behind enemy lines: 3 months as an iOS developer at Google

Chris Hulbert is a freelance iOS dev and tells about his time working for Google:

So what’s the workflow like, what can we learn? Well, very much like a stricter version of how they work at Github: Everyone has a task list to work from, and for each task you ‘branch off’ (kindof, they use a customised version of an obscure source control system, but i’ll translate it into Git parlance).

Once you’ve completed your task, you submit your code in that branch (which is a perforce client) for review. Someone with ‘readability’ and ‘owner’ permissions is then required to approve your code, where readability is an internal certification for competence in the relevant language, and owner is someone with permission to approve code in that particular source tree. Best case, your code is approved, you can then merge master into your branch and push your branch up to master.

September 5, 2012#

Realtime Three.JS Coding

AWESOME.

May 21, 2012#

Coda 2 & Diet Coda

Coda 2 and Diet Coda for iPad will be released by Panic this thursday.

May 9, 2012#

P3P headers and Safari

It’s a fairy tale that P3P headers work anywhere except for Internet Explorer. Beginning with Safari 5.1.4, you are not able to set a cookie within an iFrame except the user actively interacts and additionally a new site/tab has to be opened. The domains must match.

I have blogged about this issue a while ago and I plan to write a precise description of my workaround. It’s definitely annoying that Apple changed this, and they did this only as an answer to Google tricking the default privacy settings of Safari. Is a new IE6 developing?

April 9, 2012#

Safari 5.1.4 enforces cookie policy

If you’re familiar with coding iFrame Apps for Facebook, you might be interested in this:

An issue existed in the enforcement of its cookie policy. Third-party websites could set cookies if the “Block Cookies” preference in Safari was set to the default setting of “From third parties and advertisers”. support.apple.com/kb/HT5190

In short: before 5.1.4 you were able to trick Safari with a cookie set through JavaScript or a .htaccess to prevent losing the session. Sadly, this no longer works. I’d be quite interested if Facebook is going to provide a solution or a new workaround.

See also on Stack Overflow: Safari 3rd party cookie iframe trick no longer working?

Update
There’s a solution. I load this script (slightly modified) along with the permission dialog and it works fine. It’s not the most beautiful method, but it’s solid and the user shouldn’t notice.

Update 2
I enhanced the script a little bit to only fire in Safari:

function setCookie()
     {if (navigator.userAgent.indexOf('Safari') != -1 
     && navigator.userAgent.indexOf('Chrome') == -1
     {window.open('safari.php','','width=200,height=100');}
}

safari.php is where you set the cookie.

February 27, 2012#

Facebook Apps: Inhalte werden im IE 7 nicht vollständig geladen

Da ich mich vor ein paar Tagen relativ lange damit herumgeschlagen habe, poste ich hier meinen Lösungsansatz. Das Problem äußerte sich bei einer Facebook App (iFrame) im Internet Explorer 7 beim Laden einer Grafik. Diese wurde nicht vollständig geladen. Der restliche Content unterhalb des nur zum Teil geladenen Bildes war außerdem ebenfalls nicht sichtbar. Die Ursache liegt in der JavaScript-Engine vom IE7:

<div id="fb-root"></div>
<script type="text/javascript">
	window.fbAsyncInit = function() {

		FB.init({
			appId: 'xxx',
			status: true,
			cookie: true,
			xfbml: true
		});

		FB.Canvas.setAutoGrow();

		};
	(function() {
		var e = document.createElement('script'); e.async = true;
		e.src = document.location.protocol + '//connect.facebook.net/de_DE/all.js';
		document.getElementById('fb-root').appendChild(e);
	}());
</script>

Bei mir lag das DIV fb-root und darunterstehendes JavaScript vor dem Hauptcontent der App. Da der IE7 scheinbar Probleme mit Facebook’s JavaScript hat, lädt er im Code dahinter / darunter stehende Elemente nicht vollständig oder gar nicht.

Das Problem konnte ich beheben, indem ich den oben angezeigten Code direkt vor </body> gepackt habe. Um allgemeine JavaScript-Fehler (mit den Facebook Scripten) zu vermeiden, muss außerdem das öffnende HTML-Tag so aussehen:

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://ogp.me/ns/fb#">
January 2, 2012#

Code Year

Paul Graham, Y Combinator:

If you want to invest two years in something that will help you, you would do better to learn how to hack than get an MBA

December 14, 2011#

Safari’s Cookie-Problem mit Facebook Apps

Es gibt wirklich schöneres, als Apps (innerhalb eines iFrames) für Facebook zu entwickeln. Mangelhafte Dokumentationen der SDK bzw. API von Facebook machen die Sache nicht leichter. Zum Problem:

Safari hat im Gegensatz zu anderen Browsern wie Firefox eine recht restriktive Cookie-Politik, die Drittcookies per default verbietet. Befindet man sich mit einer App innerhalb eines iFrames in Facebook und ruft einen Link (mit target _self) auf, verliert Facebook aufgrund des nicht gesetzten Cookies den Login und versucht eine neue Session zu öffnen, wobei der iFrame verloren geht und die App außerhalb von Facebook neu aufgerufen wird. Dies geschieht zum Beispiel, wenn man Informationen wie Facebook-ID oder E-Mail-Adresse des Users innerhalb der App transportieren möchte.

Im Web finden sich hierzu etliche Workarounds, die allerdings nur teilweise funktionieren und vor allen Dingen lästig zu implementieren sind. Ich habe eine Möglichkeit mit einer .htaccess-Datei gefunden, die zuverlässig zu funktionieren scheint:

#http://www.w3.org/P3P/validator.html
<IfModule mod_headers.c>
Header set P3P "policyref=\"/w3c/p3p.xml\", CP=\"NOI DSP COR NID CUR ADM DEV OUR BUS\""
Header set Set-Cookie "test_cookie=1"
</IfModule>

Der P3P-Header ist für den IE nötig. Header set Set-Cookie "test_cookie=1" löst das Problem in Safari. Zusätzlich muss man das Verzeichnis w3c erstellen, hier gehören p3p.xml und policy.xml hinein. Weitere Informationen zu P3P gibt es hier.

July 17, 2011#

Skeleton: A Beautiful Boilerplate for Responsive, Mobile-Friendly Development