Author: hasin

Building services like FriendFeed using PHP – Part2

Following the first installment in this series, here is the second part. In this part I will focus mainly on Bookmarking and News services supported by FriendFeed . Here we go

Supported bookmarking services by FriendFeed
1. Del.icio.us
2. Furl
3. Google shared stuffs
4. Mag.nolia
5. Stumbleupon

Except google shared stufss, all of the rests require just an username to generate the access point for retrieving user’s bookmarked items. And for the google shared stuffs, it requires the fully functional url of the feed available from your google bookmark service.

Access points

Del.icio.us

AP: http://feeds.delicious.com/rss/<user name>
example: http://feeds.delicious.com/rss/anduh


Furl

AP: http://rss.furl.net/member/<user name>.rss;
example: http://rss.furl.net/member/pigge.rss


Google Shared Stuffs
you can find your google shared stuff url from http://www.google.com/s2/sharing/stuff

example: http://www.google.com/s2/sharing/stuff?user=110703083499686157981&output=rss


Ma.gnolia

AP: http://ma.gnolia.com/rss/lite/people/<user name>.rss;
example: http://ma.gnolia.com/rss/lite/people/gerryquach


Stumbleupon
Whoops, Double Whoops, Tripple Whoops. It took quite a time for me to find the feed url. I dont know why it is kept so “SECRET” – LOL

AP: http://www.stumbleupon.com/syndicate.php?stumbler=<user name>.rss;
example: http://www.stumbleupon.com/syndicate.php?stumbler=jd001


Supported news services by FriendFeed
1. Digg
2. Google Reader
3. Mixx
4. Reddit

Here are the access points


Digg

AP: http://digg.com/users/<user name>/history.rss;
example: http://digg.com/users/msaleem/history.rss


Google Reader

You can find your shared item’s feed url here http://www.google.com/reader/view/user/-/state/com.google/broadcast


Mixx

Unfortunately during the time of writing this article, Mixx was napping – here is the screenshot. Once they are awake, I will update this section 🙂


Reddit

AP: http://www.reddit.com/user/<user name>/.rss;
example: http://www.reddit.com/user/jack_alexander/.rss

In next installation I will focus on scaling such a huge load successfully. Hope that will be interesting to many of you. Following installation will focus again on the access points.

Building services like FriendFeed using PHP – Part 1

Friendfeed is an excellent life streaming service aggregating all your feeds from different service providers, compile them together, build a social network among your known people and finally deliver all these feeds as a mashup. As a result you can immediately track activities of your friends on all the different service they use (like jaiku, twitter, flickr) and stay up-to-date. Hats off to the developers of FriendFeed for delivering such a nice application to us.

In this blog post I will try to focus on how to develop such a service like Friendfeed using PHP and JS and how to scale such a huge load successfully. Previously I’d also written another article focusing “How to develop services like SpringLoops using PHP“. The complete article will be delivered in multiple installments and in current installment, I will focus on Photo sharing services used by friendfeed.

Area to focus
1. Services to be supported
2. Update discovery
3. Parsing the feeds
4. Storing the data
5. Scaling

FriendFeed parses feeds from a total of 35 popular services from around the web 😉 – lets have a look at them one by one and I will give you idea about the access points of these services. Though Not all of them are feed, so I will try to focus those services as well to give you a basic idea.

Service 1 : Flickr
Usable PHP Library: PHPFlickr

Flickr is an excellent photo sharing services under the banner of Yahoo. Friendfeed parses all the photo from a user and also the list of his/her favorite photos. Given an username you can easily find the Flickr ID like (76536911@N00)of that user and once you got it, here is the access points for list of public photos and favorites

List of photos
http://api.flickr.com/services/feeds/photos_public.gne?id=<user’s flickr id>&lang=en-us&format=rss_200
example: http://api.flickr.com/services/feeds/photos_public.gne?id=76536911@N00&lang=en-us&format=rss_200

List of favorites
http://api.flickr.com/services/feeds/photos_faves.gne?nsid=<user’s flickr id>&lang=en-us&format=rss_200
example:http://api.flickr.com/services/feeds/photos_faves.gne?nsid=76536911@N00&lang=en-us&format=rss_200

Service 2: Picasa Web Album
Picasa is another photo sharing service under the banner of the Giant, Google. Given a picasa user name , here are the access point of user’s public photos

List of public photos
http://picasaweb.google.com/data/feed/base/user/<picasa user name>?kind=album&alt=rss&hl=en_US&access=public
example:http://picasaweb.google.com/data/feed/base/user/countdraculla?kind=album&alt=rss&hl=en_US&access=public

Service 3: Smugmug
Here comes another photo sharing service where users can buy and sell their photos. Given a smugmug user name you can find the feed of this user’s photos

List of public photos
http://<smugmug user name>.smugmug.com/hack/feed.mg?Type=nickname&Data=Ifocus&format=rss200
example:http://ifocus.smugmug.com/hack/feed.mg?Type=nickname&Data=Ifocus&format=rss200

Service 4: Zoomr
Zoomr is another photo sharing service started in late 2005 by Kristopher Tate as a place for him to share photos with his friends and later became a public services, is currently supported by FriendFeed. And here we go with the access points 🙂

List of public photos
http://www.zooomr.com/services/feeds/public_photos/?id=<zoomr user name>&format=rss_200
example:http://www.zooomr.com/services/feeds/public_photos/?id=wolfmank&format=rss_200

In next part, I will highlight the access points of supported bookmark services and news services supported by FriendFeed 🙂 Have a nice weekend.

Setting up virtual host with mod rewrite enabled in Ubuntu Hardy Heron

Virtual host is really what the name says, a virtual environment over the top of your current web server to simulate a separate hosting environment. Using virtual host you can enable site specific features and keep your development environment totally separate from another one. For example, if you want to experiment a simple application with both mod_rewrite enabled or disabled, you can setup two virtual host with these different settings to take place. In this blog post I will show you how to set up virtual host in ubuntu hardy heron with mod_rewrite enabled.

Step 1: setup a virtual domain

open /etc/hosts and add a virtual domain with a specific local IP. In this file it contains ip and domain name separated by a space. You can also add the port using a colon with the IP. Lets assume that our virtual domain name is “ilove.php” – and It will listen to the ip “127.0.1.2”

so we will add the following line to our /etc/hosts file
127.0.1.2:80 ilove.php

now whenever you point to http://ilove.php – your browser will actually open http://127.0.1.2:80

Step 2: configure virtual host with apache
here we will configure our newly added virtual domain against apache as a virtual host, and did I forget to say, with mod_rewrite enabled 🙂

goto /etc/apache2/sites-available and create a file named “ilove.php” – I recommend to keep it the same name as your virtual domain.
sudo nano /etc/apache2/sites-available/ilove.php

write the following contents inside. but please note to create the appropriate directory before linking your virtual host with that, for example we’ve create a folder named “/home/<user name>/www/ilovephp” and linked that directory as my document root in the following configuration file.


<VirtualHost 127.0.1.2:80>
	ServerName ilove.php
	ServerAlias www.ilove.php
	ServerAdmin [email protected]
	DocumentRoot /home/<user>/www/ilovephp
	<Directory /home/<user>/www/ilovephp>
		Options FollowSymLinks
		AllowOverride All
	</Directory>

</VirtualHost>

now create a symbolic link of this file to /etc/apache2/sites-enabled directory as “ilove.php”

sudo ln -s /etc/apache2/sites-available/ilove.php /etc/apache2/sites-enabled/ilove.php

Step 3: restart apache (or reload)
simple, either one of the followings
sudo /etc/init.d/apache2 restart

or

sudo /etc/init.d/apache2 reload

or

sudo a2ensite ilove.php

and you are done! now you can point your browser to http://ilove.php

I dont give you a damn, if

You came to an interview for “PHP Developer” and you said you dont know the name “Rasmus Lerdorf”.

You’ve used MySQL for a long time and didn’t even hear about “Michael Monty”

and though “jQuery” is your “favorite JS framework” for a long time, but “John Resig, who is he?”

shame on you


The reason behind writing this blog post is I’ve interviewed some candidates recently and They dont know the name of the developers of PHP, MySQL or almost any other libraries they make their living on. They dont even know the history of these tools (History might be too much and I surely am not a Jerk, but I want them to know the name of the developer behind this)

I don’t take my time to show them the door, I am pissed off.

I have started learning Python

Yes, probably this is the third or fourth time I have said this. I am such an idiot to never find my time to learn everything. I wish one day I can really develop my web apps using both PHP and Python. And no Java (Or Ruby), nah, I am tired of that, really!

I first coded an xml parser with the help of builtin expat parser, in 2002 for coherity. Since then I fall in love with this excellent language. And once I was about-to-be-addicted into ruby but no more, I dont like it. No stereotyping, I just dont like it, period. I coded in java for a long time and tried but didnt fall into it, my bad.

I wish I wont have to write another post again titled “I have started learning Python” – wish me best of luck.

āύāĻ¸ā§āϟāĻžāϞāϜāĻŋ⧟āĻž – ā§Ē

āχāĻ¸ā§āϕ⧁āϞ⧇ āĻ­āĻ°ā§āϤāĻŋ āĻšāĻŦāĻžāϰ āĻ•āĻŋāϛ⧁āĻĻāĻŋāύ āĻĒāϰ⧇āχ āφāĻŽāϰāĻž āĻāϏ⧇āĻ›āĻŋāϞāĻžāĻŽ āϰāĻžāϜāĻļāĻžāĻšā§€āϤ⧇ āĻŦā§‡ā§œāĻžāϤ⧇āĨ¤ āϏāĻŦāĻžāχ āĻŽāĻŋāϞ⧇ āĻŦā§‡ā§œāĻžāύ⧋āϰ āĻ•āĻŋ āϝ⧇ āĻŽāϜāĻž āĻŸā§‡āϰ āĻĒā§‡ā§Ÿā§‡āĻ›āĻŋāϞāĻžāĻŽ āϏ⧇āĻŦāĻžāϰāĨ¤ āĻŸā§āϰ⧇āύ⧇ āĻ•āϰ⧇ āĻāϏ⧇āĻ›āĻŋāϞāĻžāĻŽ āĻŽāύ⧇ āφāϛ⧇ āφāĻŽāĻžāϰāĨ¤ āĻŦāĻžāĻŦāĻžāϰ āϕ⧇āĻŽāύ āϝ⧇āύ āĻāĻ• āĻŦāĻ¨ā§āϧ⧁ āĻĨāĻžāĻ•āϤ⧇āύ āϰāĻžāϜāĻļāĻžāĻšā§€āϤ⧇, āφāĻŽāϰāĻž āĻ—āĻŋā§Ÿā§‡ āϤāĻžāρāϰ āĻŦāĻžāϏāĻžāϤ⧇āχ āωāĻ āϞāĻžāĻŽāĨ¤ āϰāĻžāϜāĻļāĻžāĻšā§€āϰ āĻŦāĻžāϏāĻžāϗ⧁āϞ⧋ āϕ⧇āĻŽāύ āϝ⧇āύ āĻĒ⧁āϰ⧋āύ⧋ āĻĒ⧁āϰ⧋āύ⧋, āφāϰ āϏ⧇āχ āϏāĻŽā§Ÿ āϏāĻžāĻšā§‡āĻŦ āĻŦāĻžāϜāĻžāϰ⧇āϰ āĻŦāĻžā§œā§€āϗ⧁āϞ⧋ āϝ⧇āύ āφāϰ⧋ āĻĒ⧁āϰ⧋āύ⧋ āĻ›āĻŋāϞāĨ¤ āĻāĻ•āϤāϞāĻž āĻŦāĻžā§œāĻŋ, āĻĻā§‹āϤāϞāĻžā§Ÿ āĻ›āĻžāĻĻ⧇ āĻ“āĻ āĻžāϰ āĻĒā§āϝāĻžāρāϚāĻžāύ⧋ āĻāĻ•āϟāĻž āϏāĻŋāρ⧜āĻŋ āφāϰ āϚāĻŋāϞ⧇āϕ⧋āĻ āĻž, āφāϰ āĻ‡ā§ŸāĻž āĻŽā§‹āϟāĻž āĻŽā§‹āϟāĻž āĻĻā§‡ā§ŸāĻžāϞāĨ¤ āĻāĻ•āĻ•āĻĨāĻžā§Ÿ āϏ⧇āχ āϏāĻŽā§Ÿ āĻŽāĻžāϰāĻžāĻ¤ā§āĻŽāĻ• āϞ⧇āϗ⧇āĻ›āĻŋāϞ āφāĻŽāĻžāϰāĨ¤ āĻ•āĻžāĻ•āĻžāϰ āĻ…āύ⧇āĻ•āϗ⧁āϞ⧋ āϛ⧇āϞ⧇ āĻŽā§‡ā§Ÿā§‡āϰ āĻŽāĻžāĻā§‡ āĻĻ⧁āχ āϛ⧇āϞ⧇ āĻ›āĻŋāϞ āύ⧋āϟāύ āφāϰ āϛ⧋āϟāύ āύāĻžāĻŽāĨ¤ āϛ⧋āϟāύ⧇āϰ āϏāĻžāĻĨ⧇ āφāĻŽāĻžāϰ āĻŦ⧇āϜāĻžā§Ÿ āĻ–āĻžāϤāĻŋāϰ āĻšā§Ÿā§‡ āϗ⧇āϞāĨ¤ āϛ⧋āϟāύ⧇āϰ āĻŽāĻžāĻĨāĻžā§Ÿ āϰāĻžāĻœā§āϝ⧇āϰ āϝāϤ āĻĻ⧁āĻˇā§āϟāĻžāĻŽā§€ āĻŦ⧁āĻĻā§āϧāĻŋāĨ¤ āφāĻŽāĻžāϕ⧇ āĻ“ āĻļāĻŋāĻ–āĻžāϞ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻļāĻ•ā§āϤ āĻ•āĻžāĻ—āϜ āĻ­āĻžāρāϜ āĻ•āϰ⧇ āϗ⧁āϞāĻŋ āĻŦāĻžāύāĻŋā§Ÿā§‡ āĻĻ⧁āχ āφāĻ™ā§āϗ⧁āϞ⧇āϰ āĻŽāĻžāĻā§‡ āĻāĻ•āϟāĻž āϚ⧁āϞ āĻŦāĻžāρāϧāĻž āϰāĻžāĻŦāĻžāϰ āĻĻāĻŋā§Ÿā§‡ āĻŽāĻžāϰāĻž āϝāĻžā§ŸāĨ¤ āφāϰ āĻ•āĻžāϰ⧋ āĻ—āĻžā§Ÿā§‡ āϞāĻžāĻ—āϞ⧇ āϏāĻžāĻĨ⧇ āϏāĻžāĻĨ⧇ āϖ⧁āĻŦāχ āĻœā§āĻŦāĻžāϞāĻž āĻ•āϰ⧇āĨ¤ āφāĻŽāϰāĻž āϝāĻžāϕ⧇ āĻĒāĻžāχ āϤāĻžāϕ⧇āχ āϗ⧁āϞāĻŋ āĻŽāĻžāϰāĻŋāĨ¤ āϏ⧇āĻ•āĻŋ āĻŽāϜāĻžāĨ¤ āϛ⧋āϟāύ āĻāĻ•āĻŦāĻžāϰ āϤāĻžāϰ āĻŦ⧜ āĻŦā§‹āύ āϤ⧁āϞāĻŋāϕ⧇ āϗ⧁āϞāĻŋ āĻŽā§‡āϰ⧇ āϭ⧟āĻžāύāĻ• āĻŽāĻžāϰ āϖ⧇āϞāĨ¤ āĻāϰāĻĒāϰ āφāĻŽāϰāĻž āĻāĻ•āϟ⧁ āϏāĻžāĻŦāϧāĻžāύ⧇ āϗ⧁āϞāĻŋ āĻŽāĻžāϰāϤ⧇ āϞāĻžāĻ—āϞāĻžāĻŽāĨ¤ āϞ⧁āĻ•āĻŋā§Ÿā§‡ āϚ⧁āϰāĻŋā§Ÿā§‡, āφāϰ āĻŦ⧇āĻļāĻŋāϰ āĻ­āĻžāĻ— āϏāĻŽā§Ÿāχ āĻŦāϕ⧁āύāĻŋ āϖ⧇āϞ āύ⧋āϟāύ āφāϰ āϛ⧋āϟāύāĨ¤

āϖ⧁āĻŦ āϛ⧋āϟāĻŦ⧇āϞāĻž āĻĨ⧇āϕ⧇āχ āĻŽāĻž āφāĻŽāĻžāĻĻ⧇āϰāϕ⧇ āϰāĻŋāĻĄāĻŋāĻ‚ āĻĒ⧜āĻž āĻļāĻŋāĻ–āĻžāϤāĨ¤ āĻ—ā§œāĻ—ā§œ āĻ•āϰ⧇ āĻĒ⧜āϤ⧇ āύāĻž āĻĒāĻžāϰāϞ⧇ āφāĻŦāĻžāϰ āĻĒ⧜āϤ⧇ āĻšāϤāĨ¤ āĻŽā§āϖ⧇ āĻāĻ•āĻĻāĻŽ āĻĢ⧇āύāĻž āωāϠ⧇ āύāĻž āϝāĻžāĻ“ā§ŸāĻž āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āĻ›āĻžā§œāĻž āĻšāϤ āύāĻžāĨ¤ āϚāϰāĻŽ āĻ•āĻˇā§āϟāĻ•āϰ āĻāĻŦāĻ‚ āĻŦāĻŋāϰāĻ•ā§āϤāĻŋāĻ•āϰ āĻāĻ•āϟāĻž āĻŦā§āϝāĻžāĻĒāĻžāϰ āĻ›āĻŋāϞ āĻāχ āϰāĻŋāĻĄāĻŋāĻ‚ āĻĒ⧜āĻž, āϤāĻŦ⧇ āĻĒāϰ⧇ āĻ…āύ⧇āĻ• āĻ•āĻžāĻœā§‡ āĻĻāĻŋā§Ÿā§‡āĻ›āĻŋāϞ āφāĻŽāĻžāϰ āĻāχ āĻ—ā§œāĻ—ā§œ āĻ•āϰ⧇ āĻĒ⧜āĻžāϰ āĻŦā§āϝāĻžāĻĒāĻžāϰāϟāĻžāĨ¤ āĻ•ā§āϞāĻžāϏ⧇ āϕ⧋āύ āϰāĻŋāĻĄāĻŋāĻ‚ āĻ•āϰāĻžāϰ āĻĻāϰāĻ•āĻžāϰ āĻĨāĻžāĻ•āϞ⧇ āĻŦ⧇āĻļāĻŋāϰ āĻ­āĻžāĻ— āϏāĻŽā§Ÿ āφāĻŽāĻŋ āĻĒ⧇āϤāĻžāĻŽ āĻāχ āĻ­āĻžāϰāĨ¤ āώ⧇ āϝāĻžāĻ• āϗ⧇, āĻŽāĻžāϰ āĻĒā§āϰāϏāĻ™ā§āĻ— āφāϏāϞ āĻ…āĻ¨ā§āϝ āĻāĻ•āϟāĻž āĻ•āĻžāϰāύ⧇āĨ¤ āĻŽāĻž āφāĻŽāĻžāϕ⧇ āĻĻāĻžāĻŦāĻž āϖ⧇āϞāĻž āĻļāĻŋāĻ–āĻŋā§Ÿā§‡āĻ›āĻŋāϞ āĻ…āύ⧇āĻ• āϛ⧋āϟāĻŦ⧇āϞāĻžā§ŸāĨ¤ āĻĻ⧁āĻĒ⧁āϰ āĻŦ⧇āϞāĻž āĻ–āĻžāĻŦāĻžāϰ āĻĒāϰ āφāĻŽāϰāĻž āĻŽāĻžāĻā§‡ āĻŽāĻžāĻā§‡āχ āĻĻāĻžāĻŦāĻž āϖ⧇āϞāϤāĻžāĻŽāĨ¤

āϤ⧋ āϰāĻžāϜāĻļāĻžāĻšā§€āϤ⧇ āĻ•āĻžāĻ•āĻžāϰ āϏāĻžāĻĨ⧇ āĻĻāĻžāĻŦāĻž āϖ⧇āϞāĻž āĻšāϞ āĻ…āύ⧇āĻ•āĨ¤ āφāĻŽāĻŋ āϛ⧋āϟ āĻŦāϞ⧇āχ āĻ•āĻžāĻ•āĻž āχāĻšā§āĻ›āĻž āĻ•āϰ⧇ āϭ⧁āϞ āϚāĻžāϞ āĻĻāĻŋā§Ÿā§‡ āĻšā§‡āϰ⧇ āϝ⧇āϤāĨ¤ āϖ⧁āĻŦ āĻŽāϜāĻž āĻĒ⧇āϤāĻžāĻŽ āφāĻŽāĻŋ, āϜāĻŋāϤ⧇āĻ›āĻŋ āϭ⧇āĻŦ⧇āĨ¤ āĻ•āĻžāĻ•āĻžāϰ āϏāĻžāĻĨ⧇ āĻāĻ•āĻĻāĻŋāύ āĻ­ā§‹āϰ āĻŦ⧇āϞāĻž āφāĻŽāĻŋ āĻŦāĻžāĻŦāĻž, āύ⧋āϟāύ āϛ⧋āϟāύ āφāϰ āφāĻŽāĻžāϰ āĻŦā§‹āύ⧇āϰāĻž āĻŽāĻŋāϞ⧇ āĻŦ⧇āϰ āĻšā§Ÿā§‡ āĻĻ⧇āĻ–āϞāĻžāĻŽ āĻ•ā§Ÿā§‡āĻ•āϜāύ āĻŽāĻŋāϞ⧇ āĻĒāĻĻā§āĻŽāĻžāϰ āĻĒāĻžā§œā§‡ āĻšāĻžāρāϏ⧇āϰ āĻŦāĻŋā§Ÿā§‡ āĻĻāĻŋāϞāĨ¤ āϖ⧁āĻŦāχ āĻŽāϜāĻž āĻĒā§‡ā§Ÿā§‡āĻ›āĻŋāϞāĻžāĻŽ āϏ⧇āĻĻāĻŋāύāĨ¤

āϛ⧋āϟāύ āφāϰ āφāĻŽāĻŋ āĻŽāĻŋāϞ⧇ āĻāĻ•āϟāĻž āϭ⧟āĻžāύāĻ• āĻŦāĻžāĻœā§‡ āĻ•āĻžāϜ āĻ•āϰāĻ›āĻŋāϞāĻžāĻŽ āϏ⧇āĻŦāĻžāϰāĨ¤ āĻ›āĻžāĻĻ⧇āϰ āωāĻĒāϰ⧇ āĻ…āύ⧇āĻ• āĻ–ā§‹ā§ŸāĻž (āϛ⧋āϟ āϛ⧋āϟ āχāρāĻŸā§‡āϰ āϟ⧁āĻ•āϰ⧋) āϰāĻžāĻ–āĻž āĻ›āĻŋāϞ āϕ⧋āύ āĻ•āĻžāϰāύ⧇āĨ¤ āφāĻŽāĻŋ āφāϰ āϛ⧋āϟāύ āĻŽāĻŋāϞ⧇ āϏ⧇āϗ⧁āϞ⧋ āφāĻ•āĻžāĻļ⧇āϰ āĻĻāĻŋāϕ⧇ āϛ⧋āρ⧜āĻž āĻļ⧁āϰ⧁ āĻ•āϰāϞāĻžāĻŽ āĻāĻ•āĻĻāĻŋāύ, āĻŦāĻžāϏāĻžāϰ āύāĻŋāĻšā§‡ āϰāĻžāĻ¸ā§āϤāĻž, āϏāĻŦ āĻ–ā§‹ā§ŸāĻž āĻ—āĻŋā§Ÿā§‡ āĻĒ⧜āϤ⧇ āϞāĻžāĻ—āϞ āĻŽāĻžāύ⧁āώāϜāύ⧇āϰ āĻ—āĻžā§Ÿā§‡āĨ¤ āφāĻŽāϰāĻž āĻŦā§āϝāĻžāĻĒāĻžāϰāϟāĻž āĻ…āϤ āφāĻŽāϞ āĻĻ⧇āχāύāĻŋ – āĻšāĻ āĻžā§Ž āĻŦāĻŋāĻļāĻžāϞ āĻāĻ• āĻļā§‹āϰāĻ—ā§‹āϞ āĻĒā§œā§‡ āϗ⧇āϞ, āĻ…āύ⧇āĻ• āϗ⧁āϞ⧋ āϞ⧋āĻ• āĻāϏ⧇ āϧāĻŽāĻžāϧāĻŽ āĻ•āϰ⧇ āĻŦāĻžāϏāĻžāϰ āĻĻāϰāϜāĻž āϧāĻžāĻ•ā§āĻ•āĻžāύ⧋ āĻļ⧁āϰ⧁ āĻ•āϰāϞāĨ¤ āφāĻŽāϰāĻž āϕ⧇āĻŦāϞ āĻŦ⧁āĻāϤ⧇ āĻĒ⧇āϰ⧇āĻ›āĻŋ āϝ⧇ āĻ•āĻžāϜāϟāĻž āϖ⧁āĻŦāχ āϏāĻŋāϰāĻŋ⧟āĻžāϏ āϟāĻžāχāĻĒ⧇āϰ āĻ•āĻŋāϛ⧁ āĻšā§Ÿā§‡ āϗ⧇āϛ⧇āĨ¤ āφāĻŽāĻžāϰ āφāϰ āϛ⧋āϟāύ⧇āϰ āφāĻ¤ā§āĻŽāĻžāϰāĻžāĻŽ āĻĒā§āϰāĻžā§Ÿ āĻ–āĻžāρāϚāĻžāĻ›āĻžā§œāĻž āĻ…āĻŦāĻ¸ā§āĻĨāĻž āϤāĻ–āύāĨ¤ āφāĻŽāϰāĻž āϕ⧋āĻĨāĻžā§Ÿ āĻ—āĻŋā§Ÿā§‡ āϝ⧇āύ āϞ⧁āĻ•āĻŋā§Ÿā§‡ āĻĒā§œā§‡āĻ›āĻŋāϞāĻžāĻŽāĨ¤ āĻŦāĻžāϏāĻžāϰ āĻŦ⧜āϰāĻž āϏāĻŦāĻžāχ āĻŦāĻžāχāϰ⧇ āĻ—āĻŋā§Ÿā§‡ āĻŽāĻžāύ⧁āώāϜāύāϕ⧇ āĻ āĻžāĻ¨ā§āĻĄāĻž āĻ•āϰ⧇āĻ›āĻŋāϞāĨ¤

āĻāϰ āĻ•ā§Ÿā§‡āĻ•āĻĻāĻŋāύ āĻĒāϰ⧇āχ āφāĻŽāϰāĻž āφāĻŦāĻžāϰ āĻĸāĻžāĻ•āĻžā§Ÿ āϚāϞ⧇ āφāϏāϞāĻžāĻŽāĨ¤ āϰ⧇āϞ āĻ¸ā§āĻŸā§‡āĻļāύ⧇ āφāĻŽāĻŋ āφāϰ āϛ⧋āϟāύ āϕ⧇āρāĻĻ⧇āĻ›āĻŋāϞāĻžāĻŽ āĻ…āύ⧇āĻ•, āĻāϤ āĻŽāϜāĻžāϰ āĻĻāĻŋāύ āĻļ⧇āώ āĻšā§Ÿā§‡ āϗ⧇āϞ āϭ⧇āĻŦ⧇āĨ¤ āφāĻŽāĻŋ āĻāϏāĻāϏāϏāĻŋ āĻĒāĻžāĻļ āĻ•āϰāĻžāϰ āĻĒāϰāĻĒāϰ⧇āχ āĻ•āĻžāĻ•āĻž āĻŽāĻžāϰāĻž āϗ⧇āϞ, āφāϰ āϛ⧋āϟāύ āύ⧋āϟāύ āϕ⧇āωāχ āĻĒ⧜āĻžāĻļā§‹āύāĻž āĻ•āϰāϞ āύāĻž, āĻŦā§āϝāĻŦāϏāĻž āĻ›āĻŋāϞ āĻāĻĻ⧇āϰ āĻĒā§āϰāϧāĻžāύ āĻĒ⧇āĻļāĻžāĨ¤ āϛ⧋āϟāύāϰāĻžāĻ“ āĻĒ⧜āĻžāĻļā§‹āύāĻž āĻļāĻŋāĻ•ā§‡ā§Ÿ āϤ⧁āϞ⧇ āĻšā§Ÿā§‡ āϗ⧇āϞ āĻĻā§‹āĻ•āĻžāύāĻĻāĻžāϰāĨ¤

10 signs you are ruining your career as a web app developer

Heh Heh, well – this is an article just highlighting some of experience in last couple of months. I am sometime too much annoyed because of the the attitude of some people, sometime I feel that they are annoyed on me. And I think I should write them down. Signs indicate that you are ruining your career

1. You’ve started implementing (or started believing in) popular (?) asshole driven development in your company (or in your team)
2. You are one of the biggest jerk who’s thinking that you are no more suitable for a “developer” position and you always want to be the PM or tech lead. LOL
3. You cannot find any topic to study this evening
4. You are so busy in development that your last blog post was about 2 or 3 months ago
5. You haven’t contributed in any single open source project yet, WTF!!
6. You are spending time to write a 7 page resume
7. You are not using any RSS aggregator (LOL)
8. You’ve never heard of any framework, nor using any
9. You’re neither member nor active in any online tech forum
10. WAMP is still the development platform for your LAMP app.

āύāĻ¸ā§āϟāĻžāϞāϜāĻŋ⧟āĻž – ā§Š

āϏ⧇āχ āĻŦāĻžāϏāĻž āϟāĻž āφāĻŽāϰāĻž āĻŦāĻĻāϞāĻŋā§Ÿā§‡ āϚāϞ⧇ āφāϏāĻŋ āĻŽāĻžāϠ⧇āϰ āĻĒāĻžāĻļ⧇ āφāϰ⧇āĻ•āϟāĻž āĻŦāĻžāϏāĻžā§ŸāĨ¤ āϘ⧁āĻĒāϚāĻŋ āĻ—āϞāĻŋāϰ āĻŽāĻžāĻā§‡ āĻāĻ• āϕ⧋āύāĻžā§Ÿ āĻ›āĻŋāϞ āφāĻŽāĻžāĻĻ⧇āϰ āĻŦāĻžāϏāĻžāĨ¤ āĻāĻ–āĻžāύ⧇ āφāĻŽāĻŋ āĻ›āĻŋāϞāĻžāĻŽ āĻ•ā§āϞāĻžāϏ āĻĢāĻžāχāĻ­ āĻĒāĻ°ā§āϝāĻ¨ā§āϤāĨ¤ āϏ⧇āϟāĻž āĻĒāϰ⧇āϰ āĻ•āĻžāĻšāĻŋāύ⧀āĨ¤ āĻāχ āĻŦāĻžāϏāĻžāϟāĻžāϰ āϏāĻžāĻĨ⧇ āφāĻŽāĻžāϰ āĻ…āύ⧇āĻ• āĻ¸ā§āĻŽā§ƒāϤāĻŋ āϜ⧜āĻŋā§Ÿā§‡ āφāϛ⧇āĨ¤

āĻŽāĻžāϏ⧇ āĻāĻ•āĻŦāĻžāϰ āĻļ⧁āĻ•ā§āϰāĻŦāĻžāϰ⧇ āφāĻŽāĻŋ āφāϰ āĻŦāĻžāĻŦāĻž āĻŦ⧇āϰ āĻšāϤāĻžāĻŽ āϚ⧁āϞ āĻ•āĻžāϟāϤ⧇āĨ¤ āϏ⧇āχāϏāĻŽā§Ÿ āύāĻžāĻĒāĻŋāϤ āĻŽāĻžāĻŽāĻž āĻĒāĻžāρāϚ āϟāĻžāĻ•āĻžā§Ÿ āϚ⧁āϞ āϕ⧇āĻŸā§‡ āĻĻāĻŋāϤāĨ¤ āφāϰ āĻāχ āϚ⧁āϞ āĻ•āĻžāϟāĻžāϰ āĻŦā§āϝāĻžāĻĒāĻžāϰāϟāĻž āφāĻŽāĻžāϰ āĻ•āĻžāϛ⧇ āĻ›āĻŋāϞ āĻāĻ•āϟāĻž āĻ…āϏāĻšā§āϝ āĻŦā§āϝāĻžāĻĒāĻžāϰāĨ¤ āĻŦ⧜āĻĻ⧇āϰ āĻšā§‡ā§ŸāĻžāϰ⧇āϰ āĻĻ⧁āχ āĻšāĻžāϤāϞ⧇āϰ āωāĻĒāϰ⧇ āĻ•āĻžāϠ⧇āϰ āĻāĻ•āϟāĻž āϤāĻ•ā§āϤāĻž āĻĻāĻŋā§Ÿā§‡ āϤāĻžāϰ āωāĻĒāϰ⧇ āφāĻŽāĻžāϕ⧇ āĻŦāϏāĻžāύ⧋ āĻšāϤāĨ¤ āϚ⧁āϞ āĻ•āĻžāϟāĻžāϰ āϏāĻŽā§Ÿ āύāĻžāϕ⧇ āĻŽā§āϖ⧇ āϚ⧁āϞ āĻĸ⧁āϕ⧇ āϝ⧇āϤ, āωāĻĢ, āφāĻŽāĻžāϰ āĻļ⧁āϧ⧁ āĻŽāύ⧇ āĻšāϤ āϚ⧁āϞ āύāĻž āĻŦ⧜ āĻšāϞ⧇āχ āϤ⧋ āĻšā§Ÿ – āϏāĻŦāϏāĻŽā§Ÿ āϚ⧁āϞ āϛ⧋āϟ āĻĨāĻžāĻ•āϞ⧇ āĻ•āϤ āĻ­āĻžāϞ āĻšāϤāĨ¤

āφāĻŽāĻžāĻĻ⧇āϰ āĻĒāĻžāĻļ⧇āϰ āĻŦāĻžāϏāĻžā§Ÿ āϟ⧁āϟ⧁āϞ āύāĻžāĻŽā§‡ āĻāĻ•āϟāĻž āϛ⧇āϞ⧇ āĻĨāĻžāĻ•āϤāĨ¤ āϐāϏāĻŽā§Ÿ āϟ⧁āϟāϞ⧇āϰ āĻ•āĻžāϜāχ āĻ›āĻŋāϞ āφāĻŽāĻžāϕ⧇ āϏāĻžāϰāĻžāĻĻāĻŋāύ āĻ•ā§āĻˇā§āϝāĻžāĻĒāĻžāύ⧋āĨ¤ āĻŦāĻžāϏāĻžāϰ āĻĒāĻžāĻļ⧇ āĻāĻ•āϟāĻž āĻĻā§‹āĻ•āĻžāύ⧇ āϏ⧇āχāϏāĻŽā§Ÿ āϚāĻžāϰ āφāύāĻžā§Ÿ āĻ…āύ⧇āĻ•āϗ⧁āϞ⧋ āϟāĻŋāĻ•āϟāĻŋāĻ•āĻŋāϰ āĻĄāĻŋāĻŽ (āϛ⧋āϟ āĻ—ā§‹āϞ āĻ—ā§‹āϞ āϞāĻœā§‡āĻ¨ā§āϏ) āĻĒāĻžāĻ“ā§ŸāĻž āϝ⧇āϤ, āφāϰ āϟ⧁āϟ⧁āϞ āĻ•āϰāϤ āĻ•āĻŋ āϏ⧇āϗ⧁āϞ⧋ āĻ•āĻŋāύ⧇ āφāĻŽāĻžāϕ⧇ āĻĻ⧇āĻ–āĻŋā§Ÿā§‡ āĻĻ⧇āĻ–āĻŋā§Ÿā§‡ āϖ⧇āϤāĨ¤ āĻāĻŽāύ āĻŽā§‡āϜāĻžāϜ āĻ–āĻžāϰāĻžāĻĒ āĻšāϤ āφāĻŽāĻžāϰāĨ¤ āϟ⧁āϟ⧁āϞ⧇āϰ āϏāĻžāĻĨ⧇ āφāĻŽāĻžāϰ āĻŦāύ⧇āύāĻŋ āĻ•āĻ–āύ⧋āχāĨ¤ āϟ⧁āϟ⧁āϞ⧇āϰ āĻŽāĻž āĻ›āĻŋāϞ āĻ…āĻĻā§āϭ⧁āϤ āĻāĻ• āĻŽāĻšāĻŋāϞāĻž, āϏ⧇ āϟ⧁āϟ⧁āϞ⧇āϰ āωāĻĒāϰ⧇ āĻ•ā§āώ⧇āĻĒ⧇ āϗ⧇āϞ⧇āχ āϟ⧁āϟ⧁āϞ āϕ⧇ āĻāĻ•āĻĻāĻŽ āĻ¨ā§āϝāĻžāĻ‚āĻŸā§‹ āĻ•āϰ⧇ āĻĒāĻŋāϞāĻžāϰ⧇āϰ āϏāĻžāĻĨ⧇ āĻŦ⧇āρāϧ⧇ āϰ⧇āϖ⧇ āĻĻāĻŋāϤāĨ¤ āϟ⧁āϟāϞ āϝāϤāχ āϚāĻŋā§ŽāĻ•āĻžāϰ āĻ•āϰ⧇ āĻ•āĻžāρāĻĻ⧁āĻ• āύāĻž āϕ⧇āύ, āϤāĻžāϕ⧇ āĻ›āĻžā§œāĻž āĻšāϤ āύāĻžāĨ¤ āĻŦā§āϝāĻžāĻĒāĻžāϰāϟāĻž āϏ⧇āχ āϏāĻŽā§Ÿ āφāĻŽāĻžāϰ āĻŽāύ⧇ āĻ…āύ⧇āĻ•āĻĻāĻŋāύ āϧāϰ⧇ āϗ⧇āρāĻĨ⧇ āĻ—āĻŋā§Ÿā§‡āĻ›āĻŋāϞāĨ¤ āϟ⧁āϟ⧁āϞ⧇āϰ āĻ—āϞāĻž āĻĢāĻžāϟāĻžāύ⧋ āĻ•āĻžāĻ¨ā§āύāĻž āĻļ⧁āύāϞ⧇āχ āĻŦā§‹āĻāĻž āϝ⧇āϤ āĻ“āϰ āĻŽāĻž āĻ“āϕ⧇ āĻāĻ–āύ āĻŦ⧇āρāϧ⧇ āϰāĻžāĻ–āϛ⧇āĨ¤ āϟ⧁āϟāϞāϰāĻž āϖ⧁āĻŦ āĻļā§€āĻ˜ā§āϰāχ āĻŦāĻžāϏāĻž āĻŦāĻĻāϞ āĻ•āϰ⧇ āϕ⧋āĻĨāĻžā§Ÿ āϝ⧇āύ āϚāϞ⧇ āϝāĻžā§ŸāĨ¤

āφāϗ⧇āϰ āĻŦāĻžāϏāĻžā§Ÿ āφāĻŽāĻžāĻĻ⧇āϰ āĻāĻ•āϟāĻž āϕ⧁āϕ⧁āϰ āĻ›āĻŋāϞ āϟāĻŽāĻŋ āύāĻžāĻŽā§‡āĨ¤ āφāĻŽāĻŋ āφāϰ āĻŦāĻžāĻŦāĻž āĻĒā§āϰāϤāĻŋāĻĻāĻŋāύ āϏāĻ•āĻžāϞ⧇ āĻ“āϕ⧇ āĻ–āĻžāĻ“ā§ŸāĻžāϤāĻžāĻŽāĨ¤ āĻŦāĻžāϏāĻž āĻŦāĻĻāϞ āĻ•āϰ⧇ āφāϏāĻžāϰ āĻĒāϰ āϕ⧇āύ āϝ⧇āύ āϕ⧁āϕ⧁āϰāϟāĻž āφāĻŽāĻžāĻĻ⧇āϰ āϏāĻžāĻĨ⧇ āφāϏ⧇āύāĻŋ, āϝāĻĻāĻŋāĻ“ āĻŽāĻžāϠ⧇āϰ āĻāĻĒāĻžāĻļ āφāϰ āĻ“āĻĒāĻžāĻļāĨ¤ āĻļ⧁āĻ•ā§āϰāĻŦāĻžāϰ⧇ āφāĻŽāĻŋ āφāϰ āĻŦāĻžāĻŦāĻž āĻĒā§āϰāĻžā§Ÿāχ āĻ•āĻŋāϛ⧁ āĻŦāĻžāϏāĻŋ āϰ⧁āϟāĻŋ āύāĻŋā§Ÿā§‡ āφāϗ⧇āϰ āĻĒāĻžā§œāĻžā§Ÿ āĻ—āĻŋā§Ÿā§‡ āϟāĻŽāĻŋāϕ⧇ āϖ⧁āĻœā§‡ āĻŦ⧇āϰ āĻ•āϰāϤāĻžāĻŽāĨ¤ āĻ•āĻŋāϛ⧁āĻĻāĻŋāύ āĻĒāϰ⧇ āϟāĻŽāĻŋāĻ“ āϕ⧋āĻĨāĻžā§Ÿ āϝ⧇āύ āϚāϞ⧇ āϗ⧇āϞ, āφāϰ āĻĒāĻžāχāύāĻŋāĨ¤

āϛ⧋āϟāĻŦ⧇āϞāĻž āĻĨ⧇āϕ⧇āχ āĻ…āύ⧇āĻ•āϗ⧁āϞ⧋ āĻŦā§‹āύ⧇āϰ āϏāĻžāĻĨ⧇ āĻĨāĻžāĻ•āĻžā§Ÿ āϰāĻžāĻ¨ā§āύāĻžāĻŦāĻžāĻ¨ā§āύāĻž āφāϰ āĻĒ⧁āϤ⧁āϞ āĻ›āĻŋāϞ āφāĻŽāĻžāϰ āϖ⧁āĻŦāχ āĻĒāĻ›āĻ¨ā§āĻĻ⧇āϰ āĻāĻ•āϟāĻž āϖ⧇āϞāĻžāĨ¤ āφāĻŽāϰāĻž āĻŦāĻžāϞāĻŋ āĻĻāĻŋā§Ÿā§‡ āĻ­āĻžāϤ āϰāĻžāĻ¨ā§āύāĻž āĻ•āϰāϤāĻžāĻŽ, āϭ⧁āϏāĻŋ āĻĻāĻŋā§Ÿā§‡ āĻŦāĻžāύāĻžāϤāĻžāĻŽ āĻ–āĻžāĻŦāĻžāϰ āφāϰ āχāĻŸā§‡āϰ āϗ⧁āĻā§œā§‹ āĻĻāĻŋā§Ÿā§‡ āĻŦāĻžāύāĻžāϤāĻžāĻŽ āϏāϰāĻŦāϤāĨ¤ āĨ¤ āĻāĻŽāύāĻ•āĻŋ āĻĒāĻžāĻļ⧇āϰ āĻŦāĻžāϏāĻžāϰ āύāϤ⧁āύ āϛ⧇āϞ⧇āϟāĻž āφāϰ āϤāĻžāϰ āĻŦā§‹āύ⧇āϰ āϏāĻžāĻĨ⧇āĻ“ āφāĻŽāĻŋ āϰāĻžāĻ¨ā§āύāĻžāĻŦāĻžāĻ¨ā§āύāĻž āϖ⧇āϞ⧇āĻ›āĻŋ āĻ…āύ⧇āĻ•āĻĻāĻŋāύāĨ¤ āĻāĻ•āĻĻāĻŋāύ āĻ•āĻŋ āĻ•āĻžāϰāύ⧇ āϝ⧇āύ āĻāĻ•āϟāĻž āϟāĻŋāύ⧇āϰ āϜāϗ⧇ āĻ…āύ⧇āĻ•āĻ–āĻžāύāĻŋ āφāϟāĻžāϰ āϭ⧁āϏāĻŋ āύāĻŋā§Ÿā§‡ āĻĒāĻžāύāĻŋ āϗ⧁āϞ⧇ āĻ–āĻžāĻŸā§‡āϰ āϤāϞāĻžā§Ÿ āϰ⧇āϖ⧇ āĻĻāĻŋā§Ÿā§‡ āϭ⧁āϞ⧇ āĻ—āĻŋā§Ÿā§‡āĻ›āĻŋāϞāĻžāĻŽāĨ¤ āĻ•ā§Ÿā§‡āĻ•āĻĻāĻŋāύ āĻĒāϰ⧇ āϏ⧇āχ āϭ⧁āϏāĻŋ āĻĒāĻšā§‡ āĻ—āĻ¨ā§āϧ āĻŦ⧇āϰ āĻšāĻ“ā§ŸāĻž āĻļ⧁āϰ⧁ āĻšāϞāĨ¤ āĻ­āĻžāϞāχ āĻŽāĻžāϰ āĻ–ā§‡ā§Ÿā§‡āĻ›āĻŋāϞāĻžāĻŽ āϏ⧇āĻĻāĻŋāύāĨ¤

āύāĻ¸ā§āϟāĻžāϞāϜāĻŋ⧟āĻž – ⧍

āφāĻŽāĻŋ āϤāĻ–āύ āĻ¸ā§āϕ⧁āϞ⧇āĻ“ āĻ­āĻ°ā§āϤāĻŋ āĻšāχāύāĻŋ, āĻ­āĻžāϏāĻž āĻ­āĻžāϏāĻž āĻŽāύ⧇ āĻĒā§œā§‡ āĻ•āĻŋāϛ⧁ āĻ•āĻŋāϛ⧁ āĻĻāĻŋāύ⧇āϰ āĻ•āĻĨāĻžāĨ¤ āφāĻŽāĻžāϕ⧇ āĻ–āĻžāĻ“ā§ŸāĻžāϤ⧇ āϖ⧁āĻŦāχ āĻŦ⧇āĻ— āĻĒ⧇āϤ⧇ āĻšāϤ āĻŦā§‹āύāĻĻ⧇āϰāĨ¤ āφāĻŽāĻžāĻĻ⧇āϰ āĻŦāĻžāϏāĻžā§Ÿ āϕ⧋āύ āĻĢā§āϰāĻŋāϜ āĻŦāĻž āϟāĻŋāĻ­āĻŋ āĻ›āĻŋāϞ āύāĻž āϏ⧇āχ āϏāĻŽā§ŸāĨ¤ āĻŽāĻžāĻā§‡ āĻŽāĻžāĻā§‡ āφāĻŽāĻžāĻĻ⧇āϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻŽāĻŋāϞāϤ āĻĒāĻžāĻļ⧇āϰ āĻŦāĻžāϏāĻžā§Ÿ āϟāĻŋāĻ­āĻŋ āĻĻ⧇āĻ–āĻžāϰāĨ¤ āφāϰ āϟāĻŋāĻ­āĻŋāϤ⧇ āĻ•āĻŋāϛ⧁ āϚāϞāĻžāϰ āϏāĻŽā§Ÿ āϏ⧇ āĻ•āĻŋ āĻ­āĻŋ⧜ āĻŽāĻžāύ⧁āώ āϜāύ⧇āϰ, āϝ⧇āύ āωāĻĒāϚāĻŋā§Ÿā§‡ āĻĒ⧜āϤ āϘāϰāĨ¤ āĻ“āϰāĻž āϏāĻŦāϏāĻŽā§Ÿ āϟāĻŋāĻ­āĻŋ āĻĻ⧇āĻ–āϤ⧇ āĻĻāĻŋāϤ āύāĻž (āĻ•āĻŋāĻ‚āĻŦāĻž āφāĻŽāϰāĻž āϏāĻŦāϏāĻŽā§Ÿ āϝ⧇āϤāĻžāĻŽ āύāĻž, āĻ āĻŋāĻ• āĻŽāύ⧇ āύāĻžāχ) – āϤāĻžāχ āϟāĻŋāĻ­āĻŋ āϤ⧇āĻŽāύ āĻāĻ•āϟāĻž āφāĻ•āĻ°ā§āώāĻ¨ā§€ā§Ÿ āĻŦāĻ¸ā§āϤ⧁ āĻ›āĻŋāϞ āύāĻž āφāĻŽāĻžāϰ āĻ•āĻžāϛ⧇āĨ¤ āφāĻŽāĻŋ āϖ⧇āϞāϤāĻžāĻŽ āϰāĻžāĻœā§āϝ⧇āϰ āϝāϤ āĻĒā§āϝāĻžāϕ⧇āϟ (āĻŦāĻŋāĻ¸ā§āϕ⧁āϟ, āϏāĻŋāĻ—āĻžāϰ⧇āϟ) āĻĻāĻŋā§Ÿā§‡āĨ¤ āϏ⧇āχ āϗ⧁āϞ⧋ āĻĻāĻŋā§Ÿā§‡ āĻ—āĻžā§œāĻŋ āĻŦāĻžāύāĻžāύ⧋ āĻšāϤ, āĻŽāĻžāϟāĻŋ āĻĻāĻŋā§Ÿā§‡ āϚāĻžāĻ•āĻžāĨ¤ āĻāĻ•āĻŦāĻžāϰ āĻ…āύ⧇āĻ• āϗ⧁āϞ⧋ āĻļā§‹āϞāĻž āĻĒā§‡ā§Ÿā§‡āĻ›āĻŋāϞāĻžāĻŽ āϕ⧋āĻĨāĻž āĻĨ⧇āϕ⧇ āϝ⧇āύ, āϏ⧇ āĻ•āĻŋ āφāύāĻ¨ā§āĻĻ āφāĻŽāĻžāϰāĨ¤ āĻļā§‹āϞāĻž āĻĒāĻžāύāĻŋāϤ⧇ āĻ­āĻžāϏ⧇, āφāϰ āϤāĻžāχ āĻ—āĻžāĻŽāϞāĻžāϰ āϏāĻžāĻŽāύ⧇ āĻĨ⧇āϕ⧇ āφāĻŽāĻžāϕ⧇ āφāϰ āωāĻ āĻžāύ⧋ āϝ⧇āϤ āύāĻžāĨ¤

āĻŦāĻžāϏāĻžāϰ āĻĒāĻžāĻļ⧇ āĻ›āĻŋāϞ āĻ•ā§āϝāĻžāĻ¨ā§āϏāĻžāϰ āĻ—āĻŦ⧇āώāύāĻž āχāĻ¨ā§āϏāϟāĻŋāωāĻŸā§‡āϰ āĻŽāĻžāĻ āĨ¤ āφāĻŽāĻŋ āφāϰ āĻŦāĻžāĻŦāĻž āĻĒā§āϰāĻžā§Ÿāχ āĻŦāĻŋāĻ•āĻžāϞ⧇ āĻŦ⧇āϰ āĻšā§Ÿā§‡ āϝ⧇āϤāĻžāĻŽ āϖ⧇āϞāϤ⧇āĨ¤ āĻŸā§‹āĻ•āĻžāχ āφāϰ āĻ­āĻžāϏāĻŽāĻžāύ āϛ⧇āϞ⧇āĻĒ⧁āϞ⧇āĻĻ⧇āϰ āϏāĻžāĻĨ⧇ āφāĻŽāϰāĻž āϖ⧁āĻŦāχ āĻŽāϜāĻž āĻ•āϰ⧇ āĻĢ⧁āϟāĻŦāϞ āϖ⧇āϞ⧇āĻ›āĻŋ āĻ…āύ⧇āĻ•āĻĻāĻŋāύāĨ¤ āφāĻŽāĻŋ āĻĒā§āϰāĻžā§Ÿāχ āĻĻ⧇āĻ–āϤāĻžāĻŽ āĻāĻ•āϟāĻž āĻ—āĻžāϛ⧇āϰ āύāĻŋāϚ āĻĨ⧇āϕ⧇ āĻ“āϰāĻž āĻĢāϞ āĻ•ā§ā§œāĻžā§Ÿ, āĻĻ⧇āĻ–āϤ⧇ āĻ…āύ⧇āĻ•āϟāĻž āĻ•āĻžāĻŽāϰāĻžāĻ™āĻžāϰ āĻŽāϤāĨ¤ āĻŦāĻžāĻŦāĻžāϕ⧇ āϜāĻŋāĻœā§āĻžā§‡āϏ āĻ•āϰāĻžā§Ÿ āĻŦāĻžāĻŦāĻžāĻ“ āĻŦāϞ⧇āĻ›āĻŋāϞ āĻ“āϟāĻž āĻ•āĻžāĻŽāϰāĻžāĻ™āĻžāĨ¤ āϝ⧇āĻšā§‡āϤ⧁ āĻ•āĻžāĻŽāϰāĻžāĻ™āĻž āĻŽāϜāĻžāϰ āϤāĻžāχ āĻāĻ•āĻĻāĻŋāύ āφāĻŽāĻŋ āĻāĻ•āϟāĻž āĻĢāϞ āĻ•ā§ā§œāĻŋā§Ÿā§‡ āĻ•āĻžāĻŽā§œ āĻĻāĻŋā§Ÿā§‡ āĻĻ⧇āĻ–āĻŋ āĻ“ā§ŸāĻžāĻ• āĻĨ⧁, āϤ⧇āϤ⧋, āϚāϰāĻŽ āϤ⧇āϤ⧋āĨ¤ āφāĻŽāĻŋ āĻ­āĻžāĻŦāϤāĻžāĻŽ āϛ⧇āϞ⧇āϗ⧁āϞ⧋ āϕ⧇āύ āĻāϗ⧁āϞ⧋ āĻ•ā§ā§œāĻžā§ŸāĨ¤ āĻŦ⧜ āĻšāĻ“ā§ŸāĻžāϰ āĻĒāϰ āĻœā§‡āύ⧇āĻ›āĻŋāϞāĻžāĻŽ āĻ“āϟāĻž āĻ›āĻŋāϞ āĻ…āĻ°ā§āϜ⧁āύ āĻ—āĻžāĻ›āĨ¤

āφāĻŽāĻžāϕ⧇ āϐ āϏāĻŽā§ŸāϟāĻžā§Ÿ āĻĻāĻžāρāϤ āĻŽāĻžāϜāĻžāϰ āϏāĻŽā§Ÿ āĻ•āĻžāωāϕ⧇ āϏāĻžāĻĨ⧇ āϰāĻžāĻ–āϤ⧇ āĻšāϤāĨ¤ āĻŦ⧇āĻļāĻŋāϰ āĻ­āĻžāĻ— āϏāĻŽā§Ÿ āĻāχ āĻĻāĻžā§ŸāĻŋāĻ¤ā§āĻŦ āĻĒ⧇āϤ āĻ¸ā§āĻŦāĻžāϤ⧀ āĻ…āĻĨāĻŦāĻž āĻļāĻŋāĻŽā§, āφāĻŽāĻžāϰ āϛ⧋āϟ āφāϰ āϏ⧇āϜ āĻŦā§‹āύāĨ¤ āĻšā§‡āĻš āĻšā§‡āĻš, āϤāĻžāϰ āĻ•āĻžāϰāύ āĻšāϞ āφāĻŽāĻŋ āĻĻāĻžāρāϤ āĻŽā§‡āĻœā§‡ āĻĒ⧇āĻ¸ā§āϟāϟāĻž āĻĢ⧇āϞ⧇ āĻĻā§‡ā§ŸāĻžāϰ āĻŦāĻĻāϞ⧇ āĻĒā§āϰāĻžā§Ÿāχ āĻ—āĻŋāϞ⧇ āĻĢ⧇āϞāϤāĻžāĻŽāĨ¤ āĻšā§‹ āĻšā§‹ āĻšā§‹

āφāĻŽāĻžāĻĻ⧇āϰ āĻŦāĻžāϏāĻžāϰ āϏāĻžāĻŽāύ⧇ āĻāĻ• āϞ⧋āϕ⧇āϰ āĻāĻ•āϟāĻž āĻ­āĻ•ā§āϏāĻ“ā§ŸāĻžāĻ—āύ āĻ›āĻŋāϞāĨ¤ āφāĻŽāϰāĻž āĻŦāϞāϤāĻžāĻŽ āĻŦā§āϝāĻžāĻ™āĻ—āĻžā§œā§€āĨ¤ āϚāĻ•āϚāϕ⧇ āϏāĻžāĻĻāĻž āĻāĻ•āϟāĻž āĻ—āĻžā§œā§€āĨ¤ āĻŽā§‡āϜ āĻŦā§‹āύ āĻĒā§āϰāĻžā§Ÿāχ āĻŦāϞāϤ, āχāϏ, āφāĻŽāĻžāĻĻ⧇āϰ āϝāĻĻāĻŋ āĻāϰāĻ•āĻŽ āĻāĻ•āϟāĻž āĻ—āĻžā§œā§€ āĻĨāĻžāĻ•āϤāĨ¤ āĻĒā§āϰāĻžā§ŸāĻĻāĻŋāύāχ āϏāĻ•āĻžāϞ⧇ āφāĻŽāĻŋ āφāϰ āĻ¸ā§āĻŦāĻžāϤ⧀ āϤāĻžāĻ•āĻŋā§Ÿā§‡ āĻĻ⧇āĻ–āϤāĻžāĻŽ āĻ—āĻžā§œā§€āϟāĻžāϰ āĻŦ⧇āϰ āĻšāĻ“ā§ŸāĻžāĨ¤

Web scrapping in a smart way, making a "Today in History" object in PHP

There are thousands of services available on web who are presenting interesting as well as education information which you can really integrate in your web page or make a nice widget and let others use them seamlessly with their content delivery platforms. In this article I am going to show you how you can make a nice Today-in-History widget with the help of the data provided in Scopesys. You can use this code to make a nice widget or a trivia app or whatever. But before making your own scrappers from any services, please please please carefully note the copyright of that content. You shouldn’t violate copyright either way.

In this widget, we will strip the following content from the pages provided by scopesys and display them in different categories.
1. Today in history
2. Who’s born today
3. Who’s died today
4. Where is holiday today
5. Religious observance of today
6. Religious history of today

Lets go 😀


<?php
//todayinhistory.php
error_reporting(0);
define("MARKER_START","<H3>On this day...</h3>");
define("MARKER_END","<BR><BR><HR><h3>Holidays</h3>");
define("BIRTHDAY_START","</font></center></center>");
define("BIRTHDAY_END","<HR> <br><H3>Deaths which occurred on ".date("F d").":</H3>");
define("DEATH_START","<HR> <br><H3>Deaths which occurred on ".date("F d").":</H3>");
define("DEATH_END","<HR><IMG align=left SRC=\"http://www.scopesys.com/flag.gif\">");
define("HOLIDAYS_START",'<i>Note: Some Holidays are only applicable on a given <b>"day of the week"</b></i><br> <br>');
define("HOLIDAYS_END","<HR> <H3>Religious Observances</H3>");
define("RELIGIOUS_START","<HR> <H3>Religious Observances</H3>");
define("RELIGIOUS_END","<HR> <H3>Religious History </h3>");
define("RELHISTORY_START","<HR> <H3>Religious History </h3>");
define("RELHISTORY_END","<BR><BR><font color=red>");


echo "<h2>Today is ".Date("F d, Y")."</h2>";
$data = file_get_contents("http://www.scopesys.com/today");


if ($_GET['history']=='1'){
echo "<br/><h2 style='color: green' >Today in history</h2>";
$end = strpos($data,MARKER_END)-15;
$start = strpos($data,MARKER_START)+strlen(MARKER_START);
echo substr($data,$start,$end-$start);
}


if ($_GET['born']=='1'){
echo "<br/><h2 style='color: green' >Who's born today</h2>";
$end = strpos($data,BIRTHDAY_END);
$start = strpos($data,BIRTHDAY_START)+strlen(BIRTHDAY_START);
echo substr($data,$start,$end-$start);
}


if ($_GET['died']=='1'){
echo "<br/><h2 style='color: green' >Who died today</h2>";
$end = strpos($data,DEATH_END);
$start = strpos($data,DEATH_START)+strlen(DEATH_START);
echo substr($data,$start,$end-$start);
}


if ($_GET['holiday']=='1'){
echo "<br/><h2 style='color: green' >Where is holiday today</h2>";
$end = strpos($data,HOLIDAYS_END);
$start = strpos($data,HOLIDAYS_START)+strlen(HOLIDAYS_START);
echo substr($data,$start,$end-$start);
}


if ($_GET['religious']=='1'){
echo "<br/><h2 style='color: green' >Religious observance</h2>";
$end = strpos($data,RELIGIOUS_END);
$start = strpos($data,RELIGIOUS_START)+strlen(RELIGIOUS_START);
echo substr($data,$start,$end-$start);
}


if ($_GET['relhistory']=='1'){
echo "<br/><h2 style='color: green' >Religious history</h2>";
$end = strpos($data,RELHISTORY_END);
$start = strpos($data,RELHISTORY_START)+strlen(RELHISTORY_START);
echo substr($data,$start,$end-$start);
}
?>

Now if you want to find who born today, point your browser to todayinhistory.php?born=1. Mashup Mashup Mashup, that is what many successful web app are doing these days. And sometime this is how data collection is done behind the scene 🙂

Writing this code was really enjoyable as getting root canal done in your teeth with a rusty drill (I forgot where I’ve read such a nice quote), heh heh. But I am sure, you will enjoy it more than that 😉 – happy scrapping.