Posts Tagged Open source

Sociality of the web

I was unsure if the title ’4 geeks and a pot of money’ was going to be too critical for this post, but I cannot deny that I thought about it!

I came across this article in the NY Times and ended up with a number of odd thoughts:

1- how did 4 geeks (i guess it is better than nerds?) with an idea managed to pull together over $150.000?

2- this is the revenge of the common-man

3- knowledge is power (and knowing how to code is the new scholastica, relegating the real common man to the ignorant and powerless man of the middle age)

4- is it going to work? (or is it just another open source project destined for failure?)

Let’s go with order. The first thought is easily addressed: theirs is a ‘call to arms’ against Facebook and it is not surprising at all that they received such support. It was not long ago that Zuckenberg made changes to Facebook which resulted in a user revolution. Just to get a grasp of the conflict it is worth to look at his online biographies on the Wikipedia and Dickipedia .

Personally, I’m not sure about all this fuss regarding privacy and the tyrannical ruling of corporations. But this might be down to the fact that my use of social networks is not so extensive. I’m actually quite bad in keeping in touch with the phone already…

However, I also double checked what’s public of my profile after the latest changes with open graph (see what facebook publishes about you and your friends with this openGraph app.

The fact is that when I participate into any public activity my identity is exposed in one way or another and snapshots of me are going to be all over the place, with or without consent. Therefore what’s the problem? The fact that the information is becoming more and more aggregated I believe is a side effect of the internet. However my view is that the information is out there anyway.

Let’s use a simple example. In public I’m a teacher in a higher education institution, I’m a football referee and member of a number of clubs and organizations. Each holds an information silo about me which is semi-public (i.e. they might keep this private officially). Nevertheless, because of the type of activities, my face could also be published in some form which i might not have necessarily agreed when i became a member (i.e. a journalist taking a picture and publishing in a newspaper showing me in a cup final, or academic references in places which i didn’t think i would be associated with).

The concern, however goes deeper I believe: for those who are used to public scrutiny, there is a certain awarenss of a thin line between public and private and even though manifestation of identity varies in different domains I can’t avoid to think that people’s privacy is a facade for paranoia.

There is a voyerism these days that leads to a worldwide exposure similar to celebrities. Is this a crave for attention channeled to the world? My question is not only why would I want to share a picture in which I make a fool of myself during a night out, but why would I want to take the picture in the first place? Flipping the coin, why would I want to take a potentially embarassing snapshot of a friend who will most probably regret the moment anyway? Anyway, going off topic now… There is an argument for ease of use though and I like the idea of data portability (the Gigya login on this site tells you only half of the story?!)

The second thought is more optimistic: this shows that anyone with a good idea has a chance of succeding. This is a great ideal and I fully embrace it. Revisiting the last though, however, it is quite unlikely that without the exposure, this project would have had any chance of getting out of the cafe in which it was conceived.

The third thought is a reflection on the true value of the definition of common man. These kids are actually not so common. They are bright individuals in pursue of an idea, but they are equipped with knowledge to pursue the goal. It is actually foolish to think that anyone could do it. In fact, most people, no matter how you present web 2.0 stuff, are still mere users. For example, although it was fashionable a few years back to keep a blog count (see for example Duncan’s post on the blog herald), how many are actually active? My view is that things are very much dynamic, but a lot of people out there don’t blog, but read blogs, don’t tweet or bordcast themselves on youtube, yet they like that others do. A fundamental obstacle might be they don’t want to, they don’t need to, but also because they have no clue how to do it. So knowledge is power (yet again), and ignorant users who can’t even change their privacy setting in facebook, will most definitely not try to host their own node. What are the actual consequences of this model? how private can it really be? The distributed networks of napster, emule or bittorrent didn’t seem to be working, especially when your network provider might be responsible for your traffic (this seems how many countries are producing laws in this sense). So what’s the real difference of having this information stored on the facebook servers or on my home node?

Well, a lot of questions to be asked, but I am a supporter of open source projects, and although I have no clue if this is going to work, for now I will be following the Diaspora project and look forward to see how these guys are doing.

However, I share Jeff Sayre’s views about the usefulness of more streams and reccomend his detailed article on social-networking.

Tags: , ,

Calibre Recipe: il Sole24ore

Today’s Calibre Recipe is: ‘il Sole24ore ‘

il Sole, printed on a orangey paper similar to the FT, is the most popular daily newspaper in Italy dedicate mainly to economy and finance and it is the third most diffused paper in Italy after the il Corriere della sera and la Repubblica

Click here to view the code

#!/usr/bin/env  python
__license__   = 'GPL v3'
__author__    = 'Lorenzo Vigentini & Edwin van Maastrigt'
__copyright__ = '2009, Lorenzo Vigentini  and Edwin van Maastrigt '
__description__ = 'Financial news daily paper - v1.02 (30, January 2010)'

'''

http://www.ilsole24ore.com/

'''

from calibre.web.feeds.news import BasicNewsRecipe
from calibre.ptempfile import PersistentTemporaryFile
import mechanize

temp_files = []

class ilsole(BasicNewsRecipe):
    author        = 'Lorenzo Vigentini & Edwin van Maastrigt'
    description   = 'Financial news daily paper - v1.02 (30, January 2010)'

    cover_url      = 'http://www.ilsole24ore.com/img2009/header/t_logosole.gif'
    title          = u'il Sole 24 Ore '
    publisher      = 'italiaNews'
    category       = 'News, finance, economy, politics'         

    language       = 'it'
    timefmt        = '[%a, %d %b, %Y]'

    oldest_article = 2
    max_articles_per_feed = 50
    use_embedded_content  = False

    remove_javascript     = True
    no_stylesheets        = True

    def get_article_url(self, article):
        return article.get('id', article.get('guid', None))

    def print_version(self, url):
        link, sep, params = url.rpartition('?')
        return link.replace('.shtml', '_PRN.shtml')

    keep_only_tags     = [
                            dict(name='div', attrs={'class':'txt'})
                        ]
    remove_tags = [dict(name='br')]

    feeds          = [
                       (u'Prima pagina', u'http://www.ilsole24ore.com/rss/primapagina.xml'),
                       (u'Norme e tributi', u'http://www.ilsole24ore.com/rss/norme-tributi.xml'),
                       (u'Finanza e mercati', u'http://www.ilsole24ore.com/rss/finanza-mercati.xml'),
                       (u'Economia e lavoro', u'http://www.ilsole24ore.com/rss/economia-lavoro.xml'),
                       (u'Italia', u'http://www.ilsole24ore.com/rss/italia.xml'),
                       (u'Mondo', u'http://www.ilsole24ore.com/rss/mondo.xml'),
                       (u'Tecnologia e business', u'http://www.ilsole24ore.com/rss/tecnologia-business.xml'),
                       (u'Cultura e tempo libero', u'http://www.ilsole24ore.com/rss/tempolibero-cultura.xml'),
                       (u'Sport', u'http://www.ilsole24ore.com/rss/sport.xml'),
                       (u'Professionisti 24', u'http://www.ilsole24ore.com/rss/prof_home.xml')
                     ]

    extra_css = '''
                html, body, table, tr, td, h1, h2, h3, h4, h5, h6, p, a, span, br, img {margin:0;padding:0;border:0;font-size:12px;font-family:Arial;}
                .linkHighlight {color:#0292c6;}
                .txt {border-bottom:1px solid #7c7c7c;padding-bottom:20px;text-align:justify;}
                .txt p {line-height:18px;}
                .txt span {line-height:22px;}
                .title h3 {color:#7b7b7b;}
                .title h4 {color:#08526e;font-size:26px;font-family:"Times New Roman";font-weight:normal;}
                '''

Download the file here: Calibre recipe: il sole24ore


Tags: , , ,

Calibre Recipe: quotidiano.net

Today’s Calibre Recipe is: ‘il Quotidiano.net ‘

Quotidiano.net is the result of a consortium of local newspapers (La Nazione, il Resto del Carlino, il Giorno) under the heading of the il Sole24ore, feeding the italianews network and part of the Montrif publishing group.

Click here to view the code

#!/usr/bin/env  python
__license__   = 'GPL v3'
__author__    = 'Lorenzo Vigentini'
__copyright__ = '2009, Lorenzo Vigentini '
__version__     = 'v1.01'
__date__        = '10, January 2010'
__description__ = 'Italian News Agency'

'''

http://www.quotidianonet.ilsole24ore.com/

'''

from calibre.web.feeds.news import BasicNewsRecipe

class panorama(BasicNewsRecipe):
    author        = 'Lorenzo Vigentini, based on Darko Miletic'
    description   = 'Italian News Agency'

    cover_url      = 'http://quotidianonet.ilsole24ore.com/file_generali/img/logo_quotidianonet-top.gif'
    title          = u'Quotidiano Net '
    publisher      = 'italiaNews'
    category       = 'News, politics, culture, economy, general interest'         

    language       = 'it'
    timefmt        = '[%a, %d %b, %Y]'

    oldest_article = 7
    max_articles_per_feed = 100
    use_embedded_content  = False
    recursion             = 10    

    remove_javascript = True

    keep_only_tags     = [dict(name='div', attrs={'class':'box_contenuto articolo'})]

    remove_tags        = [
                            dict(name=['object','link']),
                            dict(name='div',attrs={'class':['post-meta','sharing-tools','related','comments','prev-next','box_contenuto adsense']}),
                            dict(name='div',attrs={'id':['strumenti','related-posts','footer','inline_boxes','inline_boxes_header','inline_boxes_body','bottom']}),
                            dict(name='span',attrs={'class':'titolosezione default'})
                         ]

    feeds          = [
                       (u'Prima pagina', u'http://quotidianonet.ilsole24ore.com/rss/home.xml'),
                       (u'Cronaca', u'http://quotidianonet.ilsole24ore.com/rss/cronaca.xml'),
                       (u'Economia', u'http://quotidianonet.ilsole24ore.com/rss/economia.xml'),
                       (u'Esteri', u'http://quotidianonet.ilsole24ore.com/rss/esteri.xml'),
                       (u'Politica', u'http://quotidianonet.ilsole24ore.com/rss/politica.xml'),
                       (u'Salute', u'http://quotidianonet.ilsole24ore.com/rss/salute.xml'),
                       (u'Tecnologia', u'http://quotidianonet.ilsole24ore.com/rss/tecnologia.xml'),

                     ]

or Download the file here: Calibre recipe – quotidiano.net



Tags: , , ,

Calibre Recipe: il Corriere della sera

Today’s Calibre Recipe is: ‘ il Corriere della sera’

il Corriere is the most popular daily newspaper in italy with an average of over 620000 copies sold every day and a long history (first copy published in 1876). The main office is in Milan and It is published by the RCS group.

Click here to view the code

#!/usr/bin/env  python
__license__     = 'GPL v3'
__author__      = 'Lorenzo Vigentini, based on Darko Miletic'
__copyright__   = '2009, Darko Miletic , Lorenzo Vigentini '
__version__     = 'v1.01'
__date__        = '10, January 2010'
__description__ = 'Italian daily newspaper'

'''

http://www.corriere.it/

'''

from calibre.web.feeds.news import BasicNewsRecipe

class ilCorriere(BasicNewsRecipe):
    author        = 'Lorenzo Vigentini, based on Darko Miletic'
    description   = 'Italian daily newspaper'

    cover_url      = 'http://images.corriereobjects.it/images/static/common/logo_home.gif?v=200709121520'
    title          = u'Il Corriere della sera '
    publisher      = 'RCS Digital'
    category       = 'News, politics, culture, economy, general interest'         

    language       = 'it'
    timefmt        = '[%a, %d %b, %Y]'

    oldest_article = 1
    max_articles_per_feed = 100
    use_embedded_content  = False
    recursion             = 10    

    remove_javascript = True
    no_stylesheets = True

    html2lrf_options = [
                          '--comment', description
                        , '--category', category
                        , '--publisher', publisher
                        , '--ignore-tables'
                        ]

    html2epub_options = 'publisher="' + publisher + '"\ncomments="' + description + '"\ntags="' + category + '"\nlinearize_tables=True' 

    keep_only_tags = [dict(name='div', attrs={'class':['news-dettaglio article','article']})]

    remove_tags = [
                   dict(name=['base','object','link','embed']),
                   dict(name='div', attrs={'class':'news-goback'}),
                   dict(name='ul', attrs={'class':'toolbar'})
                  ]

    remove_tags_after = dict(name='p', attrs={'class':'footnotes'})

    feeds = [
             (u'Ultimora'  , u'http://www.corriere.it/rss/ultimora.xml'  ),
             (u'Editoriali', u'http://www.corriere.it/rss/editoriali.xml'),
             (u'Cronache'  , u'http://www.corriere.it/rss/cronache.xml'  ),
             (u'Politica'  , u'http://www.corriere.it/rss/politica.xml'  ),
             (u'Esteri'    , u'http://www.corriere.it/rss/esteri.xml'    ),
             (u'Economia'  , u'http://www.corriere.it/rss/economia.xml'  ),
             (u'Cultura'    , u'http://www.corriere.it/rss/cultura.xml'  ),
             (u'Scienze'   , u'http://www.corriere.it/rss/scienze.xml'   ),
             (u'Salute'    , u'http://www.corriere.it/rss/salute.xml'    ),
             (u'Spettacolo', u'http://www.corriere.it/rss/spettacoli.xml'),
             (u'Cinema e TV', u'http://www.corriere.it/rss/cinema.xml'   ),
             (u'Sport'     , u'http://www.corriere.it/rss/sport.xml'     )
            ]

or Download the file here: Calibre recipe – ilCorriere



Tags: , , ,

Calibre Recipe: la Gazzetta dello Sport

Today’s Calibre Recipe is: ‘la Gazzetta dello sport ‘

la Gazzetta is the most popular daily italian newspaper dedicated to sports. It is highly recognizable as it is printed on pink paper and features in most bars and cafes in Italy. It is published by the Rcs MediaGroup

Click here to view the code

#!/usr/bin/env  python
__license__     = 'GPL v3'
__author__      = 'Lorenzo Vigentini'
__copyright__   = '2009, Lorenzo Vigentini '
__version__     = 'v1.02'
__date__        = '10, January 2010'
__description__ = 'Sport news from the most read sport newspaper in Italy'

'''www.gazzetta.it'''

from calibre.web.feeds.news import BasicNewsRecipe

class laGazzetta(BasicNewsRecipe):
    author        = 'Lorenzo Vigentini'
    description   = 'Sport news from the most read sport newspaper in Italy'

    cover_url      = 'http://www.gazzetta.it/primapagina/images/prima_pagina_grande.png'
    title          = 'La Gazzetta dello Sport '
    publisher      = 'RCS Digital'
    category       = 'Sport News'         

    language       = 'it'
    encoding       = 'cp1252'
    timefmt        = '[%a, %d %b, %Y]'

    oldest_article = 2
    max_articles_per_feed = 20
    use_embedded_content  = False
    recursion             = 10   

    remove_javascript = True
    no_stylesheets = True

    keep_only_tags = [ dict(name='div', attrs={'id':'articolo'})]

    remove_tags = [
                dict(name='ul',attrs={'id':['service-toolbar','sections-menu']}),
                dict(name='div',attrs={'id':['header','rightcol','sponsored','vxFlashPlayer','footer','print-box']}),
                dict(name='iframe',attrs={'id':'mirago-feed'}),
                dict(name='a',attrs={'id':'commenta-up'}),
                dict(name='cite',attrs={'class':['signature','parag-title']}),
                dict(name='a',attrs={'class':['last-comment','button-bold2']}),
                dict(name=['base','object','link','a','script','noscript'])
            ]

    extra_css      = '''
                        h1 {font: sans-serif large;}
                        h2 {font: sans-serif medium;}
                        h3 {font: sans-serif small;}
                        h4 {font: sans-serif bold small;}
                        p  {font:10pt helvetica}
                        dd {font:8pt helvetica}
                      '''

    feeds       = [
                   (u'Calcio',u'http://www.gazzetta.it/rss/Calcio.xml'),
                   (u'Formula 1',u'http://www.gazzetta.it/rss/Formula1.xml'),
                   (u'Motomodiale',u'http://www.gazzetta.it/rss/Motomondiale.xml'),
                   (u'Motori',u'http://www.gazzetta.it/rss/Motori.xml'),
                   (u'Ciclismo',u'http://www.gazzetta.it/rss/Ciclismo.xml'),
                   (u'Basket',u'http://www.gazzetta.it/rss/Basket.xml'),
                   (u'Tennis',u'http://www.gazzetta.it/rss/Tennis.xml'),
                   (u'Pallavolo',u'http://www.gazzetta.it/rss/Pallavolo.xml'),
                   (u'Vela',u'http://www.gazzetta.it/rss/Vela.xml'),
                   (u'Atletica',u'http://www.gazzetta.it/rss/Atletica.xml'),
                   (u'Altri Sport',u'http://www.gazzetta.it/rss/Sport_Vari.xml')
                 ]

    def print_version(self,url):
        segments = url.split('/')
        basename = '/'.join(segments[:3])+'/'
        subPath= '/'.join(segments[3:7])+'/'
        articleURL=(segments[len(segments)-1])[:-6]
        myArticleSegs=articleURL.split('.')
        myArticle=myArticleSegs[0]
        printVerString=myArticle+ '_print.html'
        myURL = basename + subPath + printVerString
        print 'this is the url: ' + myURL
        return basename + subPath + printVerString

or Download the file here: Calibre recipe – LaGazzetta



Tags: , , ,