<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Mateusz Stawecki</title>
	<atom:link href="http://stawecki.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://stawecki.com</link>
	<description>Personal Site</description>
	<lastBuildDate>Thu, 16 May 2013 21:44:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='stawecki.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Mateusz Stawecki</title>
		<link>http://stawecki.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://stawecki.com/osd.xml" title="Mateusz Stawecki" />
	<atom:link rel='hub' href='http://stawecki.com/?pushpress=hub'/>
		<item>
		<title>You wish you could FAIL like Genesis</title>
		<link>http://stawecki.com/2013/05/15/you-wish-you-could-fail-like-genesis/</link>
		<comments>http://stawecki.com/2013/05/15/you-wish-you-could-fail-like-genesis/#comments</comments>
		<pubDate>Wed, 15 May 2013 19:38:11 +0000</pubDate>
		<dc:creator>mstawecki</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[art]]></category>
		<category><![CDATA[entrepreneurship]]></category>
		<category><![CDATA[genesis]]></category>
		<category><![CDATA[life]]></category>
		<category><![CDATA[lifestyle]]></category>
		<category><![CDATA[love]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[progressive rock]]></category>

		<guid isPermaLink="false">http://stawecki.com/?p=367</guid>
		<description><![CDATA[Those who know me closely will know that besides my passion towards digital technology and app development, I&#8217;m particularly interested&#8230;<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stawecki.com&#038;blog=33218438&#038;post=367&#038;subd=stawecki&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Those who know me closely will know that besides my passion towards digital technology and app development, I&#8217;m particularly interested in: <em>music</em>, <em>entrepreneurship</em> and <em>approach to life</em>. These three put together, make up the &#8220;lens&#8221; through which I see the world and something that really caught my eye is the amazing story of a band called <a title="Genesis (band)" href="https://en.wikipedia.org/wiki/Genesis_(band)" target="_blank">Genesis</a> and their two former members. Unless you&#8217;ve been living on a different planet, you&#8217;ve definitely heard hits like <a title="Land of Confusion" href="https://en.wikipedia.org/wiki/Land_of_Confusion" target="_blank">Land of Confusion</a>, <a title="Invisible Touch" href="https://en.wikipedia.org/wiki/Invisible_Touch" target="_blank">Invisible Touch</a>, <a title="Sledgehammer" href="https://en.wikipedia.org/wiki/Sledgehammer_(song)" target="_blank">Sledgehammer</a>, <a title="In the Air Tonight" href="https://en.wikipedia.org/wiki/In_the_Air_Tonight" target="_blank">In the Air Tonight</a>, <a title="I Can't Dance" href="https://en.wikipedia.org/wiki/I_Can%27t_Dance" target="_blank">I Can&#8217;t Dance</a>, <a title="Follow You Follow Me" href="https://en.wikipedia.org/wiki/Follow_You_Follow_Me" target="_blank">Follow You Follow Me</a>, <a title="Mama" href="https://en.wikipedia.org/wiki/Mama_(Genesis_song)" target="_blank">Mama</a>.<br />
The reason I&#8217;m writing this is because life is hard. Really hard. For you and me, and for these guys too. You&#8217;ve probably never heard about what they went through. It&#8217;s easy to look at success and not notice the hardship behind it. Personally, I find this story and their approach very inspiring, so I&#8217;d like to share it with you.</p>
<h1>Before we had &#8220;an Invisible Touch&#8221; there was &#8220;Genesnooze&#8221;</h1>
<div id="attachment_368" class="wp-caption alignright" style="width: 250px"><a href="http://stawecki.files.wordpress.com/2013/05/genesis1.jpg"><img class=" wp-image-368     " title="Genesis, circa 1971" alt="Genesis, circa 1971" src="http://stawecki.files.wordpress.com/2013/05/genesis1.jpg?w=240&#038;h=190" width="240" height="190" /></a><p class="wp-caption-text">Genesis, circa 1971(<a href="http://www.criticsatlarge.ca/2012/06/music-to-dream-by-genesiss-lamb-lies_20.html" target="_blank">source</a>)</p></div>
<p>Genesis formed in 1967 in Surrey, England. Primary members <a title="Peter Gabriel" href="https://en.wikipedia.org/wiki/Peter_Gabriel" target="_blank">Peter Gabriel</a>, <a title="Tony Banks" href="https://en.wikipedia.org/wiki/Tony_Banks_(musician)" target="_blank">Tony Banks</a>, <a title="Mike Rutherford" href="https://en.wikipedia.org/wiki/Mike_Rutherford" target="_blank">Mike Rutherford</a> were 17 year old students at the time. You can imagine that the early stages of Genesis were much like any teenage garage band you can find &#8211; poor song writing and musicianship, no performance skills.<br />
Yet in 1968, <a title="Jonathan King" href="https://en.wikipedia.org/wiki/Jonathan_King" target="_blank">Jonathan King</a> &#8211; a songwriter, record producer, novelist &#8211; gave Genesis a chance to record an album. The result was <a title="From Genesis to Revelation" href="https://en.wikipedia.org/wiki/From_Genesis_to_Revelation" target="_blank">From Genesis to Revelation</a> with the single <a title="The Silent Sun" href="https://en.wikipedia.org/wiki/The_Silent_Sun" target="_blank">Silent Sun</a>. Its initial sales: <span style="text-decoration:underline;">650</span> copies. The band later admitted that <a title="The Silent Sun" href="https://en.wikipedia.org/wiki/The_Silent_Sun" target="_blank">Silent Sun</a> was a &#8220;Bee Gees pastiche&#8221; written to please Jonathan King. Overall, it was a failure, but as Mike Rutherford recalls:</p>
<blockquote><p>Jonathan King [...] did give us a fantastic opportunity. Because in those days, in England, you couldn&#8217;t get in the studio [...] to get any sort of record contract, was really magical.</p></blockquote>
<p>The album doesn&#8217;t sound like anything else they later recorded. The band parted ways with King, went its own musical direction and continued playing live. Their music was hypnotic, dark and haunting. Finally they signed with <a title="Charisma Records" href="https://en.wikipedia.org/wiki/Charisma_Records" target="_blank">Charisma Records</a> and recorded <a title="Trespass" href="https://en.wikipedia.org/wiki/Trespass_(album)" target="_blank">Trespass</a>. In 1970 <a title="Phil Collins" href="https://en.wikipedia.org/wiki/Phil_Collins" target="_blank">Phil Collins</a> joined the band to play on drums.</p>
<div id="attachment_369" class="wp-caption alignleft" style="width: 134px"><a href="http://stawecki.files.wordpress.com/2013/05/moonlightknight.png"><img class=" wp-image-369      " alt="Peter Gabriel as &quot;Britannia&quot;, or &quot;The Moonlit Knight&quot; 1974 (source)" src="http://stawecki.files.wordpress.com/2013/05/moonlightknight.png?w=124&#038;h=192" width="124" height="192" /></a><p class="wp-caption-text">Peter Gabriel as &#8220;Britannia&#8221;, or &#8220;The Moonlit Knight&#8221; 1974 (<a href="https://en.wikipedia.org/wiki/Genesis_(band)">source</a>)</p></div>
<p><a title="Genesis" href="https://en.wikipedia.org/wiki/Genesis_(band)" target="_blank">Genesis</a> was becoming popular, but amongst the critics the opinions were mixed. Q Magazine has a description of a 1977 cartoon which shows asleep or comatose fans watching a live performance and a banner on stage reading &#8220;<em>GENESNOOZE</em>&#8220;. You have to note that at the time &#8211; <span style="text-decoration:underline;">the punk movement was on the rise.</span></p>
<p>The band later released albums: <a title="Nursery Cryme" href="https://en.wikipedia.org/wiki/Nursery_Cryme" target="_blank">Nursery Cryme</a>, <a title="Foxtrot" href="https://en.wikipedia.org/wiki/Foxtrot_(album)" target="_blank">Foxtrot</a> and <a title="Selling England by the Pound" href="https://en.wikipedia.org/wiki/Selling_England_by_the_Pound" target="_blank">Selling England by the Pound</a>, which contained <a title="I Know What I Like (In Your Wardrobe)" href="https://en.wikipedia.org/wiki/I_Know_What_I_Like_(In_Your_Wardrobe)">I Know What I Like (In Your Wardrobe)</a> and became their first charting single, reaching #17 on the UK singles charts. The album achieved a &#8220;Gold&#8221; sales certification in USA, France and &#8220;Silver&#8221; in the UK.<br />
In 1974, they recorded a double album <a title="The Lamb Lies Down on Broadway" href="https://en.wikipedia.org/wiki/The_Lamb_Lies_Down_on_Broadway" target="_blank">The Lamb Lies Down on Broadway</a> and embarked on a <strong>world tour playing 102 shows</strong>!</p>
<p><em><a title="I Know What I Like" href="https://en.wikipedia.org/wiki/I_Know_What_I_Like_(In_Your_Wardrobe)" target="_blank">I Know What I Like</a> from the album <a title="Selling England by the Pound" href="https://en.wikipedia.org/wiki/Selling_England_by_the_Pound" target="_blank">Selling England by the Pound</a></em></p>
<p><span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='550' height='340' src='http://www.youtube.com/embed/z3MokKo1NIQ?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0'></iframe></span></p>
<p>Things got big for Genesis, but then life hit Peter Gabriel&#8230; hard.</p>
<h1>Peter Gabriel</h1>
<p>Tensions were high during <a title="The Lamb Lies Down on Broadway" href="https://en.wikipedia.org/wiki/The_Lamb_Lies_Down_on_Broadway" target="_blank">The Lamb Lies Down on Broadway</a>. The band was frustrated with Gabriel&#8217;s focus on theatrical performances rather than the music. He also did most of the lyrics on the latest album, which seemed unfair, since the band always shared that responsibility equally. Gabriel&#8217;s personal life also got complicated after his wife&#8217;s difficult pregnancy and birth of first child Anna-Marie. He opted to stay with his sick daughter and wife, instead of recording and touring, which didn&#8217;t help the resentment of the band. <strong>Peter Gabriel had to leave Genesis</strong> in 1975.</p>
<p>After difficulties and abandonment, Peter carried on and in 1977 he recorded his first solo album, including the song <a title="Solsbury Hill" href="https://en.wikipedia.org/wiki/Solsbury_Hill_(song)" target="_blank">Solsbury Hill</a>, which was inspired by his departure.</p>
<blockquote><p>I did not believe the information<br />
I just had to trust imagination<br />
<small>[...]</small><br />
My friends would think I was a nut<br />
Turning water into wine<br />
Open doors would soon be shut<br />
<small>[...]</small><br />
I was feeling part of the scenery</p></blockquote>
<p>The single was a Top 20 hit in the UK. The first 4 albums were untitled, but due to the artwork &#8211; are codenamed: <a title="Car" href="https://en.wikipedia.org/wiki/Peter_Gabriel_(1977_album)" target="_blank">Car</a>, <a title="Scratch" href="https://en.wikipedia.org/wiki/Peter_Gabriel_(1978_album)" target="_blank">Scratch</a>, <a title="Melt" href="https://en.wikipedia.org/wiki/Peter_Gabriel_(1980_album)" target="_blank">Melt</a> and <a title="Security" href="https://en.wikipedia.org/wiki/Peter_Gabriel_(1982_album)" target="_blank">Security</a>. His solo career was evolving, but times were still tough. Low on funds, he asked Phil Collins to play drums for <span style="text-decoration:underline;">free</span>. In 1982 he reunited with Genesis for a one-off concert in order to recoup debts after the first WOMAD concert &#8211; an arts festival founded by Gabriel.</p>
<p>Almost <strong>10 years after</strong> <a title="Car" href="https://en.wikipedia.org/wiki/Peter_Gabriel_(1977_album)" target="_blank">Car</a>, Peter Gabriel released <a title="So" href="https://en.wikipedia.org/wiki/So_(album)" target="_blank">So</a>, which achieved #1 album and triple platinum in the UK, five times platinum in the US. The album contained songs like <a title="Sledgehammer" href="https://en.wikipedia.org/wiki/Sledgehammer_(song)" target="_blank">Sledgehammer</a>, <a title="Don't give up" href="https://en.wikipedia.org/wiki/Don%27t_Give_Up_(Peter_Gabriel_and_Kate_Bush_song)" target="_blank">Don&#8217;t Give Up</a> — a duet with <a title="Kate Bush" href="https://en.wikipedia.org/wiki/Kate_Bush" target="_blank">Kate Bush</a>, <a title="In Your Eyes" href="https://en.wikipedia.org/wiki/In_Your_Eyes_(Peter_Gabriel_song)" target="_blank">In Your Eyes</a> (featured in the <a title="John Cusack" href="https://en.wikipedia.org/wiki/John_Cusack" target="_blank">John Cusack</a> film <a title="Say Anything" href="https://en.wikipedia.org/wiki/Say_Anything..." target="_blank">Say Anything</a>).<br />
The famous <a title="Sledgehammer video on YouTube" href="http://www.youtube.com/watch?v=Y_E0bvOPTRg" target="_blank">video for &#8220;Sledgehammer&#8221;</a> won nine MTV Video Music Awards in 1987, a record which still stands and is the <span style="text-decoration:underline;">most played music video in the history of MTV</span>.</p>
<p><strong>So think about this: after 8 years of creative work and friendship, everything you&#8217;ve been doing since you were only seventeen &#8211; your career and friends suddenly disappear. You&#8217;re in a poor financial situation and have a sick family. How much grit do you have to have to continue?</strong></p>
<p>All failures aside, Peter Gabriel has won six Grammy Awards and in 2008 TIME magazine named him one of the 100 most influential people in the world.</p>
<p>Last verse of <a title="Solsbury Hill" href="https://en.wikipedia.org/wiki/Solsbury_Hill_(song)" target="_blank">Solsbury Hill</a> (1976):</p>
<blockquote><p>Today I don&#8217;t need a replacement<br />
I&#8217;ll tell them what the smile on my face meant<br />
My heart going boom boom boom<br />
&#8220;Hey&#8221; I said &#8220;You can keep my things,<br />
They&#8217;ve come to take me home.&#8221;</p></blockquote>
<p><span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='550' height='340' src='http://www.youtube.com/embed/Ah3vTq2ZxYk?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0'></iframe></span></p>
<h1>Phil Collins</h1>
<p>After Peter&#8217;s departure, Genesis decided to keep going, but needed a lead vocalist. Even though Phil used to sing back-up vocals, he was still primarily a drummer. The band auditioned over 400 candidates, but after a fruitless search they gave up and Collins became the group&#8217;s new frontman and lead singer.<br />
<a title="A Trick of the Tail" href="https://en.wikipedia.org/wiki/A_Trick_of_the_Tail" target="_blank">A Trick of the Tail</a> (1976) was the first album to feature Collins as the lead and it was a hit. It also <strong>helped the band to pay off the $400,000 debt</strong>! The album remains one of my personal favourites, due to it&#8217;s focus on the intrumental pieces (<a href="http://www.youtube.com/watch?v=FJO8kcZdfQM" target="_blank">check it out, it&#8217;s so good</a>). After <a title="Wind &amp; Wuthering" href="https://en.wikipedia.org/wiki/Wind_%26_Wuthering" target="_blank">Wind &amp; Wuthering</a> album, Steve Hackett left Genesis, but the band continued and recorded <a title="...And Then There Were Three..." href="https://en.wikipedia.org/wiki/...And_Then_There_Were_Three..." target="_blank">&#8230;And Then There Were Three&#8230;</a>.</p>
<p>Before recording <a title="Duke" href="https://en.wikipedia.org/wiki/Duke_(album)" target="_blank">Duke</a>, Collins took an extended leave of absence to save his first marrige. Ultimately he divorced Andrea Bertorelli in 1980, after she started an <span style="text-decoration:underline;">affair with their painter</span> and decorator. Collins later appeared on the BBC&#8217;s Top of the Pops singing &#8220;If Leaving Me Is Easy&#8221; <span style="text-decoration:underline;">with a pot of paint</span> and brush positioned on his piano.</p>
<p>His first solo album <a title="Face Value" href="https://en.wikipedia.org/wiki/Face_Value_(album)" target="_blank">Face Value</a> opens with the dark and mysterious song <a title="In the Air Tonight" href="https://en.wikipedia.org/wiki/In_the_Air_Tonight" target="_blank">In the Air Tonight</a>, inspired by the unfortunate first divorce.</p>
<blockquote><p>I was there and I saw what you did<br />
Saw it with my own two eyes<br />
So you can wipe off that grin<br />
I know where you&#8217;ve been<br />
It&#8217;s all been a pack of lies</p></blockquote>
<p>If you hear someone say &#8220;<em>Turn your misfortune into an asset!</em>&#8221; &#8211; you probably won&#8217;t appreciate it, especially when feeling down, but yet again with <strong>grit, passion and persistance</strong> &#8211; good things happen.<br />
<a title="Face Value" href="https://en.wikipedia.org/wiki/Face_Value_(album)" target="_blank">Face Value</a> album was a success. <a title="In the Air Tonight" href="https://en.wikipedia.org/wiki/In_the_Air_Tonight" target="_blank">In the Air Tonight</a> became the anthem of the iconic 80s TV series <a title="Miami Vice" href="https://en.wikipedia.org/wiki/Miami_Vice" target="_blank">Miami Vice</a>:</p>
<p><span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='550' height='340' src='http://www.youtube.com/embed/gh0oSrjLlwY?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0'></iframe></span></p>
<p>Genesis moved to Phil&#8217;s apartment and composed <a title="Duke" href="https://en.wikipedia.org/wiki/Duke_(album)" target="_blank">Duke</a>. The next 4 albums after that were even more successful.</p>
<p>Collins was married and divorced three times. He was married to Jill Tavelman from 1984 to 1996, paid £17M as final settlement. Third wife Orianne Cevey 1999 to 2008, received £25M in settlement.</p>
<p>In 2009 it was reported that Phil cannot play drums after an operation to repair dislocated vertebrae in his neck.</p>
<blockquote><p>There isn&#8217;t any drama regarding my &#8216;disability&#8217; and playing drums. Somehow during the last Genesis tour I dislocated some vertebrae in my upper neck and that affected my hands. After a successful operation on my neck, my hands still can&#8217;t function normally. Maybe in a year or so it will change, but for now it is impossible for me to play drums or piano. I am not in any &#8216;distressed&#8217; state; stuff happens in life.</p></blockquote>
<p>After three expensive divorces and health problems, Collins is surprisingly optimistic. In interviews he always states that he&#8217;s moved on from Genesis and rock-star life. While some people may see his situation as tragic, this is actually an opportunity to stay near his children and start a second life.</p>
<p>Collins&#8217; total worldwide sales as a solo artist, as of 2000, were 150 million (he&#8217;s one of only three recording artists along with Paul McCartney and Michael Jackson who have sold over 100 million albums worldwide both as solo artists and as principal band members). He won seven Grammy Awards.<br />
During the 2007 tour, Genesis performed in Rome&#8217;s Circo Massimo <span style="text-decoration:underline;">in front of 500,000 fans</span>. The setlist included several songs from <a title="Duke" href="https://en.wikipedia.org/wiki/Duke_(album)" target="_blank">Duke</a>.</p>
<h1>Los Endos*</h1>
<p><strong>You could take each of these horrible events and narrate them as a nightmare coming true</strong>, and it would feel very right to do that. However, even though that&#8217;s our usual reaction, what is the point of it? When life hits you, <strong>lose the pessimistic narration</strong> and focus on what you love, and your passion. You can&#8217;t see what really lies ahead &#8211; try to imagine how Gabriel&#8217;s life must&#8217;ve felt right after leaving Genesis or how Phil must&#8217;ve felt when his first marrige was falling apart. Listening to their songs there is no doubt that the emotional impact of these events was powerful, but can you think of <strong>what would happen, if they didn&#8217;t keep their grit?</strong></p>
<p>It really is your choice. You can keep focusing on the disappointment and pain or you could try dealing with failure just like Collins, Gabriel, Banks, Rutherford and Hackett &#8211; just keep playing&#8230; whatever your song is.</p>
<p><span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='550' height='340' src='http://www.youtube.com/embed/z2NzjytGETw?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0'></iframe></span></p>
<p><small><i>Credits: many facts quoted from Wikipedia, links included in context.</i><br />
* &#8211; &#8220;Los Endos&#8221; is the closing instrumental piece on &#8220;A Trick of the Tail&#8221;.<br />
</small></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stawecki.wordpress.com/367/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stawecki.wordpress.com/367/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stawecki.com&#038;blog=33218438&#038;post=367&#038;subd=stawecki&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stawecki.com/2013/05/15/you-wish-you-could-fail-like-genesis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/caf6df5e845800096599b781ed79dcea?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mstawecki</media:title>
		</media:content>

		<media:content url="http://stawecki.files.wordpress.com/2013/05/genesis1.jpg?w=300" medium="image">
			<media:title type="html">Genesis, circa 1971</media:title>
		</media:content>

		<media:content url="http://stawecki.files.wordpress.com/2013/05/moonlightknight.png?w=192" medium="image">
			<media:title type="html">Peter Gabriel as &#34;Britannia&#34;, or &#34;The Moonlit Knight&#34; 1974 (source)</media:title>
		</media:content>
	</item>
		<item>
		<title>Wonders of the Universe &#8211; iPad App</title>
		<link>http://stawecki.com/2012/03/30/wonders-of-the-universe-ipad-app/</link>
		<comments>http://stawecki.com/2012/03/30/wonders-of-the-universe-ipad-app/#comments</comments>
		<pubDate>Fri, 30 Mar 2012 10:03:02 +0000</pubDate>
		<dc:creator>mstawecki</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://stawecki.com/?p=333</guid>
		<description><![CDATA[After months of extremely hard work, brilliant cooperation, risky innovation, it&#8217;s done. iTunes Link We&#8217;ve had some excellent reviews as&#8230;<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stawecki.com&#038;blog=33218438&#038;post=333&#038;subd=stawecki&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>After months of extremely hard work, brilliant cooperation, risky innovation, it&#8217;s done.</p>
<a href="http://stawecki.com/2012/03/30/wonders-of-the-universe-ipad-app/#gallery-333-1-slideshow">Click to view slideshow.</a>
<p><a href="http://itunes.apple.com/app/brian-coxs-wonders-universe/id508465867?mt=8" title="iTunes Link" target="_blank">iTunes Link</a></p>
<p>We&#8217;ve had some excellent reviews as well:</p>
<blockquote><p>It’s hands down one of the best apps out there for the iPad right now and serves as a banner app for tablet education in general.</p></blockquote>
<div style="text-align:right;margin-bottom:20px;padding-right:40px;"><a href="http://thenextweb.com/apps/2012/03/29/brian-coxs-wonders-of-the-universe-redefines-ipad-books-with-gorgeous-3d-and-a-brilliant-interface/" title="The Next Web" target="_blank">The Next Web</a></div>
<blockquote><p>Brian Cox’s Wonders of the Universe is literally one of the best iPad apps I’ve ever encountered.</p></blockquote>
<div style="text-align:right;margin-bottom:20px;padding-right:40px;"><a href="http://www.imore.com/2012/03/30/brian-coxs-wonders-universe/" title="iMore" target="_blank">iMore</a></div>
<blockquote><p>Wonders of the Universe might be one of the best educational apps to date for iOS</p></blockquote>
<div style="text-align:right;margin-bottom:20px;padding-right:40px;"><a href="http://reviews.cnet.com/8301-31747_7-57406095-243/the-final-frontier-is-yours-to-explore-on-your-ipad/" title="CNET" target="_blank">CNET</a></div>
<p>Further reviews on: <a href="http://mashable.com/2012/03/29/wonders-of-the-universe-ipad/" title="Mashable" target="_blank">Mashable</a>, <a href="http://www.guardian.co.uk/technology/appsblog/2012/mar/29/brian-cox-wonders-ipad-app" title="Guardian" target="_blank">Guardian</a></p>
<p>I&#8217;ve never seen such good reviews of an iPad app. I&#8217;m absolutely stunned. I&#8217;d like to thank everyone who was involved in the project and everyone who gave use this amazing feedback as well. Cheers!</p>
<p>I&#8217;d write more, but I need to get some sleep first, so stay tuned and try it out, because <strong>there is a lot more to come!</strong> <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Wonders of the Universe is our first app, which utilises <a href="http://www.glidepublisher.com/" title="Glide Publisher" target="_blank">Glide Publisher</a>. A publishing framework, which we&#8217;re working on at the moment. Learn more about Glide from @_ChrisHarris, @matt_walton and me:</p>
<span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='550' height='340' src='http://www.youtube.com/embed/cYmC4X1iR3s?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0'></iframe></span>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stawecki.wordpress.com/333/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stawecki.wordpress.com/333/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stawecki.com&#038;blog=33218438&#038;post=333&#038;subd=stawecki&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stawecki.com/2012/03/30/wonders-of-the-universe-ipad-app/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/caf6df5e845800096599b781ed79dcea?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mstawecki</media:title>
		</media:content>
	</item>
		<item>
		<title>TODO comment to HTML generator in bash</title>
		<link>http://stawecki.com/2011/09/12/todo-comment-to-html-generator-in-bash/</link>
		<comments>http://stawecki.com/2011/09/12/todo-comment-to-html-generator-in-bash/#comments</comments>
		<pubDate>Mon, 12 Sep 2011 21:55:17 +0000</pubDate>
		<dc:creator>mstawecki</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Tech Log]]></category>

		<guid isPermaLink="false">http://www.stawecki.com/?p=288</guid>
		<description><![CDATA[I had a little play with different documentation generators recently and it inspired me to write a handy little tool&#8230;<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stawecki.com&#038;blog=33218438&#038;post=288&#038;subd=stawecki&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I had a little play with different documentation generators recently and it inspired me to write a handy little tool to review all your &#8220;//TODO:&#8221; comments in code. There&#8217;s a lot of criticism around putting &#8220;TODO&#8221; and &#8220;FIXME&#8221; etc in code, it does sometimes end up quite badly. However, if you try to grasp it and use it to get a better overview of your progress, it might not be all that bad. As usual&#8230; it&#8217;s quite cool what you can do with bash.</p>
<p>Very minimalistic shell script, grab it as a Gist: <a title="https://gist.github.com/1212539" href="https://gist.github.com/1212539" target="_blank">https://gist.github.com/1212539</a></p>
<p><a href="http://stawecki.files.wordpress.com/2012/02/screen-shot-2011-09-12-at-22-37-48.png"><img class="aligncenter size-full wp-image-289" title="Screen-Shot-2011-09-12-at-22.37.48" src="http://stawecki.files.wordpress.com/2012/02/screen-shot-2011-09-12-at-22-37-48.png?w=490" alt="" width="490" height="668" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stawecki.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stawecki.wordpress.com/288/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stawecki.com&#038;blog=33218438&#038;post=288&#038;subd=stawecki&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stawecki.com/2011/09/12/todo-comment-to-html-generator-in-bash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/caf6df5e845800096599b781ed79dcea?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mstawecki</media:title>
		</media:content>

		<media:content url="http://stawecki.files.wordpress.com/2012/02/screen-shot-2011-09-12-at-22-37-48.png?w=490" medium="image">
			<media:title type="html">Screen-Shot-2011-09-12-at-22.37.48</media:title>
		</media:content>
	</item>
		<item>
		<title>3D games with CSS3 Transforms and JavaScript</title>
		<link>http://stawecki.com/2011/08/28/3d-games-with-css3-transforms-and-javascript/</link>
		<comments>http://stawecki.com/2011/08/28/3d-games-with-css3-transforms-and-javascript/#comments</comments>
		<pubDate>Sun, 28 Aug 2011 19:46:39 +0000</pubDate>
		<dc:creator>mstawecki</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Tech Log]]></category>

		<guid isPermaLink="false">http://www.stawecki.com/?p=275</guid>
		<description><![CDATA[I wanted to call this post &#8220;Project Cemetery&#8221;. Some experiments go bad, some go good. This one went far better&#8230;<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stawecki.com&#038;blog=33218438&#038;post=275&#038;subd=stawecki&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I wanted to call this post &#8220;Project Cemetery&#8221;. Some experiments go bad, some go good. This one went far better than I expected, but besides interesting results, nothing really kicked off. Let me start from the beginning then. Last year (2010) I met a group of awesome people &#8211; employees of the OTHER media, who showed off some cool stuff in Mobile. One thing was particularly cool. A 3d app prototype in WebKit showed off by Chris Harris (@_ChrisHarris). Couple months later, I was lucky enough to join the team and work on a web app written with JS and CSS transforms. After that I got really excited about how much rendering power you can squeeze out from a browser on an iPhone, I decided to play a bit more with 3d transforms, see where it takes me.</p>
<h2>Experiment #1: 3D Sci-Fi Racing game</h2>
<p><a href="http://stawecki.files.wordpress.com/2012/02/dash3d.png"><img class="aligncenter size-full wp-image-276" title="dash3d" src="http://stawecki.files.wordpress.com/2012/02/dash3d.png?w=535" alt="" width="535" height="414" /></a></p>
<p style="text-align:center;"><a href="http://files.stawecki.com/demos/dash3d/">(try it on Safari/WebKit nightly)</a><br />
controls: arrow keys, space, C</p>
<p>I got carried away on this one! It was pretty cool, but runs correctly only on Safari/WebKit nightly. It has a physics engine, collision detection. All graphics using pure CSS3. Some of you may wonder: why not WebGL? Well.. there is one major problem with WebGL &#8211; it&#8217;s not supported on any mobile devices at the moment! And it might not be for a while, but while experiment no 1 was pretty cool, it failed to run on the iPhone. I&#8217;ve tried optimising, but I had to change the concept and do it from scratch. I was scratching my head, if it&#8217;s even worth trying, since there isn&#8217;t much of a case for such usage of this technology. It couldn&#8217;t compete with native 3d games. I finally got convinced by Chris: &#8220;iAds. You can use this in iAds.&#8221;. It made perfect sense, I then realised that when I saw the iAd keynote, I hated these ads, especially the games. Toy Story 3 puzzle game? :/ Ugh!! Here&#8217;s my shot at a game embeddable in iAds:</p>
<h2>Experiment #2: 3D Platform game optimised for iOS</h2>
<p><a href="http://stawecki.files.wordpress.com/2012/02/penguins.png"><img class="aligncenter size-full wp-image-281" title="penguins" src="http://stawecki.files.wordpress.com/2012/02/penguins.png?w=535" alt="" width="535" height="474" /></a></p>
<p style="text-align:center;"><a href="http://files.stawecki.com/demos/penguin/">(try it on any WebKit browser including iOS)<br />
</a>controls on PC: arrow keys, space.</p>
<p>Boom! By the end of November 2010 it was finished. No-one could believe that this was a Web-app. And it ran on an iPhone 3G! You basically play a penguin who picks up ice cream <img src='http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  I&#8217;ve been looking into selling this piece as a framework, but it didn&#8217;t work out. Turns out trying to work with ad agencies is quite hard too. If anyone&#8217;s still interested, give <a href="http://www.othermedia.com/">us</a> a shout. I enjoyed the &#8220;journey&#8221; and got some cool demos out of it <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Gotta keep on trying!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stawecki.wordpress.com/275/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stawecki.wordpress.com/275/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stawecki.com&#038;blog=33218438&#038;post=275&#038;subd=stawecki&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stawecki.com/2011/08/28/3d-games-with-css3-transforms-and-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/caf6df5e845800096599b781ed79dcea?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mstawecki</media:title>
		</media:content>

		<media:content url="http://stawecki.files.wordpress.com/2012/02/dash3d.png?w=535" medium="image">
			<media:title type="html">dash3d</media:title>
		</media:content>

		<media:content url="http://stawecki.files.wordpress.com/2012/02/penguins.png?w=535" medium="image">
			<media:title type="html">penguins</media:title>
		</media:content>
	</item>
		<item>
		<title>Remote Browser Control with WebKit Debug and JavaScript</title>
		<link>http://stawecki.com/2011/05/15/remote-browser-control/</link>
		<comments>http://stawecki.com/2011/05/15/remote-browser-control/#comments</comments>
		<pubDate>Sun, 15 May 2011 00:14:48 +0000</pubDate>
		<dc:creator>mstawecki</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.stawecki.com/?p=240</guid>
		<description><![CDATA[In this post I&#8217;ll show you how to remotely control your Google Chrome browser using JavaScript and scrape some data,&#8230;<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stawecki.com&#038;blog=33218438&#038;post=240&#038;subd=stawecki&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>In this post I&#8217;ll show you how to remotely control your Google Chrome browser using JavaScript and scrape some data, even if it&#8217;s on an AJAX powered website or behind HTTPS authentication. Nice?</p>
<p>I LOVE WebKit and now it got even sweeter. Very recently there was a small buzz about a new feature: <a href="www.webkit.org/blog/1620/webkit-remote-debugging/">WebKit Remote Debugging</a> that allows to use Element Inspector remotely! (since it&#8217;s essentially just a web page and some javascript + websockets). What&#8217;s the real icing on the cake for me, is the ability to plug-in a different interface. I wrote a simple interface that can execute several pieces of JavaScript and return the values back to you. Here&#8217;s how to set it up.</p>
<p>Open Terminal and find the Google Chrome executable. To use remote debugging, run it with a special parameter:</p>
<div style="background:#eee;border:1px solid gray;font-family:courier;font-size:11px;padding:5px;">$ cd /Applications/Google Chrome.app/Contents/MacOS/<br />
$ ./Google Chrome &#8211;remote-debugging-port=9222</div>
<p>If you get:</p>
<div style="background:#eee;border:1px solid gray;font-family:courier;font-size:10px;padding:5px;">[0513/205852:FATAL:foundation_util.mm(102)] Check failed: bundle. Failed to load the bundle at /Applications/Google Chrome.app/Contents/MacOS/Versions/11.0.696.68/Google Chrome Framework.framework</div>
<p>Try symlinking Versions:</p>
<div style="background:#eee;border:1px solid gray;font-family:courier;font-size:11px;padding:5px;">$ ln -s ../Versions/ ./Versions</div>
<p><a href="http://stawecki.files.wordpress.com/2012/02/webkit_debug.jpg"><img class="alignright size-full wp-image-248" style="padding-top:15px;" title="webkit_debug" src="http://stawecki.files.wordpress.com/2012/02/webkit_debug.jpg?w=550" alt=""   /></a><br />
The browser should start normally. Now go to a different browser, e.g. Safari and check out:</p>
<p><a href="http://localhost:9222" rel="nofollow">http://localhost:9222</a></p>
<p>Select a page and you should see the Inspector.</p>
<p>That&#8217;s all nice and neat. But let&#8217;s see my remote script: <a href="http://gist.github.com/972742">http://gist.github.com/972742</a></p>
<p>- To connect to the debugger, we&#8217;re using WebSockets. Change the page number based on the link from &#8220;<a href="http://localhost:9222&#038;#8243" rel="nofollow">http://localhost:9222&#038;#8243</a>;. Every &#8220;Tab&#8221; has a different &#8220;Page&#8221; number.</p>
<pre class="brush: jscript; title: ; notranslate">
	// Set page number!
	var host = &quot;ws://localhost:9222/devtools/page/5&quot;;
	socket = new WebSocket(host);
</pre>
<p>- To execute JavaScript I wrapped a JSON-RPC-like command into a method with callback. More protocol schema <a href="http://trac.webkit.org/browser/trunk/Source/WebCore/inspector/Inspector.json">here</a>.</p>
<pre class="brush: jscript; title: ; notranslate">
function remoteEval(scriptString,callback) {
	seqCallback[seqNo] = callback;
	socket.send('{&quot;seq&quot;:'+seqNo+',&quot;domain&quot;:&quot;Runtime&quot;,'+
	'&quot;command&quot;:&quot;evaluate&quot;,&quot;arguments&quot;:{&quot;expression&quot;:&quot;'+
	scriptString.replace(/[&quot;]/g,'\&quot;')
	+'&quot;,&quot;objectGroup&quot;:&quot;console&quot;,&quot;includeCommandLineAPI&quot;:false}}');
	seqNo++;
}
</pre>
<p>- And this is how a sample script works:</p>
<pre class="brush: jscript; title: ; notranslate">
remoteOnLoad = function(result) {

// We might've ended up on the login page, so let's log in!
if (remoteURL.indexOf(&quot;ServiceLogin&quot;) &gt; 0 )
remoteEval( &quot; document.getElementById('Email').value = 'username'; &quot;+
	&quot; document.getElementById('Passwd').value = 'password'; &quot;+
	&quot; document.getElementsByTagName('form')[0].submit(); &quot;
	, function(result) { alert(result); } );

	// We're home!
	if (remoteURL.indexOf(&quot;mail.google.com/mail/&quot;) &gt; 0 )
	remoteEval( &quot; try { document.getElementById('canvas_frame')&quot;+
&quot;.contentWindow.document.getElementsByClassName( 'md' )[0].innerText } catch(e) { -1 }&quot;
	, function(result) {  // Waiting for AJAX. Try again in 2 sec.
	if (result == -1) { setTimeout(remoteOnLoad,2000); }
				else { alert(result); } } );
				// This should return scraped information
				// about your data usage on gmail!
				// E.g. You're currently using 150MB out of 7000MB
			} ;

// This happenes first:
remoteEval(&quot; location.href = 'http://gmail.com' &quot;);
//Let's go to Gmail!

</pre>
<p><a href="http://stawecki.files.wordpress.com/2012/02/screen-shot-2011-05-15-at-00-42-02.png"><img class="aligncenter size-full wp-image-268" title="Screen-shot-2011-05-15-at-00.42.02" src="http://stawecki.files.wordpress.com/2012/02/screen-shot-2011-05-15-at-00-42-02.png?w=550" alt=""   /></a></p>
<p>Don&#8217;t know how about you, but I just wanna wrap it in Node.js, run it somewhere on Linux with a dummy X11 server for Chrome and write lot&#8217;s of crazy tasks, so it does it all for me! Imagine e.g. that instead of that alert(result) you make it a WebHook or a service?</p>
<p><a href="http://stawecki.files.wordpress.com/2012/02/screen-shot-2011-05-15-at-01-12-38.png"><img class="aligncenter size-full wp-image-271" title="Screen-shot-2011-05-15-at-01.12.38" src="http://stawecki.files.wordpress.com/2012/02/screen-shot-2011-05-15-at-01-12-38.png?w=550" alt=""   /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stawecki.wordpress.com/240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stawecki.wordpress.com/240/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stawecki.com&#038;blog=33218438&#038;post=240&#038;subd=stawecki&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stawecki.com/2011/05/15/remote-browser-control/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/caf6df5e845800096599b781ed79dcea?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mstawecki</media:title>
		</media:content>

		<media:content url="http://stawecki.files.wordpress.com/2012/02/webkit_debug.jpg" medium="image">
			<media:title type="html">webkit_debug</media:title>
		</media:content>

		<media:content url="http://stawecki.files.wordpress.com/2012/02/screen-shot-2011-05-15-at-00-42-02.png" medium="image">
			<media:title type="html">Screen-shot-2011-05-15-at-00.42.02</media:title>
		</media:content>

		<media:content url="http://stawecki.files.wordpress.com/2012/02/screen-shot-2011-05-15-at-01-12-38.png" medium="image">
			<media:title type="html">Screen-shot-2011-05-15-at-01.12.38</media:title>
		</media:content>
	</item>
		<item>
		<title>[Project] formanalyzer.net</title>
		<link>http://stawecki.com/2011/03/08/project-formanalyzer-net/</link>
		<comments>http://stawecki.com/2011/03/08/project-formanalyzer-net/#comments</comments>
		<pubDate>Tue, 08 Mar 2011 21:49:01 +0000</pubDate>
		<dc:creator>mstawecki</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.stawecki.com/?p=229</guid>
		<description><![CDATA[Name: Web Form Analyzer Motto: Simple form analyzer from URL Link: http://formanalyzer.net/ Summary: A very simple web form analyzer! Just&#8230;<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stawecki.com&#038;blog=33218438&#038;post=229&#038;subd=stawecki&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><strong>Name:</strong> <em>Web Form Analyzer</em><br />
<strong>Motto: </strong><em>Simple form analyzer from URL</em></p>
<p><em><strong>Link:</strong> </em><em><a href="http://formanalyzer.net/" target="_blank">http://formanalyzer.net/</a></em></p>
<p><strong>Summary:</strong><br />
A very simple web form analyzer! Just enter the form&#8217;s URL or HTML code and you&#8217;ll see a nice print out of different forms and values submitted on the website.</p>
<p><a href="http://stawecki.files.wordpress.com/2012/02/formanalyzer2.png"><img class="aligncenter size-full wp-image-230" style="border:1px solid black;" title="formanalyzer2" src="http://stawecki.files.wordpress.com/2012/02/formanalyzer2.png?w=550" alt="" %" /></a></p>
<p>Had a bit of time and need for a simple tool like that. Dead simple, very clear to read. Nicer than &#8216;view source&#8217;, if you&#8217;re just interested in what and where is being posted from a website or piece of code. Enjoy.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stawecki.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stawecki.wordpress.com/229/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stawecki.com&#038;blog=33218438&#038;post=229&#038;subd=stawecki&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stawecki.com/2011/03/08/project-formanalyzer-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/caf6df5e845800096599b781ed79dcea?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mstawecki</media:title>
		</media:content>

		<media:content url="http://stawecki.files.wordpress.com/2012/02/formanalyzer2.png" medium="image">
			<media:title type="html">formanalyzer2</media:title>
		</media:content>
	</item>
		<item>
		<title>Different configurations for PHP applications on multiple hosts</title>
		<link>http://stawecki.com/2011/03/07/different-configurations-for-php-applications-on-multiple-hosts/</link>
		<comments>http://stawecki.com/2011/03/07/different-configurations-for-php-applications-on-multiple-hosts/#comments</comments>
		<pubDate>Mon, 07 Mar 2011 22:10:52 +0000</pubDate>
		<dc:creator>mstawecki</dc:creator>
				<category><![CDATA[Tech Log]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.stawecki.com/?p=204</guid>
		<description><![CDATA[Ever had this problem? You were so excited to see, if some piece of code works on your live system,&#8230;<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stawecki.com&#038;blog=33218438&#038;post=204&#038;subd=stawecki&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Ever had this problem? You were so excited to see, if some piece of code works on your live system, that you forgot to change database access configuration and file paths? Probably not, because we&#8217;re all respected professionals here *wink* and the case is usually: it&#8217;s 10pm, still at the office and x product is launching tomorrow and you accidentally overwritten the configuration, because you didn&#8217;t have time to finish the deployment script <img src='http://s2.wp.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> . Or maybe you have to deploy your application to even more than two machines? Well, here&#8217;s a small cheat sheet.</p>
<h2>The lazy way</h2>
<pre class="brush: php; title: ; notranslate">

switch (php_uname('n')) {
    case 'livedevhost04':
		$dbhost = 'sql.example.com'; $dbuser = 'myapp_user';
		$dbpass = 's7d6y3726ye86'; $db = 'myappdb';
		break;
    case 'Mateusz-Laptop.local':
		$dbhost = 'localhost'; $dbuser = 'root';
		$dbpass = ''; $db = 'testdb';
    	break;
    default:
       echo 'No configuration found for host: '.php_uname('n'); exit;
}
</pre>
<p>This way is quite nice for most scenarios. Very convenient. Get the machine&#8217;s hostname, add a &#8220;case&#8221; to the switch with server&#8217;s configuration and you&#8217;re good! If you&#8217;re deploying through some sort of SFTP/WebDAV protocol, you can easily upload files without any additional modification before running the script. The same with deployment techniques like <a href="http://stackoverflow.com/questions/279169/deploy-php-using-git" target="_blank">Deploy using Git</a>.<br />
The only problem is that you&#8217;re slightly exposing configuration settings for all your boxes. If you don&#8217;t feel comfortable with this, try a different technique like symlinks to a local configuration file.<br />
Personally, I use it quite often. It&#8217;s better and way less annoying than swapping commented settings.</p>
<h2>The &#8216;bash&#8217; way</h2>
<p>This can be used for many different scenarios. Not just files, but also directories. Here&#8217;s a very nice and readable script for symlinking stuff based on local hostname:</p>
<pre class="brush: bash; title: ; notranslate">
#!/bin/bash

targetfile=webroot/config.php
fromscheme=webroot/config._HOST_.php

fromfile=${fromscheme/_HOST_/`hostname`};

if [ -e $fromfile ]
then
 rm $targetfile
 ln -s $fromfile $targetfile
 echo $fromfile == $targetfile
else
 echo [ERROR] Local configuration file not found: $fromfile
fi

</pre>
<p>Additionally, you might want to execute a custom script that will do something for you after retrieving a configuration set.<br />
Notice the &#8220;webroot/&#8221;, please keep sensitive scripts outside your document root, mkaay? Maybe even clean them up after deploy and keep them in repo!</p>
<p>You&#8217;re only in trouble, if you don&#8217;t have access to a bash shell on your hosting server (use first method) or you&#8217;re running Windows (you can try cygwin if you&#8217;re mad enough ;] )</p>
<h2>A JavaScript Bonus</h2>
<p>You&#8217;d be surprised how many times, I almost did something very silly on a deployed version of an ajax based application. As a bonus, here&#8217;s a script you can put in your app, to help you identify, which build you&#8217;re currently working on. Especially useful, when running on iOS in web app mode.</p>
<pre class="brush: plain; title: ; notranslate">
&lt;div style='display:none;color:red;' id='devnotification'&gt;TEST SERVER&lt;/div&gt;


var currentHost = location.href.split('/')[2];
if (currentHost == 'localhost' || currentHost == 'dev.example.com')
document.getElementById('devnotification').style.display = 'block';

</pre>
<p>Enjoy! And remember to run your tests kids!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stawecki.wordpress.com/204/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stawecki.wordpress.com/204/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stawecki.com&#038;blog=33218438&#038;post=204&#038;subd=stawecki&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stawecki.com/2011/03/07/different-configurations-for-php-applications-on-multiple-hosts/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/caf6df5e845800096599b781ed79dcea?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mstawecki</media:title>
		</media:content>
	</item>
		<item>
		<title>Transfer any content Cross-site with Yahoo Pipes as JSON callback proxy</title>
		<link>http://stawecki.com/2011/02/23/transfer-any-content-cross-site-with-yahoo-pipes-as-json-callback-proxy/</link>
		<comments>http://stawecki.com/2011/02/23/transfer-any-content-cross-site-with-yahoo-pipes-as-json-callback-proxy/#comments</comments>
		<pubDate>Wed, 23 Feb 2011 01:18:34 +0000</pubDate>
		<dc:creator>mstawecki</dc:creator>
				<category><![CDATA[Tech Log]]></category>

		<guid isPermaLink="false">http://www.stawecki.com/?p=170</guid>
		<description><![CDATA[Getting cross-site content with JavaScript is cool, since it usually requires a tiny bit of extra effort when designing the&#8230;<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stawecki.com&#038;blog=33218438&#038;post=170&#038;subd=stawecki&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Getting cross-site content with JavaScript is cool, since it usually requires a tiny bit of extra effort when designing the feeds or deploying a callback proxy. Thanks to Yahoo Pipes it has now become very easy to get any content, even a whole web page and crunch it in your JavaScript web app.<br />
First go to pipes.yahoo.com and Create a new Pipe. You&#8217;re going to have to log in.<br />
Drag &#8220;URL Input&#8221; from &#8220;User inputs&#8221; to your pipe diagram. Now get back to &#8220;Sources&#8221;. If you&#8217;re planning on fetching a website, drag &#8220;Fetch Page&#8221;. If it&#8217;s a JSON or XML feed &#8220;Fetch Data&#8221; (all data will be automatically transformed ).<br />
The next step is linking the elements together. Drag a link from the &#8220;URL Input&#8221; into you source&#8217;s URL Attribute and from sources output to Pipe Output.<br />
Your pipe should look something like this:<br />
<a href="http://stawecki.files.wordpress.com/2012/02/screen-shot-2011-02-22-at-00-38-55.png"><img class="aligncenter size-full wp-image-303" title="Screen-shot-2011-02-22-at-00.38.55" src="http://stawecki.files.wordpress.com/2012/02/screen-shot-2011-02-22-at-00-38-55.png?w=550" alt=""   /></a><br />
Click &#8220;Save&#8221; and &#8220;Run Pipe&#8230;&#8221;. You&#8217;ll be taken to the pipe information page, where you can enter the URL which you want to proxy. Submit with &#8220;Run Pipe&#8221;, after it has loaded, select &#8220;Get as JSON&#8221;.<br />
You should see some nice JSON with the transformed content. The URL to such pipe looks like this:</p>
<p><a href="http://pipes.yahoo.com/pipes/pipe.run?_id=d53d0d4793aa292d3e02885ba9b22cba&#038;_render=json&#038;fromurl=http://stawecki.com" rel="nofollow">http://pipes.yahoo.com/pipes/pipe.run?_id=d53d0d4793aa292d3e02885ba9b22cba&#038;_render=json&#038;fromurl=http://stawecki.com</a></p>
<p>Now guess how to add a callback <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><a href="http://pipes.yahoo.com/pipes/pipe.run?_id=d53d0d4793aa292d3e02885ba9b22cba&#038;_render=json&#038;fromurl=http://stawecki.com&#038;_callback=test" rel="nofollow">http://pipes.yahoo.com/pipes/pipe.run?_id=d53d0d4793aa292d3e02885ba9b22cba&#038;_render=json&#038;fromurl=http://stawecki.com&#038;_callback=test</a></p>
<p>Surprise <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  There is an underscore before &#8220;callback&#8221; attribute name. (weirrrd) For anyone who is new to XSS, &#8220;callback&#8221; is basically the name of a JavaScript function that receives the content. To show how it works, here&#8217;s a simple script that downloads a website and returns the response&#8217;s character length:</p>
<pre class="brush: jscript; title: ; notranslate">

	function test(response) {
		try {
			alert( 'Content size: '+
			response.value.items[0].content.length );
			} catch(err) { alert('Invalid response'+err); }
		}

	function getURL(urlstr) {
		var ka = document.createElement('script');
		ka.type = 'text/javascript';
		ka.src =
'http://pipes.yahoo.com/pipes/pipe.run?_id=d53d0d4793aa292d3e02885ba9b22cba&amp;_render=json&amp;fromurl='+
		escape(urlstr) + '&amp;_callback=test';
		var ks = document.getElementsByTagName('script')[0];
		ks.parentNode.insertBefore(ka, ks);
	}

</pre>
<p>And here&#8217;s a live version to try:<br />
<a href="http://files.stawecki.com/demos/simplepipescallback.html">Simple Pipes Callback</a></p>
<p>Here&#8217;s a slightly more complicated example. I&#8217;m getting HTML content, parsing it internally and listing all links on the website (NICE!):<br />
<a href="http://files.stawecki.com/demos/listlinkscallback.html" target="_blank">Link Scraper Demo</a></p>
<p>These examples used &#8220;Fetch Page&#8221; in pipes. Here&#8217;s an example of reading an RSS feed using &#8220;Fetch Data&#8221;. This script alerts the most recent news item from an external RSS feed. Notice that Yahoo Pipes conveniently transforms any feed to JSON (or XML if you really really want).</p>
<pre class="brush: jscript; title: ; notranslate">

	function test(response) {
		try {
			var newsItem = response.value.items[0].channel.item[0];
			alert( newsItem.pubDate +&quot; - &quot; + newsItem.title +&quot; - &quot; + newsItem.description );
			} catch(err) { alert('Invalid response'+err); }
	}

	function getURL(urlstr) {
		var ka = document.createElement('script');
		ka.type = 'text/javascript';
		ka.src =
		'http://pipes.yahoo.com/pipes/pipe.run?_id=4d625dfe6977e71acb45db4aa51726a6&amp;_render=json&amp;feedurl='+
		escape(urlstr) + '&amp;_callback=test';
		var ks = document.getElementsByTagName('script')[0];
		ks.parentNode.insertBefore(ka, ks);
	}

</pre>
<p>And here&#8217;s a live version to try with BBC News RSS feed:<br />
<a href="http://files.stawecki.com/demos/simplersscallback.html">Simple RSS Callback</a></p>
<p>Now go and cross site the hell out of the internetz! Soon slightly more practical examples.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stawecki.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stawecki.wordpress.com/170/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stawecki.com&#038;blog=33218438&#038;post=170&#038;subd=stawecki&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stawecki.com/2011/02/23/transfer-any-content-cross-site-with-yahoo-pipes-as-json-callback-proxy/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/caf6df5e845800096599b781ed79dcea?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mstawecki</media:title>
		</media:content>

		<media:content url="http://stawecki.files.wordpress.com/2012/02/screen-shot-2011-02-22-at-00-38-55.png" medium="image">
			<media:title type="html">Screen-shot-2011-02-22-at-00.38.55</media:title>
		</media:content>
	</item>
		<item>
		<title>Cheap and easy event hooks using Google Spreadsheet Forms [Event Tracking]</title>
		<link>http://stawecki.com/2011/01/24/cheap-and-easy-event-hooks-using-google-spreadsheet-forms-event-tracking/</link>
		<comments>http://stawecki.com/2011/01/24/cheap-and-easy-event-hooks-using-google-spreadsheet-forms-event-tracking/#comments</comments>
		<pubDate>Mon, 24 Jan 2011 20:50:44 +0000</pubDate>
		<dc:creator>mstawecki</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Tech Log]]></category>

		<guid isPermaLink="false">http://www.stawecki.com/?p=81</guid>
		<description><![CDATA[I&#8217;ve been recently having a lot of thoughts on live data and visualisation. Tweet Splash presents data available through Twitter&#8230;<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stawecki.com&#038;blog=33218438&#038;post=81&#038;subd=stawecki&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve been recently having a lot of thoughts on live data and visualisation. Tweet Splash presents data available through Twitter API. This time, I&#8217;m going to set up cheap event tracking, which you can very easily use in many different situations and review later on Google Spreadsheets.</p>
<h2>1. Setting up and playing with Google Docs: Forms</h2>
<p>Log into your Google Account and go to Google Docs. Press &#8220;Create New&#8221; -&gt; Form<br />
I&#8217;ll call my form &#8220;Blog Searches&#8221;. Let&#8217;s have only one &#8220;question&#8221; which will represent our event or query made by a user. In my case, question title is &#8220;keyword&#8221;, question type Text and question is required. Click &#8220;Done&#8221; and make sure you delete &#8220;Sample question 2&#8243;. Save the form and click the link at the bottom to see the public version of your form.</p>
<p><a href="http://stawecki.files.wordpress.com/2012/02/screen-shot-2011-01-20-at-21-10-19.png"><img class="aligncenter size-full wp-image-301" title="Screen-shot-2011-01-20-at-21.10.19" src="http://stawecki.files.wordpress.com/2012/02/screen-shot-2011-01-20-at-21-10-19.png?w=550" alt=""   /></a></p>
<p>It should look more or less like this. You can try, if it works by posting a test keyword, then go back to the document list and enter the form again, this time in a Spreadsheet form.</p>
<p>Now it&#8217;s time for the hacky part. Go to the public version of the form and look up the source (usually right-click &#8220;View Source&#8221; ;] ).</p>
<p>We need to retrieve 2 values: Form Action URL &#8211; to know where the form is posted to and Input Text&#8217;s Name, to know what&#8217;s the name of out &#8220;Keyword&#8221; parameter.</p>
<p>Form Action URL will be here (in red, it&#8217;s the attribute value of &#8220;action&#8221; in the &#8220;form&#8221; tag):</p>
<pre><span style="color:#333399;">&lt;<strong>form</strong> action="<strong><span style="color:#ff0000;">https://spreadsheets.google.com/formResponse?formkey=dDVCMlYzMmpuWTg0VUhZUkltaXl5OEE6MQ</span></strong>&amp;amp;ifq" method="POST" id="ss-form"&gt;</span></pre>
<p>Input Text&#8217;s Name (in red, attribute value of &#8220;name&#8221; in the only &#8220;text&#8221; input field):</p>
<pre><span style="color:#333399;">&lt;<strong>input</strong> type="<strong>text</strong>" name="<span style="color:#ff0000;"><strong>entry.0.single</strong></span>" value="" class="ss-q-short" id="entry_0"&gt;</span></pre>
<p>Now let&#8217;s try a small trick I discovered. Usually the form data is sent through a POST request, however turns out Google doesn&#8217;t mind, if you send values over a typical GET, which means you can put them as a part of your URL! In my case I&#8217;m going to this URL in my browser (note that I ignored the &#8220;ifq&#8221; parameter):</p>
<pre>https://spreadsheets.google.com/formResponse?formkey=dDVCMlYzMmpuWTg0VUhZUkltaXl
5OEE6MQ<strong><span style="color:#ff0000;">&amp;entry.0.single=</span><span style="color:#333399;">Testing+GET+form+submission</span></strong></pre>
<p>Basically, to the URL, you append an &#8220;ampersand symbol&#8221;, name of the field e.g. &#8220;entry.0.single&#8221;, an &#8220;equals sign&#8221; and finally a message. Remember that a text in a URL has to be properly encoded e.g. spaces are turned into a &#8220;+&#8221; or &#8220;%20&#8243;, a browser will do it for you.<br />
If you check your spreadsheet now, you should see the message:</p>
<p><a href="http://stawecki.files.wordpress.com/2012/02/screen-shot-2011-01-20-at-23-01-37.png"><img class="aligncenter size-full wp-image-302" title="Screen-shot-2011-01-20-at-23.01.37" src="http://stawecki.files.wordpress.com/2012/02/screen-shot-2011-01-20-at-23-01-37.png?w=550" alt=""   /></a></p>
<p>Now I will show two methods for mixing this up with your website or service: sever side and client side.</p>
<h2>2a. Submitting an event &#8211; Server side</h2>
<p>I&#8217;m going to show the server side method first, since it&#8217;s really the best way to do it. If you can you should avoid exposing tricks like this, primarily because it&#8217;s easy to recover your form URL from a piece of a publicly available JavaScript, which means somebody might play a nasty trick on you and post some trash into your spreadsheet. On the other hand, if you do it through JavaScript, the user can decide not to be tracked by turning JavaScript off. Here are some examples of a server-side post.</p>
<p>In <strong>PHP</strong> there are several ways of fetching a URL, this is an example of posting a search query made by user. You can put this code in your index.php and it won&#8217;t be called unless parameter &#8220;s&#8221; is passed. Change it to the parameter name you are using for search or page name, or put a different version of the fetch in different files and provide a predefined event description string.</p>
<pre class="brush: php; title: ; notranslate">
if (isset($_GET['s']))
file_get_contents(
'https://spreadsheets.google.com/formResponse?formkey=dDVCMlYzMmpuWTg0VUhZUkltaXl5OEE6MQ'.
'&amp;entry.0.single=' . urlencode($_GET['s']) );
</pre>
<p><strong>Java</strong>: (works also on App Engine)</p>
<pre class="brush: java; title: ; notranslate">

public class ExampleServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse resp)
			throws IOException {
		resp.setContentType(&quot;text/plain&quot;);
		if (request.getParameter(&quot;search&quot;) != null &amp;&amp;
			!request.getParameter(&quot;search&quot;).trim().equals(&quot;&quot;) )
			ExampleServlet.touchURL(
		&quot;https://spreadsheets.google.com/formResponse?formkey=&quot;+
		&quot;dDVCMlYzMmpuWTg0VUhZUkltaXl5OEE6MQ&amp;entry.0.single=&quot;+
		URLEncoder.encode( request.getParameter(&quot;search&quot;) , &quot;UTF-8&quot;) );
	}

	   public static void touchURL(String address) {
	    	  try {
	              URL url = new URL(address);
	              url.openConnection().getInputStream().close();
	          } catch (Exception e) {
	        	  e.printStackTrace();
	          }
	    }
      }
</pre>
<h2>2b. Submitting an event &#8211; Client side</h2>
<p>If you&#8217;re not lucky enough to be able to modify your backend code e.g. your using Shopify or similar, but you have access to the site&#8217;s templates and you can put in some JavaScript, you can still submit an event. Here&#8217;s how you do it in JS:</p>
<pre class="brush: jscript; title: ; notranslate">

(function() {
var paramsplit = location.href.split('s=');
if (paramsplit.length &gt; 1) {
var keyword = paramsplit[1].split('&amp;')[0];
var ka = document.createElement('script'); ka.type = 'text/javascript';
ka.src =
'https://spreadsheets.google.com/formResponse?formkey='+
'dDVCMlYzMmpuWTg0VUhZUkltaXl5OEE6MQ&amp;entry.0.single='
+ keyword;
var ks = document.getElementsByTagName('script')[0];
ks.parentNode.insertBefore(ka, ks);
}
})();

</pre>
<p>The script above performs a string split looking for parameter &#8220;s=&#8221;, which in my case is the search query parameter. If there is none, there will only be one element in the array &#8211; the location url itself and the rest of the script will not be executed. Otherwise, another split will separate the keyword from other parameters and the URL to the spreadsheet form will be fetched like an external script file.<br />
This method has some pitfalls. First of all, anyone can see this code and start sending some trash or fake data. It&#8217;s also not very clean, because it causes a JavasScript parse error. The browser basically tries to execute the fetched HTML Form code as JavaScript. In order to avoid this you can deploy a simple Google App Engine application or a PHP script somewhere that fetches the URL but ignores the content and provide the URL to this application instead of the Form URL. You can use the Java example from before.<br />
<strong>Update:</strong> you can also retrieve it as a valid response by calling the form through Yahoo Pipes! Check out my next article on how to do that. Great if you&#8217;re expecting a lot of form submissions but don&#8217;t want to host it <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
To hide your code you can try tools like <a href="http://www.javascriptobfuscator.com/" rel="nofollow">http://www.javascriptobfuscator.com/</a> , but currently there isn&#8217;t a 100% secure method of doing this, that&#8217;s why server-side submission is the best option.</p>
<h2>3. Reviewing collected data</h2>
<p>Let&#8217;s get back to the spreadsheet now. Of course, we can just observe the events here just as they are, but there is just one more trick I will reveal <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Go do a different cell e.g. D2 and try a sorting formula:<br />
<strong>=Sort(A1:B1000, A1:A1000, FALSE)</strong><br />
This will sort the whole data set based only on the date. The last attribute is FALSE which means it will be descending sort. This way you don&#8217;t need to scroll down to see the newest events.<br />
You can also publish the top of the sorted data set as an RSS feed, by going to the Share menu, &#8220;Publish as a web page&#8221;. Set automatic publishing (unfortunately far from real-time ;/ ) and generate a link in the appropriate format to your sorted data set in cells e.g. D3:E15. You can use tools like <a href="http://twitterfeed.com/" rel="nofollow">http://twitterfeed.com/</a> to link it to your Twitter notification account!</p>
<h2>4. Use cases</h2>
<p>I started off with a simple use case of event logging on websites, but there are many other ways in which you can use Forms. You can do any type of logging information: from servers, mobile devices, receiving errors with stack traces, receiving other server notifications, keeping a simple backup database. First off, a lot of you might say: this is ridiculous! you don&#8217;t use forms for suff like this! You use specialised analytics and loggers etc. That&#8217;s true, but still the beauty of Forms is it&#8217;s simplicity. You can very quickly deploy any kind of logging or tracking and see, if it&#8217;s even worth going further. So, before you spend hours implementing a cool fast real time notification system for your platform, see what kind of data you might get by taking Forms for a spin.<br />
And that&#8217;s it for now. Next time i&#8217;ll show how to deploy a dedicated real-time event tracking application.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stawecki.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stawecki.wordpress.com/81/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stawecki.com&#038;blog=33218438&#038;post=81&#038;subd=stawecki&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stawecki.com/2011/01/24/cheap-and-easy-event-hooks-using-google-spreadsheet-forms-event-tracking/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/caf6df5e845800096599b781ed79dcea?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mstawecki</media:title>
		</media:content>

		<media:content url="http://stawecki.files.wordpress.com/2012/02/screen-shot-2011-01-20-at-21-10-19.png" medium="image">
			<media:title type="html">Screen-shot-2011-01-20-at-21.10.19</media:title>
		</media:content>

		<media:content url="http://stawecki.files.wordpress.com/2012/02/screen-shot-2011-01-20-at-23-01-37.png" medium="image">
			<media:title type="html">Screen-shot-2011-01-20-at-23.01.37</media:title>
		</media:content>
	</item>
		<item>
		<title>[Project] tweetsplash.com</title>
		<link>http://stawecki.com/2010/11/23/tweet-splash-com-twitter-client/</link>
		<comments>http://stawecki.com/2010/11/23/tweet-splash-com-twitter-client/#comments</comments>
		<pubDate>Tue, 23 Nov 2010 01:28:10 +0000</pubDate>
		<dc:creator>mstawecki</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Tech Log]]></category>

		<guid isPermaLink="false">http://www.stawecki.com/?p=64</guid>
		<description><![CDATA[Name: Tweet Splash Motto: Make a splash for your event, conference, presentation, gathering&#8230; Link: http://tweetsplash.com/ Summary: JavaScript based Twitter client&#8230;<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stawecki.com&#038;blog=33218438&#038;post=64&#038;subd=stawecki&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><strong>Name:</strong> <em>Tweet Splash</em><br />
<strong>Motto: </strong><em>Make a splash for your event, conference, presentation, gathering&#8230;</em></p>
<p><em><strong>Link:</strong> </em><em><a href="http://tweetsplash.com/" target="_blank">http://tweetsplash.com/</a></em></p>
<p><strong>Summary:</strong><br />
JavaScript based Twitter client for real time Twitter search, easily configured for any event. The purpose of this program is to quickly deliver a &#8220;splash screen&#8221; on a monitor or projector that will engage event participants into a discussion on twitter.<br />
Tweet Splash is also a YouTube API, Google Mobilizer mashup.</p>
<p>Everything is embedded in one file, easy to customise, great for playing around with Twitter Search API.</p>
<p><a href="http://stawecki.files.wordpress.com/2012/02/tweetsplashcom.png"><img src="http://stawecki.files.wordpress.com/2012/02/tweetsplashcom.png?w=550" alt="" title="tweetsplashcom"   class="aligncenter size-full wp-image-308" /></a></p>
<p><strong>Features:</strong><br />
- Link preview<br />
- Remote YouTube jukebox<br />
- Polls from tweets</p>
<p><strong>Coming soon:</strong><br />
- URL Handler<br />
- Html5 Local Storage for configuration</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stawecki.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stawecki.wordpress.com/64/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stawecki.com&#038;blog=33218438&#038;post=64&#038;subd=stawecki&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stawecki.com/2010/11/23/tweet-splash-com-twitter-client/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/caf6df5e845800096599b781ed79dcea?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mstawecki</media:title>
		</media:content>

		<media:content url="http://stawecki.files.wordpress.com/2012/02/tweetsplashcom.png" medium="image">
			<media:title type="html">tweetsplashcom</media:title>
		</media:content>
	</item>
	</channel>
</rss>
