<?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>Leon Atkinson &#187; Programming</title>
	<atom:link href="http://www.leonatkinson.com/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.leonatkinson.com</link>
	<description>There is no duty that is not accepted.</description>
	<lastBuildDate>Sun, 18 Dec 2011 01:37:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Facebook Apps Still Not Serving SSL</title>
		<link>http://www.leonatkinson.com/facebook-apps-still-not-serving-ssl/</link>
		<comments>http://www.leonatkinson.com/facebook-apps-still-not-serving-ssl/#comments</comments>
		<pubDate>Wed, 16 Mar 2011 15:25:51 +0000</pubDate>
		<dc:creator>Leon</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Apache HTTP Server]]></category>
		<category><![CDATA[CityVille]]></category>
		<category><![CDATA[Facebook]]></category>

		<guid isPermaLink="false">http://www.leonatkinson.com/?p=704</guid>
		<description><![CDATA[Almost two months ago, Facebook added a setting for browsing with an SSL connection. So far, most app developers have not yet caught up. It&#8217;s simple. Go to Account-&#62;Account Settings-&#62;Account Security-&#62;Secure Browsing and click a checkbox. &#160; &#160; After saving, your Facebook experience will all flow over SSL, every byte encrypted with a 128-bit key. But [...]]]></description>
			<content:encoded><![CDATA[<p>Almost two months ago, <a href="https://www.facebook.com/blog.php?post=486790652130">Facebook added a setting for browsing with an SSL connection</a>. So far, most app developers have not yet caught up.</p>
<p>It&#8217;s simple. Go to Account-&gt;Account Settings-&gt;Account Security-&gt;Secure Browsing and click a checkbox.</p>
<p>&nbsp;</p>
<div id="attachment_705" class="wp-caption aligncenter" style="width: 567px"><img class="size-full wp-image-705" title="facebook-account-security" src="http://www.leonatkinson.com/wp-content/uploads/2011/03/facebook-account-security.png" alt="" width="557" height="103" /><p class="wp-caption-text">Option for using https &quot;whenever possible&quot;</p></div>
<p>&nbsp;</p>
<p>After saving, your Facebook experience will all flow over SSL, every byte encrypted with a 128-bit key. But fire up your favorite game, and you will probably see a request to turn this setting off.</p>
<div id="attachment_707" class="wp-caption aligncenter" style="width: 579px"><a href="http://www.leonatkinson.com/wp-content/uploads/2011/03/facebook-app-without-ssl.png"><img class="size-full wp-image-707" title="facebook-app-without-ssl" src="http://www.leonatkinson.com/wp-content/uploads/2011/03/facebook-app-without-ssl.png" alt="" width="569" height="182" /></a><p class="wp-caption-text">Dialog displayed by apps that don&#39;t support SSL</p></div>
<p style="text-align: left;">If you click the continue button, you might expect that you&#8217;d be temporarily allowing an unencrypted connection. Instead, your setting is turned off. When you&#8217;re done with <a class="zem_slink" title="CityVille" rel="homepage" href="http://www.cityville.com/">CityVille</a>, you will have to switch it back on again. I&#8217;m sure Facebook will improve this user experience over time.</p>
<p style="text-align: left;">When Facebook rolled out this feature, they added a new setting for app developers that asks for the URL to the secure version of their app. It starts out blank, and when it is blank, the dialog above shows up. Naturally, I wanted to get things right, so I began experimenting. Unfortunately, once you have a valid value, you can&#8217;t return to having it be blank. Now I was forced to solve this somehow.</p>
<p style="text-align: left;">Time for a short diversion into how <a class="zem_slink" title="HTTP Secure" rel="wikipedia" href="http://en.wikipedia.org/wiki/HTTP_Secure">HTTPS</a> works.</p>
<p style="text-align: left;">You know how you can have one server hosting multiple domains, each with their own site content? It&#8217;s called virtual hosting, and it&#8217;s a standard feature of <a class="zem_slink" title="Apache HTTP Server" rel="homepage" href="http://httpd.apache.org/">Apache</a>. The way it works in the <a class="zem_slink" title="Hypertext Transfer Protocol" rel="wikipedia" href="http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol">HTTP protocol</a> is that when your browser connects to the server, it uses the <a class="zem_slink" title="IP address" rel="wikipedia" href="http://en.wikipedia.org/wiki/IP_address">IP address</a> (e.g.192.168.1.1) and in addition to asking for the document to view (e.g. GET /index.html) it also specifies the domain name (e.g. www.18int.com). Apache&#8217;s configuration knows where the files on the server are for that domain, and away we go.</p>
<p style="text-align: left;">In the case of a secure connection, your browser and Apache must exchange keys to be used for encrypting data. Your browser will also ask for proof of identity from the server. The proof is in a small file called a certificate. It&#8217;s only good for one IP address and one domain. You can make multiple certificates work if you have multiple IPs. A certificate signed by an authority is a few hundred dollars, but IPs are scarce. It&#8217;s a gigantic pain in the neck for a small developer.</p>
<p style="text-align: left;">If you have multiple apps running on Facebook, you could reorganize them on the server to use subdirectories instead of subdomains. For both canvas apps and iframe apps, the user is hardly exposed to your backend URLs anyway. In the short term, I&#8217;ve made a single page that says the following.</p>
<blockquote>
<p style="text-align: left;">We&#8217;re sorry! This app does not function when requested via ssl. To access this app, please change your facebook settings under Account-&gt;Account Settings-&gt;Account Security-&gt;Secure Browsing.</p>
</blockquote>
<p style="text-align: left;">Then I pointed all of my SSL URLs at it. Note that I this page is served up using a self-signed certificate. It&#8217;s interested that Facebook doesn&#8217;t care to enforce the identity check but they do care that the data is send via SSL end to end. That&#8217;s reasonable.</p>
<p style="text-align: left;">Instead of reorganizing all of my files on the backend, I plan to rebuild my apps so that they work outside of the Facebook canvas, using the Facebook Connect feature instead. Facebook seems to be doing what they can to push everyone off of the canvas, anyway.</p>
<p style="text-align: left;">It&#8217;s also interesting that most of the games I&#8217;ve tried still show the request to switch off SSL. The popular Zynga games do. I found that <a href="https://apps.facebook.com/gncasino">Golden Nugget Vegas Casino</a>, run by one of my clients (AltEgo), does serve up with SSL. Smart.</p>
<p style="text-align: left;">Recently, <a href="http://www.engadget.com/2011/03/16/twitter-adds-always-use-https-option-makes-cyberterrorists-fo/">Twitter added a similar feature to always use HTTPS</a>, but I wouldn&#8217;t expect any issues like we have with Facebook because Twitter never got into the business of piping content from apps through their own servers.</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Enhanced by Zemanta" href="http://www.zemanta.com/"><img class="zemanta-pixie-img" style="border: none; float: right;" src="http://img.zemanta.com/zemified_e.png?x-id=9eb379d6-ce4b-4a81-acba-679f2cfa2956" alt="Enhanced by Zemanta" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.leonatkinson.com/facebook-apps-still-not-serving-ssl/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Facebook&#8217;s @Mentions Works in Comments Now</title>
		<link>http://www.leonatkinson.com/facebooks-mentions-works-in-comments-now/</link>
		<comments>http://www.leonatkinson.com/facebooks-mentions-works-in-comments-now/#comments</comments>
		<pubDate>Sat, 12 Mar 2011 23:11:08 +0000</pubDate>
		<dc:creator>Leon</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Graph API]]></category>
		<category><![CDATA[Social Networking]]></category>

		<guid isPermaLink="false">http://www.leonatkinson.com/?p=682</guid>
		<description><![CDATA[&#160; Do you use the @mentions feature in your status updates? If you type @ and immediately start typing a name, Facebook will suggest friends. Click on one and the name is inserted as a link. The friend will be notified and more likely to notice. Until now, this only worked in your own status [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<div id="attachment_683" class="wp-caption alignright" style="width: 160px"><a href="http://www.leonatkinson.com/wp-content/uploads/2011/03/facebook-shareable-tag.png"><img class="size-thumbnail wp-image-683" title="facebook shareable tag" src="http://www.leonatkinson.com/wp-content/uploads/2011/03/facebook-shareable-tag-150x150.png" alt="Screenshot of using the @mentions feature" width="150" height="150" /></a><p class="wp-caption-text">Screenshot of using the @mentions feature</p></div>
<p>Do you use the @mentions feature in your status updates? If you type @ and immediately start typing a name, <a class="zem_slink" title="Facebook" rel="homepage" href="http://facebook.com">Facebook</a> will suggest friends. Click on one and the name is inserted as a link. The friend will be notified and more likely to notice. Until now, this only worked in your own status updates. It now works in comments on anything posted to a news stream.</p>
<p>Unfortunately, the @mentions feature does not work when updating status via the <a class="zem_slink" title="Graph API" rel="homepage" href="http://developers.facebook.com/docs/api">Graph API</a>. Apparently it did at first, but app makers immediately used it to spam everyone with notices. Facebook yanked it. I would have preferred that they limited notifications similarly to how they limit how many news stream updates can go out in a certain time period.</p>
<p>In addition to mentioning people, you can also mention pages and apps.  Many of the things you &#8220;like&#8221; in your profile have underlying pages. If you&#8217;re mentioning a band or a movie you enjoy, try using the @mentions feature to make it easy for readers to find out more.</p>
<h6 class="zemanta-related-title" style="font-size: 1em;">Related articles</h6>
<ul class="zemanta-article-ul">
<li class="zemanta-article-ul-li"><a href="http://www.insidefacebook.com/2011/03/11/mention-tagging-comments/">Facebook Expands @ Mention Tagging to Comments</a> (insidefacebook.com)</li>
<li class="zemanta-article-ul-li"><a href="http://mashable.com/2011/03/12/facebook-tagging/">Facebook Adds Ability to Easily Tag Others In Comments</a> (mashable.com)</li>
</ul>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Enhanced by Zemanta" href="http://www.zemanta.com/"><img class="zemanta-pixie-img" style="border: none; float: right;" src="http://img.zemanta.com/zemified_e.png?x-id=af11c9f2-b251-4580-a4cd-71a01904493c" alt="Enhanced by Zemanta" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.leonatkinson.com/facebooks-mentions-works-in-comments-now/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dev to Staging to Production</title>
		<link>http://www.leonatkinson.com/dev-to-staging-to-production/</link>
		<comments>http://www.leonatkinson.com/dev-to-staging-to-production/#comments</comments>
		<pubDate>Fri, 10 Dec 2010 22:17:54 +0000</pubDate>
		<dc:creator>Leon</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software development]]></category>

		<guid isPermaLink="false">http://www.leonatkinson.com/?p=622</guid>
		<description><![CDATA[How do you keep your development work from interfering with testing new features and providing a stable application to your users? Create a dev to staging to production chain. You&#8217;ve worked for months on a Web application, you launch and all is fine. Now you need to add a new feature that will take you [...]]]></description>
			<content:encoded><![CDATA[<p>How do you keep your development work from interfering with testing new features and providing a stable application to your users? <strong>Create a dev to staging to production chain.</strong></p>
<p>You&#8217;ve worked for months on a Web application, you launch and all is fine. Now you need to add a new feature that will take you at least a few hours to get right. Do you subject your users to the errors that will intermittently appear if you code directly on the site? No, of course not. You make a completely separate installation that only you&#8217;re looking at. When the feature seems solid, push the changes to the production version. You are using a <a class="zem_slink" title="Codebase" rel="wikipedia" href="http://en.wikipedia.org/wiki/Codebase">source code repository</a>, aren&#8217;t you? So, just perform a <em>svn update</em> on the live site and you&#8217;re all good.</p>
<div id="attachment_624" class="wp-caption alignright" style="width: 310px"><a href="http://www.leonatkinson.com/wp-content/uploads/2010/12/dev-staging-production.png"><img class="size-medium wp-image-624" style="margin: 5px;" title="dev-staging-production" src="http://www.leonatkinson.com/wp-content/uploads/2010/12/dev-staging-production-300x178.png" alt="Diagram showing flow of code changes from dev to staging to production" width="300" height="178" /></a><p class="wp-caption-text">This diagram shows the relationship between development, staging and production servers.</p></div>
<p>Following is the method I&#8217;ve found works best for smallish teams working on <a class="zem_slink" title="LAMP (software bundle)" rel="wikipedia" href="http://en.wikipedia.org/wiki/LAMP_%28software_bundle%29">LAMP</a> Web apps where you can&#8217;t afford to introduce bugs to the production version. This method has worked for me on teams of 5-10 coders, each working on different features at once. <strong>There&#8217;s a balance to be struck between not getting in the way of development work and getting updates out promptly.</strong> It&#8217;s a drag when you can&#8217;t release one feature because its code is all mixed in with another, half-finished feature.</p>
<p>The main idea to have one checkout for your production version, one for a staging and testing version, and multiple servers for various developers and/or projects. <strong>Changes that are ready to be tested are checked into the repository.</strong> When you want to release, you freeze checkins and test the staging server. When you&#8217;re convinced it&#8217;s all good, you run an update on the live server and allow checkins again. You&#8217;ll want at least three different databases, one each for live, staging and development.</p>
<p>For relatively short-term work, developers should usually check in frequently. For long-term projects, checkins should be held back. Yes, this is what branches are for, and that&#8217;s the right choice for more senior coders. In practice, branches don&#8217;t seem to be something that the junior members can grok. I might have junior developers working on big changes to copy over many weeks. I simply rely on backups to make sure they don&#8217;t lose work in case of disaster.</p>
<p><strong>Here&#8217;s a set of steps I might take to set up a new development system.</strong></p>
<ol>
<li>Create a subversion repository.</li>
<li>Create three virtual hosts: www, stage, and dev.</li>
<li>Create three databases.</li>
<li>Checkout the app once each for www and stage. You&#8217;d view these sites as www.example.com and stage.example.com.</li>
<li>Make an open directory for the dev subdomain and make a checkout for each developer. You&#8217;d view these sites as dev.example.com/coder1/htdocs. Allow all the dev versions to share a database.</li>
<li>Protect the dev server from the public with basic authentication. You don&#8217;t want Web robots indexing everything, and you don&#8217;t want to expose scripts that would be outside of the apache webroot in production.</li>
</ol>
<p>This system will allow you to quickly make a new checkout without hassling with making new subdomains and tweaking the apache config.</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><img class="zemanta-pixie-img" style="border: medium none; float: right;" src="http://img.zemanta.com/pixy.gif?x-id=b7196fab-9eca-4deb-af34-5d8d1e5df156" alt="" /></div>
]]></content:encoded>
			<wfw:commentRss>http://www.leonatkinson.com/dev-to-staging-to-production/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FreeTime 3</title>
		<link>http://www.leonatkinson.com/freetime-3/</link>
		<comments>http://www.leonatkinson.com/freetime-3/#comments</comments>
		<pubDate>Sat, 02 Jan 2010 00:54:26 +0000</pubDate>
		<dc:creator>Leon</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Clear Ink]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Project Management]]></category>

		<guid isPermaLink="false">http://www.leonatkinson.com/?p=448</guid>
		<description><![CDATA[Thanks to the extra time provided by the holiday, I&#8217;ve finally put together a release of FreeTime 3, a pet project of mine for more than 10 years. This newest release is based on work I did on the software at Clear Ink from 2006 through 2009. Thanks to David Burk and Steven Nelson for [...]]]></description>
			<content:encoded><![CDATA[<p>Thanks to the extra time provided by the holiday, I&#8217;ve finally put together a release of <a href="https://sourceforge.net/projects/freetime/">FreeTime 3</a>, a pet project of mine for more than 10 years. This newest release is based on work I did on the software at Clear Ink from 2006 through 2009. Thanks to David Burk and Steven Nelson for sponsoring writing the code in the first place as their employee and more recently agreeing to donate the code back to the open source project. Their support is most generous!</p>
<p>FreeTime is a Web application written in PHP for MySQL that allows you to keep track of projects. It tracks comments, files and timesheet entries for projects divided up by clients and their divisions. Recently added features, not appearing in previous versions, include tasks, estimates and more reports. There&#8217;s also code that allows clients to log in to review work as if it&#8217;s a mini-site, but it hasn&#8217;t been tested in production. The most well-developed aspects of the application are related to timesheets, both gathering them from staff and then reporting on them.</p>
<p>I&#8217;m curious whether anyone will find the code useful, whether for educational or practical purposes. Its purpose was as a highly customized solution for Clear Ink, and it may have no utility outside the same type of consultancy. On the other hand, it could prove useful after some hacking. I would use it for myself if I do more consulting again.</p>
<p>You can download the source code from <a href="https://sourceforge.net/projects/freetime/">the FreeTime project page on SourceForge</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.leonatkinson.com/freetime-3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Annoying Anti-Piracy for Book from Manning</title>
		<link>http://www.leonatkinson.com/annoying-anti-piracy-for-book-from-manning/</link>
		<comments>http://www.leonatkinson.com/annoying-anti-piracy-for-book-from-manning/#comments</comments>
		<pubDate>Thu, 28 May 2009 22:37:07 +0000</pubDate>
		<dc:creator>Leon</dc:creator>
				<category><![CDATA[Marketing]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.leonatkinson.com/?p=416</guid>
		<description><![CDATA[I bought Zend Framework in Action yesterday because the short tutorial isn&#8217;t quite enough to know how to architect an big application. I&#8217;m building an enterprise app at work for a client and picked ZF and YUI as core platforms. I&#8217;m pleased with the content of the book. Rob Allen is a fine writer and [...]]]></description>
			<content:encoded><![CDATA[<p>I bought <a href="http://www.amazon.com/gp/product/1933988320?ie=UTF8&amp;tag=leonatkinson-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1933988320">Zend Framework in Action</a><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=leonatkinson-20&amp;l=as2&amp;o=1&amp;a=1933988320" border="0" alt="" width="1" height="1" /> yesterday because the short tutorial isn&#8217;t quite enough to know how to architect an big application. I&#8217;m building an enterprise app at work for a client and picked ZF and YUI as core platforms. I&#8217;m pleased with the content of the book. Rob Allen is a fine writer and the organization of the text is logical.</p>
<p>Now that I&#8217;m about 80 pages into the book, I thought I&#8217;d grab a copy of the PDF version for easy reference whichever desk I&#8217;m sitting at.  The print edition comes with a &#8220;free&#8221; ebook. There are two ways to get this free ebook.</p>
<p>The way they want you to do it is as follows.</p>
<ol>
<li>Cut open a folded paper in the front of the book.</li>
<li>Go to the URL printed on the paper.</li>
<li>Type in a code they ask you for out of 9&#215;20 grid.</li>
<li>Type in <em>another </em>code from the grid.</li>
<li>Type in your name and email address.</li>
<li>Wait for the email to arrive.</li>
<li>Find the email in your spam folder.</li>
<li>Click on a link to start the download.</li>
<li>Rename the file from &#8220;gi&#8221; (wtf?) to something rational, such as &#8220;Zend_Framework_In_Action.pdf&#8221;.</li>
</ol>
<p>However, you could do the following.</p>
<ol>
<li>Enter &#8220;zend framework in action pdf&#8221; into Google Search.</li>
<li>Click to some blog.</li>
<li>Click the link into RapidShare.</li>
<li>Wait for your 30 seconds to expire since you are a &#8220;free&#8221; user.</li>
<li>Download the .rar file.</li>
<li>Expand whatever&#8217;s in the rar file. (I didn&#8217;t actually go this far).</li>
</ol>
<p>Typing in codes from a grid is pretty annoying. I threw down $45 to get the book. Maybe they should just trust me and print a direct download link inside the text of the book. After all, we&#8217;re all only a couple of links away from downloading it from RapidShare. What would have been really cool was if I could have downloaded the PDF for free first and then bought the print version when I decided that the book was of great value. I had that exact experience with another author recently.</p>
<p>If you are going to buy Zend Framework in Action (and you aren&#8217;t in a rush like I was), you might use the Amazon.com link above. It&#8217;s a lot cheaper than buying it off the shelf at B&amp;N.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.leonatkinson.com/annoying-anti-piracy-for-book-from-manning/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New MySpace Apps: Random Band Names and Random Advice</title>
		<link>http://www.leonatkinson.com/new-myspace-apps-random-band-and-random-advice/</link>
		<comments>http://www.leonatkinson.com/new-myspace-apps-random-band-and-random-advice/#comments</comments>
		<pubDate>Thu, 22 Jan 2009 19:10:18 +0000</pubDate>
		<dc:creator>Leon</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[myspace]]></category>
		<category><![CDATA[Random Generators]]></category>

		<guid isPermaLink="false">http://www.leonatkinson.com/?p=374</guid>
		<description><![CDATA[I now have two apps live on MySpace, Random Advice and Random Band Names. The core functionality is exactly the same as what&#8217;s on Leon&#8217;s Random Generators. Both of them place content on your MySpace profile. You can see them in action on my profile page, myspace.com/leonatkinson. It&#8217;s somewhat obtuse to get the apps on [...]]]></description>
			<content:encoded><![CDATA[<p>I now have two apps live on MySpace, <a href="http://profile.myspace.com/index.cfm?fuseaction=user.viewProfile&amp;friendID=436555421" target="_blank">Random Advice</a> and <a href="http://profile.myspace.com/index.cfm?fuseaction=user.viewProfile&amp;friendID=447432446" target="_blank">Random Band Names</a>. The core functionality is exactly the same as what&#8217;s on <a href="http://www.leonatkinson.com/random/">Leon&#8217;s Random Generators</a>. Both of them place content on your MySpace profile. You can see them in action on my profile page, <a class="url" href="http://www.myspace.com/leonatkinson">myspace.com/leonatkinson</a>.</p>
<p>It&#8217;s somewhat obtuse to get the apps on your own profile. Visit the app&#8217;s profile page (linked above). Click the button to add the app. Then, modify your profile and add the &#8220;module&#8221;. (I&#8217;m hand-waving a bit here). I think you must be upgraded to the 2.0 version of profiles.</p>
<p>Despite my bickering about how I was fighting with the approval process last month, I did get the advice generator active. The band names app was approved within hours. So maybe they like to hassle unproven developers. In any event, the advice generator has been live for less than a month and has 116 &#8220;active users&#8221;. I&#8217;m not clear if that means installs, or if people have activated the module in their profile. I can&#8217;t find any examples of profiles with it installed.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.leonatkinson.com/new-myspace-apps-random-band-and-random-advice/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Track Your Migraines on Facebook</title>
		<link>http://www.leonatkinson.com/track-your-migraines-on-facebook/</link>
		<comments>http://www.leonatkinson.com/track-your-migraines-on-facebook/#comments</comments>
		<pubDate>Tue, 06 Jan 2009 18:01:48 +0000</pubDate>
		<dc:creator>Leon</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Migraine]]></category>

		<guid isPermaLink="false">http://www.leonatkinson.com/?p=246</guid>
		<description><![CDATA[Many people suffer from migraines, a kind of storm in the brain that causes more than just headaches. I am one of those people. After I&#8217;d heard Mark Zuckerberg speak at last year&#8217;s Facebook developers conference, it occurred to me that sharing the experience might fit with his vision to give people the power to [...]]]></description>
			<content:encoded><![CDATA[<p>Many people suffer from <a href="http://en.wikipedia.org/wiki/Migraine" target="_blank">migraines</a>, a kind of storm in the brain that causes more than just headaches. I am one of those people. After I&#8217;d heard <a href="http://www.businessweek.com/the_thread/techbeat/archives/2008/07/live_from_faceb.html" target="_blank">Mark Zuckerberg speak at last year&#8217;s Facebook developers conference</a>, it occurred to me that sharing the experience might fit with his vision to <em>give people the power to share and make the world more open and connected</em>.</p>
<p><a href="http://apps.facebook.com/migraines"><img class="alignnone size-full wp-image-248" title="migraines screenshot" src="http://www.leonatkinson.com/wp-content/uploads/2009/01/migraines-screenshot.png" alt="migraines screenshot" width="455" height="367" /></a></p>
<p>I had an app done in August but got distracted for several months. Over the Christmas break, I found the time to polish it up and release it. The main feature of the app is a personal database of migraine events with the aim to helping you discover patterns or triggers. In the context of Facebook allows you to automatically let your friends know you&#8217;ve had a migraine. That could lead to better understanding or just a feeling of comfort.</p>
<p>You can get started using the app by visiting the <a href="http://www.facebook.com/apps/application.php?id=28241364782" target="_blank">Migraines About Page on Facebook</a>.</p>
<p>One advantage in waiting was the the new template bundles for the news feed is working flawlessly. In August it was brand new and buggy. I also had more fun with the <a href="http://www.google.com/url?sa=t&amp;source=web&amp;ct=res&amp;cd=1&amp;url=http%3A%2F%2Fcode.google.com%2Fapis%2Fchart%2F&amp;ei=NJpjSaeoBZK2sAOXq_WEDQ&amp;usg=AFQjCNHtD_XG9n06lyu6yjyEmnzMYTh1LA&amp;sig2=B_gVbRc2NsP4HHdvFT8ksw" target="_blank">Google Chart API</a>. Once you get a few migraines recorded, I can generate a pie chart of how severe they are and a line graph of how many you have each month.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.leonatkinson.com/track-your-migraines-on-facebook/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Facebook Platform Team Are Thankful</title>
		<link>http://www.leonatkinson.com/facebook-platform-team-are-thankful/</link>
		<comments>http://www.leonatkinson.com/facebook-platform-team-are-thankful/#comments</comments>
		<pubDate>Tue, 23 Dec 2008 05:31:09 +0000</pubDate>
		<dc:creator>Leon</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[myspace]]></category>

		<guid isPermaLink="false">http://www.leonatkinson.com/?p=222</guid>
		<description><![CDATA[What a nice surprise! As a developer on the Facebook platform for more than a year, I get occational messages from Facebook about new features, such as the revolutionary Facebook Connect functionality that went live recently.  I was pleasantly surprised to find a note from the Platform Team thanking all 600K+ developers! We wanted to [...]]]></description>
			<content:encoded><![CDATA[<p>What a nice surprise! As a developer on the Facebook platform for more than a year, I get occational messages from Facebook about new features, such as the revolutionary Facebook Connect functionality that went live recently.  I was pleasantly surprised to find a note from the Platform Team thanking all 600K+ developers!</p>
<blockquote><p>We wanted to take a moment and thank you for all of your great work and amazing applications that have helped make Facebook Platform the largest and fastest-growing social platform over the past year and a half. As we end 2008 there are over 660,000 of you worldwide building applications that give users more powerful ways to share and connect, and collectively your applications have reached nearly 140 million people.</p></blockquote>
<p>It&#8217;s a stark contrast to the <a href="http://www.leonatkinson.com/myspace-is-not-friendly-to-developers/">total lack of developer love shown by MySpace</a>. I hope Santa leaves some coal in their stockings. I have no doubt there will be many presents under the trees of the Facebook Platform Team.</p>
<p>I am so very pleased to be working with Facebook in their mission to bringing people closer together. Little notes like this remind me of Mark Zuckerberg&#8217;s presentation last July and how I came away feeling inspired. So, to Facebook, I&#8217;d like to say, &#8220;no, thank you!&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.leonatkinson.com/facebook-platform-team-are-thankful/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySpace is not Friendly to Developers</title>
		<link>http://www.leonatkinson.com/myspace-is-not-friendly-to-developers/</link>
		<comments>http://www.leonatkinson.com/myspace-is-not-friendly-to-developers/#comments</comments>
		<pubDate>Thu, 18 Dec 2008 18:23:54 +0000</pubDate>
		<dc:creator>Leon</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[myspace]]></category>
		<category><![CDATA[social]]></category>

		<guid isPermaLink="false">http://www.leonatkinson.com/?p=195</guid>
		<description><![CDATA[I&#8217;m reasonably certain now that unless MySpace wakes up and fixes their developer approach, they can expect to lose out to Facebook. The experience for the developer is so off the mark over at MySpace, it is no wonder that after nearly a year of being available, innovation in the applications is stagnant. The reason [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m reasonably certain now that unless MySpace wakes up and fixes their developer approach, they can expect to lose out to Facebook. The experience for the developer is so off the mark over at MySpace, it is no wonder that after nearly a year of being available, innovation in the applications is stagnant. The reason is simple: MySpace makes it too hard on developers. The rest of this post is rant against MySpace&#8217;s developer platform.</p>
<p>Facebook set a standard for the developer experience. It works as follows. I join the developer group; I&#8217;m a developer. I don&#8217;t wait to be approved. I self-identify and I get started. I can immediately build a demo app. I can place it in a sandbox mode where only people I&#8217;ve designated can view it, or I can just make it live. Once I think it&#8217;s polished, I can submit it to Facebook&#8217;s directory. That will get me some free advertising. Or I could skip it. I could drive traffic to it with ads. It doesn&#8217;t matter. Facebook offers me the freedom.</p>
<p>Facebooks offers a system for certification that shows off my app as complying with their ideals for apps. I have to pay for this, and for most apps, it&#8217;s probably not worth it. I like that Facebook is trying this and letting the market decide. I suspect consumers won&#8217;t care about the certification, but I still appreciate them experimenting and letting developers opt in.</p>
<p><strong>MySpace takes a big brother approach to developers.</strong> You apply to get an account, and you wait. I&#8217;m not sure what they actual check about people, perhaps that their email isn&#8217;t fake. Once you get into the developer program, you must create a &#8220;profile&#8221; for each application you develop. That requires a unique email address, even for a demo app. This must have been someone&#8217;s bright idea to overload the meaning of profiles at MySpace instead of generating unique IDs&#8230;except, apps do have unique numeric IDs. Facebook got this right&#8211;create an app, get a long, unique ID. Plus, on Facebook, I am shown as the developer. I don&#8217;t have some other email address that MySpace sends junk to.</p>
<p>On MySpace, I can see my app, but no one else can until it&#8217;s approved. This isn&#8217;t actually clear, since as you visit the live versions of your profile or home page, you see your app. If you recommend the app to a friend, no error is generated. I only understood this after I looked over a friend&#8217;s shoulder to see that my app did not appear for him when he looked at my profile.</p>
<p>So, I clicked to publish my app, and I waited two days. I was irritated to find it rejected. I got boilerplate complaints that I had to decipher how they related to my app. And I got this warning at the end of the email: <em>DO NOT REPLY TO THIS EMAIL. THIS MAILBOX IS NOT MONITORED.</em> (Yes, it was all in caps like that).</p>
<p>Some of the issues were valid, and it was good to get the feedback. I hadn&#8217;t tested the app on MSIE, and some quirks in the Javascript prevented it from working on that browser. Other issues are bogus and prevent me from providing the experience that is best for the users.</p>
<p>I want to allow my users to install the app either on their profile, for their friends to see, or on their home page, for their eyes only. It&#8217;s a reasonable decision. MySpace keeps telling me  &#8220;<em>must contain unique content on every application surface</em>&#8220;. I&#8217;ve actually seen other apps behave this way, so I can only assume that whatever mindless approval mechanism is in place (human or otherwise) is just happening to catch me. Perhaps other developers have figured out that you develop your app once for approval and then again for being useful. I have to finally get approved before I can test that idea.</p>
<p>I&#8217;m on my third round of asking for approval. I&#8217;ve made 5 minutes of changes today and now I can wait another 24 hours to see if I get satisfaction. One of the latest bit of feedback, which was new to the latest round but had been there from the beginning, is related to targets for links. If you link off of myspace.com, then you must set your link to target a new window. I see why you have to do this&#8211;the app is in an iframe and it loads the remote site in the little frame otherwise. MySpace hosts the application code. Why don&#8217;t they just add targets to links themselves? Facebook touches every bit of code to make it work best with their site.</p>
<p>I can only conclude that <strong>MySpace does not think of developers as providing value for their site</strong>. Facebook clearly understand the fair exchange of values. Developers make these sites more attractive to users. The more time spent on Facebook, the more ad revenue for Facebook.  MySpace seems to take the attitude that developers are miscreatants who must be forced to follow the rules. Facebook has a laisse-faire attitude. Developers try ideas in the market and Facebook only intervenes in cases where the apps are clearly being harmful.</p>
<p>It&#8217;s an interesting balance. Certainly MySpace tends to allow it&#8217;s users run rampant. They still allow users to place big chunks of CSS code in their &#8220;about me&#8221; profile box. Facebook attempts to keep the user experience uniform. You don&#8217;t get to have a black background on your profile page. It&#8217;s clear that Facebook spends time on serious user experience development. MySpace continues to appear to be an ugly hack.</p>
<p><strong>Update 12/19:</strong> Of course, the next day I get a brand new complaint from MySpace. Today, it&#8217;s &#8220;<em>Canvas Surface of the app is not appropriately sized to fit the module.</em>&#8221; When I get these complaints, they include a link to <a href="http://developer.myspace.com/community/myspace/applicationguidelines.aspx">Application Guidelines</a>. That previous complaint about unique content quoted these guidelines, but this time I can&#8217;t find the word <em>size </em>anywhere on the page! Maybe that guideline was revised away the last time they updated the guidelines November 19th. I think I&#8217;ll just turn off the canvas page completely like I did the home page.</p>
<p><strong>Update 12/22:</strong> I guess the reviewers take weekends off. Of course, the app was rejected yet again. Last Friday I used the checkbox on the developer console labeled &#8220;Enabled&#8221;. I unchecked it. I didn&#8217;t bother to click to where the &#8220;canvas surface&#8221; used to be because I logically assumed that with it disabled, there&#8217;d by no point. Applying logic to this process is clearly a mistake. The rejection I this time complained about an invalid canvas surface. It&#8217;s invalid to uncheck the checkbox?!? Why is it there?!? OK, so, the canvas is turned back on with just some plain text explaining that although I don&#8217;t want anything to be here, I have to put something there. I have to admit, I&#8217;m just about done screwing around with them. I feel like I&#8217;m talking to a random error generator.</p>
<p><strong>Update 12/26:</strong> I guess putting some text for the reviewer on the canvas page works because I got a reply that makes it seem like it&#8217;s in reply to my complaint. Still, the app was rejected. This time it&#8217;s because I used the word &#8220;MySpace&#8221;, which implies affiliation with MySpace. Right. I did did get some advice for how to disable the canvas: redirect the user to the profile. I think the advice was meant to be about <em>gadgets.views.requestNavigateTo()</em>, although the advice mentioned <em>navigateTo</em>, which I think is a method on the window object in MSIE. I decided to be nice and tell the user that they are about to be sent to their profile page by including a 3 second timeout with a link to go their immediately. I wonder what error the MDP folks will complain about next.</p>
<p><strong>Update 12/29:</strong> I&#8217;m finally approved. Now that I am, I can see that any change I want to make must go through the approval process again, even just a small text change. I have to think that however they are reviewing apps, it can&#8217;t scale up if they ever match Facebook which has more than 660K developers. It also strikes me that rapidly adapting the app to user behavior will be dampened if you have to wait a day for every change to be approved.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.leonatkinson.com/myspace-is-not-friendly-to-developers/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>LinuxWorld 2008 and PHP Meetup</title>
		<link>http://www.leonatkinson.com/linuxworld-2008-and-php-meetup/</link>
		<comments>http://www.leonatkinson.com/linuxworld-2008-and-php-meetup/#comments</comments>
		<pubDate>Sat, 09 Aug 2008 18:07:38 +0000</pubDate>
		<dc:creator>Leon</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.leonatkinson.com/?p=143</guid>
		<description><![CDATA[Computer science super genius and Python proselytizer JJ Behrens and I returned to LinuxWorld again this year. We&#8217;ve been doing this together for many years with only the pesky birth of a child interrupting my attendence. As JJ says, the conference was disappointing. It does seem like it&#8217;s on its last legs. The decline of [...]]]></description>
			<content:encoded><![CDATA[<p>Computer science super genius and Python proselytizer <a href="http://jjinux.blogspot.com/2008/08/linux-linuxworld-beos-openmoko.html" target="_blank">JJ Behrens and I returned to LinuxWorld</a> again this year. We&#8217;ve been doing this together for many years with only the pesky birth of a child interrupting my attendence. As JJ says, the conference was disappointing. It does seem like it&#8217;s on its last legs. The decline of this conference matches the shrinking posse that I bring with me. Two years ago I brought my entire department with me. It was pretty cool to have six Clear Ink technologist all running around hassling booth people. Last year, my department had shrunk a bit and this year, the one guy I&#8217;ve got reporting to me is didn&#8217;t come because he&#8217;s on vacation. At least I had JJ and Carl to hang out with.</p>
<p>One of the most enjoyable parts of LinuxWorld for me is the spectacle of JJ asking booth people really hard questions. The atrophying conference meant there were fewer people to put on the spot, although we did give the NYT guy and the mobius strip gal some trouble. When we passed the foot massaging shoe booth, I realized what this was&#8211;spam! My conference has been spammed! Yuck!</p>
<p>After the conference, I had the pleasure of chaperoning Dmitri Gaskin, Drupal wunderkind, to the PHP Meetup at the CNET building. Dmitri is 12 years old and the son of <a href="http://boldium.com/" target="_blank">Igor Gasowski</a>, with whom I&#8217;ve worked at Clear Ink for the past five years. JJ and I both had a lot of fun sitting in Starbucks and advising Dmitri on various computer science topics. There was a time when JJ was fresh out of college and I had a few things to teach him. I now find it hard to understand him half of the time. Fortunately, I can still understand the things Dmitri tells me, although when he first explained CCK to me a few months ago, it took me a bit.</p>
<p>One thing JJ and I agree on is that young programmers should read <a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FHackers-Computer-Revolution-Steven-Levy%2Fdp%2F0141000511%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1218304172%26sr%3D1-1&amp;tag=leonatkinson-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=9325">Hackers by Steven Levy</a><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=leonatkinson-20&amp;l=ur2&amp;o=1" border="0" alt="" width="1" height="1" />. Programming techniques are one thing, but it&#8217;s harder to acquire an understanding for history and lore of the craft.</p>
<p>Dmitri and I had dinner with Lee Springer at Chevy&#8217;s and then headed over the CNET building for the PHP Meetup. Joe Stump talked about a new system in PEAR for hosting your own repository channels. It&#8217;s obvious how this can help keep code straight, especially for a company like Digg that has many production servers. PEAR&#8217;s system for installing modules is similar to Apt or RPM. Having been coding in PHP for so long (11 years!), my tendency is to do things the &#8220;old way&#8221;. So, while I&#8217;ve taken sips of the PEAR koolade, I&#8217;ve never taken a big gulp. I&#8217;m still trying to sort out PEAR versus Zend Framework versus sticking with my FreeEnergy codebase.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.leonatkinson.com/linuxworld-2008-and-php-meetup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

