<?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>140dev &#187; Announcements</title>
	<atom:link href="http://140dev.com/twitter-api-programming-blog/category/announcements/feed/" rel="self" type="application/rss+xml" />
	<link>http://140dev.com</link>
	<description>Twitter API Programming Tips, Tutorials, Source Code Libraries and Consulting</description>
	<lastBuildDate>Wed, 31 Jul 2019 10:03:15 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.6</generator>
		<item>
		<title>140dev streaming API framework upgrade is required for the Phirehose library</title>
		<link>http://140dev.com/twitter-api-programming-blog/140dev-streaming-api-framework-upgrade-is-required-for-the-phirehose-library/</link>
		<comments>http://140dev.com/twitter-api-programming-blog/140dev-streaming-api-framework-upgrade-is-required-for-the-phirehose-library/#comments</comments>
		<pubDate>Wed, 23 Apr 2014 10:44:52 +0000</pubDate>
		<dc:creator>Adam Green</dc:creator>
				<category><![CDATA[140dev Source Code]]></category>
		<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Phirehose]]></category>

		<guid isPermaLink="false">http://140dev.com/?p=3032</guid>
		<description><![CDATA[The streaming API changed its behavior on April 22, breaking all the copies of the Phirehose library I have in use with my 140dev streaming API framework. Thankfully, a patched version of Phirehose was posted within a few hours. If you are running any copies of the 140dev framework, you need to replace your current [&#8230;]]]></description>
				<content:encoded><![CDATA[<p></p><p>The streaming API changed its behavior on April 22, breaking all the copies of the Phirehose library I have in use with my 140dev streaming API framework. Thankfully, a patched version of Phirehose was posted within a few hours. If you are running any copies of the 140dev framework, you need to replace your current copy of Phirehose.php with the <a href="https://github.com/fennb/phirehose/blob/master/lib/Phirehose.php">latest patched version</a>. If you are running the framework code, you will find your current copy of Phirehose.php in the /libraries/phirehose folder.</p>
]]></content:encoded>
			<wfw:commentRss>http://140dev.com/twitter-api-programming-blog/140dev-streaming-api-framework-upgrade-is-required-for-the-phirehose-library/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New project: Twitter API Tools</title>
		<link>http://140dev.com/twitter-api-programming-blog/new-project-twitter-api-tools/</link>
		<comments>http://140dev.com/twitter-api-programming-blog/new-project-twitter-api-tools/#comments</comments>
		<pubDate>Tue, 11 Feb 2014 16:52:48 +0000</pubDate>
		<dc:creator>Adam Green</dc:creator>
				<category><![CDATA[140dev Source Code]]></category>
		<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Twitter API Tools]]></category>

		<guid isPermaLink="false">http://140dev.com/?p=2887</guid>
		<description><![CDATA[I already have two sets of open source Twitter API code: the streaming API framework, and my Engagement Programming book. Both of require a fair amount of setup, and the code is very interrelated. This new project will be a set of individual tools that can be run by themselves or called from any application [&#8230;]]]></description>
				<content:encoded><![CDATA[<p></p><p>I already have two sets of open source Twitter API code: the <a href="http://140dev.com/free-twitter-api-source-code-library/">streaming API framework</a>, and my <a href="http://amazon.com/dp/0989875806">Engagement Programming</a> book. Both of require a fair amount of setup, and the code is very interrelated. This new project will be a set of individual tools that can be run by themselves or called from any application that seems some Twitter integration. </p>
<p>All you&#8217;ll need to run these tools will be a common set of library files, which I&#8217;ll document in the next post. The tools will need to be able to connect to database and make API calls with OAuth. I&#8217;ll package these together in a single zip to make installation easy. </p>
<p>I already some tools planned out, such as getting all followers and posting tweets, but if you have any suggestions, please send them along by <a href="http://twitter.com/140dev">tweet</a> or <a href="mailto:adam@140dev.com">email</a>, or post them here as comments. </p>
<p>The <a href="http://140dev.com/twitter-api-programming-blog/twitter-api-tools-common-library-files/">next post</a> has download instructions for the common libraries used by all the tools. </p>
]]></content:encoded>
			<wfw:commentRss>http://140dev.com/twitter-api-programming-blog/new-project-twitter-api-tools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Conversion strategy for the new streaming API framework</title>
		<link>http://140dev.com/twitter-api-programming-blog/conversion-strategy-for-the-new-streaming-api-framework/</link>
		<comments>http://140dev.com/twitter-api-programming-blog/conversion-strategy-for-the-new-streaming-api-framework/#comments</comments>
		<pubDate>Tue, 14 Jan 2014 12:38:31 +0000</pubDate>
		<dc:creator>Adam Green</dc:creator>
				<category><![CDATA[140dev Source Code]]></category>
		<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Streaming API]]></category>

		<guid isPermaLink="false">http://140dev.com/?p=2662</guid>
		<description><![CDATA[I&#8217;ve been getting emails from people asking for advice on making the switch to the 0.30 version of this code. First of all, there is only one database change that you must make before running the new code. You have to add a new is_rt (tinyint) field to the tweets table  to flag retweets. This [&#8230;]]]></description>
				<content:encoded><![CDATA[<p></p><p>I&#8217;ve been getting emails from people asking for advice on making the switch to the <a href="http://140dev.com/member">0.30 version</a> of this code. First of all, there is only one database change that you must make before running the new code. You have to add a new is_rt (tinyint) field to the tweets table  to flag retweets. This won&#8217;t interfere with existing code, so you can add this field while your existing code is running. The other two changes are removing the entities field from the tweets table, and removing the parsed field from the json_cache table. Neither of these fields are used by the new code. You can safely start running the new code with the entities and parsed fields in place, and then remove them once you have the new code running.</p>
<p>There are a lot of code changes, but the overall structure and flow of the new code is still basically the same. It should be fairly easy to display the old and new versions of the following scripts side-by-side to see what&#8217;s been changed. You can then either switch to the new code, or copy the changes back into the old code. Here is a list of the scripts that have changed:</p>
<p><strong>Database module</strong></p>
<p><em>140dev_config.php</em>. The DB_CONFIG_DIR and CODE_DIR constants have been removed. The AJAX_URL constant has been moved to twitter_display_config.php in the display module. The TIME_ZONE constant has been moved to db_config.php.</p>
<p><em>db_config.php</em>. The TIME_ZONE constant has been moved here from 140dev_config.php.</p>
<p><em>get_tweets.php</em>. The paths have been simplified for the require_once() functions, and a test has been added for a missing or malformed id_str property. This has long been a source of error notices. Now tweets without this value are ignored, eliminating these notices from the error log.</p>
<p><em>parse_tweets.php</em>. Paths are also simplified here. Tweets are now deleted from json_cache when they are parsed. The tweet property of lang is checked for English tweets only. Any language code can be used instead. Tweets are checked to see if they are retweets using the retweeted_status element. If this is found, the entities object is used from the original tweet, and the tweet is flagged as a retweet. When tweets are saved in the db, the entities object is no longer included, and the new is_rt field is set to 0 or 1.</p>
<p><strong>Display module</strong></p>
<p><em>display_lib.php</em>. This is a new script that has linkify() and twitter_time() functions. The linkify algorithm no longer uses the entities object. It now linkifies tweet text using string substitution.</p>
<p><em>index.php</em>. This has been renamed as twitter_display.php.</p>
<p><em>index.html</em>. The request for index.php has been changed to twitter_display.php.</p>
<p><em>linkify.php</em>. This code has been moved to the display_lib.php script.</p>
<p><em>twitter_display_config.php</em>. The AJAX_URL constant has been moved here from the 140dev_config.php script in the database module.</p>
<p><strong>Performing the switch over</strong></p>
<p>The exact procedure for making the switch is going to depend on how much you&#8217;ve customized the original framework, but this is the process I would use if you have made a lot of changes to the code and database:</p>
<ol>
<li>Make a new copy of the database. In this copy  add the is_rt (tinyint) field to the tweets table, drop the entities field from the tweets table, and drop the parsed field from the json_cached table.</li>
<li>Install the <a href="http://140dev.com/download/140dev_beta_0.30.zip">beta test</a> copy of the new framework code in a new directory.</li>
<li>Incorporate any customizations you have made to the proper scripts in the new copy of the code.</li>
<li>Copy your OAuth tokens from 140dev_config.php in the old code to the new copy of this script.</li>
<li>Fill in the db account values for db_config.php in the new code.</li>
<li>Fill in the AJAX_URL value in the twitter_display_config.php script in the new code.</li>
<li>Kill the running copies of get_tweets.php and parse_tweets.php.</li>
<li> Start the new copies of get_tweets.php and parse_tweets.php.</li>
</ol>
<p>If you have any problems making this conversion, get in touch with me (adam@140dev.com), and I&#8217;ll help get the new code running.</p>
]]></content:encoded>
			<wfw:commentRss>http://140dev.com/twitter-api-programming-blog/conversion-strategy-for-the-new-streaming-api-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Beta test of new 140dev streaming API framework is ready</title>
		<link>http://140dev.com/twitter-api-programming-blog/beta-test-of-new-140dev-streaming-api-framework-is-ready/</link>
		<comments>http://140dev.com/twitter-api-programming-blog/beta-test-of-new-140dev-streaming-api-framework-is-ready/#comments</comments>
		<pubDate>Mon, 13 Jan 2014 12:56:05 +0000</pubDate>
		<dc:creator>Adam Green</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Streaming API]]></category>

		<guid isPermaLink="false">http://140dev.com/?p=2658</guid>
		<description><![CDATA[Update: This code has now been put into production. You can get the latest copy here. The last few upgrades of this code were purely for compatibility with internal changes in the streaming API, so I wanted to give people code that didn&#8217;t require any changes to their own programming. Those upgrades seem to have [&#8230;]]]></description>
				<content:encoded><![CDATA[<p></p><p>Update: This code has now been put into production. You can get the latest copy <a href="http://140dev.com/free-twitter-api-source-code-library/">here</a>. </p>
<p>The last few upgrades of this code were purely for compatibility with internal changes in the streaming API, so I wanted to give people code that didn&#8217;t require any changes to their own programming. Those upgrades seem to have gone well for everyone. Now its time to start modifying the code to turn this framework into a production tweet collection system. This will require changes to the db schema and the core code in scripts like get_tweets.php and parse_tweets.php. I also want to rewrite the tweet display module, which has been causing problems for some people.</p>
<p>I have a beta test ready for a new version of both the database server and tweet display modules. They have quite a few changes. I have tested it as much as I can, but I&#8217;d like some people to try it out before making a general release. The files contain change logs, but here is an overview of some of the enhancements:</p>
<ul>
<li>Tweets from json_cache are deleted after parsing to improve insertion speed.</li>
<li>The entities object is no longer stored in the tweets table for linkifying tweet text.</li>
<li>Retweets are flagged in the tweets table.</li>
<li>The twitter display has been rewritten for several browser issues.</li>
</ul>
<p>If you can give me a hand by trying out this code, I&#8217;d appreciate it. You can download the beta code for version 0.30 of the framework <a href="http://140dev.com/download/140dev_beta_0.30.zip">here</a>. Please share any bugs or comments with me (<a href="mailto:adam@140dev.com">adam@140dev.com</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://140dev.com/twitter-api-programming-blog/beta-test-of-new-140dev-streaming-api-framework-is-ready/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upgrade Phirehose now for continued streaming API access</title>
		<link>http://140dev.com/twitter-api-programming-blog/upgrade-phirehose-now-for-continued-streaming-api-access/</link>
		<comments>http://140dev.com/twitter-api-programming-blog/upgrade-phirehose-now-for-continued-streaming-api-access/#comments</comments>
		<pubDate>Sun, 29 Dec 2013 21:21:14 +0000</pubDate>
		<dc:creator>Adam Green</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Phirehose]]></category>
		<category><![CDATA[Streaming API]]></category>

		<guid isPermaLink="false">http://140dev.com/?p=2646</guid>
		<description><![CDATA[Twitter is upgrading the streaming API on January, 6th to require http 1.1 connections. This will break the Phirehose library that manages the API connection in my 140dev streaming API framework. If you&#8217;re running this framework code, it&#8217;s essential that you replace your copy of Phirehose in the next week or tweet collection will stop. [&#8230;]]]></description>
				<content:encoded><![CDATA[<p></p><p>Twitter is upgrading the streaming API on January, 6th to require http 1.1 connections. This will break the Phirehose library that manages the API connection in my 140dev streaming API framework. If you&#8217;re running this framework code, it&#8217;s essential that you replace your copy of Phirehose in the next week or tweet collection will stop. </p>
<p>Luckily it&#8217;s a really easy upgrade:<br />
1. Download the new Phirehose files. You can get them from the <a href="https://github.com/fennb/phirehose/tree/master/lib">Github repository</a>, or download them from <a href="http://140dev.com/download/phirehose_upgrade.zip">my site</a>.<br />
2. Replace your copy of Phirehose.php and OauthPhirehose.php with the new versions. You&#8217;ll find the existing files in /140dev/libraries/phirehose.<br />
3. Kill the running copy of get_tweets.php.<br />
4. Restart get_tweets.php in the background with: nohup php get_tweets.php > /dev/null &#038;</p>
]]></content:encoded>
			<wfw:commentRss>http://140dev.com/twitter-api-programming-blog/upgrade-phirehose-now-for-continued-streaming-api-access/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Phirehose library needs some beta testers</title>
		<link>http://140dev.com/twitter-api-programming-blog/the-phirehose-library-needs-some-beta-testers/</link>
		<comments>http://140dev.com/twitter-api-programming-blog/the-phirehose-library-needs-some-beta-testers/#comments</comments>
		<pubDate>Thu, 05 Dec 2013 18:10:31 +0000</pubDate>
		<dc:creator>Adam Green</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Phirehose]]></category>
		<category><![CDATA[Streaming API]]></category>

		<guid isPermaLink="false">http://140dev.com/?p=2622</guid>
		<description><![CDATA[I&#8217;m not the author of the Phirehose library for streaming API connections. I just use it as the network layer of my streaming API code. I don&#8217;t have the network coding skills to write this library&#8217;s code or to fix it, but I can encourage anyone using Phirehose or my 140dev Twitter framework code to [&#8230;]]]></description>
				<content:encoded><![CDATA[<p></p><p>I&#8217;m not the author of the <a href="https://github.com/fennb/phirehose">Phirehose library</a> for streaming API connections. I just use it as the network layer of my <a href="http://140dev.com/free-twitter-api-source-code-library/">streaming API code</a>. I don&#8217;t have the network coding skills to write this library&#8217;s code or to fix it, but I can encourage anyone using Phirehose or my 140dev Twitter framework code to test the <a href="https://groups.google.com/forum/#!topic/phirehose-users/0LRxAw4Qni8">new version</a> of this library. On January 6th, Twitter plans on switching from http 1.0 to 1.1 for the streaming API. I know what that means conceptually. The http header exchange and error code allow a client and server to talk to each other. That is the depth of my technical knowledge here. The result, if this isn&#8217;t fixed in time, is that my streaming API code and anything else using Phirehose will stop running. </p>
<p>The good thing is that once Phirehose is patched for this change, all you have to do is download a new version of the library into your app&#8217;s directory. Nothing in your code should change. <a href="http://dcook.org/work/">Darren Cook</a> has now written this <a href="https://groups.google.com/forum/#!topic/phirehose-users/0LRxAw4Qni8">Phirehose http 1.1 patch</a> and needs people to help test it. Please add your findings to this <a href="https://groups.google.com/forum/#!topic/phirehose-users/0LRxAw4Qni8">thread</a> on the forum. </p>
]]></content:encoded>
			<wfw:commentRss>http://140dev.com/twitter-api-programming-blog/the-phirehose-library-needs-some-beta-testers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New SSL Certificates are not a problem for anyone using the 140dev code</title>
		<link>http://140dev.com/twitter-api-programming-blog/new-ssl-certificates-are-not-an-problem-for-anyone-using-the-140dev-code/</link>
		<comments>http://140dev.com/twitter-api-programming-blog/new-ssl-certificates-are-not-an-problem-for-anyone-using-the-140dev-code/#comments</comments>
		<pubDate>Wed, 20 Nov 2013 01:49:04 +0000</pubDate>
		<dc:creator>Adam Green</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Phirehose]]></category>
		<category><![CDATA[Twitter OAuth]]></category>

		<guid isPermaLink="false">http://140dev.com/?p=2461</guid>
		<description><![CDATA[Twitter posted a notice today about the need for new SSL certificates: At the end of 2013, all Browsers and Certificate Authorities will no longer support 1024 bits RSA certificates to be compliant to National Institute of Standards and Technology (NIST) guidelines [1]. The SSL certificate currently used on api.twitter.com is signed with the older [&#8230;]]]></description>
				<content:encoded><![CDATA[<p></p><p>Twitter posted a <a href="https://dev.twitter.com/blog/rest-api-ssl-certificate-updates">notice</a> today about the need for new SSL certificates:</p>
<blockquote><p>At the end of 2013, all Browsers and Certificate Authorities will no longer support 1024 bits RSA certificates to be compliant to National Institute of Standards and Technology (NIST) guidelines [1].</p>
<p>The SSL certificate currently used on api.twitter.com is signed with the older Verisign G2 root CA certificate.</p>
<p>Due to NIST guidelines, api.twitter.com will change to a new certificate on Dec 10th, 2013. The new certificate will be signed with VeriSign Class 3 Secure Server CA &#8211; G3, which has the 2048 bits key length needed to meet recommended security levels.</p>
<p>This means that all HTTP clients used by your application must trust the new root certificate, otherwise you won&#8217;t be able to connect in the API. To ensure proper SSL certificate verification across all of Twitter&#8217;s services, your software should include all Verisign Root Certificates in its CAFile or other respective keystore. The root certificates are available at the following link:<br />
* Verisign (https://www.symantec.com/page.jsp?id=roots)
</p></blockquote>
<p>I have to admit here that I don&#8217;t really know what an SSL certificate is. I know that it is a file that allows SSL to work, but beyond that my perception of this announcement was like Bart Simpson&#8217;s dog:</p>
<blockquote><p>Blah blah blah Dec 10th blah blah everything breaks blah blah.
</p></blockquote>
<p>What I could tell was that I might need to download something and warn everyone using my code to do the same. So I immediately sent queries to the authors of Phirehose and tmhOAuth, the two libraries upon which all my Twitter code depends. The responses were that we are all good, and I could just ignore this cryptic, yet frightening warning.  </p>
<p>Fenn Bailey, author of Phirehose, replied:</p>
<blockquote><p>Phirehose has no visibility of SSL itself but simply uses PHP (and your OS&#8217;s) SSL layer. Basically, if PHP will work with these new certificates, Phirehose will.</p></blockquote>
<p>And Matt Harris, author of tmhOAuth, said:</p>
<blockquote><p>If you use the included cacert.pem you&#8217;ll be using the same SSL CA roots that Mozilla uses as of Sat Dec 29 20:03:40 2012 (the latest version) &#8212; so things should be fine.</p></blockquote>
<p>Hooray! Everything is good. Nothing to worry about. If you were as mystified as me by the SSL certificate announcement, you can relax. </p>
<p>On a personal level, this lack of understanding of the layers beneath the code that I produce is like the perception of other scientific disciplines when I was in college. I was an organic chemistry major, and we used to laugh at the molecular biology majors, because they didn&#8217;t have good enough memories to hack Organic Chem. The physical chemists used to laugh at us, because we couldn&#8217;t handle the math to understand Pchem. The physicists laughed at the physical chemists, because they couldn&#8217;t base all their work on Quantum Theory. Who knows what the mathematicians thought of the physicists. </p>
<p>Modern Web development has so many moving parts and layers in its software stack that you just have to trust that the guys building the parts your code rests on know what they are doing. I just wish that the Twitter folks understood that many of their 3rd party devs are not CS majors, and yet we are able to build lots of cool apps. </p>
]]></content:encoded>
			<wfw:commentRss>http://140dev.com/twitter-api-programming-blog/new-ssl-certificates-are-not-an-problem-for-anyone-using-the-140dev-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kindle version of Twitter API book is now available on Amazon</title>
		<link>http://140dev.com/twitter-api-programming-blog/kindle-version-of-twitter-api-book-is-now-available/</link>
		<comments>http://140dev.com/twitter-api-programming-blog/kindle-version-of-twitter-api-book-is-now-available/#comments</comments>
		<pubDate>Mon, 28 Oct 2013 16:15:18 +0000</pubDate>
		<dc:creator>Adam Green</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Twitter API]]></category>

		<guid isPermaLink="false">http://140dev.com/?p=2363</guid>
		<description><![CDATA[We converted the Twitter API Engagement Programming book to Kindle version last week, and it is now available in Amazon stores all over the world. If you don&#8217;t own a Kindle, Amazon provides a free reader app for Windows, Mac, and all major mobile devices: iPad, iPhone, Android, etc. http://www.amazon.com/gp/feature.html?docId=1000493771 This is the first Kindle [&#8230;]]]></description>
				<content:encoded><![CDATA[<p></p><p>We converted the <a href="http://www.amazon.com/dp/0989875806/">Twitter API Engagement Programming</a> book to Kindle version last week, and it is now available in Amazon stores all over the world. If you don&#8217;t own a Kindle, Amazon provides a free reader app for Windows, Mac, and all major mobile devices: iPad, iPhone, Android, etc.<br />
<a href="http://www.amazon.com/gp/feature.html?docId=1000493771">http://www.amazon.com/gp/feature.html?docId=1000493771</a></p>
<p>This is the first Kindle book I&#8217;ve produced, and the process has given me lots of ideas for new projects. I&#8217;m going to work on the native iPad format also, but for now the Kindle reader works fine on an iPad. </p>
<p>You can download the kindle version of the book on the main Amazon.com site at:<br />
<a href="http://www.amazon.com/dp/B00G3OCA0K">http://www.amazon.com/dp/B00G3OCA0K</a></p>
<p>Or you can go to the kindle store in your local Amazon site and search for &#8220;Twitter API Engagement&#8221;. </p>
<p>The <a href="http://www.amazon.com/dp/0989875806/">print version</a> of the book will remain on the Amazon.com store only for now, but you can have it shipped from there to anywhere in the world. </p>
]]></content:encoded>
			<wfw:commentRss>http://140dev.com/twitter-api-programming-blog/kindle-version-of-twitter-api-book-is-now-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My new book on Twitter API Engagement Programming</title>
		<link>http://140dev.com/twitter-api-programming-blog/my-new-book-on-twitter-api-engagement-programming/</link>
		<comments>http://140dev.com/twitter-api-programming-blog/my-new-book-on-twitter-api-engagement-programming/#comments</comments>
		<pubDate>Wed, 02 Oct 2013 17:43:26 +0000</pubDate>
		<dc:creator>Adam Green</dc:creator>
				<category><![CDATA[140dev Source Code]]></category>
		<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Books]]></category>

		<guid isPermaLink="false">http://140dev.com/?p=2307</guid>
		<description><![CDATA[I’ve been building custom Twitter engagement systems for clients since 2009, and now I’ve combined all of my favorite techniques and tools into a new book available on Amazon: amazon.com/dp/0989875806 Just as with my 140dev Twitter Framework code and my ebooks on topics like OAuth, the code in this book uses PHP and MySQL. It [&#8230;]]]></description>
				<content:encoded><![CDATA[<p></p><p>I’ve been building custom Twitter engagement systems for clients since 2009, and now I’ve combined all of my favorite techniques and tools into a new book available on Amazon:<br />
<a href="http://amazon.com/dp/0989875806 ">amazon.com/dp/0989875806 </a></p>
<p>Just as with my 140dev Twitter Framework code and my ebooks on topics like OAuth, the code in this book uses PHP and MySQL. It shows how to capture tweets, mentions, retweets, tags, URLs, friends and followers. There is a complete report system for sharing this information with clients. A range of automated engagement tools, such as auto-tweeting, automatic DMs, and other forms of automation are included. </p>
<p>This entire engagement system is fully compliant with Twitter’s API version 1.1, and the latest version of the Terms of Service. </p>
<p>I’ve also made all of the source code from the book available for free download under the MIT open source license:<br />
<a href="http://140dev.com/twitter-api-engagement-programming/source-code/">140dev.com/twitter-api-engagement-programming/source-code/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://140dev.com/twitter-api-programming-blog/my-new-book-on-twitter-api-engagement-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
