<?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>Bubble Foundry</title>
	<atom:link href="http://www.bubblefoundry.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bubblefoundry.com</link>
	<description></description>
	<lastBuildDate>Fri, 03 Feb 2012 14:10:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<atom:link rel='hub' href='http://www.bubblefoundry.com/?pushpress=hub'/>
		<item>
		<title>A Mobile Tablet Interface</title>
		<link>http://www.bubblefoundry.com/blog/2012/02/a-mobile-tablet-interface/</link>
		<comments>http://www.bubblefoundry.com/blog/2012/02/a-mobile-tablet-interface/#comments</comments>
		<pubDate>Fri, 03 Feb 2012 14:10:33 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[payments]]></category>
		<category><![CDATA[pitch]]></category>
		<category><![CDATA[tablet]]></category>
		<category><![CDATA[UX]]></category>

		<guid isPermaLink="false">http://www.bubblefoundry.com/?p=874</guid>
		<description><![CDATA[Recently I developed with Alexander Zeh an interface for an Android tablet app for the agents in an African mobile payment network. It was a pitch for the company, and while we weren&#8217;t selected we&#8217;re quite happy with our work and decided to share it with you. You can find our designs and analysis at http://bubblefoundry.com/tabletinterface/.]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://bubblefoundry.com/tabletinterface/"><img class="aligncenter" title="Wireframe" src="http://bubblefoundry.com/tabletinterface/wireframes/W5.png" alt="" width="600" /></a></p>
<p>Recently I developed with <a href="http://www.alexanderzeh.me">Alexander Zeh</a> an interface for an Android tablet app for the agents in an African mobile payment network. It was a pitch for the company, and while we weren&#8217;t selected we&#8217;re quite happy with our work and decided to share it with you. You can find our designs and analysis at <a href="http://bubblefoundry.com/tabletinterface/">http://bubblefoundry.com/tabletinterface/</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bubblefoundry.com/blog/2012/02/a-mobile-tablet-interface/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to get enumerations when using Scala&#8217;s parser combinators</title>
		<link>http://www.bubblefoundry.com/blog/2012/01/how-to-get-enumerations-when-using-scalas-parser-combinators/</link>
		<comments>http://www.bubblefoundry.com/blog/2012/01/how-to-get-enumerations-when-using-scalas-parser-combinators/#comments</comments>
		<pubDate>Mon, 23 Jan 2012 16:58:22 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[parser combinators]]></category>
		<category><![CDATA[Scala]]></category>

		<guid isPermaLink="false">http://www.bubblefoundry.com/?p=872</guid>
		<description><![CDATA[This took me a while to figure out, so I figure it&#8217;s worth sharing here. In the end it&#8217;s quite simple thanks to Parser&#8217;s ^? method, but it took me a while to figure out:]]></description>
			<content:encoded><![CDATA[<p>This took me a while to figure out, so I figure it&#8217;s worth sharing here. In the end it&#8217;s quite simple thanks to <a href="http://www.scala-lang.org/api/current/scala/util/parsing/combinator/Parsers$Parser.html">Parser&#8217;s ^? method</a>, but it took me a while to figure out:</p>
<p><script src="https://gist.github.com/1664232.js?file=gistfile1.scala"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bubblefoundry.com/blog/2012/01/how-to-get-enumerations-when-using-scalas-parser-combinators/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>gitback</title>
		<link>http://www.bubblefoundry.com/blog/2012/01/gitback/</link>
		<comments>http://www.bubblefoundry.com/blog/2012/01/gitback/#comments</comments>
		<pubDate>Fri, 06 Jan 2012 02:46:14 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[Dropbox]]></category>
		<category><![CDATA[GitHub]]></category>

		<guid isPermaLink="false">http://www.bubblefoundry.com/?p=870</guid>
		<description><![CDATA[Feargal had a good suggestion in response to my complaint that private repos on GitHub were too expensive, which was download old repos to Dropbox and then delete them from GitHub to make room for active ones. To do this I wrote gitback today. Enjoy.]]></description>
			<content:encoded><![CDATA[<p>Feargal had a <a href="http://www.bubblefoundry.com/blog/2011/12/archiving-old-git-repositories-or-github-is-too-expensive/#comment-14549">good suggestion</a> in response to <a href="http://www.bubblefoundry.com/blog/2011/12/archiving-old-git-repositories-or-github-is-too-expensive/">my complaint</a> that private repos on GitHub were too expensive, which was download old repos to Dropbox and then delete them from GitHub to make room for active ones. To do this I wrote <a href="https://github.com/pr1001/gitback">gitback</a> today. Enjoy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bubblefoundry.com/blog/2012/01/gitback/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tips for merging a Git repository into an SVN one</title>
		<link>http://www.bubblefoundry.com/blog/2011/12/tips-for-merging-a-git-repository-into-an-svn-one/</link>
		<comments>http://www.bubblefoundry.com/blog/2011/12/tips-for-merging-a-git-repository-into-an-svn-one/#comments</comments>
		<pubDate>Thu, 22 Dec 2011 00:14:30 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[git-svn]]></category>
		<category><![CDATA[Subversion]]></category>

		<guid isPermaLink="false">http://www.bubblefoundry.com/?p=866</guid>
		<description><![CDATA[Recently I finished a project that I&#8217;ve been working on and wanted to delivery it to the client. Unfortunately, I&#8217;ve been using Git, while they wanted me to commit the code into their monolithic Subversion repository. Of course the easiest thing would be to simply commit an export of the project into a new directory, [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I finished a project that I&#8217;ve been working on and wanted to delivery it to the client. Unfortunately, I&#8217;ve been using Git, while they wanted me to commit the code into their monolithic Subversion repository. Of course the easiest thing would be to simply commit an export of the project into a new directory, but that would involve losing a lot of important information contained in the commits and their commit messages.</p>
<p>The solution, then, is some git-svn magic. I found most of the tips in <a href="http://codeschmie.de/archives/302-Importing-a-git-repository-into-subversion.html">one helpful article</a>, but I still had enough gotchas that I figure it&#8217;s worth outlining my process here.</p>
<p>I&#8217;m assuming standard branch, tag, trunk organization for both the git and svn repos. We&#8217;re going to be working in a directory that initially only contains the git-tracked code in a subdirectory called <code>repo</code>.</p>
<ol>
<ol>
<ol>
<li>Move all files in your git repo into the desired subdirectory:

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> repo
<span style="color: #c20cb9; font-weight: bold;">git</span> <span style="color: #c20cb9; font-weight: bold;">mv</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>all files<span style="color: #7a0874; font-weight: bold;">&#93;</span> myproject</pre></div></div>

<p>What I&#8217;m doing here is preparing my code for life in the monolithic svn repo, where we&#8217;ll want it under a subdirectory, here named <code>myproject</code>.</li>
<li>Clone the trunk of the svn repo:

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> ..
<span style="color: #c20cb9; font-weight: bold;">git</span> <span style="color: #c20cb9; font-weight: bold;">svn</span> clone <span style="color: #c20cb9; font-weight: bold;">svn</span>:<span style="color: #000000; font-weight: bold;">//</span>server<span style="color: #000000; font-weight: bold;">/</span>repo<span style="color: #000000; font-weight: bold;">/</span>trunk repo-remote</pre></div></div>

<p>Here I&#8217;m cloning the trunk of the svn repo into a git-svn repo called <code>repo-remote</code>.</li>
<li>Fetch the git repo into the git-svn one:

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> repo-remote
<span style="color: #c20cb9; font-weight: bold;">git</span> fetch ..<span style="color: #000000; font-weight: bold;">/</span>repo</pre></div></div>

</li>
<li>Then go to the new tree and make it into a branch:

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git</span> checkout FETCH_HEAD
<span style="color: #c20cb9; font-weight: bold;">git</span> branch tomergeTEMP
<span style="color: #c20cb9; font-weight: bold;">git</span> checkout master</pre></div></div>

</li>
<li>Now we&#8217;re going get the SHA1 hashes needed to graft the two trees:

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git</span> rev-list <span style="color: #660033;">--reverse</span> FETCH_HEAD  <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">head</span> <span style="color: #660033;">-n</span> <span style="color: #000000;">1</span>
<span style="color: #c20cb9; font-weight: bold;">git</span> rev-list <span style="color: #660033;">--reverse</span> HEAD  <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">head</span> <span style="color: #660033;">-n</span> <span style="color: #000000;">1</span></pre></div></div>

<p>Let&#8217;s call the first hash <code>repo-SHA1</code> and the second <code>repo-remote-SHA1</code>.</li>
<li>Put those into a graft file for git-svn to use:

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">echo</span> repo-SHA1 repo-remote-SHA1 <span style="color: #000000; font-weight: bold;">&amp;</span>gt; .git<span style="color: #000000; font-weight: bold;">/</span>info<span style="color: #000000; font-weight: bold;">/</span>grafts</pre></div></div>

</li>
<li>Rebase the git-svn repo:

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git</span> rebase tomergeTEMP</pre></div></div>

</li>
<li>Now do a dcommit dry run:

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git</span> <span style="color: #c20cb9; font-weight: bold;">svn</span> dcommit <span style="color: #660033;">--dry-run</span></pre></div></div>

<p>You&#8217;ll get a bunch of lines that look like:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">Committing to <span style="color: #c20cb9; font-weight: bold;">svn</span>:<span style="color: #000000; font-weight: bold;">//</span>server<span style="color: #000000; font-weight: bold;">/</span>repo<span style="color: #000000; font-weight: bold;">/</span>trunk ...
diff-tree hashA~<span style="color: #000000;">1</span> hashA
diff-tree hashB~<span style="color: #000000;">1</span> hashB</pre></div></div>

<p>All the articles just give the line above and say to check the patches, but how do you actually check them? It turns out it&#8217;s quite simple:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git</span> diff-tree hashA~<span style="color: #000000;">1</span> hashA <span style="color: #660033;">-u</span></pre></div></div>

<p>This will give you the patch that will be applied. (I&#8217;m not sure whether the <code>-u</code> is useful.)</li>
<li>Finally, commit:

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git</span> <span style="color: #c20cb9; font-weight: bold;">svn</span> dcommit</pre></div></div>

<p>It should go through and commit to the svn repo each git commit.</li>
</ol>
</ol>
</ol>
<p>When it&#8217;s finished the code from your git repo should be in <code>svn://server/repo/trunk/myproject</code>.</p>
<p>However, I had a few hiccups. First, I got a merge conflict on one of my commits.<sup><a href="http://www.bubblefoundry.com/blog/2011/12/tips-for-merging-a-git-repository-into-an-svn-one/#footnote_0_866" id="identifier_0_866" class="footnote-link footnote-identifier-link" title="Which is bizarre considering that I successfully committed it earlier.">1</a></sup> I resolved it like so:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git</span> mergetool
<span style="color: #c20cb9; font-weight: bold;">git</span> add <span style="color: #7a0874; font-weight: bold;">&#91;</span>corrected files<span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #c20cb9; font-weight: bold;">git</span> rebase <span style="color: #660033;">--continue</span>
<span style="color: #c20cb9; font-weight: bold;">git</span> <span style="color: #c20cb9; font-weight: bold;">svn</span> dcommit</pre></div></div>

<p>You&#8217;ll notice that not only did I have to continue the rebase operation that <code>git svn dcommit</code> had called internally, but I actually had to call <code>git svn dcommit</code> again.</p>
<p>Second, I had some unnecessary folders because I had moved my files in and out of some folders (hopefully you won&#8217;t have this problem because you followed my first two steps). Rather than try to remove the unncessary folders using my git-svn repo, I checked out a new working copying via svn:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> ..<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">svn</span> <span style="color: #c20cb9; font-weight: bold;">co</span> <span style="color: #c20cb9; font-weight: bold;">svn</span>:<span style="color: #000000; font-weight: bold;">//</span>server<span style="color: #000000; font-weight: bold;">/</span>repo<span style="color: #000000; font-weight: bold;">/</span>trunk repo-svn
<span style="color: #7a0874; font-weight: bold;">cd</span> repo-svn
<span style="color: #c20cb9; font-weight: bold;">svn</span> <span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>extraneous <span style="color: #7a0874; font-weight: bold;">dirs</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #c20cb9; font-weight: bold;">svn</span> commit <span style="color: #660033;">-m</span> <span style="color: #ff0000;">&quot;Remove directories incorrectly left by git-svn&quot;</span></pre></div></div>

<p lang="bash">And there you go. Hope that helps!</p>
<ol class="footnotes"><li id="footnote_0_866" class="footnote">Which is bizarre considering that I successfully committed it earlier.</li></ol>]]></content:encoded>
			<wfw:commentRss>http://www.bubblefoundry.com/blog/2011/12/tips-for-merging-a-git-repository-into-an-svn-one/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Archiving Old Git Repositories, Or GitHub Is Too Expensive</title>
		<link>http://www.bubblefoundry.com/blog/2011/12/archiving-old-git-repositories-or-github-is-too-expensive/</link>
		<comments>http://www.bubblefoundry.com/blog/2011/12/archiving-old-git-repositories-or-github-is-too-expensive/#comments</comments>
		<pubDate>Thu, 15 Dec 2011 10:41:17 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[GitHub]]></category>

		<guid isPermaLink="false">http://www.bubblefoundry.com/?p=862</guid>
		<description><![CDATA[I think I&#8217;m not alone in having many Git repositories, many of them I don&#8217;t currently use because they&#8217;re from old projects. However, I don&#8217;t want to delete them because I might want to refer back to one of them or make a change (which I&#8217;m doing right now for a three year old project). [...]]]></description>
			<content:encoded><![CDATA[<p>I think I&#8217;m not alone in having many Git repositories, many of them I don&#8217;t currently use because they&#8217;re from old projects. However, I don&#8217;t want to delete them because I might want to refer back to one of them or make a change (which I&#8217;m doing right now for a three year old project). I absolutely love GitHub but their pricing is very unfriendly for people like me. Consider this:</p>
<p style="text-align: center;"><a href="http://www.bubblefoundry.com/files/2011/12/Screen-Shot-2011-12-15-at-11.23.44-AM.png"><img class="aligncenter  wp-image-863" title="Screen Shot 2011-12-15 at 11.23.44 AM" src="http://www.bubblefoundry.com/files/2011/12/Screen-Shot-2011-12-15-at-11.23.44-AM.png" alt="" width="500" /></a></p>
<p style="text-align: left;">I&#8217;m using 10 of the 10 private repositories under the Bronze plan, yet barely using any disk space. I have another maybe 15-20 repositories of old projects I&#8217;d love to add to GitHub, but upgrading to the level necessary to allow that would cost me $100 a month! That&#8217;s way too much for me as an independent developer!</p>
<p style="text-align: left;"><a href="http://unfuddle.com/">Unfuddle</a>, where I used to store my private repositories until I started paying for GitHub in August, had a more friendly limit but also allowed archiving, where archived projects didn&#8217;t count against your main limit. At the same time, they could still be restored into normal projects. Great! Unfortunately in every other way GitHub is superior&#8230;</p>
<p style="text-align: left;">So what&#8217;s the solution? Well, I first emailed GitHub to see if I could just buy more private repositories. No dice. If I want to avoid ballooning numbers of projects but stay on GitHub, I could try moving all my old projects into one archive repo. This sounds ugly – my first thought was doing it via submodules – though Eelco had the good idea of using headless branches for each project. Unfortunately this still strikes me as a hack.</p>
<p style="text-align: left;">So I fear I may need to host my old repos on another server. There are lots of other supplies with better private repository pricing, or I might just setup the repos on my own server. Thoughts?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bubblefoundry.com/blog/2011/12/archiving-old-git-repositories-or-github-is-too-expensive/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>AMEN!</title>
		<link>http://www.bubblefoundry.com/blog/2011/12/amen/</link>
		<comments>http://www.bubblefoundry.com/blog/2011/12/amen/#comments</comments>
		<pubDate>Sun, 11 Dec 2011 20:26:16 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[passwords]]></category>

		<guid isPermaLink="false">http://www.bubblefoundry.com/?p=859</guid>
		<description><![CDATA[On the subject of passwords: F*&#38;K PASSWORDS. Great, great blog post.]]></description>
			<content:encoded><![CDATA[<p>On the <a href="http://www.bubblefoundry.com/blog/2011/01/password-fields/">subject of passwords</a>: <a href="http://me.veekun.com/blog/2011/12/04/fuck-passwords/">F*&amp;K PASSWORDS</a>. Great, great blog post.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bubblefoundry.com/blog/2011/12/amen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tropo is broken</title>
		<link>http://www.bubblefoundry.com/blog/2011/12/tropo-is-broken/</link>
		<comments>http://www.bubblefoundry.com/blog/2011/12/tropo-is-broken/#comments</comments>
		<pubDate>Sat, 10 Dec 2011 00:03:55 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[API design]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[SMS]]></category>
		<category><![CDATA[Tropo]]></category>

		<guid isPermaLink="false">http://www.bubblefoundry.com/?p=848</guid>
		<description><![CDATA[Oh. my. god. What a giant disaster. I&#8217;ve been raving about how awesome Tropo is at handling SMSes to everyone I talk to, but no more. Tropo expects EVERY interaction to be the in the form of a response to a request that they&#8217;ve POSTed to your API endpoint. Everything is part of a session [...]]]></description>
			<content:encoded><![CDATA[<p>Oh. my. god. What a giant disaster.</p>
<p>I&#8217;ve been raving about how awesome <a href="http://www.tropo.com">Tropo</a> is at handling SMSes to everyone I talk to, but no more. Tropo expects <strong>EVERY</strong> interaction to be the in the form of a response to a request that they&#8217;ve POSTed to your API endpoint.</p>
<p>Everything is part of a session <strong>THROUGH THEIR SERVER AND BACK TO YOUR CALLBACK URL</strong>. Want to send an SMS? First you need to create a session. Consider the <a href="https://github.com/tropo/tropo-webapi-java">Java library</a> (in Scala):</p>

<div class="wp_syntax"><div class="code"><pre class="scala" style="font-family:monospace;"><span style="color: #0000ff; font-weight: bold;">val</span> result <span style="color: #000080;">=</span> api.<span style="color: #000000;">launchSession</span><span style="color: #F78811;">&#40;</span>token<span style="color: #F78811;">&#41;</span>
<span style="color: #0000ff; font-weight: bold;">if</span> <span style="color: #F78811;">&#40;</span>result.<span style="color: #000000;">getSuccess</span><span style="color: #F78811;">&#41;</span> <span style="color: #F78811;">&#123;</span>
  api.<span style="color: #000000;">message</span><span style="color: #F78811;">&#40;</span>...<span style="color: #F78811;">&#41;</span>
  ...
<span style="color: #F78811;">&#125;</span></pre></div></div>

<p>All valid, type-safe code. <code><a href="https://github.com/tropo/tropo-webapi-java/blob/master/src/main/java/com/voxeo/tropo/Tropo.java#L291">launchSession()</a></code> returns a TropoLaunchResult, which indicates whether the session was successfully created and, if so, its session id. </p>
<p>We can work with this, right? WRONG! As part of the session creation Tropo will throw a session creation object at your callback URL:</p>
<pre>
00020	0000	11:22:41 PM   	ApplicationInstance[http://miogiro.pr1001.cloudbees.net/tropo.json , sas_2-15-sm1778xfp7g8g0dtropo] starts execution on Thread Tropo-Thread-3899e36f1ad7650f2848c3ac12332b96
00021	0000	11:22:41 PM   	Thread Tropo-Thread-3899e36f1ad7650f2848c3ac12332b96 acquired engine com.tropo.rest.engine.TropoScriptEngine@78ded0e7 of type tropo-web, activeEngines = 4
00022	0000	11:22:41 PM   	Sending TropoML Payload on Tropo-Thread-3899e36f1ad7650f2848c3ac12332b96 [url=http://miogiro.pr1001.cloudbees.net/tropo.json]: {"session":{"id":"3899e36f1ad7650f2848c3ac12332b96","accountId":"notsharing","timestamp":"2011-12-09T23:22:41.612Z","userType":"NONE","initialText":null,"callId":null,"parameters":{"token":"notsharing","action":"create"}}}
00023	0000	11:22:41 PM   	Received non-2XX status code on Tropo-Thread-3899e36f1ad7650f2848c3ac12332b96 [url=http://miogiro.pr1001.cloudbees.net/tropo.json, code=500]
00024	0000	11:22:41 PM   	Thread Tropo-Thread-3899e36f1ad7650f2848c3ac12332b96 returned engine com.tropo.rest.engine.TropoScriptEngine@78ded0e7 of type tropo-web, activeEngines = 3
00025	0000	11:22:41 PM   	ApplicationInstance[http://miogiro.pr1001.cloudbees.net/tropo.json , sas_2-15-sm1778xfp7g8g0dtropo] ends execution on Thread Tropo-Thread-3899e36f1ad7650f2848c3ac12332b96
00026	0000	11:22:41 PM   	sas_2-15-sm1778xfp7g8g0dtropo invalidated
00027	0000	11:22:41 PM   	Instance 3899e36f1ad7650f2848c3ac12332b96 removed
</pre>
<p>See what&#8217;s happening? If you fail to handle it and return a 200 status code (and a Tropo JSON verb?) it kills the session, never mind that I have no need for that. That means it&#8217;s literally impossible to send an SMS without a server setup to receive callback messages from Tropo. Oh, and of course you can only specify one URL: you&#8217;re supposed to route all the different requests based upon <a href="https://www.tropo.com/docs/webapi/passing_in_parameters_text.htm">extra parameters you stick in the session creation requests</a>.</p>
<p>It literally boggles the mind how someone could have thought this was a good idea.</p>
<p>Tropo, if you want to fix this and need help send me an email at <a href="mailto:peter@bubblefoundry.com">peter@bubblefoundry.com</a>. Tropo competitors, if you have a sane API to send SMS messages and callbacks to response to received messages (bonus points for a Scala or even Java library) and provide UK numbers that can handle both inbound and outbound SMS, feel free also to email me at <a href="mailto:peter@bubblefoundry.com">peter@bubblefoundry.com</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bubblefoundry.com/blog/2011/12/tropo-is-broken/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Because I needed it</title>
		<link>http://www.bubblefoundry.com/blog/2011/12/because-i-needed-it/</link>
		<comments>http://www.bubblefoundry.com/blog/2011/12/because-i-needed-it/#comments</comments>
		<pubDate>Mon, 05 Dec 2011 16:29:25 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Foursquare]]></category>
		<category><![CDATA[glanceable display]]></category>

		<guid isPermaLink="false">http://www.bubblefoundry.com/?p=843</guid>
		<description><![CDATA[A story in pictures&#8230; The whole thing took maybe 45 minutes thanks to Foursquare and the php-foursquare library. Probably one of the best examples of the joy and power being able to program gives you.]]></description>
			<content:encoded><![CDATA[<p>A story in pictures&#8230;</p>
<p style="text-align: center;"><a href="https://twitter.com/#!/pr1001/status/143725786736762881"><img class="aligncenter size-full wp-image-844" title="Screen Shot 2011-12-05 at 5.23.31 PM" src="http://www.bubblefoundry.com/files/2011/12/Screen-Shot-2011-12-05-at-5.23.31-PM.png" alt="" width="500" /></a></p>
<p style="text-align: center;"><a href="https://twitter.com/#!/alper/status/143726709651406850"><img class="aligncenter size-full wp-image-845" title="Screen Shot 2011-12-05 at 5.23.44 PM" src="http://www.bubblefoundry.com/files/2011/12/Screen-Shot-2011-12-05-at-5.23.44-PM.png" alt="" width="500" /></a></p>
<p style="text-align: center;"><a href="http://labs.bubblefoundry.com/wheresalper/"><img class="aligncenter size-full wp-image-846" title="Screen Shot 2011-12-05 at 5.24.00 PM" src="http://www.bubblefoundry.com/files/2011/12/Screen-Shot-2011-12-05-at-5.24.00-PM.png" alt="" width="500" /></a></p>
<p style="text-align: left;">The whole thing took maybe 45 minutes thanks to <a href="http://www.foursquare.com">Foursquare</a> and the <a href="https://github.com/stephenyoung/php-foursquare">php-foursquare</a> library. Probably one of the best examples of the joy and power being able to program gives you.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bubblefoundry.com/blog/2011/12/because-i-needed-it/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Is it possible to read on a news site?</title>
		<link>http://www.bubblefoundry.com/blog/2011/12/is-it-possible-to-read-on-a-news-site/</link>
		<comments>http://www.bubblefoundry.com/blog/2011/12/is-it-possible-to-read-on-a-news-site/#comments</comments>
		<pubDate>Sun, 04 Dec 2011 02:24:56 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://www.bubblefoundry.com/?p=822</guid>
		<description><![CDATA[Last week I had a rather good bon mot, if I may say so: Not surprisingly, I&#8217;m not alone in thinking that it&#8217;s impossible to read text online. While I&#8217;m not a designer, let alone one with his chops, let me try to pull a Dustin Curtis. Consider an article on the BBC site: I [...]]]></description>
			<content:encoded><![CDATA[<p>Last week I had a rather good <em>bon mot</em>, if I may say so:</p>
<p style="text-align: center;"><a href="https://twitter.com/#!/pr1001/status/139040180651831296"><img class="aligncenter size-full wp-image-834" title="Screen Shot 2011-12-04 at 2.49.59 AM" src="http://www.bubblefoundry.com/files/2011/12/Screen-Shot-2011-12-04-at-2.49.59-AM.png" alt="" width="500" /></a></p>
<p>Not surprisingly, I&#8217;m <a href="http://inessential.com/2011/11/22/the_pummeling_pages">not alone in thinking</a> that it&#8217;s impossible to <a href="http://www.readability.com/">read</a> <a href="http://www.instapaper.com">text</a> online.</p>
<p>While I&#8217;m not a designer, let alone one with his chops, let me try to pull a <a href="http://www.dustincurtis.com/dear_american_airlines.html">Dustin Curtis</a>. Consider an <a href="http://www.bbc.co.uk/news/business-15964306">article</a> on the BBC site:</p>
<p style="text-align: center;"><a href="http://www.bubblefoundry.com/files/2011/12/Screen-Shot-2011-11-30-at-9.28.02-PM.png"><img class="aligncenter size-full wp-image-823" title="BBC Version" src="http://www.bubblefoundry.com/files/2011/12/Screen-Shot-2011-11-30-at-9.28.02-PM.png" alt="" width="500" /></a></p>
<p>I find that I like to read farther away from the screen these days and like large type. So, I decided to <a href="http://www.instapaper.com/text?u=http%3A%2F%2Fwww.bbc.co.uk%2Fnews%2Fbusiness-15964306">read the article</a> using the <a href="http://www.instapaper.com/text">Instapaper Text bookmarklet</a>.</p>
<p style="text-align: center;"><a href="http://www.bubblefoundry.com/files/2011/12/Screen-Shot-2011-11-30-at-9.28.05-PM.png"><img class="aligncenter size-full wp-image-824" title="Instapaper Text Version" src="http://www.bubblefoundry.com/files/2011/12/Screen-Shot-2011-11-30-at-9.28.05-PM.png" alt="" width="500" /></a></p>
<p>Isn&#8217;t that better?</p>
<p>Well, yes of course, it&#8217;s <a href="http://www.urbandictionary.com/define.php?term=streets+ahead">streets ahead</a> for me the reader. But you can barely tell that it&#8217;s from the BBC. The Corporation isn&#8217;t going to like that, yet alone that I, a non-license fee paying foreigner, am not seeing their ads. Maybe we can find a happy medium:</p>
<p style="text-align: center;"><a href="http://www.bubblefoundry.com/files/2011/12/pimped.png"><img class="aligncenter size-full wp-image-838" title="pimped" src="http://www.bubblefoundry.com/files/2011/12/pimped.png" alt="" width="500" /></a></p>
<p style="text-align: left;">It&#8217;s a basic cut-and-paste hack job but I think it gets the job done. The key thing is that it gives the text the entire large center column, while the section links and ad units are relegated to the left and right columns that essentially look like a background layer behind the main, article layer. So yes, they&#8217;re de-emphasized but, unlike the Instpaper version, they&#8217;re still there. If you run the BBC wouldn&#8217;t you prefer that?</p>
<p style="text-align: center;">
]]></content:encoded>
			<wfw:commentRss>http://www.bubblefoundry.com/blog/2011/12/is-it-possible-to-read-on-a-news-site/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Handcrafted Curated Selection of Handcrafted Curated Selections of Products Sites</title>
		<link>http://www.bubblefoundry.com/blog/2011/12/a-handcrafted-curated-selection-of-handcrafted-curated-selections-of-products-sites/</link>
		<comments>http://www.bubblefoundry.com/blog/2011/12/a-handcrafted-curated-selection-of-handcrafted-curated-selections-of-products-sites/#comments</comments>
		<pubDate>Sun, 04 Dec 2011 01:41:25 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[consumerism]]></category>
		<category><![CDATA[startups]]></category>

		<guid isPermaLink="false">http://www.bubblefoundry.com/?p=827</guid>
		<description><![CDATA[As I said the other day: If only recently people were bemoaning that &#8220;the best minds of my generation are thinking about how to make people click ads&#8221; (and they&#8217;re right), then now I&#8217;ve noticed another trend: an explosion new startups, many by friends of mine, selling various &#8216;heritage&#8217;, &#8216;handcrafted&#8217;, etc, etc products that people probably [...]]]></description>
			<content:encoded><![CDATA[<p>As I said the other day:</p>
<p style="text-align: center;"><a href="https://twitter.com/#!/pr1001/status/139027529657880576"><img class="aligncenter wp-image-831" title="Screen Shot 2011-12-04 at 2.46.51 AM" src="http://bubblefoundry.com/files/2011/12/Screen-Shot-2011-12-04-at-2.46.51-AM.png" alt="" width="600" /></a></p>
<p>If only recently people were bemoaning that <a href="http://www.businessweek.com/magazine/content/11_17/b4225060960537.htm">&#8220;the best minds of my generation are thinking about how to make people click ads&#8221;</a> (and they&#8217;re right), then now I&#8217;ve noticed another trend: an explosion new startups, many by friends of mine, selling various &#8216;heritage&#8217;, &#8216;handcrafted&#8217;, etc, etc products that people probably don&#8217;t need or, if they do, hardly at the prices they&#8217;re charging.</p>
<p>I&#8217;m afraid I&#8217;m thinking of you <a href="https://wantful.com/">Wantful</a>, <a href="http://www.everlane.com/">Everlane</a>,  <a href="http://cavalieressentials.com/">Cavalier</a>, <a href="http://www.bestmadeco.com/">Best Made</a> (admittedly around for a few years but still), etc, etc, etc. Heck, we even have <a href="http://astartupstore.com/">A Startup Store</a>! (My friends at <a href="http://gidsy.com/">Gidsy</a> probably get a pass because they&#8217;re focusing on experiences, not products.) Forbes has a recent article on Wantful that <a href="http://www.forbes.com/sites/tomiogeron/2011/11/21/this-black-friday-wantful-says-forget-the-mall-and-forget-gift-cards/">lists a bunch of startups in this vein</a>.</p>
<p>Sorry, friends, I love you but it&#8217;s starting to get ridiculous!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bubblefoundry.com/blog/2011/12/a-handcrafted-curated-selection-of-handcrafted-curated-selections-of-products-sites/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

