<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-76238551939501295</id><updated>2012-01-02T14:39:01.219-08:00</updated><category term='Personal'/><category term='Introduction'/><category term='Python'/><category term='Twitter'/><category term='jQuery'/><category term='Fire Eagle'/><category term='AprilFool'/><category term='General'/><category term='Cairo'/><category term='DemoCamp'/><category term='Flickr'/><category term='CherryPy'/><category term='GPS'/><category term='Baralbait'/><category term='Web2.0'/><category term='Tutorial'/><category term='Security'/><category term='Feedback'/><category term='WSGI'/><category term='Video'/><category term='Yahoo'/><category term='API'/><category term='Delicious'/><title type='text'>Baralbait</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.baralbait.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/76238551939501295/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://blog.baralbait.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Tarek Amr</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-jLg3Vbiroc4/AAAAAAAAAAI/AAAAAAAAA7w/J_zMvqN8xSc/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>16</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-76238551939501295.post-1369141584810119816</id><published>2012-01-02T14:38:00.000-08:00</published><updated>2012-01-02T14:39:01.227-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSGI'/><category scheme='http://www.blogger.com/atom/ns#' term='Tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>A Waitress &amp; A Flask</title><content type='html'>Flask is a microframework for Python based on &lt;a href="http://werkzeug.pocoo.org/documentation/"&gt;Werkzeug&lt;/a&gt;, &lt;a href="http://jinja.pocoo.org/2/documentation/"&gt;Jinja2&lt;/a&gt;, and here is a simple Flask Hello World code:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;from &lt;a href="http://flask.pocoo.org/"&gt;flask&lt;/a&gt; import Flask&lt;br /&gt;app = Flask(__name__)&lt;br /&gt;&lt;br /&gt;@app.route("/")&lt;br /&gt;def hello():&lt;br /&gt;    return "Hello World!"&lt;br /&gt;&lt;br /&gt;if __name__ == "__main__":&lt;br /&gt;    app.run()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Waitress on the other hand is a  pure-Python WSGI server, and here's normal usage of the server:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;from &lt;a href="http://docs.pylonsproject.org/projects/waitress/en/latest/"&gt;waitress&lt;/a&gt; import serve&lt;br /&gt;serve(wsgiapp, host='0.0.0.0', port=8080)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;So, here is how I wrote code to run Flask from within a Waitress WSGI Server:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;from flask import Flask&lt;br /&gt;from waitress import serve&lt;br /&gt;&lt;br /&gt;app = Flask(__name__)&lt;br /&gt;&lt;br /&gt;@app.route("/")&lt;br /&gt;def hello():&lt;br /&gt; return "Hello World!"&lt;br /&gt;&lt;br /&gt;if __name__ == "__main__":&lt;br /&gt; #app.run()&lt;br /&gt; serve(app)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Documentations:&lt;br /&gt;&lt;a href="http://flask.pocoo.org/docs/"&gt;http://flask.pocoo.org/docs/&lt;/a&gt;&lt;br /&gt;&lt;a href="https://github.com/Pylons/waitress/blob/master/docs/index.rst"&gt;https://github.com/Pylons/waitress/blob/master/docs/index.rst &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/76238551939501295-1369141584810119816?l=blog.baralbait.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.baralbait.com/feeds/1369141584810119816/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.baralbait.com/2012/01/waitress-flask.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/76238551939501295/posts/default/1369141584810119816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/76238551939501295/posts/default/1369141584810119816'/><link rel='alternate' type='text/html' href='http://blog.baralbait.com/2012/01/waitress-flask.html' title='A Waitress &amp; A Flask'/><author><name>Tarek Amr</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-jLg3Vbiroc4/AAAAAAAAAAI/AAAAAAAAA7w/J_zMvqN8xSc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-76238551939501295.post-690935507318817576</id><published>2011-12-28T15:08:00.000-08:00</published><updated>2011-12-28T15:20:33.169-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='Web2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='jQuery'/><title type='text'>Quick jQuery Intro.</title><content type='html'>For the second time in two days, one of my friends asks me about jQuery. So, here is a quick introduction to it.Let's say we have the following HTML that contains a list of four items&lt;br /&gt;&lt;pre&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;   &amp;lt;title&amp;gt;jQuery demo&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;   &amp;lt;ul&amp;gt;&lt;br /&gt;     &amp;lt;li class="news_line"&amp;gt;Mr. One&amp;lt;/li&amp;gt;&lt;br /&gt;     &amp;lt;li class="news_line"&amp;gt;Mr. Two&amp;lt;/li&amp;gt;&lt;br /&gt;     &amp;lt;li class="news_line"&amp;gt;Mr. Three&amp;lt;/li&amp;gt;&lt;br /&gt;     &amp;lt;li class="news_line"&amp;gt;Mr. Four&amp;lt;/li&amp;gt;&lt;br /&gt;   &amp;lt;ul&amp;gt; &lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt; &lt;br /&gt;&lt;/pre&gt;Now we want to make it more interactive, so when the mouse hovers on any of the below items it turns red, and when it goes away it turns white again. Here comes the beauty of jQuery, you can give them all a CSS class "news_line", hence you write a function once and it is applicable to them all. So, first of all, you have to include the following script.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;script &lt;br /&gt; src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"&lt;br /&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/pre&gt;You put all your jQuery script between the following, this makes sure it's not executed until the page is loaded successfully&lt;br /&gt;&lt;pre&gt;&amp;lt;script&amp;gt;&lt;br /&gt;    $(document).ready(function(){&lt;br /&gt;       ... YOUR jQUERY SCRIPT HERE ...&lt;br /&gt;    });&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/pre&gt;We now are going to use the following function, which simply mean attach an event catcher to the items with class "news_line", and make the event trigger is 'mouseover', i.e. whenever the mouse hovers over it. We also have other events such as 'mouseout', etc.&lt;br /&gt;&lt;pre&gt;$(".news_line").live('mouseover',function(){&lt;br /&gt;   ... DO SOME STUFF HERE ...&lt;br /&gt;});&lt;br /&gt;&lt;/pre&gt;One more thing to notice is "$(this)", the above command searches for all items with class "news_line", now when we use "$(this)", we are referring the the item we are dealing with now. And starting from that point we use another functions "css()" to change the object's background colour. You may in some other cases use stuff like "$(this).children().css()" to change the colour of all of the children of the matched items, or "$(this).parent().parent().hide();" to hide the parent of the parent of the item you are referring to, etc.So, finally here is the code we are talking about here. &lt;br /&gt;&lt;pre&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;   &amp;lt;title&amp;gt;jQuery demo&amp;lt;/title&amp;gt;&lt;br /&gt;   &amp;lt;script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;script&amp;gt;&lt;br /&gt;     $(document).ready(function(){&lt;br /&gt;        $(".news_line").live('mouseover',function(){&lt;br /&gt;           $(this).css("background-color","#ff0000");&lt;br /&gt;        });&lt;br /&gt;        $(".news_line").live('mouseout',function(){&lt;br /&gt;           $(this).css("background-color","#ffffff");&lt;br /&gt;        });&lt;br /&gt;     });&lt;br /&gt;   &amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;   &amp;lt;ul&amp;gt;&lt;br /&gt;     &amp;lt;li class="news_line"&amp;gt;Mr. One&amp;lt;/li&amp;gt;&lt;br /&gt;     &amp;lt;li class="news_line"&amp;gt;Mr. Two&amp;lt;/li&amp;gt;&lt;br /&gt;     &amp;lt;li class="news_line"&amp;gt;Mr. Three&amp;lt;/li&amp;gt;&lt;br /&gt;     &amp;lt;li class="news_line"&amp;gt;Mr. Four&amp;lt;/li&amp;gt;&lt;br /&gt;   &amp;lt;ul&amp;gt; &lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt; &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Finally, here is a list of all jQuery functions, events, etc.&lt;br /&gt;&lt;a href="http://visualjquery.com/"&gt;http://visualjquery.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/76238551939501295-690935507318817576?l=blog.baralbait.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.baralbait.com/feeds/690935507318817576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.baralbait.com/2011/12/quick-jquery-intro.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/76238551939501295/posts/default/690935507318817576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/76238551939501295/posts/default/690935507318817576'/><link rel='alternate' type='text/html' href='http://blog.baralbait.com/2011/12/quick-jquery-intro.html' title='Quick jQuery Intro.'/><author><name>Tarek Amr</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-jLg3Vbiroc4/AAAAAAAAAAI/AAAAAAAAA7w/J_zMvqN8xSc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-76238551939501295.post-6308356069016321117</id><published>2011-09-29T19:45:00.000-07:00</published><updated>2011-09-29T20:03:08.617-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Yahoo'/><category scheme='http://www.blogger.com/atom/ns#' term='Delicious'/><title type='text'>Delicious Redesign</title><content type='html'>As you know, Yahoo sold their social bookmarking service, Delicious, to &lt;a href="http://avos.com/"&gt;AVOS&lt;/a&gt;, a while ago. On September 26, &lt;a href="http://www.avos.com/new-delicious/"&gt;AVOS redesigned Delicious&lt;/a&gt;. It's sad how Facebook grabs the whole internet's attention with every redesign they make, while Delicious redesign was ignored like that. However since I am a Delicious fan myself, let me write my two cents here about their new design, which by the way is not only an interface redesign, but many functionalities have been changed too.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-27aIX1grn6E/ToUtGvyUQEI/AAAAAAAAA6Y/Dpq97tEC1EE/s1600/NewDelicious.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="128" src="http://3.bp.blogspot.com/-27aIX1grn6E/ToUtGvyUQEI/AAAAAAAAA6Y/Dpq97tEC1EE/s320/NewDelicious.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Avatar: Now you can add your own Avatar (profile picture) to your profile there. Silly!? Not really, I guess it's meant to make the service more social. Although Delicious was one of the pioneers in the Social Web movement, they have been a bit anti-social compared to newer services like twitter, espcially when &lt;a href="http://blog.baralbait.com/2010/12/fuck-yahoo-is-shutting-delicious-down.html"&gt;Yahoo stopped any further development in the site for ages&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Stacks: Well, before talking about that feature, let me tell first you how I used to use Delicious earlier. Other than saving my bookmarks, Delicious was like my way to discover new startups, python libraries, news, etc. All that was done via two tabs that were normally ignored by many users, the Network tab and the Subscription one. The Network tab was like the timeline of my friends' bookmarks, or you can say it was the twitter-like face of Delicious. In the Subscriptions, you were to subscribe to some tags related to interesting topics to you, and it lists all the links saved under those tags whether by your friends or by strangers. Now those two tabs aren't there any more, and it seems that the Stacks feature is meant to replace them, it's like a way for people to curate links under a specific subject, give the whole curation a title and description. You know, it's like a less-geeky replacement for the &lt;a href="http://www.delicious.com/gr33ndata/startups"&gt;old tags pages&lt;/a&gt;, which are still there by the way. Currently, you should curate the links within a stack manually, however I guess they will let us grab them from specific tags later on. Now if you ask me, are Stacks really a good replacement for Network/Subscriptions, well, I am getting older and don't get used to changes easily, but I guess after a while I'll get used to it as a replacement for the Subscriptions tag, however I'll still miss the Network unless it is - or both of them are - still there but hidden somewhere in the new interface and I am not able to find them!!&lt;/li&gt;&lt;li&gt;API: It's cool they left the API as it is for backward compatibility, as now I can still use the same bookmark button I have in my browser. Also, in case any developers had applications built using the old API, they should still function now. However I believe there should be additions to reflect the new features. Are the "&lt;a href="http://www.delicious.com/help/api#bundles"&gt;tag bundles&lt;/a&gt;" mentioned in the API docs for example meant to reflect the Stacks? I have no idea.&lt;/li&gt;&lt;li&gt;Rough Edges: Some rough edges are there with the new design, but this isn't a big deal as they are minor one, and they made it clear that they are &lt;a href="http://www.avos.com/new-beta-status-blog/"&gt;back to beta status&lt;/a&gt; and are looking for users feedback now.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Auto-completing Tags: I've noticed that tags whether in the Bookmarklet or on the site itself ain't auto-completed. Is it something they are working on to improve, or is it a new trend! Hope it's the former not the later. The auto-completion of tags isn't just meant to make our life easier by typing less, but more important, it prevents us from creating too many with slightly different spellings in reference to the same thing, startup, startups, start-up, etc.&amp;nbsp;&lt;a href="http://www.delicious.com/help/bookmarklets"&gt; &lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;Tags: &lt;a href="http://technorati.com/tag/Delicious" rel="tag"&gt;Delicious&lt;/a&gt;, &lt;a href="http://technorati.com/tag/AVOS" rel="tag"&gt;AVOS&lt;/a&gt;, &lt;a href="http://technorati.com/tag/gr33ndata" rel="tag"&gt;Gr33n Data&lt;/a&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/76238551939501295-6308356069016321117?l=blog.baralbait.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.baralbait.com/feeds/6308356069016321117/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.baralbait.com/2011/09/delicious-redesign.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/76238551939501295/posts/default/6308356069016321117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/76238551939501295/posts/default/6308356069016321117'/><link rel='alternate' type='text/html' href='http://blog.baralbait.com/2011/09/delicious-redesign.html' title='Delicious Redesign'/><author><name>Tarek Amr</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-jLg3Vbiroc4/AAAAAAAAAAI/AAAAAAAAA7w/J_zMvqN8xSc/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-27aIX1grn6E/ToUtGvyUQEI/AAAAAAAAA6Y/Dpq97tEC1EE/s72-c/NewDelicious.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-76238551939501295.post-3593322116562488060</id><published>2010-12-16T16:03:00.000-08:00</published><updated>2010-12-17T15:13:23.784-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fire Eagle'/><category scheme='http://www.blogger.com/atom/ns#' term='Flickr'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='Yahoo'/><title type='text'>Fuck! Yahoo is shutting Delicious down!</title><content type='html'>People everywhere all over twitter are arguing if Mark Zuckerberg deserves to be named Time Magazine's Person of the Year 2010 or not. But on the other hand, I am sure we all have to agree who really deserves to be the arse of the year. Or may be the arse of the decade if you want.&lt;br /&gt;&lt;br /&gt;Yahoo was an internet search company ages before the birth of Google. And now, they sold their soul to Microsoft and Yahoo Search is just an interface for Bing! Yahoo created GeoCities ages before the real blogging hype. Blogs came, then came micro-blogs, and GeoCities stood stand still. And recently GeoCities was discontinued. Yahoo 360 and MyBlogLog were there when Zuckerberg was still using nappies. They were there before Facebook Connect and Google Friend connect, and guess what, the two services are discontinued now. FireEagle is such a brilliant idea, it's the mother of all Gowalla/Foursquare thing, and now it's been more than a year with no significant development there and seems that it will be shut-down soon. Yahoo's Webring and Briefcase are also dead now. And finally my most beloved services that Yahoo ever had are Delicious and Flickr, and today I heard that &lt;a href="http://techcrunch.com/2010/12/16/is-yahoo-shutting-down-del-icio-us/"&gt;Delicious is to be shut-down soon&lt;/a&gt;, and God only knows when Flickr will be shut-down too.&lt;br /&gt;&lt;br /&gt;Every company has its failures, and there is a rule of thumb that roughly 50% of acquisitions fails. Google had its failures too. Google's Wave and Buzz suck a big time. But the difference here is that Yahoo doesn't give its product the chance to succeed or fail, they just shut them down blindly. Only a looser can have a service as successful as Delicious and shut it down, and it requires a huge amount of dumbness to turn successful services like GeoCities, Yahoo Search, and MyBlogLog into failures.&lt;br /&gt;&lt;br /&gt;A few months ago Yahoo made - AFAIK - the first acquisition ever of an Arab company in the field of technology. The target of their &lt;a href="http://www.businessofcinema.com/news.php?newsid=14222"&gt;multi-million acquisition&lt;/a&gt; was one of the crappiest Arab companies ever, Maktoob! I've encountered few of their products, such as their blog-hosting service, and it was so 1990's.  &lt;br /&gt;&lt;br /&gt;Delicious! I really can't believe it! So what the heck is really left out of Yahoo? Their email!? Ok, this one really sucks, and it sure should have been discontinued ages ago instead of Delicious. &lt;br /&gt;&lt;br /&gt;In case you haven't noticed yet, I used to be a big Yahoo fan. I used create accounts in almost all of their services, even those obscure ones. Yet now, it's sad to admit that &lt;a href="http://techcrunch.com/2010/12/17/yahoo-disaraay/"&gt;it looks like Yahoo is dying&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Finally, I need your recommendations now for migrating my bookmarks. Meh, should I migrate to those crappy service that I used to hate, such as &lt;a href="http://www.diigo.com/"&gt;Diigo&lt;/a&gt; and &lt;a href="http://www.stumbleupon.com/"&gt;StumbleUpon&lt;/a&gt; :(&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Update:&lt;/span&gt; Apparently &lt;a href="http://blog.delicious.com/index.htm"&gt;they are going to spin Delicious off&lt;/a&gt; instead of shutting it down.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/76238551939501295-3593322116562488060?l=blog.baralbait.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.baralbait.com/feeds/3593322116562488060/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.baralbait.com/2010/12/fuck-yahoo-is-shutting-delicious-down.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/76238551939501295/posts/default/3593322116562488060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/76238551939501295/posts/default/3593322116562488060'/><link rel='alternate' type='text/html' href='http://blog.baralbait.com/2010/12/fuck-yahoo-is-shutting-delicious-down.html' title='Fuck! Yahoo is shutting Delicious down!'/><author><name>Tarek Amr</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-jLg3Vbiroc4/AAAAAAAAAAI/AAAAAAAAA7w/J_zMvqN8xSc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-76238551939501295.post-7934627736394643878</id><published>2010-02-24T06:21:00.000-08:00</published><updated>2010-02-24T06:26:30.397-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='Baralbait'/><title type='text'>Safe Position Updates</title><content type='html'>Brightkite - our nice competitors - have published a very good post about "&lt;a href="http://blog.brightkite.com/2010/02/17/practicing-safe-check-in/"&gt;The Best Practice for Safe Position Updates&lt;/a&gt;", or if you prefer their own jargon, then it's "Safe Check-In's".&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blog.brightkite.com/2010/02/17/practicing-safe-check-in/"&gt;http://blog.brightkite.com/2010/02/17/practicing-safe-check-in/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/76238551939501295-7934627736394643878?l=blog.baralbait.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.baralbait.com/feeds/7934627736394643878/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.baralbait.com/2010/02/safe-position-updates.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/76238551939501295/posts/default/7934627736394643878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/76238551939501295/posts/default/7934627736394643878'/><link rel='alternate' type='text/html' href='http://blog.baralbait.com/2010/02/safe-position-updates.html' title='Safe Position Updates'/><author><name>Tarek Amr</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-jLg3Vbiroc4/AAAAAAAAAAI/AAAAAAAAA7w/J_zMvqN8xSc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-76238551939501295.post-4805979574872517824</id><published>2009-11-24T12:19:00.000-08:00</published><updated>2009-11-24T12:51:41.460-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><category scheme='http://www.blogger.com/atom/ns#' term='Baralbait'/><title type='text'>The Future of Baralbait</title><content type='html'>Every now and then we see people coming out with cool startup, and we also sometimes see other people shutting their own startups down. And each time I see any of those startups being shut down I keep asking myself, why did they take such decision. Does it really cost them a lot of money, and they don't have any revenue streams to cover their expenses?&lt;br /&gt;&lt;br /&gt;But lately, I've been haunted by the idea of shutting Baralbait down. Baralbait doesn't cost me much money at all, so it's not financial reasons that makes me think of shutting it down. Also, I hate when people keep blaming the competition, yes, we have got Four Square, Bright Kite, Google Latitude, Loopt, Yahoo Friend on Fire, Dopplr, and so many other cool services that are more attractive than Baralbait, but it's not the competition that makes me wanna quit. And for sure dumbs are the only ones who prefer to blame the market - i.e. their users.&lt;br /&gt;&lt;br /&gt;I've started Baralbait more than a year ago. And so for we have less than 100 users. Most of them, signed up, and gave Baralbait a try for few minutesn and never logged in again. I really, don't know if I am wasting my time trying to solve a problem that doesn't exist. But still I can't say that this is the real reason for me to take such decision, because I still believe that people always face problems when they decide to go out as they have to think of a place to go, something to do, and friends to arrange the outing with. So, I can tweak and morph my service more to be a suitable solution for such problems, as apparently it doesn't help in solving those problems so far.&lt;br /&gt;&lt;br /&gt;In fact, I am still not sure why I want to quit, but may be I want to focus on other ideas that can be more useful to people than Baralbait.&lt;br /&gt;&lt;br /&gt;PS. I haven't taken a final decision yet. I am still thinking about it, and your feedback will sure help me decide.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/76238551939501295-4805979574872517824?l=blog.baralbait.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.baralbait.com/feeds/4805979574872517824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.baralbait.com/2009/11/future-of-baralbait.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/76238551939501295/posts/default/4805979574872517824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/76238551939501295/posts/default/4805979574872517824'/><link rel='alternate' type='text/html' href='http://blog.baralbait.com/2009/11/future-of-baralbait.html' title='The Future of Baralbait'/><author><name>Tarek Amr</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-jLg3Vbiroc4/AAAAAAAAAAI/AAAAAAAAA7w/J_zMvqN8xSc/s512-c/photo.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-76238551939501295.post-2271972175504629870</id><published>2009-10-08T15:44:00.000-07:00</published><updated>2009-10-08T16:41:18.562-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='API'/><category scheme='http://www.blogger.com/atom/ns#' term='CherryPy'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>CherryPy Custom Authentication</title><content type='html'>While working on Baralbait's API - yes, we may have an API someday, and you can sure contact us if you need to know more about it. Anyway, while developing the API, we were planning to use CherryPy Basic Authentication, in order to authenticate the API Calls.&lt;br /&gt;&lt;br /&gt;This is how to add CherryPy Basic Authentication to one of your methods/pages:&lt;br /&gt;&lt;pre&gt;import cherrypy&lt;br /&gt;&lt;br /&gt;users = {"user1": "secret1", "user2": "secret2"}&lt;br /&gt;&lt;br /&gt;def clear_text(mypass):&lt;br /&gt;    return mypass&lt;br /&gt; &lt;br /&gt;class MyServer:&lt;br /&gt;&lt;br /&gt;    def index(self):&lt;br /&gt;        return "This is a public page!"&lt;br /&gt;    index.exposed = True&lt;br /&gt;&lt;br /&gt;    def secret(self)&lt;br /&gt;        print "Logged user is:", cherrypy.request.login&lt;br /&gt;        return "Awesome, you've just accessed a page that requires HTTP Basic Authentication"&lt;br /&gt;    secret.exposed = True&lt;br /&gt;    secret._cp_config = {'tools.basic_auth.on': True,&lt;br /&gt;        'tools.basic_auth.realm': 'My Secure Server',&lt;br /&gt;        'tools.basic_auth.users': users,&lt;br /&gt;        'tools.basic_auth.encrypt': clear_text}&lt;br /&gt; &lt;br /&gt;if __name__ == '__main__':&lt;br /&gt;&lt;br /&gt;    cherrypy.quickstart(MyServer(),"/","myserver.conf")&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The above code means, that the page called "index", is a public page, while "secret" requires HTTP Basic Authentication, with the credentials mentioned in the "users" dictionary. For more info, Jim Hoskins has &lt;a href="http://jimhoskins.com/2008/07/21/cherrypy-digest-and-basic-authentication/"&gt;an awesome tutorial about using HTTP Basic Authentication in CherryPy&lt;/a&gt;, however his site is down now :(&lt;br /&gt;&lt;br /&gt;Now, the problem with the above code, is that you can either make a certain page public or secured, but you cannot make it public and private in the same time. Ok, please be patient, let's say that you want authenticated users to see certain content when visiting our secret page, while unauthenticated users should see different content instead of being blocked. For example, we want authenticated users to see their friend's news feed, while unauthenticated users see public news.&lt;br /&gt;&lt;br /&gt;So, here comes the beauty of &lt;a href="http://www.cherrypy.org/wiki/CustomTools"&gt;CherryPy Custom tools&lt;/a&gt;. You can now, build your own authentication hook, and make it return a null or custom user id when an incorrect or no username or password are given, instead of totally blocking the user.&lt;br /&gt;&lt;br /&gt;And here are the modifications needed to the above code:&lt;br /&gt;&lt;pre&gt;import cherrypy&lt;br /&gt;&lt;br /&gt;from cherrypy.lib import httpauth&lt;br /&gt;&lt;br /&gt;users = {"user1": "secret1", "user2": "secret2"}&lt;br /&gt;&lt;br /&gt;def clear_text(mypass):&lt;br /&gt;    return mypass&lt;br /&gt;&lt;br /&gt;def my_basic_auth(realm, users, encrypt=None):&lt;br /&gt;    if cherrypy.lib.auth.check_auth(users, encrypt):&lt;br /&gt;        print "DEBUG: Authenticated"&lt;br /&gt;        return&lt;br /&gt;    else:&lt;br /&gt;        print "DEBUG: Not Authenticated"&lt;br /&gt;        cherrypy.request.login = "Anonymous"&lt;br /&gt;        return&lt;br /&gt; &lt;br /&gt;class MyServer:&lt;br /&gt;&lt;br /&gt;    def index(self):&lt;br /&gt;        return "This is a public page!"&lt;br /&gt;    index.exposed = True&lt;br /&gt;&lt;br /&gt;    def secret(self)&lt;br /&gt;        if cherrypy.request.login == "Anonymous":&lt;br /&gt;            return "This is another public page on our useless website."&lt;br /&gt;        else:&lt;br /&gt;            return "Can you keep a secret, this page is really confidential."&lt;br /&gt;    secret.exposed = True&lt;br /&gt;    secret._cp_config = {'tools.my_basic_auth.on': True,&lt;br /&gt;        'tools.my_basic_auth.realm': 'My Secure Server',&lt;br /&gt;        'tools.my_basic_auth.users': users,&lt;br /&gt;        'tools.my_basic_auth.encrypt': clear_text}&lt;br /&gt; &lt;br /&gt;if __name__ == '__main__':&lt;br /&gt;&lt;br /&gt;    cherrypy.tools.mybasic_auth = cherrypy.Tool('on_start_resource', my_basic_auth)&lt;br /&gt;    cherrypy.quickstart(MyServer(),"/","myserver.conf")&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;So, we have just created a custom tool, and hooked it in the earliest hook ever, 'on_start_resource', i.e. during the request. We also created our own authentication method, 'my_basic_auth', and attached it to the tool. In our authentication method, which is almost identical to &lt;a href="http://www.cherrypy.org/browser/trunk/cherrypy/lib/auth.py"&gt;CherryPy's built in HTTP Basic Authentication method&lt;/a&gt;, however we do not raise any errors regardless the user is connected or not, we just set 'cherrypy.request.login' to an arbitrary user, that our application can understand later on, such as 'Anonymous'.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/76238551939501295-2271972175504629870?l=blog.baralbait.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.baralbait.com/feeds/2271972175504629870/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.baralbait.com/2009/10/cherrypy-custom-authentication.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/76238551939501295/posts/default/2271972175504629870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/76238551939501295/posts/default/2271972175504629870'/><link rel='alternate' type='text/html' href='http://blog.baralbait.com/2009/10/cherrypy-custom-authentication.html' title='CherryPy Custom Authentication'/><author><name>Tarek Amr</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-jLg3Vbiroc4/AAAAAAAAAAI/AAAAAAAAA7w/J_zMvqN8xSc/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-76238551939501295.post-5816342089690213834</id><published>2009-09-29T15:11:00.000-07:00</published><updated>2009-10-06T12:48:47.176-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fire Eagle'/><category scheme='http://www.blogger.com/atom/ns#' term='GPS'/><category scheme='http://www.blogger.com/atom/ns#' term='Baralbait'/><title type='text'>A Big Thanks for Leah Culver's oAuth Library</title><content type='html'>I believe that one of the best things to do here on this blog, is to mention those who helped &lt;a href="http://baralbait.com/"&gt;Baralbait&lt;/a&gt; see the light.&lt;br /&gt;&lt;br /&gt;One of my major problems when I started creating Baralbait was that I wanted to have applications to be installed on GPS-enabled mobile phones in order to help people update their current Geo-Location on Baralbait. And the problem here was that it was not feasible to start writing different applications for the different mobile phones out there, especially that I have limited resources and mobile programming knowledge. Also Nokia charges developers if they want to interact with their GPS APIs, as they have to purchase special certificates and use them to sign their code.&lt;br /&gt;&lt;br /&gt;Then all at a sudden, I've discover &lt;a href="http://fireeagle.yahoo.net/"&gt;FireEagle&lt;/a&gt; which serves as a Location Updates hub. The service accepts location updates from &lt;a href="http://fireeagle.yahoo.net/gallery"&gt;different applications&lt;/a&gt;, and on the other hand services such as Baralbait can poll FireEagle to get a certain user's current location. So I wanted to have an oAuth library to use in order to interact with FireEagle, espcially that the oAuth protocoal was too hard for me to understand and implement myself :)&lt;br /&gt;&lt;br /&gt;So, in brief, I've to say that if &lt;a href="http://github.com/leah/python-oauth"&gt;Leah's oAuth library&lt;/a&gt; wasn't there, no one would have been able to updated his/her location on Baralbait easily, and the service would have missed one of it's major features.&lt;br /&gt;&lt;br /&gt;And finally, big thanks to &lt;a href="http://leahculver.com/"&gt;Leah&lt;/a&gt; and her awesome library.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;''' My Class &lt;br /&gt;'''&lt;br /&gt;class MyClass(SuperClass):&lt;br /&gt;    def __init__(self):&lt;br /&gt;        pass&lt;br /&gt;&lt;br /&gt;    def printThanks():&lt;br /&gt;        print "Thank you ..."&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/76238551939501295-5816342089690213834?l=blog.baralbait.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.baralbait.com/feeds/5816342089690213834/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.baralbait.com/2009/09/big-thanks-for-leah-culvers-oauth.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/76238551939501295/posts/default/5816342089690213834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/76238551939501295/posts/default/5816342089690213834'/><link rel='alternate' type='text/html' href='http://blog.baralbait.com/2009/09/big-thanks-for-leah-culvers-oauth.html' title='A Big Thanks for Leah Culver&apos;s oAuth Library'/><author><name>Tarek Amr</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-jLg3Vbiroc4/AAAAAAAAAAI/AAAAAAAAA7w/J_zMvqN8xSc/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-76238551939501295.post-7560049721334275587</id><published>2009-09-13T11:53:00.000-07:00</published><updated>2009-09-13T12:12:05.175-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flickr'/><category scheme='http://www.blogger.com/atom/ns#' term='Twitter'/><category scheme='http://www.blogger.com/atom/ns#' term='Baralbait'/><title type='text'>A picture is worth a thousand words</title><content type='html'>You create new places, and share your thoughts and past experiences in those places using &lt;a href="http://www.baralbait.com/"&gt;Baralbait's&lt;/a&gt; micro-blogging feature or geo-wall. &lt;a href="http://blog.baralbait.com/2009/07/now-you-can-rate-places-you-visit.html"&gt;You can also rate those places, and give them one, two, three, four, or five stars&lt;/a&gt;.&lt;br /&gt;But we all know that a picture is worth a thousand worlds. And that's why we have decided to give you the ability to publish pictures taken in a certain place.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_gao6m_NdEtc/Sq1AuDtU_CI/AAAAAAAAAXE/X_yYtYk0StA/s1600-h/place-images.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 212px;" src="http://4.bp.blogspot.com/_gao6m_NdEtc/Sq1AuDtU_CI/AAAAAAAAAXE/X_yYtYk0StA/s320/place-images.png" alt="" id="BLOGGER_PHOTO_ID_5381028289791196194" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After going to a certain place's page on Baralbait, you can click on the attachment button in the geo-wall section, and then you can add your picture's URL.&lt;br /&gt;&lt;br /&gt;We currently support pictures from the following services only:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Flcikr, &lt;a href="http://www.flickr.com/"&gt;http://www.flickr.com/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;TwitPic, &lt;a href="http://www.twitpic.com/"&gt;http://www.twitpic.com/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;yFrog, &lt;a href="http://yfrog.com/"&gt;http://yfrog.com/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Have fun taking photos when you go out, and don't forget to share them with us.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/76238551939501295-7560049721334275587?l=blog.baralbait.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.baralbait.com/feeds/7560049721334275587/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.baralbait.com/2009/09/picture-is-worth-thousand-words.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/76238551939501295/posts/default/7560049721334275587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/76238551939501295/posts/default/7560049721334275587'/><link rel='alternate' type='text/html' href='http://blog.baralbait.com/2009/09/picture-is-worth-thousand-words.html' title='A picture is worth a thousand words'/><author><name>Tarek Amr</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-jLg3Vbiroc4/AAAAAAAAAAI/AAAAAAAAA7w/J_zMvqN8xSc/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_gao6m_NdEtc/Sq1AuDtU_CI/AAAAAAAAAXE/X_yYtYk0StA/s72-c/place-images.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-76238551939501295.post-4371188353088302787</id><published>2009-07-12T14:03:00.000-07:00</published><updated>2009-07-12T14:06:16.164-07:00</updated><title type='text'>Now you can rate the places you visit.</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_gao6m_NdEtc/SlpP9D9WKqI/AAAAAAAAAW8/3i9p0GQG6m4/s1600-h/Screenshot.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 213px;" src="http://3.bp.blogspot.com/_gao6m_NdEtc/SlpP9D9WKqI/AAAAAAAAAW8/3i9p0GQG6m4/s320/Screenshot.png" alt="" id="BLOGGER_PHOTO_ID_5357682617163852450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Now, you can rate the places you visit on Baralbait.com. You can also see the average rating of a certain place based on Baralbait.com users' rating.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/76238551939501295-4371188353088302787?l=blog.baralbait.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.baralbait.com/feeds/4371188353088302787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.baralbait.com/2009/07/now-you-can-rate-places-you-visit.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/76238551939501295/posts/default/4371188353088302787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/76238551939501295/posts/default/4371188353088302787'/><link rel='alternate' type='text/html' href='http://blog.baralbait.com/2009/07/now-you-can-rate-places-you-visit.html' title='Now you can rate the places you visit.'/><author><name>Tarek Amr</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-jLg3Vbiroc4/AAAAAAAAAAI/AAAAAAAAA7w/J_zMvqN8xSc/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_gao6m_NdEtc/SlpP9D9WKqI/AAAAAAAAAW8/3i9p0GQG6m4/s72-c/Screenshot.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-76238551939501295.post-6304007889077786651</id><published>2009-06-20T07:31:00.000-07:00</published><updated>2009-06-20T09:58:29.578-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cairo'/><category scheme='http://www.blogger.com/atom/ns#' term='DemoCamp'/><title type='text'>DemoCamp Cairo</title><content type='html'>Last Sunday, June 14th, six Egyptian projects were being presented in the &lt;a href="http://democampme.org/content/?p=23"&gt;DemoCamp&lt;/a&gt; that has been held in &lt;a href="http://www.baralbait.com/places/252"&gt;Cairo International Conference Center&lt;/a&gt;. And Baralbait was one of the six projects there.&lt;br /&gt;&lt;br /&gt;I know that this blog is meant for Baralbait related news, however I prefer to shed some lights every now and then on other topics such as the Web2.0 scene in Egypt and the Middle East as well as other general topics such as web developments and so.&lt;br /&gt;&lt;br /&gt;I wish you were all there in the DemoCamp, as it was really nice to see such group of talented people and interesting Egypt-based projects. And may be that's why I'll try here to summarize what've seen and add my comments and impressions about the projects.&lt;br /&gt;&lt;br /&gt;Each project was given about 10 minutes for someone of the project team to present his own project and then there were five more minutes for the audience there to ask him some questions.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Exorcist (Vimov).&lt;/span&gt;&lt;br /&gt;Exorcist is a mobile (iPhone) based game, developed by an Egyptian company based in Alexandria called &lt;a href="http://www.vimov.com/"&gt;Vimov&lt;/a&gt;.&lt;br /&gt;The games is developed using Objective C, and it costed them about $ 25,000.&lt;br /&gt;The presenter spent most of his 10 minutes talking about the obstacles they faced during the game development, and how it is really hard to find people here in Egypt with experience in such field, and even the project team themselves had to learn everything from scratch. They also weren't able to find good candidates for developing the game's audio and video effects and that's why they decided to outsource this part to US-based companies. And may be that's why we didn't have enough chance to see the game itself and how it is played, however I believe that even if the game itself is a little bit trivial and not very sophisticated and eye-candy it is still interesting to find people something as hard as a mobile game. Also I liked it when they said that they are trying to target the international market rather than focusing on the local market only, and such spirit makes me sure that if they didn't give in to any obstacles they may face in the future, they may end up developing more advanced and attractive games soon. And also such spirit makes me think that Exorcist and Vimov as a company may be a good target for any Venture Capitals or Angel Investors who would like to invest some money here in Egypt, especially that they do have a business model already as their game is being sold on Apple Store.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;TVOSZ&lt;/span&gt;.&lt;br /&gt;&lt;a href="http://www.tvosz.com/"&gt;TVOSZ&lt;/a&gt;, is a Video Sharing website, or let's say a YouTube wanna be. The site's name is a little bit strange, but it is the O, S and Z, are the first letteres of the developers names or nicknames. As I've told you, the previous project was done with the international market in their minds, while TVOSZ on the other hand is made for the local market. They believe that one of the main problems with YouTube et al. is that they allow some nudity, and religious and political ideas that are - according to the site owners point of view - not accepted by our society. That's why they decided to watch every single video being uploaded to their site, and they will decide if they are going to allow it or not. I am not sure if such point is enough for people to use their service instead of YouTube or Vimeo, however they still have some good features such as giving people the ability to download the videos on their PC's, and offereing them controls to adjust the video's contrast, and brightness. So far, they don't seem to have huge number of videos, and may be that's why they are not using any cloud hosting service such as Amazon yet. In fact. it is really promising that they have developed their player themselves, and I think they may be a good target for VC's and Seed Investors if they can be more flexible and change their autocratic way of controlling which videos to be accepted. They also need to work more on their interface, and may be find more appealing features for us to use their service instead of YouTube or Vimeo. One final point here is that they do have a business model, as they have the ability to inject ads in their videos, either a a pre-roll, post-roll, or even as a mid-roll banner in the bottom of the screen.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Smatx&lt;/span&gt;.&lt;br /&gt;&lt;a href="http://www.smatx.com/home.php"&gt;Smatx&lt;/a&gt; looked like an online forum for people interested in programming, web development, and related subjects. The problem is that the presenter didn't give us enough information about his service, and I am not able to access the site now to further understand it. But let's assume that it is a web forum for tech guys, the idea itself may not be new and some may argue that using an already-made CMS software to have a web form isn't something to be presented in DemoCamp. Ok, let's first ask ourselves, what's the point of an event like DemoCamp? AFAIK, it is meant for people to present their project and introduce them to the public as well as investors if any. Now let's have a look at something like TechCrunch, their value isn't in the blogging software they use, but it is in the content and articles their team writes. And that's why there are investors who invest money on it because they know that they are going to make money from the advertisements on the site. The same thing applies to Smatx, the idea of having a forum for tech savvys is cool, provided that the project team are going to focus on the content there and means for their users to be able to share their knowledge easier. They are going to have a multi-lingual interface, however I think they should try to also add modules for translating the content there for users to be able to share their knowledge even if they speak different languages. They should also focus on having more addons in the future, in order to make it a one-stop shop for tech savvys, such as giving users the ability to publish their code and make it available for others to edit and tweak it, they may offer a cvs hosting service or so. I am not sure what is in their minds, but I am really interested to see projects like this from very young people like the ones behind Smatx.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Baralbait.&lt;/span&gt;&lt;br /&gt;Ehmmm ... I think you already know &lt;a href="http://www.baralbait.com/"&gt;this one&lt;/a&gt; ... so let's go to the next project on our list.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;RFIDinRegion&lt;/span&gt;.&lt;br /&gt;Ok, there was  a break after Baralbait, and I went out to get some water, and when I tried to get back to the hall they didn't allow me to enter&lt;br /&gt;till I finish the bottle of water with me. Anyway, I caught some parts of the presentation, and it was more like an introductory video to RFID and it's uses and its uses. Anyway, if you'd like, you may visit &lt;a href="http://www.rfidinregion.com/"&gt;their site here&lt;/a&gt; to know more about their project.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Carlog.&lt;/span&gt;&lt;br /&gt;I am sure, I am not the only one who was impressed by this project. &lt;a href="http://www.carlog.com/"&gt;Carlog&lt;/a&gt; is a social application for people to bye and sell cars, discuss any aspects about the different car vendors and models, and many more. People can even enter their car model and its mileage and carlog tells them the services and maintenance needed. People can also upload their maintenance log and documents for others to know the status of their car before buying it. The guys behind this project know what they are doing, and their are aware of social services and viral marketing. They are giving you the ability to log into their site using your facebook account (Facebook Connect). You can their export all your actions on the site into your facebook account. They've already contacted the car dealers and agencies here in Egypt, and they will be responsible for entering the detailed aspects of their car models. Car Agencies as well as different car models will have their own pages on the site, and people can rate them according to their experience.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;WeebK&lt;/span&gt;.&lt;br /&gt;&lt;a href="http://www.weebk.com/"&gt;WeebK&lt;/a&gt;, is ... ehmmm .... ok, it's a search engine. The presenter was reading from a paper and was trying to use technical jargon translated into Arabic. And to tell you the truth, I wasn't able to understand anything from his presentation. The only thing I got from it, is that Google and Yahoo are being fooled by SEO geeks and their search result aren't accurate and are redundant, so he developed new algorithms that can kick Google and Yahoo's a$$. WeebK web spiders traverse technical sites such as Microsoft and Cisco only as they want their search engine to be used by tech people.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;References and Links&lt;/span&gt;&lt;br /&gt;Finally, you may also have a look at those posts written by other people who have attended the DemoCamp too.&lt;br /&gt;IRCPresident, Techno-eMedia &lt;a href="http://technoemedia.blogspot.com/2009/06/democamp-cairo-2009-first-part.html"&gt;Part1&lt;/a&gt; and &lt;a href="http://technoemedia.blogspot.com/2009/06/democamp-cairo-2009-second-part.html"&gt;Part2&lt;/a&gt; [Ar]&lt;br /&gt;AmrSpace, &lt;a href="http://www.amrspace.com/2009/06/blog-post.html"&gt;DemoCamp Coverage&lt;/a&gt; [Ar]&lt;br /&gt;TripleM, &lt;a href="http://triplem.host.sk/?p=1677"&gt;Inside DemoCamp Cairo&lt;/a&gt; [En]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/76238551939501295-6304007889077786651?l=blog.baralbait.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.baralbait.com/feeds/6304007889077786651/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.baralbait.com/2009/06/democamp-cairo.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/76238551939501295/posts/default/6304007889077786651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/76238551939501295/posts/default/6304007889077786651'/><link rel='alternate' type='text/html' href='http://blog.baralbait.com/2009/06/democamp-cairo.html' title='DemoCamp Cairo'/><author><name>Tarek Amr</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-jLg3Vbiroc4/AAAAAAAAAAI/AAAAAAAAA7w/J_zMvqN8xSc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-76238551939501295.post-3431936685298381234</id><published>2009-04-11T04:39:00.000-07:00</published><updated>2009-04-11T04:48:05.200-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Feedback'/><title type='text'>We Listen</title><content type='html'>We may not be the most talented developers out there, and we may not be the most creative designers. But we believe that we have one advantage that is enough to make Baralbait the most interesting service ever one day.&lt;br /&gt;&lt;br /&gt;It's You.&lt;br /&gt;&lt;br /&gt;We listen to your suggestions and we are dynamic.&lt;br /&gt;&lt;br /&gt;So please give our service a try, and your feedback is really what makes us go further.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.baralbait.com/contactus"&gt;http://www.baralbait.com/contactus&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/76238551939501295-3431936685298381234?l=blog.baralbait.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.baralbait.com/feeds/3431936685298381234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.baralbait.com/2009/04/we-listen.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/76238551939501295/posts/default/3431936685298381234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/76238551939501295/posts/default/3431936685298381234'/><link rel='alternate' type='text/html' href='http://blog.baralbait.com/2009/04/we-listen.html' title='We Listen'/><author><name>Tarek Amr</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-jLg3Vbiroc4/AAAAAAAAAAI/AAAAAAAAA7w/J_zMvqN8xSc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-76238551939501295.post-788322360486059803</id><published>2009-04-01T01:35:00.000-07:00</published><updated>2009-04-01T03:48:32.876-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Twitter'/><category scheme='http://www.blogger.com/atom/ns#' term='AprilFool'/><category scheme='http://www.blogger.com/atom/ns#' term='Baralbait'/><title type='text'>Baralbait to acquire Twitter</title><content type='html'>I am really pleased to announce that Baralbait has decided to buy the de facto micro blogging company, &lt;a href="http://twitter.com/"&gt;Twitter.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Many users have asked us to add micro blogging features to our platform, and almost the same number of users have asked Twitter to make their tweets location-aware. So after a one day long meeting we agreed with Twitter to purchase them and integrate their service into ours.&lt;br /&gt;&lt;br /&gt;I'll keep you updated and more details will follow.&lt;br /&gt;&lt;br /&gt;Finally I'd like to welcome all Twitter team members, and wish them the best of luck in Baralbait.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/76238551939501295-788322360486059803?l=blog.baralbait.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.baralbait.com/feeds/788322360486059803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.baralbait.com/2009/04/baralbait-to-acquire-twitter.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/76238551939501295/posts/default/788322360486059803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/76238551939501295/posts/default/788322360486059803'/><link rel='alternate' type='text/html' href='http://blog.baralbait.com/2009/04/baralbait-to-acquire-twitter.html' title='Baralbait to acquire Twitter'/><author><name>Tarek Amr</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-jLg3Vbiroc4/AAAAAAAAAAI/AAAAAAAAA7w/J_zMvqN8xSc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-76238551939501295.post-9050862596920493040</id><published>2009-03-10T00:06:00.000-07:00</published><updated>2009-03-10T00:13:21.621-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='Video'/><title type='text'>How to Create a New Place</title><content type='html'>In this video, I'll demonstrate adding a new place, in our example the new place is the Colosseum, in Rome, Italy.&lt;br /&gt;&lt;br /&gt;&lt;object width="400" height="300"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=3551518&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1"&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=3551518&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/3551518"&gt;Baralbait - Create New Place&lt;/a&gt; from &lt;a href="http://vimeo.com/user1410888"&gt;Tarek Amr&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Please notice that you can always make use of other sites such as Wikimapia and Wikipedia to check the places' spelling, addresses, etc.&lt;br /&gt;&lt;br /&gt;Also make sure to add as much info as you can about the place, and if it has different spellings try to write them all.&lt;br /&gt;&lt;br /&gt;Finally, some places have branches all over the world, and some other places are not very well known and people may not know where there are from their name, so it's always better to write their names as follows, "McDonald's Westford" instead of just "McDonald's"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/76238551939501295-9050862596920493040?l=blog.baralbait.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.baralbait.com/feeds/9050862596920493040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.baralbait.com/2009/03/how-to-create-new-place.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/76238551939501295/posts/default/9050862596920493040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/76238551939501295/posts/default/9050862596920493040'/><link rel='alternate' type='text/html' href='http://blog.baralbait.com/2009/03/how-to-create-new-place.html' title='How to Create a New Place'/><author><name>Tarek Amr</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-jLg3Vbiroc4/AAAAAAAAAAI/AAAAAAAAA7w/J_zMvqN8xSc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-76238551939501295.post-1104633671145335007</id><published>2008-09-15T14:51:00.000-07:00</published><updated>2008-09-15T15:00:32.614-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fire Eagle'/><category scheme='http://www.blogger.com/atom/ns#' term='Flickr'/><category scheme='http://www.blogger.com/atom/ns#' term='GPS'/><category scheme='http://www.blogger.com/atom/ns#' term='Yahoo'/><title type='text'>Fire Eagle and Flickr</title><content type='html'>Two new services have been added to &lt;a href="http://www.baralbait.com/"&gt;Baralbait&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;1- Now if you are a &lt;a href="http://fireeagle.yahoo.net/"&gt;Fire Eagle&lt;/a&gt; user, you can now let Baralbait automatically retrieve your location from there. This is useful for those who have GPS-Enable Mobile phones.&lt;br /&gt;&lt;br /&gt;2- We now can also retrieve Geo-Tagged photos uploaded to &lt;a href="http://www.flickr.com/"&gt;Flickr&lt;/a&gt;, and display them in their relevant Places pages. So now by clicking on a certain place (Cafe, Hotel, etc), you can see photos taken there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/76238551939501295-1104633671145335007?l=blog.baralbait.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.baralbait.com/feeds/1104633671145335007/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.baralbait.com/2008/09/fire-eagle-and-flickr.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/76238551939501295/posts/default/1104633671145335007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/76238551939501295/posts/default/1104633671145335007'/><link rel='alternate' type='text/html' href='http://blog.baralbait.com/2008/09/fire-eagle-and-flickr.html' title='Fire Eagle and Flickr'/><author><name>Tarek Amr</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-jLg3Vbiroc4/AAAAAAAAAAI/AAAAAAAAA7w/J_zMvqN8xSc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-76238551939501295.post-220735151314405092</id><published>2008-09-12T08:29:00.000-07:00</published><updated>2008-09-12T11:01:13.705-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Introduction'/><title type='text'>Baralbait - Never Stay At Home</title><content type='html'>&lt;a href="http://www.baralbait.com/"&gt;Baralbait&lt;/a&gt; is an Arabic word which means "Outside Home". It's a location based service where you can tell it where you are now, and it will show you nearby friends and places to go.&lt;br /&gt;&lt;br /&gt;In fact, I always face the same problems whenever I want to go out and meet some friends:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Who is free to go out&lt;/li&gt;&lt;li&gt;When is the best time to go out&lt;/li&gt;&lt;li&gt;And the most important issues is where to go&lt;/li&gt;&lt;/ul&gt;That's why &lt;a href="http://www.baralbait.com/"&gt;Baralbait&lt;/a&gt; is trying to help us solve the above problems. You can simply update your current location either from the site's web interface, or by using 3rd party tools such as Yahoo Fire Eagle.&lt;br /&gt;&lt;br /&gt;You can also add new places, tag those places, or find places added by other site members. This can help you discover new places to visit in your town or city. You also can find where your friends normally go out to help you meet easily. We are not limited here to cafes and restaurants, but you use the site the way you want, from finding nearby gas station to discovering the famous malls in a city you plan to visit next week.&lt;br /&gt;&lt;br /&gt;The site is currently a closed beta, so you'll need an invitation to join.&lt;br /&gt;&lt;br /&gt;URL: &lt;a href="http://www.baralbait.com/"&gt;http://www.baralbait.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/76238551939501295-220735151314405092?l=blog.baralbait.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.baralbait.com/feeds/220735151314405092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.baralbait.com/2008/09/baralbait-never-stay-at-home.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/76238551939501295/posts/default/220735151314405092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/76238551939501295/posts/default/220735151314405092'/><link rel='alternate' type='text/html' href='http://blog.baralbait.com/2008/09/baralbait-never-stay-at-home.html' title='Baralbait - Never Stay At Home'/><author><name>Tarek Amr</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-jLg3Vbiroc4/AAAAAAAAAAI/AAAAAAAAA7w/J_zMvqN8xSc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry></feed>
