Vamsi Pavan’s Place

When curiousity outbursts …..

Good Bye ‘JUMBO’

November 6th, 2008 · No Comments · Current Affairs

I’m not big fan of cricket game. Also, this is my first post to publish on cricket game. But where ever you go, you see very few people to get inspired. Such personalities need this piece of appreciation to let world know about him.

It all started on the night of 27 November 1993. India were playing
against WI in the finals of Hero Cup in Eden Gardens. I was just eight
years old then. After a small but entertaining partnership between
Sachin and Kapil, India had put a target of 226 for WI. After a solid
start they just tumbled and fell like dry leaves to the magic of a
bespectacled young man. Accurate and unerring, his deliveries one after
the other kept on asking questions to the WI batsmen who had no clue how
to play them. Soon they had given up and he had picked up 6 wickets for
12 runs. He takes the last six wickets in less than 5 overs; it is still
India’s best bowling performance in ODIs. Indian won Hero cup and he
became the Hero in my heart. The man, Anil Kumble, is my favourite
cricketer over the past 1 and 1/2 decade.

We are really lucky to be in a generation which is a golden era for spin
bowling. Three world class spinners, Kumble along with Murali and Warne,
ruled the cricketing world over the past 15 years. They had shown the
world that spinners can be match winners. Of the three Kumble is
distinct. He did not have the flair of Warne or guile of Murali but he
competed with them through out this period. He certainly is not a bug
spinner of the ball, but as he said the difference between the middle of
the bat and edge is just 1 inch. You need not be a big turner of the
ball to beat the edge. Even if you compare the records of Warne and
Kumble, Kumble had picked up 4.68 wickets per match when compared to
Warne’s 4.88 per match. He was the first bowler to reach 300 wickets in
ODIs among the three. And he had one test century that the other two did
not have. In fact he was the only one to score a century in 500+ wicket
club. People say Kumble has picked up lot of wickets on sub continent
where the pitches assist spinners. But one has to realize the fact that
even Warne picked up majority of his wickets against SA and England who
did not know that a cricket ball can spin. When Murali picked up
majority of his wickets against cricketing minnows like Zimbabwe and
Bangladesh, Kumble had major success against the world champions
Australia and Pakistan, who are the second best players of spin after
India. This is not to show that Kumble is more than Warne or Murali but
just to tell that he is not less. If warne is blessed and Murali has it
by birth, Kumble is the one who showed that hard work pays. He
simplified  the art of spin bowling just like an expert mathematician
does when solving complex problems.

I liked Kumble when I was not aware of the golden past of Indian spin,
the spin quartet. E.Prasanna once said that Kumble would not even get a
chance a play international cricket if he had played during their time.
Even then Kumble’s record was better than the spin quartet put together.
Four spinners put together averaged just above 4 per match compared to
Kumble’s 4.68. Having said that I should accept the fact that those four
spinners were really quality players. He also holds the record for
highest number of LBWs and Caught and Bowleds in Test cricket.
Incidentally his last two wickets in test cricket are LBW and Caught and
Bowled respectively.

Anil kumble is inarguably the greatest match winner for India. As
cricinfo has put it, No bowler in history won India more Test matches
than Anil Kumble, and there probably hasn’t been a harder trier either.
He has literally won many matches for India during the time when India
was considered unbeatable in their home soil under Azhar. People who
comment that Kumble’s record outside subcontinent is not that good have
to understand the fact that before Rahul Dravid had a golden run at
No.3, Indian batsmen seldom scored in test matches outside India. When
Indian batǪing started performing better outside India, Kumble’s record
outside India has also improved. 20+ wkts in Australia, despite being
treated as a backup for Harbhajan; he got a chance only after Bahajji
was inhured in that series, in 2003 is an example. His subtle variations
in pace, length combined with a clever use of crease earned him great
success. Though he is not a big turner of the ball, he has made the
batsmen dance on their toes with his deliveries. Though he does not know
how to spin a ball, he has made cricket records spin around his career.
In a brilliant though always downplayed career Kumble claimed virtually
every Indian record. After his shoulder injury in 2000, Kumble has
improved a lot as a bowler and added more varieties under his
repertoire. He is arguably the best bowler for flippers in his generation.

Inspite of all his achievements, he was always underrated. As an ad
agency once commented, Kumble is not an advertising material. There were
no huge celebrations when he broke Kapil’s record or picked up 10 wkts
in an   innings. But he has never complained. Even after announcing his
retirement he did not cry upon officials or fellow players. In his
career of 18 years, he was not summoned even once. As Tony Greig said,
If you ask anybody about Kumble, you will hear only good about him. Ask
Lara & Inzamam, who thwarted all spinners but Kumble, and they will
testify for his greatness. This tells a lot about his character and
ability. To conclude, India may produce another Dravid, Ganguly or
Laxman, but Kumble is once in a life time player. We may not see a
spinner creating records without spinning a ball.

– Most of this content was taken from a mail sent by my friend Anil who is deadly fan of Cricket and Kumble.

Bookmark it! These icons link to social bookmarking sites where readers can share and discover new web pages.
  • bodytext
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • Live
  • StumbleUpon
  • BlinkList
  • YahooMyWeb
  • NewsVine
  • blogtercimlap
  • Netvouz
  • Technorati
  • Slashdot
  • Print this article!

→ No CommentsTags:

Real Estate Bubble 2008 : Part 2 (Indian context)

October 31st, 2008 · No Comments · Economy

Now to put it in terms of Indian real estate bubble - here is the scenario -

1) IT professionals (or allied industries) started earning money in US$
(1500 US$ pm is a good pay in India). Note that this is Outsourced
money [platinum coins in Gold Coin economy]
2) Newly joined IT workers - start purchasing property (Bubble not
built yet) by taking reasonably priced Bank loans in Gold coins.
3) Builders build and sell houses and make some 10-15% standard profit
4) IT worker pays off the loan to bank - converting the .

- Enter the speculator/”investor” - whose purpose is to make profit in this demand supply system
In an ideal greedless economy, the builder would have been happy with
his/her profit of 15% and would continue the system. But looking at the
high demand for buying (as IT companies are hiring year after year),
and inflation the prices are cranked up and a hype is created saying
that only X number of units remain (although more are available).
Builder says his profit will increase, speculative buyers want to buy
cheap and sell off at a profit.

1) Fearing losing a good deal, many IT workers take loans (remember
as long as they are are not fired they can pay back the loan) and buy
houses at increasing prices.
2) Speculative buyers buy homes to sell them off at a profit - they say worst case they can rent it out
3) Banks report robust growth - and ease lending. Builder still needs
to deliver the house, so they also borrow money from same bank/ from
stock market - IPO and build for the consumer. - Builder is confident
that sale of the homes will get him his profit even after he pays off
the loan to bank.

The bubble grows by such speed that the land that once cost 10 pieces of gold will be priced at 10 pieces of platinum.

The net asset value of the land is in fact 10 coins + inflation -
the price the buyer must pay must be 10 coins + inflation adjustment +
builders profit + interest to the bank.

All this “Growth” keeps on inflating the bubble - the Workers and
builders lend money from the bank and pay each other. If the worker
thinks - hold on a second, why am I paying 10 platinum coins for a
house worth 10 gold coins then he should have avoided the deal after
all. But he followed the crowd and took a loan of 5 platinum coins.
(his payments/EMI now soar). Then alas the reality strikes. Demand
stops as the companies halt hiring or shrink pay packages - as the
platinum coins are drying up. If the worker has enough to bail
himself/herself out - its fine. (They still think their house is worth
10 platinum coins). If not - Houston we have a problem.

The land value will not appreciate beyond 10 platinum coins, as that
would mean no one would buy it in hard times. Workers with loans who
are laid off/ have lowered salaries are in deep trouble - their homes
value is come to a standstill/reduced and their loans ares still the
same.

This bubble has a bad story for any non platinum worker who was
earning in gold - and got a loan for 10 platinum coins. thinking that
his investment will yield enough to repay it.

Now what about the winners or losers in this game? Builders or
buyers if they default on their loans will lose property to the
bank/lender. If they do that - banks will collapse as they will have a
worthless 10 gold coin house for which they lent 10 platinum coins. (As
it happened in USA).

But in India the story is different -
For Workers/buyers there is a shame in not repaying your loan back so
the workers will have to toil their way to repay a loan - cutting down
on other expenses - slowing down other sectors. If they lose jobs and
cant get another one - they are screwed and so are the banks who will
repossess the houses.

Builders cannot start new projects and will unwind slowly hoping for
a revival - they will try to repay the loans if possible by cutting
down their margins. Builders who aren’t in a position to do this are
screwed and so are the banks who lent money to them.

So there will be deflation of the bubble than a bursting (US it
completely burst taking down the banks - who had invested this “asset
value” in other countries - hence destroying those countries as well).
In India I dont see a burst but a phussss. If jobs dry up n IT there is
no real growth possible. This is a classic case of torturing the hen
that lays golden eggs until it one day starts laying normal eggs. If
the bubble was exposed earlier (learning from the 1997 bubble), smart
people would not be in debt now. Those who are in debt are going to be
the biggest losers in this game.

Basically this is what happened in 1996-97 collapse - that time
there was a speculative bubble led by the Gulf money - this time it was
US money.

Bookmark it! These icons link to social bookmarking sites where readers can share and discover new web pages.
  • bodytext
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • Live
  • StumbleUpon
  • BlinkList
  • YahooMyWeb
  • NewsVine
  • blogtercimlap
  • Netvouz
  • Technorati
  • Slashdot
  • Print this article!

→ No CommentsTags:

Real Estate Bubble 2008 : Part 1

October 31st, 2008 · No Comments · Economy

I found it quite interesting in track.in articles and thought it would be great article for market readers. I am producing the comment verbatim here..

STORY OF PUNE REAL ESTATE

Once there was a little island country. The land of this country was
the tiny island itself. The total money in circulation was 2 dollars as
there were only two pieces of 1 dollar coins circulating around.

  1. There were 3 citizens living on this island country.  A owned the land. B and C each owned 1 dollar.
  2. B decided to purchase the land from A for 1 dollar. So, now A and C
    own 1 dollar each while B owned a piece of land that is worth 1 dollar.

The net asset of the country now = 3 dollars.

  1. 3) Now C thought that since there is only one piece of land in the
    country, and land is non producible asset, its value must definitely go
    up. So, he borrowed 1 dollar from A, and together with his own 1
    dollar, he bought the land from B for 2 dollars.

    • A has a loan to C of 1 dollar, so his net asset is 1 dollar.
    • B sold his land and got 2 dollars, so his net asset is 2 dollars.
    • C owned the piece of land worth 2 dollars but with his 1 dollar debt to A, his net residual asset is 1 dollar.

Thus, the net asset of the country = 4 dollars.

  1. A saw that the land he once owned has risen in value. He regretted
    having sold it. Luckily, he has a 1 dollar loan to C. He then borrowed
    2 dollars from B and acquired the land back from C for 3 dollars. The
    payment is by 2 dollars cash (which he borrowed) and cancellation of
    the 1 dollar loan to C. As a result, A now owned a piece of land that
    is worth 3 dollars. But since he owed B 2 dollars, his net asset is 1
    dollar.

    • B loaned 2 dollars to A. So his net asset is 2 dollars.
    • C now has the 2 coins. His net asset is also 2 dollars.

The net asset of the country = 5 dollars. A bubble is building up.

  1. B saw that the value of land kept rising. He also wanted to own the
    land. So he bought the land from A for 4 dollars. The payment is by
    borrowing 2 dollars from C, and cancellation of his 2 dollars loan to
    A.

    1. As a result, A has got his debt cleared and he got the 2 coins. His net asset is 2 dollars.
    2. B owned a piece of land that is worth 4 dollars, but since he has a debt of 2 dollars with C, his net Asset is 2 dollars.
    3. C loaned 2 dollars to B, so his net asset is 2 dollars.

The net asset of the country = 6 dollars; even though, the country has only one piece of land and 2 Dollars in circulation.

  • Everybody has made money and everybody felt happy and prosperous.
  • One day an evil wind blew, and an evil thought came to C’s mind.
    “Hey, what if the land price stop going up, how could B repay my loan.
    There is only 2 dollars in circulation, and, I think after all the land
    that B owns is worth at most only 1 dollar, and no more.”
  • A also thought the same way.
  • Nobody wanted to buy land anymore.
  • So, in the end, A owns the 2 dollar coins, his net asset is 2 dollars.
  • B owed C 2 dollars and the land he owned which he thought worth 4 dollars is now 1 dollar. So his net asset is only 1 dollar.
  • C has a loan of 2 dollars to B. But it is a bad debt. Although his net asset is still 2 dollars, his Heart is palpitating.
  • The net asset of the country = 3 dollars again.
  • So, who has stolen the 3 dollars from the country ? Of course,
    before the bubble burst B thought his land was worth 4 dollars.
    Actually, right before the collapse, the net asset of the country was 6
    dollars on paper. B’s net asset is still 2 dollars, his heart is
    palpitating.
  • B had no choice but to declare bankruptcy. C as to relinquish his 2
    dollars bad debt to B, but in return he acquired the land which is
    worth 1 dollar now.
  • A owns the 2 coins, his net asset is 2 dollars.
  • B is bankrupt, his net asset is 0 dollar. ( he lost everything )
  • C got no choice but end up with a land worth only 1 dollar
  • The net asset of the country = 3 dollars.

************ **End of the story; BUT ************ ********* ******

There is however a redistribution of wealth.
A is the winner, B is the loser, C is lucky that he is spared.

A few points worth noting -

  1. When a bubble is building up, the debt of individuals to one another in a country is also building up.
  2. This story of the island is a closed system whereby there is no
    other country and hence no foreign debt. The worth of the asset can
    only be calculated using the island’s own currency. Hence, there is no
    net loss.
  3. An over-damped system is assumed when the bubble burst, meaning the land’s value did not go down to below 1 dollar.
  4. When the bubble burst, the fellow with cash is the winner. The
    fellows having the land or extending loan to others are the losers. The
    asset could shrink or in worst case, they go bankrupt.
  5. If there is another citizen D either holding a dollar or another
    piece of land but refrains from taking part in the game,  he will
    neither win nor lose. But he will see the value of his money or land go
    up and down like a see saw.
  6. When the bubble was in the growing phase, everybody made money.
  7. If you are smart and know that you are living in a growing bubble,
    it is worthwhile to borrow money (like A ) and take part in the game.
    But you must know when you should change everything back to cash.
  8. As in the case of land, the above phenomenon applies to stocks as well.
  9. The actual worth of land or stocks depend largely on psychology

Phew…that was some explanation :)

Bookmark it! These icons link to social bookmarking sites where readers can share and discover new web pages.
  • bodytext
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • Live
  • StumbleUpon
  • BlinkList
  • YahooMyWeb
  • NewsVine
  • blogtercimlap
  • Netvouz
  • Technorati
  • Slashdot
  • Print this article!

→ No CommentsTags:

Memory efficient doubly linked list

October 12th, 2008 · 2 Comments · Algorithms, Articles, Data Structures

Linux Journal has an article in the January 2005 issue that introduces a doubly linked list that is designed for memory efficiency.

Typically elements in doubly linked list implementations consist of a pointer to the data, a pointer to the next node and a pointer to the previous node in the list.

Picture of a typical linked list

The more memory efficient implementation described in the article stores a single offset instead of the next and previous pointers.

Diagram of the memory efficient linked list

The pointer difference is calculated by taking the exclusive or (XOR) of the memory location of the previous and the next nodes. Like most linked list implementations a NULL pointer indicates a non-existent node. This is used at the beginning and end of the list. For the diagram above, the pointer differences would be calculated as follows:

A[Pointer difference] = NULL XOR B
B[Pointer difference] = A XOR C
C[Pointer difference] = B XOR NULL

One nice property of XOR is that it doesn’t matter what order the operation is applied. For example:
A XOR B = C
C XOR B = A
A XOR C = B

The memory efficient linked list uses this property of XOR for traversals. The trick is that any traversal operation requires both the address of current node and the address of either the preceding or following node.

Using the example figure above, calculating the address of the B node from A looks like:
B = NULL XOR A[Pointer difference]

What is really interesting is that traversing the list operates exactly the same in both directions. As shown below calculating the address of node A or C from B is simply depends on which direction the traversal is going.

A = C XOR B[Pointer difference]
C = A XOR B[Pointer difference]

The original article presents some time and space complexity results. I won’t bother repeating them here.

Bookmark it! These icons link to social bookmarking sites where readers can share and discover new web pages.
  • bodytext
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • Live
  • StumbleUpon
  • BlinkList
  • YahooMyWeb
  • NewsVine
  • blogtercimlap
  • Netvouz
  • Technorati
  • Slashdot
  • Print this article!

→ 2 CommentsTags:

Creating own firefox search-plugin

July 28th, 2008 · No Comments · Gen, Tools

Firefox has awesome features as everybody knows and one of which is this search plugin. Creating search plugin doesn’t take more than 2 minutes in firefox. Just follow the steps below blindly.

0. Basic requirement you should have firefox installed in your system.

1. Navigate to the searchplugins directory of you firefox installation.

2. open a file called <any-name>.xml using your favourite editor and insert the following content.

<SearchPlugin xmlns=”http://www.mozilla.org/2006/browser/search/“>
<ShortName>MySearch</ShortName>
<Description>MySearch description</Description>
<InputEncoding>UTF-8</InputEncoding>
<Image width=”16″ height=”16″>data:image/x-
icon;base64,Qk32AAAAAAAAAHYAAAAoAAAAEAAAABAAAAABAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAICAgADAwMAAAAD
%2FAAD%2FAAAA%2F%2F8A%2FwAAAP8A%2FwD%2F%2FwAA%2F%2F%2F
%2FAIiIiIiIiIiIiIiIgAiIiIiIiIgLMIiIiIiIiAswiIiIiIiIgAiIiIiIiIgLMIiIiIiIiAswiIiIiIiICzCIiIiIiIgLswiIiIiIAIC7MIiIiICzCAuzCIiIgLMIgLMIiIiAuzALswiIiIgLu7swiIiIiIAAAAiIiIiIiIiIiIiI</
Image>
<Url type=”text/html” method=”GET” template=”http://mysearchurl.com?q={searchTerms}”></Url>
</SearchPlugin>

3. Save the file and restart firefox. You see your magical search plugin working great.

You can generate the image data by uploading your image at http://software.hixie.ch/utilities/cgi/data/data . {searchTerms} will be replaced by the search content entered by the user. You can edit the search url accordingly to your use.

That’s it. It glows like gem [:)] .

Bookmark it! These icons link to social bookmarking sites where readers can share and discover new web pages.
  • bodytext
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • Live
  • StumbleUpon
  • BlinkList
  • YahooMyWeb
  • NewsVine
  • blogtercimlap
  • Netvouz
  • Technorati
  • Slashdot
  • Print this article!

→ No CommentsTags:·

java.sql.SQLException: Non supported SQL92 token at position: 1

July 25th, 2008 · 2 Comments · Oracle Tech, Pl/SQL

Seems like this is very common error in pl/sql programming. I know there are many last minute frustrations just because of this error which is no where related to any logic. This seems to be some format error in the programming language itself.

The error message is:

java.sql.SQLException: Non supported SQL92 token at position: 1
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.driver.OracleSql.handleToken(OracleSql.java:1165)
at oracle.jdbc.driver.OracleSql.handleODBC(OracleSql.java:1064)
at oracle.jdbc.driver.OracleSql.parse(OracleSql.java:984)
at oracle.jdbc.driver.OracleSql.getSql(OracleSql.java:312)
at oracle.jdbc.driver.OracleSql.getSqlBytes(OracleSql.java:557)

The Solution:

Error scenario code snippet is


stmt = (OracleCallableStatement)conn.prepareCall("{:1 = callfnd_webfile.get_url("+typeStr+",:2,:3,:4,:5,:6,:7,:8,:9) }");

Should be changed to correct syntax as mentioned below.


stmt = (OracleCallableStatement)conn.prepareCall("begin :1 :=fnd_webfile.get_url("+typeStr+",:2,:3,:4,:5,:6,:7,:8,:9); end;");

Some of other solutions i came across though not always work are:
remove TABS and newlines from the SQL in the procedure call.

Bookmark it! These icons link to social bookmarking sites where readers can share and discover new web pages.
  • bodytext
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • Live
  • StumbleUpon
  • BlinkList
  • YahooMyWeb
  • NewsVine
  • blogtercimlap
  • Netvouz
  • Technorati
  • Slashdot
  • Print this article!

→ 2 CommentsTags:·

Sheila and He-Man are twins; Sheila is the OLDER twin. Assume they were born immediately after each other, an infinitesimally small - but nonzero - amount of time apart. During one year in the course of their lives, Sheila celebrates her birthday two days AFTER He-Man does. How is this possible?

June 23rd, 2008 · 2 Comments · Placements, Puzzles

Sheila and He-Man are twins; Sheila is the OLDER twin. Assume they were born immediately
after each other, an infinitesimally small - but nonzero - amount of time apart. During
one year in the course of their lives, Sheila celebrates her birthday two days AFTER
He-Man does. How is this possible?

Bonus: What is the maximum amount of time by which Sheila and He-Man can be
apart in their birthday celebrations during the same year? I think it’s
more than two days.

Ans.

Sheila is born March 1st on the left side
of the international date line, moments later while He-Man was comming
out they crossed the line and he was born Feb 28th. So on leap years
He-Man celebrates his birthday on feb 28th,(two days before Sheila does
on March 1st)

Bookmark it! These icons link to social bookmarking sites where readers can share and discover new web pages.
  • bodytext
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • Live
  • StumbleUpon
  • BlinkList
  • YahooMyWeb
  • NewsVine
  • blogtercimlap
  • Netvouz
  • Technorati
  • Slashdot
  • Print this article!

→ 2 CommentsTags:

There is an array A[N] of N numbers. You have to compose an array Output[N] such that Output[i] will be equal to multiplication of all the elements of A[N] except A[i]. For example Output[0] will be multiplication of A[1] to A[N-1] and Output[1] will be multiplication of A[0] and from A[2] to A[N-1].

June 18th, 2008 · 3 Comments · Algorithms, Google

Solve it without division operator and in O(n).

Bookmark it! These icons link to social bookmarking sites where readers can share and discover new web pages.
  • bodytext
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • Live
  • StumbleUpon
  • BlinkList
  • YahooMyWeb
  • NewsVine
  • blogtercimlap
  • Netvouz
  • Technorati
  • Slashdot
  • Print this article!

→ 3 CommentsTags:·

You have 1000 integers. All are less than 1000 and greater or equal to 1. Among them, 999 are distinct and there is one that is found twice. How can you find the duplicate?

June 18th, 2008 · 3 Comments · Algorithms, Google

Extension to this questions is - if there are some billion numbers are there, and you have enough memory to fit all these numbers. What is the best of to do the same?

Bookmark it! These icons link to social bookmarking sites where readers can share and discover new web pages.
  • bodytext
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • Live
  • StumbleUpon
  • BlinkList
  • YahooMyWeb
  • NewsVine
  • blogtercimlap
  • Netvouz
  • Technorati
  • Slashdot
  • Print this article!

→ 3 CommentsTags:·

if I had to find duplicates in book catalogs with entries with different titles but with the same content..

June 18th, 2008 · 2 Comments · Algorithms, Google, Placements

This is related to google print application. In other words, we have many books out of which some books titles were different but content same. We need to figure out such cases efficiently. How?

Bookmark it! These icons link to social bookmarking sites where readers can share and discover new web pages.
  • bodytext
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • Live
  • StumbleUpon
  • BlinkList
  • YahooMyWeb
  • NewsVine
  • blogtercimlap
  • Netvouz
  • Technorati
  • Slashdot
  • Print this article!

→ 2 CommentsTags:·