I always wanted to just have an Internet TV, no cable, no satellite, no terrestrial. Even when it comes to TV I want to watch what I want when I want, not when the broadcaster wants. Internet TV was the ideal. Main thing I missed was really good content with really good quality. Only hope was torrents, but it was not the same experience though. You have to download the movie file using a torrent client and then start watching it using a media player. YouTube videos were a big pain to save to share with my friends. Video feeds were another story; I couldn't find a single descent client that will just work.
Finally there is a free and open source media player + Internet TV, Miro. You can download Miro from http://www.getmiro.com/. It is released under GNU GPL, you are free to use, change and redistribute.
Miro is a great piece of software that makes Internet TV a reality. It is capable of playing most video files if not all, built in guide to video feeds and podcasts with the capability to play them within Miro itself, capable of playing and saving YouTube videos, download Torrents and watch them in Miro, and best of all access to great variety of HD content. All this makes Miro the only media player you will ever want.
Miro binaries are available for all major flavors of Linux, MacOS, Windows. If you are not able to use any of the binaries you could always compile and install from source ;)
I'm impressed about what Miro can do, I think you will also be impressed. Download Miro now from http://www.getmiro.com/.
Friday, January 25, 2008
Turn your computer into an Internet TV - Miro
Posted by
Mohanjith
at
00:25
0
comments
Links to this post
Thursday, January 24, 2008
Automagically ping blog search engines
I wanted to automatically ping Technorati, Icerocket, and Google Blog Search, that means with no intervention the blog search engines should be pinged. I was alright with a delay of 15 minutes.
So I went about exploiting the XML-RPC services provided by the blog search engines. I came up with this python script. I set up a cron job to invoke the script every 15 minutes. See bellow for the source.
#!/usr/bin/python
import xmlrpclib
import urllib2
import os
from hashlib import md5
feed_url = '[Yorur feed url]'
blog_url = '[Your blog url]'
blog_name = '[Your blog name]'
hash_file_path = os.path.expanduser("~/.blogger/")
def main():
req = urllib2.Request(feed_url)
response = urllib2.urlopen(req)
feed = response.read()
hash_file_name = hash_file_path + md5(blog_url).hexdigest()
if os.path.exists(hash_file_name):
hash_file = open(hash_file_name, "r+")
last_digest = hash_file.read(os.path.getsize(hash_file_name))
else:
hash_file = open(hash_file_name, "w")
last_digest = ''
curr_digest = md5(feed).hexdigest()
if curr_digest != last_digest:
ping = Ping(blog_name, blog_url)
responses = ping.ping_all(['icerocket','technorati','google'])
hash_file.write(curr_digest)
hash_file.close()
class Ping:
def __init__(self, blog_name, blog_url):
self.blog_name = blog_name
self.blog_url = blog_url
def ping_all(self, down_stream_services):
responses = []
for down_stream_service in down_stream_services:
method = eval('self._' + down_stream_service)
responses.append(method.__call__())
return responses
def _icerocket(self):
server = xmlrpclib.ServerProxy('http://rpc.icerocket.com:10080')
response = server.ping(self.blog_name, self.blog_url)
# print "Icerocket response : " + str(response)
return response
def _technorati(self):
server = xmlrpclib.ServerProxy('http://rpc.technorati.com/rpc/ping')
response = server.weblogUpdates.ping(self.blog_name, self.blog_url)
# print "Technorati response : " + str(response)
return response
def _google(self):
server = xmlrpclib.ServerProxy('http://blogsearch.google.com/ping/RPC2')
response = server.weblogUpdates.ping(self.blog_name, self.blog_url)
# print "Google blog search response : " + str(response)
return response
main()
When ever the script is invoked it will get the post feed content, and create a md5 hash of it and then compare the hash against the last known hash, if they differ ping the given list of service.
This is very convenient if you have someplace to run the cron job. Even your own machine is sufficient if you can keep your machine on for at least 15 minutes after the blog post is made.
To run the script you need to python 2.4 to later and the python package hashlib. Hope you will find this useful.
Posted by
mohanjith
at
01:50
0
comments
Links to this post
Wednesday, January 23, 2008
Epiphany Anti-Phishing extension
I'm happy to announce the release of safe-browsing 0.0.1 for Epiphany, the GNOME Web browser. It will try match the url you are trying to access with the Google Safe Browsing black list of urls. If it is a match the view pane will be disabled such that the user can only view the page but not interact. The user will be free to browse away from the page by typing a new url. The extension will also add a indicator to the browser status bar. In the next relase an error page will be displayed instead of even displaying the evil page.
You can also report phishing sites by clicking Help -> Report Web Forgery...
You can download the extension safe-browsing-0.0.1.tar.gz
Follow the steps bellow to install the extensionn. I'm assuming you have already installed epiphany and epiphany-extensions.
Step 1 - Download the extension archive
$ wget http://mohanjith.net/downloads/gnome/epiphany/extensions/safe-browsing/safe-browsing-0.0.1.tar.gz
Step 2 - Extract the extension archive to epiphany extensions directory
$ cd /usr/lib/epiphany/2.20/extensions/
$ tar -xzvf [Location_to_archive] .
Step 3 - Restart epiphany and enable Safe browsing extension
Goto Tools -> Extensions and then select the check box against Safe browsing.
Step 4 - Goto a phishing site
Goto a phishing page, e.g. http://202.168.224.161/c.html at the time of posting.
Hope this extension will make your browsing experience safer.
Posted by
mohanjith
at
03:09
1 comments
Links to this post
Labels: Anti-Phishing, Epiphany, GNOME, Linux
Monday, January 21, 2008
GNOME Web browser Creative Commons extension
I'm happy to announce the release of cc-license-viewer 1.1.0 for Epiphany, the GNOME Web browser. It is capable of detecting Creative Commons licensed web pages either with rdf meta data or with the license badge from creativecomons.org and displaying an icon on the status bar.
This is a modified version of cc-license-viewer released by Jaime Frutos Morales. Jaime Frutos Morales extension is not capable of detecting web pages with the Creative Commons license badge.
You can download the extension cc-license-viewer-1.1.0.tar.gz
Follow the steps bellow to install the extensionn. I'm assuming you have already installed epiphany and epiphany-extensions.
Step 1 - Download the extension archive
$ wget http://mohanjith.net/downloads/gnome/epiphany/extensions/cc-license-viewer/cc-license-viewer-1.1.0.tar.gz
Step 2 - Extract the extension archive to epiphany extensions directory
$ cd /usr/lib/epiphany/2.20/extensions/
$ tar -xzvf [Location_to_archive] .
Step 3 - Restart epiphany and enable CC extension
Goto Tools -> Extensions and then select the check box against Creative Commons license viewer.
Step 4 - Goto Creative Commons page
Goto a CC licensed page, e.g. http://creativecommons.org
My next plan would be to extend the functionality of this extension such that more informative icon is shown at the status bar. For the time beign have fun with this extension.
Posted by
mohanjith
at
18:51
0
comments
Links to this post
Sunday, January 20, 2008
The Google Highly Open Participation Contest
Following on from the success of the Google Summer of Code program, Google is pleased to announce a new effort to get young people involved in open source development. Google has teamed up with the open source projects such as Apache Software Foundation, Drupal, GNOME, Joomla!, MoinMoin, Mono, Moodle, Plone, Python, and SilverStripe to give student contestants the opportunity to learn more about and contribute to all aspects of open source software development, from writing code and documentation to preparing training materials and conducting user experience research.
If you're a student age 13 or older who has not yet begun university studies, you could help out these projects. In return, you'll learn more about all aspects of developing software - not just programming - and you'll be eligible to win cash prizes and the all important t-shirt! You will, of course, need your parent or guardian's permission to participate where applicable.
To Read more and take part go to http://code.google.com/opensource/ghop/2007-8/.
If you have already begun university studies like me you could always spread the word :)
Posted by
mohanjith
at
16:59
0
comments
Links to this post
Labels: Apache HTTP Server, GNOME, google
Saturday, January 19, 2008
Using GNOME remotely via SSH
Have you ever wished that you had a GUI on a remote Linux server without using VNC? Actually you can use GNOME or any other GDM on a remote server via SSH, yep I'm not joking.
You need to have SSH and X11 running on both the client and the server. In addition on the server GNOME should be installed and SSH daemon should be running.
Step 1 - Turn on X11 forwarding on the server:
Add the following if it doesn't exist or just change no to yes in /etc/ssh/ssh_config and save it.
ForwardAgent yesAdd the following if it doesn't exist or just change to yes in
ForwardX11 yes
ForwardX11Trusted yes
/etc/ssh/sshd_config and save it.X11Forwarding yes
Step 2 - Connect to the remote server viw SSH with X11 forwarding
In order to enable X11 forwarding when you connect to a remote server via SSH you need to provide the commandline option
-X. See the example bellow.$ ssh -X username@server
Step 3 - Start GNOME Session
You need to start the GNOME session for the GUI to show. By default GNOME session is not started for remote connections. It might take a while for any change to appear, you should notice GNOME startup sequence appearing in the client and couple of messages in your terminal.
However I do not recommend running X11 or GNOME on a production server, but this should be handy if you want to connect to your home computer from office for example.
Posted by
mohanjith
at
18:10
1 comments
Links to this post
TopCoder Open 2008 - Open for registrations
For those of who don't know about TopCoder; TopCoder is one of the leagues for programming competitions, and it is fast becoming a major league. They conduct online competitions at least once a week and two major online and on site competitions. Read more at topcoder.com
TopCoder Open, more commonly known as TCO is one of the two annual online and onsite competitions. It is basically open to any TopCoder member who is 18 or above. In this year's TCO there will be four competitions: algorithm competition, component design and development competitions, marathon competition, studio competition. Only the top 120 will make the TCO.
TCOO8 is open for registrations till February 1, 2008. This time around there is a prize purse of $260,000 and the most importantly becoming the TCO08 champion.
If you do register your self as a new TC member do not forget to mention my TC member handle in the referer field; My handle is mohanjith.
Posted by
mohanjith
at
01:18
0
comments
Links to this post
Get a free web hit counter
One of my friends wanted a free web hit counter to add to his blog. The biggest problem was getting a counter with digits that would satisfy my friend, he wanted a counter with hand writing like digits. I came accross many sites with counters with boring digits and others with fancy digits. Fortunately I came across Web Hit Counter, they provide free web counters with a wide variety of digit styles; including handwriting like digits. They have the boring dotmatrix digits and also colorful fancy digts. Only problem I had was that I couldn't find a privacy policy; I guess that is not so much of a problem as long as they don't sell your mail addresses to spammers. So far my friend didn't get any spam on the account he used to register the counter. I wish they put up a privacy policy and stick to it.
Best of all you could specify the value from which the counter should start counting, so you could get a counter that would tick from 125000 and impress your visitors. That's one of the reasons I don't have a counter on my blog itself, I don't want to be told by some user that my counter is biased when I actually have had high number of hits.
Registering was a breeze, just provide the Username, E-mail, URL/Domain, Counter initial value and you get the counter code, which you have to paste into your blog/site's source. If you are not comfortable enough to edit the HTML source you could ask one of your techically inclined friends, like my friend did. My friend is very happy with the counter though the actual numbers are bit low ;).
Don't forget to get a counter for your blog or site from http://www.freecounterpro.com/.
Posted by
mohanjith
at
00:00
0
comments
Links to this post
Wednesday, January 16, 2008
Microsoft supports OpenID
Have you heard about OpenID? The simple idea that your web address is one form of identity, just like your email adddress or even your physical address? Well, back in December, we mentioned how OpenID has been gaining momentum like crazy, but today, things just went to a whole new level. Bill Gates announced that Microsoft CardSpace will support OpenID. Finally Microsoft realizes that their identity solutions were late to the party :D
Read more at Six Apart.
Posted by
mohanjith
at
00:05
0
comments
Links to this post
Monday, January 14, 2008
OpenID or CardSpace
You might have heard about OpenID and Microsoft's CardSpace. Both provide SSO functionality. I personally believe that OpenID is better because it works the way you want and not the way some third party wants it to work.
Few days back got into a big argument with one of my friends over whether OpenID is better than CardSpace. The outcome of the argument was that CardSpace was better because the Windows CardSpace client validates the consumer requesting the token and selects the identity; whereas in OpenID it the user that would choose which identity will be provided to the consumer.
Today I stumble upon VeriSign's OpenID SeatBelt Firefox Plugin, it provides Windows CardSpace client like functionality for OpenID. SeatBelt has phishing detection as well. So I showed off SeatBelt to my friend and he was convinced.
To make this post complete why OpenID is better than CardSpace. To start with OpenID is better supported; it works in any operating system or platform not just Windows. Second OpenID is well documented. Third OpenID is decentralized, your machine has nothing much to do with signing in except for the session. Fourth to use OpenID the users do not have to download anything other than the browser it self, if they need protection against phishing they only have to download a tiny(224K) plug in for their browser.
If you think different please add your views to the comments, sorry Blogger doesn't support CardSpace authentication for comments ;)
Posted by
mohanjith
at
23:48
2
comments
Links to this post
Sunday, January 13, 2008
Adding social bookmarking links to blogger
I recently wanted to add social bookmarking links to all of my blog posts. As you might notice my blog is hosted on blogger, only way I could do that is by editing the template. I thought I would share how to get about editing the template such that you add social bookmarking links which will automatically add the post permalink and the title if possible.
To edit the template, Sign into your blogger.com account and goto Template -> Edit HTML and then select Expand Widget Templates. Search for <data:post.body/>, just after <data:post.body/><div style="clear: both;"> <!-- clear for photos floats --> insert the following code.
<!-- Start of social bookmarks -->
<div class='service-links'>
<div class='service-label'>Bookmark this post with: </div>
<ul class='links'>
<li class='service_links_digg'><a class='service_links_digg' expr:href='"http://digg.com/submit?phase=2&url=" + data:post.url + "&title=" + data:post.title' rel='nofollow' title='Digg this post on digg.com.'><img alt='Digg' src='http://mohanjith.net/images/service_links/digg.png'/></a></li>
<li class='service_links_stumbleupon'><a class='service_links_stumbleupon' expr:href='"http://www.stumbleupon.com/submit?url=" + data:post.url + "&title=" + data:post.title' rel='nofollow' title='Bookmark this post on StumbleUpon.'><img alt='StumbleUpon' src='http://mohanjith.net/images/service_links/stumbleupon.png'/></a></li>
<li class='service_links_delicious'><a class='service_links_delicious' expr:href='"http://del.icio.us/post?url=" + data:post.url + "&title=" + data:post.title' rel='nofollow' title='Bookmark this post on del.icio.us.'><img alt='Delicious' src='http://mohanjith.net/images/service_links/delicious.png'/></a></li>
<li class='service_links_reddit'><a class='service_links_reddit' expr:href='"http://reddit.com/submit?url=" + data:post.url + "&title=" + data:post.title' rel='nofollow' title='Submit this post on reddit.com.'><img alt='Reddit' src='http://mohanjith.net/images/service_links/reddit.png'/></a></li>
<li class='service_links_newsvine'><a class='service_links_newsvine' expr:href='"http://www.newsvine.com/_tools/seed&save?u=" + data:post.url + "&h=" + data:post.title' rel='nofollow' title='Submit this post on newsvine.com.'><img alt='Newsvine' src='http://mohanjith.net/images/service_links/newsvine.png'/></a></li>
<li class='service_links_facebook'><a class='service_links_facebook' expr:href='"http://www.facebook.com/sharer.php?u=" + data:post.url + "&t=" + data:post.title' rel='nofollow' title='Share on Facebook.'><img alt='Facebook' src='http://mohanjith.net/images/service_links/facebook.png'/></a></li>
<li class='service_links_google'><a class='service_links_google' expr:href='"http://www.google.com/bookmarks/mark?op=add&bkmk=" + data:post.url + "&title=" + data:post.title' rel='nofollow' title='Bookmark this post on Google.'><img alt='Google' src='http://mohanjith.net/images/service_links/google.png'/></a></li>
<li class='service_links_yahoo'><a class='service_links_yahoo' expr:href='"http://myweb2.search.yahoo.com/myresults/bookmarklet?u=" + data:post.url + "&t=" + data:post.title' rel='nofollow' title='Bookmark this post on Yahoo.'><img alt='Yahoo' src='http://mohanjith.net/images/service_links/yahoo.png'/></a></li>
<li class='last service_links_technorati'><a class='service_links_technorati' expr:href='"http://technorati.com/cosmos/search.html?url="+data:post.url' rel='nofollow' title='Search Technorati for links to this post.'><img alt='Technorati' src='http://mohanjith.net/images/service_links/technorati.png'/></a></li>
</ul>
</div>
<!-- End of social bookmarks -->
Add the following code before
]]></b:skin>./** Service links style **/
.service-links {
padding-top: 3px;
}
.service-links ul.links {
margin:0pt;
padding:0pt;
}
.service-links ul.links li {
display:inline;
list-style-type:none;
padding: 0pt 0px;
background: none;
}
.service-links ul.links li img {
border: none;
padding: 3px;
}
Then save the template. Adding social bookmarking links and submitting your posts to social bookmarking networks would improve the visibility of your blog and help drive traffic to your blog.
Posted by
mohanjith
at
20:16
11
comments
Links to this post
WSO2 WSF/PHP with Lighttpd
I wanted to test drive WSO2 WSF/PHP on Lighttpd because I couldn't find any documentation specific for Lighttpd, or any one complaining that it cannot be done. I set up a new VMWare image running Debian so that I can blog all the steps involved in getting WSO2 WSF/PHP working on Lighttpd running on Debian.
Step 1: Install Lighttpd, PHP5
I used apt-get to install Lighttpd and PHP5
$ sudo apt-get install lighttpd php5Step 2: Download and install WSO2 WSF/PHP.
I downloaded the Debian package.
$ axel -an 5 http://dist.wso2.org/products/wsf/php/wso2-wsf-php-1.2.0-debian.debStep 3: Enable WSO2 WSF/PHP
$ dpkg -i wso2-wsf-php-1.2.0-debian.deb
I created a new file /etc/php5/conf.d/wsf.ini and added the following line.
extension=wsf.soStep 4: Enable FastCGI and PHP
Fastest method to run PHP on Lighttpd is FastCGI, so we will be enabling FastCGI.
$ sudo lighty-enable-mod fastcgiOn Debian Lighttpd FastCGI configuration file contains the configuration for PHP4. We will have to edit /etc/lighttpd/conf-enable/10-fastcgi.conf to look like bellow.
server.modules += ( "mod_fastcgi" )Step 5: Restart Lighttpd
## Start an FastCGI server for php5 (needs the php5-cgi package)
fastcgi.server = ( ".php" =>
((
"bin-path" => "/usr/bin/php5-cgi",
"socket" => "/tmp/php.socket",
"max-procs" => 2,
"idle-timeout" => 20,
"bin-environment" => (
"PHP_FCGI_CHILDREN" => "4",
"PHP_FCGI_MAX_REQUESTS" => "10000"
),
"bin-copy-environment" => (
"PATH", "SHELL", "USER"
),
"broken-scriptfilename" => "enable"
))
)
You have to reload the Lighttpd configuration files.
$ sudo /etc/init.d/lighttpd restartYou have successfully installed WSO2 WSF/PHP on PHP5 and Lighttpd. It is time to test whether it is a success. Simplest approach would be to see
phpinfo() page. Create a php file with the following line of code and place it in the document root. Then using a web browser goto that URL. In the page search for wsf section. This contains all the configurations about the WSF extension.I went throught to the trouble of actually consuming a SOAP web service to see whether this setup actually works and it was a success, but that is simply out of the scope of this post. These instructions should work on other Linux distributions with minor changes and any platform with few changes.
Fly WSO2 WSF/PHP with Lighttpd. Have fun.
Posted by
mohanjith
at
03:52
0
comments
Links to this post
Mohanjith.net - AboutUs Wiki Page
Wiki page about mohanjith.net from aboutus.org
read more | digg story
Posted by
mohanjith
at
01:44
1 comments
Links to this post
Saturday, January 12, 2008
Flying light with lighty
I moved all my sites to my all new server. There I'm running Lighttpd as the front facing web server. I do have Apache HTTP Server running for the sake of svn serving. It was not very hard to migrate sites from Apache HTTP Server to Lighttpd. Only feature I missed was .htaccess file support or substitute. I just had to migrate all the operations taking place in the .htaccess files to the Lighty configuration file.
Overall migration was smooth. I have nothing to complain, memory foot print is small as it could get. Since I'm serving only PHP and Python I'm making use of FastCGI and it is really fast. You wouldn't believe me if I tell you the performance gains. I can serve 700 requests per second when it comes to my Geo-IP web service (I believe the limit was the resources on the test machine), the server is not even sweating. If I was running the same application on Apache HTTP Server it would barely serve 230 requests per second, 204% performance gain.
If you visit any of my sites except for the blog itself (which is hosted at Blogger.com) you would see the performance. mohanjith.net responds within a second, that's lighting fast. All this with a Debian running on Xen with 128MB physical memory and 256MB swap.
I would recommend Lighty to any one with simple serving requirements. It saves lot of server resources.
Posted by
mohanjith
at
03:21
0
comments
Links to this post
Labels: Apache HTTP Server, fast, FastCGI, Lighttpd, Lighty, Linux
Thursday, January 10, 2008
Blogging from the GNOME blog
It feels really good to blog from the desktop it self. I used to dought that some of my friends were saying the world is moving to the desktop from the web. Now I see the truth.
To make this post I'm using GNOME Blog (gnome-blog), it is a simple desktop client which supports multiple blogging platforms including Blogger, Livejournal, MovableType and Wordpress.
Main advantage of a blogging client is that you don't have to click through a bunch of links and wait for a slow WYSIWYG editor to load.
If you are using Ubuntu just run:
$ sudo apt-get install gnome-blogSee the magic!
Edit:
Used blogger to edit the post to insert the <pre> tags
Posted by
mohanjith
at
00:58
0
comments
Links to this post
Wednesday, January 9, 2008
Identity theft protection, at it's best
While I was just browsing about today I came across a site that provides protection against credit card fraud. LifeLock.com provides fraud protection for just $10/p.m. Best part of it was the $1M service guarantee. LifeLock sounds like THE solution for your identity being stolen and ruining your credit score. They even have this new service called Wallet Lock, under which you don't have to worry about loosing your wallet because LifeLock will work hard to get back all you lost, what ever it takes.
To add to all that I quickly came across LifeLock promotion codes that will get you 30 day free subscription to LifeLock and $21 off the 1st year of your LifeLock subscription.
Posted by
mohanjith
at
23:22
1 comments
Links to this post
Tuesday, January 8, 2008
New Year and gifts - Portable DVD players
Finally all festivities are over. I'm back to my normal life. I was very busy this holiday season, shopping, shopping and more shopping. I thought of sharing some of the cool gadgets I came across this season. To start off, portable DVD players.
Choosing a portable DVD player can be tough, specially when it is not for you. As usual I do my homework before I went on shopping. Couple of the DVD players that interested me are Toshiba SD P2900 and Philips DCP750. Both have cool such as virtual surround sound when it comes to Toshiba SD P2900 and iPod dock in the Philips DCP750. Next I wanted some user review to find out what's best for my cousin. Mainly it has to run at least for 4 hours on battery since my cousin travels for close to 4 hours 3 days a week. wize.com came to my rescue, they have unbiased user reviews and I went straight into the portable dvd player section. So it was clear Philips DCP750 was out, got my cousin a Toshiba SD P2900.
Tough luck for my cousin, he will have to burn a DVD before he leaves home, coz he can't use his iPod to store the movies. To compensate I got him the Toshiba SD P2900 and 10s pack of DVD+RW. This new year my cousin was a very happy. :)








