<?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>bitblogr.com &#187; ngBot</title>
	<atom:link href="http://www.bitblogr.com/tag/ngbot/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bitblogr.com</link>
	<description>design, tutorials, inspiration, creativity</description>
	<lastBuildDate>Sat, 05 Jun 2010 17:20:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>My twitter timeline</title>
		<link>http://www.bitblogr.com/tutorials/my-twitter-timeline/</link>
		<comments>http://www.bitblogr.com/tutorials/my-twitter-timeline/#comments</comments>
		<pubDate>Sun, 14 Mar 2010 12:19:41 +0000</pubDate>
		<dc:creator>Opeyemi Obembe</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[ngBot]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://www.bitblogr.com/?p=171</guid>
		<description><![CDATA[During the redesign of the ngBot blog, we figured it&#8217;d be nice dedicating a part of the sidebar to some of ngBot updates on twitter. This is a common trend with blogs and sure should be a piece of cake. Instead of re-inventing the wheel, I tried looking out for ready made scripts that perform [...]]]></description>
			<content:encoded><![CDATA[<div style="float:right;margin:0px 0px 0px 0px;"></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;margin-right:10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.bitblogr.com%2Ftutorials%2Fmy-twitter-timeline%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.bitblogr.com%2Ftutorials%2Fmy-twitter-timeline%2F&amp;source=bitblogr&amp;style=normal&amp;service_api=R_2574ec2cdf93a9dc24a80c02f8d96a25&amp;hashtags=CSS,Javascript,ngBot,Twitter" height="61" width="50" /><br />
			</a>
		</div>
<p>During the redesign of the <a href="http://blog.ngbot.com">ngBot blog</a>, we figured it&#8217;d be nice dedicating a part of the sidebar to some of ngBot updates on <a href="http://twitter.com/ngbot">twitter</a>. This is a common trend with blogs and sure should be a piece of cake.</p>
<p>Instead of re-inventing the wheel, I tried looking out for ready made scripts that perform similar functions – that is; pull out a user&#8217;s updates on twitter and integrate it in the blog.</p>
<p><span id="more-171"></span></p>
<p>I sure came across a couple like <a href="http://crunchbang.org/archives/2008/02/20/twitterzoid-php-script/">Twitterzoid</a> and <a href="http://twitterjs.googlecode.com">Twitter js</a>. But very much like me, I wasn&#8217;t contented with them as most of them were too complicating. Or maybe just the normal me &#8211; always wanting to try out things my own way. And so, I decided to write my own script.</p>
<p>Attached is what I came up with in less than a hundred lines of code. Called “<em>mytimeline.php” (</em><a href="http://www.bitblogr.com/freebies/mytimeline.phps" target="_blank">Download this file [3.20kb]</a> ), the script simply pulls a user&#8217;s latest updates (up to 20) from twitter. Below is a simple usage example as used on the <a href="http://blog.ngbot.com" target="_blank">ngBot blog</a>;</p>
<pre>&lt;strong&gt;Twitter stream (&lt;a href="<a href="http://twitter.com/ngbot&quot;&gt;@ngbot&lt;/a&gt;)&lt;/strong&gt;">http://twitter.com/ngbot"&gt;@ngbot&lt;/a&gt;)&lt;/strong&gt;

</a>&lt;ul class="sidecat"&gt;
    &lt;?php
    // The class accepts the username and number of wanted updates (up to 20)
    $timeline = new myTimeline('ngbot', 3);
    foreach($timeline-&gt;get() as $v)
    {
        list($tweet, $date, $link) = $v;
        ?&gt;
        &lt;li&gt;
           &lt;p&gt;&lt;?= $tweet; ?&gt; &lt;span class="fade"&gt;&amp;mdash; &lt;a href="&lt;?= $link; ?&gt;"&gt;&lt;?= $date; ?&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
        &lt;/li&gt;         &lt;?php
    }
    ?&gt;
    &lt;li class="last"&gt;
        &lt;p&gt;&lt;a href="<a href="http://twitter.com/ngbot&quot;">http://twitter.com/ngbot"</a>&gt;More on Twitter &amp;rarr;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
&lt;/ul&gt;</pre>
<h2>Final words:</h2>
<p>Feel free to download, tweak and play around with it in whatever way you want. And don&#8217;t forget to hit me up in case you have any difficulties.</p>
<p>By the way, you may want to cache updates so that the script doesn&#8217;t connect to twitter on every visit to your site. Here is how we do it, using PEAR&#8217;s cache lite:</p>
<pre>&lt;?php
  // Pretend there are updates from twitter
$updates = true;
$cache = new Cache_Lite_Output(array(
    'cacheDir' =&gt; 'path/to/cache/directory/',
    'lifeTime' =&gt; 3600 * 3 // Cache for 3 hours
));

if(!($cache-&gt;start('tweets'))):
    // No update yet.
    $updates = false;
    $timeline = new myTimeline('ngbot', 3);
    foreach($timeline-&gt;get() as $v)
    {
        $updates = true;
        list($tweet, $date, $link) = $v;
        ?&gt;
        &lt;li&gt;
            &lt;p&gt;&lt;?= $tweet; ?&gt; &lt;span class="fade"&gt;&amp;mdash; &lt;a href="&lt;?= $link; ?&gt;"&gt;&lt;?= $date; ?&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
        &lt;/li&gt;
        &lt;?php
    }
$cache-&gt;end();
endif;
// If no updates from twitter, dont cache
if(!$updates)    $cache-&gt;remove('tweets');
?&gt;</pre>
<h2>File(s) used in this article:</h2>
<p><a href="http://www.bitblogr.com/freebies/mytimeline.phps" target="_blank">mytimeline.php</a> (size: 3.20kb)</p>
<h2>Update</h2>
<blockquote><p>The script has been pushed to Google Code here: <a href="http://mytimeline.googlecode.com">http://mytimeline.googlecode.com</a></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.bitblogr.com/tutorials/my-twitter-timeline/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Introducing: ngBot answers</title>
		<link>http://www.bitblogr.com/reviews/introducing-ngbot-answers/</link>
		<comments>http://www.bitblogr.com/reviews/introducing-ngbot-answers/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 10:20:43 +0000</pubDate>
		<dc:creator>Ernest Ojeh</dc:creator>
				<category><![CDATA[Reviews]]></category>
		<category><![CDATA[devedgelabs]]></category>
		<category><![CDATA[mobility]]></category>
		<category><![CDATA[ngBot]]></category>
		<category><![CDATA[Nigeria]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.bitblogr.com/?p=100</guid>
		<description><![CDATA[ngBot is a portal of various applications specifically tailored (but not limited) to the Nigerian/African community [Powered by devedgelabs.com] has added yet another site to the portal. The fast-growing portal recently introduced ngBot answers. Before i cover what ngBot answers entails, lets do a quick run-through of a few solutions from ngBot/devedgelabs. ngBot mobile: Nigeria’s [...]]]></description>
			<content:encoded><![CDATA[<div style="float:right;margin:0px 0px 0px 0px;"></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;margin-right:10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.bitblogr.com%2Freviews%2Fintroducing-ngbot-answers%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.bitblogr.com%2Freviews%2Fintroducing-ngbot-answers%2F&amp;source=bitblogr&amp;style=normal&amp;service_api=R_2574ec2cdf93a9dc24a80c02f8d96a25&amp;hashtags=devedgelabs,mobility,ngBot,Nigeria,web" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://www.ngbot.com/" target="_blank">ngBot</a> is a portal of various applications specifically tailored (but not limited) to the Nigerian/African community [Powered by <a href="http://devedgelabs.com">devedgelabs.com</a>] has added yet another site to the portal. The fast-growing portal recently introduced <a href="http://answers.ngbot.com/">ngBot answers</a>.</p>
<p><span id="more-100"></span></p>
<p>Before i cover what <a href="http://answers.ngbot.com/">ngBot answers</a> entails, lets do a quick run-through of a few solutions from <a href="http://ngbot.com">ngBot</a>/<a href="http://devedgelabs.com">devedgelabs</a>.</p>
<p><a href="http://devedgelabs.com"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="devedgelabs" src="http://www.bitblogr.com/wp-content/uploads/2009/09/devedgelabs.jpg" border="0" alt="devedgelabs" width="350" height="147" /></a></p>
<h2><a href="http://mobile.ngbot.com/">ngBot mobile:</a></h2>
<p><a href="http://mobile.ngbot.com/"></a>Nigeria’s mobile community. Though still in its beta stage, this fast-growing site offers free mobile downloads (ringtones, wallpapers, games, applications etc.) tools, tips &amp; tricks, hacks, SMS, share and learn and much more to cater for <span style="text-decoration: underline;">Africa’s largest &amp; fastest growing mobile market</span>. Users also get to contribute to every section of the site. The site is also accessible through mobile devices here @ <a href="http://mobile.ngbot.com/m">http://mobile.ngbot.com/m</a>.</p>
<p><a href="http://mobile.ngbot.com"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="ngbot mobile" src="http://www.bitblogr.com/wp-content/uploads/2009/09/071.jpg" border="0" alt="ngbot mobile" width="500" height="332" /></a></p>
<p><a href="http://mobile.ngbot.com/downloads"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="ngbot downloads" src="http://www.bitblogr.com/wp-content/uploads/2009/09/ngbotdownloads.png" border="0" alt="ngbot downloads" width="500" height="556" /></a></p>
<h2><a href="http://devedgelabs.com/mobile/nairamngr">nairaMngr:</a></h2>
<p>NairaMngr (Naira Manager) is a java (J2ME/MIDP 2.0) mobile application for day to day earnings and expenditure recording. It helps you keep tab of how much you earn and how much goes out. More info here: <a href="http://devedgelabs.com/mobile/nairamngr">http://devedgelabs.com/mobile/nairamngr</a></p>
<p>download version 1.1 (free): <a href="http://mobile.ngbot.com/downloads/apps/10">http://mobile.ngbot.com/downloads/apps/10</a></p>
<p><a href="http://devedgelabs.com/mobile/nairamngr"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="nairamngr" src="http://www.bitblogr.com/wp-content/uploads/2009/09/nairamngr.jpg" border="0" alt="nairamngr" width="500" height="300" /></a></p>
<h2><a href="http://nubley.com">nubley (public beta):</a></h2>
<p>Nubley is a directory of micro-bloggers on various micro-blogging platforms including; <a href="http://www.twitter.com/">Twitter</a>, <a href="http://www.naijapulse.com">NaijaPulse</a>, <a href="http://identi.ca/">Identi.ca</a> and so on. The service also features tools such as URL shortener, feed updater, auto-responders etc. Try it here: <a href="http://www.nubley.com/">http://www.nubley.com/</a></p>
<p><a href="http://nubley.com"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="nubley" src="http://www.bitblogr.com/wp-content/uploads/2009/09/072.jpg" border="0" alt="nubley" width="500" height="264" /></a></p>
<h2><a href="http://answers.ngbot.com/">ngBot Answers:</a></h2>
<p>ngBot Answers is a site where users can ask questions and get answers on various areas of interests. Users can also follow questions asked by others and get email notifications when they are answered. The site is also strictly moderated. Sounds like a forum, huh? Well, not really.. This is strictly for questions and answers.</p>
<p>Thinks about it; let’s say you need to find out where a certain place is located in Lagos, and the ‘mighty’ Google can’t help? You simply ask a question on <a href="http://answers.ngbot.com/">ngBot answers</a> and other users offer suitable answers. Still not convinced? Find out more: <a href="http://answers.ngbot.com/about">http://answers.ngbot.com/about</a></p>
<p>…or just try it out: <a href="http://answers.ngbot.com/">http://answers.ngbot.com/</a></p>
<p><a href="http://answers.ngbot.com/"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="ngbot answers" src="http://www.bitblogr.com/wp-content/uploads/2009/09/answers.png" border="0" alt="ngbot answers" width="500" height="377" /></a></p>
<p><strong>Submit your web app:</strong> Do you want us to feature your web application, why don’t you tell us about it. Contact us.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bitblogr.com/reviews/introducing-ngbot-answers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VPS, CDN and advanced server techniques: Part 1</title>
		<link>http://www.bitblogr.com/how-to/vps-cdn-and-advanced-server-techniques-part-1/</link>
		<comments>http://www.bitblogr.com/how-to/vps-cdn-and-advanced-server-techniques-part-1/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 16:20:19 +0000</pubDate>
		<dc:creator>Opeyemi Obembe</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[PC]]></category>
		<category><![CDATA[Amazon s3]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[ngBot]]></category>
		<category><![CDATA[Servers]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://www.bitblogr.com/?p=63</guid>
		<description><![CDATA[VPS stands for Virtual Private Server, a type of hosting technology that gives you advanced features and server privilege as against a shared hosting. Its use in this article however refers generally to any type of hosting that allows you root access to your server &#8211; dedicated servers, VPS itself and Cloud servers as examples. [...]]]></description>
			<content:encoded><![CDATA[<div style="float:right;margin:0px 0px 0px 0px;"></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;margin-right:10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.bitblogr.com%2Fhow-to%2Fvps-cdn-and-advanced-server-techniques-part-1%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.bitblogr.com%2Fhow-to%2Fvps-cdn-and-advanced-server-techniques-part-1%2F&amp;source=bitblogr&amp;style=normal&amp;service_api=R_2574ec2cdf93a9dc24a80c02f8d96a25&amp;hashtags=Amazon+s3,Cloud,Facebook,Microsoft,ngBot,Servers,Twitter" height="61" width="50" /><br />
			</a>
		</div>
<p>VPS stands for Virtual Private Server, a type of hosting technology that gives you advanced features and server privilege as against a shared hosting. Its use in this article however refers generally to any type of hosting that allows you root access to your server &#8211; dedicated servers, VPS itself and Cloud servers as examples. I&#8217;d like to explain each in here but that is beyond the scope of this piece. Maybe some other time ;)<span id="more-63"></span></p>
<p>If you are proposing a startup or a big site &#8211; big in the term of eventual traffic and functionalities, then shared hosting is not the option for you. Really, I&#8217;m talking from experience. Go VPS. There are a lot of reasons for this but here are 3 core ones:</p>
<ol>
<li>With VPS, you have the ability to configure your server (app and OS) to your taste, removing and adding stuffs the way you want &#8211; and this is a very important thing.</li>
<li>On shared hosting, there is a limit to how &#8216;big&#8217; you can grow. Let me give you a live example here. We started <a href="http://ngbot.com">ngBot</a> on a shared hosting and everything was going fine till we added <a href="http://mobile.ngbot.com">ngBot mobile</a>. The whole idea was a play thing &#8211; just a place to share mobile items we get here and there and then meet other mobile geeks, but then it started getting more than that. In a while, we grew close to over 4000 members and was clocking around 30k monthly page views. And that was when the axe came from our shared hosting company. They disabled some of our scripts and advised us to go VPS or dedicated. The blow came so sudden and we had to take off the site for around a month till we found and nested on a suitable VPS host (cloud server actually). Needless to say, the one month the site was out cost us a lot of hits, members and Search Engine ranking.</li>
<li>On VPs you do not share resources with anyone like on shared hosting. Shared hostings are like face-to-face apartments where you share a lot of things together and you easily get disturbed by one another. If your neighbour on a shared hosting is a spammer for example, this may affect how mails from your site are delivered as well.</li>
</ol>
<p>One thing to note about VPS however is that they are costlier than shared hosting. Another is that they require a little advanced skill to setup especially if you go the vanilla blank server way and you are doing the OS, server and tools setup yourself. This is a really big one and I advice you go for the preinstalled/configured option if you are not up to it. The already setup ones comes with an admin app (CPanel mostly) and looks pretty much like your shared platform. With the blank ones, all you have is your ugly shell console to do everything you want. And if this is your way, you will find <a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html">putty</a> very useful.</p>
<p>Needless to say, a good knowledge of your VPS OS is a very important virtue. As a server admin, you should be very familiar with the OS directory structures, installing/removing packages and dependencies (good knowledge of building and compiling important here as well as build tools like make and gcc), editing config files with editors like vi and nano (as you know, this is very common to Linux) among others.</p>
<p>Another very important thing you should know about is DNS setup (A, MX and CNAME especially) and how to configure your A records with your server especially if you want to setup multiple domains on the server. A good into article on DNS is available here: <a href="http://carsonified.com/blog/web-apps/get-started-with-dns/" target="_blank">http://carsonified.com/blog/web-apps/get-started-with-dns/</a></p>
<p>Now, space and bandwidth is one luxury you don&#8217;t have on VPS. It is easy to find shared hosts promising you unlimited space/bandwidth but if you hear that on VPS, run away! The little one we run on at the moment offers just 20GB space as against our former shared hosting space of 1500GB! As a workaround to space and bandwidth issues on VPS, enter CDN (Content Delivery Network)!</p>
<p>CDN serve as storage backbone. Picture the scenario: storing our mobile stuffs (videos, apps, games, pictures) in our little 20GB space will leave us with little space for more upcoming ones. What if we have it stored in a different place &#8211; on a different server designed exclusively for data storage and transfer and not for core server functionalities like script compiling/serving etc? And that is what CDN is all about. CDNs are designed as storage servers for static data. But they don&#8217;t just store. The way they are designed is such that they distribute stored content between different other servers around the world and serve content from the server closest to the request source, making content serving fast. Not only that, CDNs also enable content caching.</p>
<p>You come across CDN in use every minute you surf the web &#8211; <a href="http://facebook.com">Facebook</a> (for storing/serving images/videos), <a href="http://twitter.com/">twitter</a> (for storing profile images), <a href="http://mobile.ngbot.com">ngBot mobile</a> (serving mobile download files) ;) and a lot more. Another good thing about CDN is that you don&#8217;t have a specific size you are limited to. You can consume as much as you want to as you pay per GB of space you use. Much more, it is cheap &#8211; very cheap. On the one we run on (<a href="http://www.rackspacecloud.com/cloud_hosting_products/file">Rackspace cloud files</a>), 1GB costs around $0.15. One of the most popular public CDN is <a href="https://s3.amazonaws.com/">Amazon S3</a>. They have been around for quite a while and a lot of sites use it, <a href="http://twitter.com/">twitter</a> as one. Another is <a href="www.rackspacecloud.com/cloud_hosting_products/file">Rackspace cloud files</a> (which we use) and the new <a href="http://www.microsoft.com/azure/">Microsoft Azure</a>.</p>
<p>So how exactly do you transfer content in and out of a CDN? What other ways are static content served? Why is it necessary? Where does caching comes into this? Join me in the next piece ;)</p>
<blockquote><p>Post update: The Second part of this article has been published <a href="http://www.bitblogr.com/how-to/vps-cdn-and-advanced-server-techniques-2/">here</a>.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.bitblogr.com/how-to/vps-cdn-and-advanced-server-techniques-part-1/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
