<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/rss-style.xsl" type="text/xsl"?>
<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>app.net &#8211; Terence Eden’s Blog</title>
	<atom:link href="https://shkspr.mobi/blog/tag/app-net/feed/" rel="self" type="application/rss+xml" />
	<link>https://shkspr.mobi/blog</link>
	<description>Regular nonsense about tech and its effects 🙃</description>
	<lastBuildDate>Tue, 02 Sep 2025 09:00:23 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://shkspr.mobi/blog/wp-content/uploads/2023/07/cropped-avatar-32x32.jpeg</url>
	<title>app.net &#8211; Terence Eden’s Blog</title>
	<link>https://shkspr.mobi/blog</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title><![CDATA[What Twitter Can Learn From App.net's Developer Incentive Program]]></title>
		<link>https://shkspr.mobi/blog/2012/11/what-twitter-can-learn-from-app-nets-developer-incentive-program/</link>
					<comments>https://shkspr.mobi/blog/2012/11/what-twitter-can-learn-from-app-nets-developer-incentive-program/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sat, 24 Nov 2012 12:00:39 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[adn]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[app.net]]></category>
		<category><![CDATA[appdotnet]]></category>
		<category><![CDATA[twitter]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=6764</guid>

					<description><![CDATA[Twitter makes a lot of money out of me.  At least, I assume so.  The code I helped write, and the sites I run, are used by millions of Tiwtter&#039;s users.  I&#039;ve sent a tonne of traffic their way, and what has Twitter given me?  Not even a &#34;thank you.&#34;  Seriously, no one from Twitter has ever said &#34;Thanks for all the customers. Thanks for helping develop our presence in certain markets. Thanks…]]></description>
										<content:encoded><![CDATA[<p>Twitter makes a lot of money out of me.  At least, I assume so.  The code I helped write, and the sites I run, are used by millions of Tiwtter's users.  I've sent a tonne of traffic their way, and what has Twitter given me?</p>

<p>Not even a "thank you."</p>

<p>Seriously, no one from Twitter has ever said "Thanks for all the customers. Thanks for helping develop our presence in certain markets. Thanks writing tools that keep our users playing on our service.  Thanks!"</p>

<p>Compare and contrast to <a href="https://web.archive.org/web/20121204004224/https://join.app.net/">App.net</a>.  The owners of that service have just written me a cheque for $74.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2012/11/app.net-earnings.png" alt="app.net earnings" title="app.net earnings" width="480" height="580" class="aligncenter size-full wp-image-6767">

<p>I know, I know! I'm not making Zuckerberg money off that. If I'm lucky enough to get that every month, I'll have enough to buy myself a <em>really</em> fancy bottle of wine. But, hey, it's a start.</p>

<p>App.net have hit on a cunning plan to keep developers engaged - as part of their <a href="https://web.archive.org/web/20121201125206/http://blog.app.net/2012/09/27/announcing-the-app-net-developer-incentive-program/">Developer Incentive Program</a> every month they take $20,000 and divide it between developers based on <strong>user ratings</strong>.</p>

<p>So, my two apps - <a href="https://web.archive.org/web/20130823112658/https://directory.app.net/app/50/dabr-for-android/">Dabr for Android</a> and <a href="https://web.archive.org/web/20160313030353/https://directory.app.net/app/49/dabr-the-best-mobile-web-experience-for-app-net/">Dabr for Mobile Web</a> - have netted me 0.3% of the developer pot.  Sweet!</p>

<p>More importantly, <em>they said thank you</em>!</p>

<p>Of course, App.net has a small catch.  <a href="https://web.archive.org/web/20121204004224/https://join.app.net/">There's a fee for joining</a>.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2012/11/Screenshot-from-2012-11-23-094516.png" alt="App.net Fees" title="App.net Fees" width="583" height="209" class="aligncenter size-full wp-image-6765">

<p>The fees aren't onerous - and are lower than they were - but I accept that <a href="https://shkspr.mobi/blog/2012/08/app-net-isnt-racist-but-it-does-have-a-privilege-problem/">the current pricing excludes many people</a>.</p>

<p>As a developer, I like the fact that the <a href="https://github.com/appdotnet/api-spec/">App.net API</a> is consistent and works really well - unlike the unloved hodge-podge that is the Twitter API.  The <a href="https://github.com/appdotnet/api-spec/issues">issues list</a> is taken seriously, and they seem to act on the feedback they actively solicit.</p>

<p>As a user, I like the community. I like the lack of advertising. I like the features (muting, streaming, ability to see who has starred a message, properly threaded conversations, etc) which are all conspicuous in their absence from Twitter.</p>

<p>The only thing it's missing is you.  So <a href="https://web.archive.org/web/20121204004224/https://join.app.net/">join App.net today</a>!</p>

<p>I've written before about <a href="https://shkspr.mobi/blog/2012/09/i-didnt-quit-twitter-twitter-quit-me/">how Twitter has abandoned those who helped make it a success</a>.  Ewan Spence has written brilliantly on <a href="http://www.forbes.com/sites/ewanspence/2012/11/17/twitter-no-longer-deserves-suport-from-the-developer-community/">how developers are now being shut out of the Twitter</a>.</p>

<p>Just imagine if Twitter paid third party developers.  Twitter are shitting themselves that non-official apps will steal revenue from them. Well, duh, the developers have to put food on the table.  What if, instead of trying to shut down the people bringing value to the network, they reflected how much they were worth by paying them.</p>

<p>Or even, you know, tried saying "thanks" once in a while.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=6764&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2012/11/what-twitter-can-learn-from-app-nets-developer-incentive-program/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[A UTF-8 Aware substr_replace (for use in App.net)]]></title>
		<link>https://shkspr.mobi/blog/2012/09/a-utf-8-aware-substr_replace-for-use-in-app-net/</link>
					<comments>https://shkspr.mobi/blog/2012/09/a-utf-8-aware-substr_replace-for-use-in-app-net/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Thu, 06 Sep 2012 08:30:40 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[app.net]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[utf-8]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=6289</guid>

					<description><![CDATA[So, I stayed up bashing my head against a brick wall all last night! PHP&#039;s string functions aren&#039;t (yet) UTF-8 aware.  This is a replacement for subtr_replace which should work on UTF-8 Strings:  function utf8_substr_replace($original, $replacement, $position, $length) {     $startString = mb_substr($original, 0, $position, &#34;UTF-8&#34;);     $endString = mb_substr($original, $position + $length,…]]></description>
										<content:encoded><![CDATA[<p>So, I stayed up bashing my head against a brick wall all last night! PHP's string functions aren't (yet) UTF-8 aware.</p>

<p>This is a replacement for subtr_replace which <em>should</em> work on UTF-8 Strings:</p>

<pre lang="php">function utf8_substr_replace($original, $replacement, $position, $length)
{
    $startString = mb_substr($original, 0, $position, "UTF-8");
    $endString = mb_substr($original, $position + $length, mb_strlen($original), "UTF-8");

    $out = $startString . $replacement . $endString;

    return $out;
}
</pre>

<p>Take this typical string from App.net</p>

<pre>» Hello @bob how are you?</pre>

<p>According to App.net's entities, @bob occurs at position 9 and has length of 3.</p>

<p>Normally, we would just use substr_replace.</p>

<p>However, PHP will count any unicode character like "»" as two characters.  So it thinks that the position of @bob is 10.</p>

<p>Arse.</p>

<p>So, given we have the position of the substring, and its length, we can use <a href="http://uk3.php.net/mb_substr">PHP's multibyte functions</a> to split the string in two.</p>

<p>First,</p>

<pre lang="php">$startString = mb_substr($originalString, 0, $position, "UTF-8");
</pre>

<p>Gives us:</p>

<pre>» Hello @</pre>

<p>Secondly,</p>

<pre lang="php">$endString = mb_substr($originalString, $position + $length, mb_strlen($originalString), "UTF-8");
</pre>

<p>Gives us</p>

<pre> how are you?</pre>

<p>Finally, we stitch them back together</p>

<pre lang="php">$newString = $startString . $replacement . $endString;
</pre>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=6289&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2012/09/a-utf-8-aware-substr_replace-for-use-in-app-net/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Visualising Conversation Threads In Hyperbolic Space]]></title>
		<link>https://shkspr.mobi/blog/2012/09/visualising-conversation-threads-in-hyperbolic-space/</link>
					<comments>https://shkspr.mobi/blog/2012/09/visualising-conversation-threads-in-hyperbolic-space/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sun, 02 Sep 2012 09:12:54 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[app.net]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[twitter]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=6274</guid>

					<description><![CDATA[In 2009, Kosso and I petitioned Twitter to allow us to search for Tweets by their &#34;in reply to&#34; ID.  The idea was that developers could created a properly threaded view of conversations.  Of course, Twitter being ultra-responsive to developers, did absolutely nothing.  Skip three years into the future, and App.net is providing all the API goodness that Twitter doesn&#039;t.  This means that we can…]]></description>
										<content:encoded><![CDATA[<p>In 2009, <a href="http://code.google.com/p/twitter-api/issues/detail?id=1238">Kosso and I petitioned Twitter</a> to allow us to search for Tweets by their "in reply to" ID.</p>

<p>The idea was that developers could created a properly threaded view of conversations.</p>

<p>Of course, Twitter being ultra-responsive to developers, did <em>absolutely nothing</em>.</p>

<p>Skip three years into the future, and App.net is providing all the API goodness that Twitter doesn't.  This means that we can easily create new ways to view conversations.</p>

<p>So that is exactly what I've done.</p>

<p>You can <a href="https://web.archive.org/web/20121004005303/shkspr.mobi/hyper">play with HyperThread yourself at shkspr.mobi/hyper/</a>.</p>

<p>This is a <a href="http://en.wikipedia.org/wiki/Hyperbolic_tree">hypertree</a> visualisation of a simple conversation.  The centre node is the start of the conversation. Each reply goes off in its own thread.  Clicking on a node, re-centres the tree.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2012/09/Simple-Conversation-Thread.png" alt="Simple Conversation Thread" title="Simple Conversation Thread" width="530" height="536" class="aligncenter size-full wp-image-6282"></p>

<p>As a conversation grows in complexity, the conversation fades out at the edges. Clicking down a conversation thread allows you to easily follow a thread.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2012/09/Conversation-Thread.png" alt="Conversation Thread" title="Conversation Thread" width="530" height="536" class="aligncenter size-full wp-image-6281"></p>

<p>Of course, with extremely long and complex threads, the tree becomes more difficult to navigate. This is something I hope to fix in future versions.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2012/09/Complex-Conversation-Thread.png" alt="Complex Conversation Thread" title="Complex Conversation Thread" width="530" height="536" class="aligncenter size-full wp-image-6280"></p>

<p>Here is a video explaining how it all works.</p>

<iframe title="Threading Conversations Using A Hypertree" width="620" height="349" src="https://www.youtube.com/embed/mZOqw3UxpLg?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe>

<p>You can <a href="https://web.archive.org/web/20121004005303/shkspr.mobi/hyper">play with HyperThread yourself at </a><a href="https://shkspr.mobi/hyper/</a>.">https://shkspr.mobi/hyper/</a>.</p>

<p>The visualisation uses <a href="https://web.archive.org/web/20120906012229/http://thejit.org/">The JavaScript InfoVis Toolkit</a>.</p>

<p>The <a href="http://stackoverflow.com/questions/12219340/threaded-app-net-conversation-into-tree/">tree sorting algorithm is courtesy of the good folk at StackOverflow</a>.</p>

<p>A few points to make here:</p>

<ul>
    <li>This is a prototype. Some things may not work. Some essential functionality is missing.</li>
    <li>The layout algorithm is wonky. Sometimes the threaded layout looks really weird.</li>
    <li>The longer the conversation, the more complex and slower the visualisation.</li>
    <li>This only retrieves the first two hundred posts of any conversation.</li>
    <li>If posts have been deleted, the entire view may not work.</li>
    <li>Some threads just don't work.</li>
</ul>

<p>Inspired in part by <a href="https://web.archive.org/web/20200927052022/https://secure.flickr.com/photos/unkemptwomen/8080741422/in/photostream/">Lucy Pepper's Monkey.deck</a>
Lots more <a href="https://web.archive.org/web/20120908072005/http://adndev.net/?p=119">conversation about threading at adndev</a>.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=6274&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2012/09/visualising-conversation-threads-in-hyperbolic-space/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[App.net isn't racist - but it does have a privilege problem]]></title>
		<link>https://shkspr.mobi/blog/2012/08/app-net-isnt-racist-but-it-does-have-a-privilege-problem/</link>
					<comments>https://shkspr.mobi/blog/2012/08/app-net-isnt-racist-but-it-does-have-a-privilege-problem/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Thu, 30 Aug 2012 09:07:56 +0000</pubDate>
				<category><![CDATA[politics]]></category>
		<category><![CDATA[adn]]></category>
		<category><![CDATA[app.net]]></category>
		<category><![CDATA[appdotnet]]></category>
		<category><![CDATA[Social Media]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=6263</guid>

					<description><![CDATA[tl;dr - Excluding people, even with a &#34;nominal&#34; fee is exclusionary, and that can be a problem.  Before reading this post, you may want to understand what I mean by &#34;privilege&#34;. You should also understand where you are on The Global Rich List.  The heavy-handed schmaltz that is Aaron Sorkin&#039;s Newsroom made an excellent point on its final episode. Voter registration which requires a driving…]]></description>
										<content:encoded><![CDATA[<p>tl;dr - Excluding people, even with a "nominal" fee is exclusionary, and that can be a problem.</p>

<p>Before reading this post, you may want to understand what I mean by "<a href="http://geekfeminism.wikia.com/wiki/Privilege">privilege</a>".
You should also understand where you are on <a href="https://web.archive.org/web/20110228081500/http://www.globalrichlist.com/">The Global Rich List</a>.</p>

<p>The heavy-handed schmaltz that is Aaron Sorkin's Newsroom made an excellent point on its final episode.
<a href="http://topics.nytimes.com/top/reference/timestopics/subjects/v/voter_registration_and_requirements/index.html">Voter registration which requires a driving licence is a racist policy</a>.</p>

<p>For a privileged guy like myself, it seems like the simplest thing in the world.  Just get a fucking driving licence. What's the big deal?</p>

<p>However, for a large section of society (usually poor people which often means "ethnic minority") the issues are threefold:</p>

<ol>
    <li>I can't afford a car - or I have no need for one.</li>
    <li>I can't afford driving lessons, or the fee to take a driving test.</li>
    <li>Regardless of ethnicity, or wealth, I may not have the aptitude to pass a driving test.</li>
</ol>

<p>Having a driving licence has no relationship to whether you're a citizen and eligible to vote.  Why should you spend money you don't have in order to exercise your rights?</p>

<p>So, with one fell swoop, Governments have disenfranchised a large section of society. Co-incidentally, the same section of society unlikely to vote for them.</p>

<p>Let's take a look at App.net.  There was an interesting (but flawed) argument put forward by <a href="https://web.archive.org/web/20120829183816/http://thegrio.com/2012/08/24/is-a-white-flight-from-social-media-on-the-horizon/">The Grio that ADN represents "The White Flight" from social media</a>.</p>

<p>(<a href="http://en.wikipedia.org/wiki/White_flight">White Flight</a> is the idea that once a certain number of ethnic minorities move into an area, the white community will begin to move out.)</p>

<p>App.net requires $50 to get in.  $100 if you want to be a developer.</p>

<p>That represents a <strong>huge</strong> problem.</p>

<p>For a privileged guy like myself, it seems like the simplest thing in the world.  Just pay the fifty fucking bucks.  What's the big deal?  Skip buying a few DVDs if you have to.</p>

<p>However, for a large section of society (usually poor people which often means "ethnic minority") the issues are threefold:</p>

<ol>
    <li>I don't have disposable income. I need that money for food, shelter, medicine.</li>
    <li>I do have disposable income. But it's a dollar a day.  That's enough for a little luxury in, say, Kenya, but it's not enough to play on ADN.</li>
    <li>I don't have a credit card, or my country doesn't have the infrastructure to make payments.</li>
</ol>

<p>Take a look at <a href="https://web.archive.org/web/20110228081500/http://www.globalrichlist.com/">The Global Rich List</a>. If you have $100 to spare, you are probably part of the 1%.</p>

<p>So, what does that mean for App.net?  There are a few problems which I think could hurt App.net in the long term.</p>

<ul>
    <li>Does ADN work in different languages? <a href="https://github.com/appdotnet/api-spec/issues/105">It doesn't work for internationalised domain names</a> - so it's fairly English focused at the moment.</li>
    <li>Are there developers in, say, Indonesia who need a specific feature? If they can't afford $100 to play with the API, they can't submit knowledgeable feedback.</li>
    <li>Are the Terms &amp; Conditions sufficiently easy to read for those with a low educational level?</li>
    <li>Can abused people feel safe without private accounts? They can't make their voices heard on a change request if they can't afford to make a (traceable) payment.</li>
    <li>There are no doubt dozens more issues of which I can't even conceive.</li>
</ul>

<p>I don't say this is a massive problem now - but I think it's storing up problems for the future.</p>

<p>Low income disproportionately affects women, ethnic minorities, they young, and the educationally disadvantaged.</p>

<p>ADN is in alpha. It's a private company. They can do what they want.  But the current status, I think, is problematic.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=6263&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2012/08/app-net-isnt-racist-but-it-does-have-a-privilege-problem/feed/</wfw:commentRss>
			<slash:comments>11</slash:comments>
		
		
			</item>
	</channel>
</rss>
