davidw is currently certified at Master level.

Name: David Welton
Member since: 2000-02-16 03:01:49
Last Login: 2008-04-04 07:13:59

FOAF RDF Share This

Homepage: http://www.welton.it/davidw/

Notes:

Projects

Articles Posted by davidw

Recent blog entries by davidw

Syndication: RSS 2.0

3 Feb 2010 (updated 3 Feb 2010 at 23:06 UTC) »

Italy vs Google

I'm starting to notice a pattern here:

  • Google executives are on trial because some sorry excuses for human beings picked on a retarded person and posted the video to youtube: http://news.bbc.co.uk/2/hi/technology/8115572.stm - this one is simply preposterous.  Going after the execs of a company who did nothing to aid, abet, condone or in any way facilitate the abuse in question is absurd, and if extended to other industries would mean that you could pretty much attack any company whose products happened to figure in a crime somehow.  Kitchen knives, hunting rifles, golf clubs, even automobiles would seem fair game.
  • Italy is going after "user generated content" sites like Youtube and wants to force them to register with the government if they wish to operate: http://arstechnica.com/tech-policy/news/2010/02/italy-preparing-to-hold-youtube-others-liable-for-uploads.ars
  • And last but not least, this hit piece in the normally respectable Corriere della Sera: http://www.corriere.it/economia/10_gennaio_28/mucchetti_4de4be8a-0be8-11df-bc70-00144f02aabe.shtml
     - it's in Italian, but the gist of it is that Mr Mucchetti really has it in for Google because they operate out of Ireland in the EU, whereas he believes they should be registered in Italy as a publisher, and subject to Italy's myriad rules, regulations, and, of course, taxes regarding publishing.  Despite, well, not really publishing much of anything themselves. He mentions "tax evasion" charges that had been considered, because the Italian division of Google is not where the adsense revenue in Europe goes.  I suppose he figures that since the ads are bought by residents of Italy, the money should somehow stay in Italy?  He also huffs and puffs about Italy's antitrust laws, which, in the same piece, he admits were created with the express purpose of not touching existing companies (the market share limit was set higher than the share of the largest existing company).  Perhaps he would do well to reflect on political schemes and carve-ups like that and think about why companies like Google go to Ireland, rather than Italy.  He also makes some quick mentions of network neutrality, and rambles on a bit about how it's a battle between the "Obamanian, Californian, search engines" versus the telecommunications industry, in "the rest of the world and above all in Europe".  And of course he uses a liberal sprinking of keywords like "globalization", "multinational corporations", and "deregulated" to attempt to paint Google in terms of being a big, evil company throwing its weight around.  One wonders if there aren't more pressing problems with the Italian media industry, such as the prime minister owning a large chunk of it?

One way of seeing things is that politicians and businessmen in Italy noticed Google was actually making quite a bit of money, and even if they don't quite understand this internet thing, they want some of the loot.

And while Google certainly is becoming big enough to be cause for worry and discussion, the moves against them in Italy do not seem anything like a rational response calculated to offset severe failures in the market.

In any case, it will be interesting to see what happens.  Maybe, after China, we'll see Google quit Italy as well?

Syndicated 2010-02-03 21:26:25 (Updated 2010-02-03 22:26:20) from David's Computer Stuff Journal

25 Jan 2010 »

Flippa experiment

I decided to try a little experiment with Flippa.com, a site where you can auction off domains or web sites.

I put http://www.innsbruck-apartments.com up for auction:


http://flippa.com/auctions/83341/Innsbruck-Austria-rental-listing-site---Ski-Season

We'll see how it goes and whether the site is worth using for other sites that I'd like to sell on.

It's a good test case, because it's a site I threw together years ago simply to aid our search for a new apartment in Innsbruck, and then requested by friends.

Syndicated 2010-01-25 09:34:08 (Updated 2010-01-25 09:36:38) from David's Computer Stuff Journal

12 Jan 2010 (updated 12 Jan 2010 at 15:08 UTC) »

Rough Estimates of the Dollar Cost of Scaling Web Platforms - Part I

I have been pondering the idea behind this article for a while, and finally had a bit of time to implement it.

The basic idea is this: certain platforms have higher costs in terms of memory per concurrent connection. Those translate into increased costs in dollar terms.

Nota Bene: Having run LangPop.com for some time, I'm used to people getting hot and bothered about this or that aspect of statistics that are rough in nature, so I'm going to try and address those issues from the start, with more detail below.

  • Constructive criticism is welcome. I expect to utilize it to revisit these results and improve them. Frothing at the mouth is not welcome.
  • There is something of a "comparing apples and oranges" problem inherent in doing these sorts of comparisons. As an example, Rails gives you a huge amount of functionality "out of the box", whereas Mochiweb does much less. More on that below.
  • I am not familiar with all of these systems: meaning that I may not have configured them as I should have. Helpful suggestions are, of course, welcome. Links to source code are provided below.
  • You can likely handle many more 'users' than concurrent connections, which means multiple browsers connecting to the site at the same time.
  • Programmer costs are probably higher than anything else, so more productive platforms can save a great deal of money, which more than makes up for the cost of extra memory.  There's a reason that most people, outside of Google and Yahoo and sites like that, don't use much C for their web applications.  Indeed, I use Rails myself, even though it uses a lot of memory and isn't terribly fast: I'd rather get sites out there, see how they do, and then worry about optimizing them (which is of course quite possible in Rails).
<h3> Methodology</h3>

All tests were run like so: my new laptop with two cores and four gigs of memory was used as a server, and my older laptop was used to run the ab (Apache Benchmark) program - they're connected via ethernet. I built up to successive levels of concurrency, running first 1 concurrent connection, 2, 10, and so on and so forth. The "server" computer is running Ubuntu 9.10, "karmic". <h3> Platforms</h3>

The platforms I tested:

  • Apache 2.2, running the worker MPM, serving static files.
  • Nginx 0.7.62, serving static files.
  • Mochiweb from svn (revision 125), serving static files.
  • Jetty 6.1.20-2, serving static files.
  • Rails 2.3.5, serving up a simple template with the current date and time.
  • PHP 5.2.10.dfsg.1-2ubuntu6.3, serving up a single php file that prints the current date and time.
  • Django 1.1.1-1ubuntu1, serving up a template with the date and time.
  • Mochiweb, serving a simple template (erltl) with the date and time.
  • Jetty, serving a simple .war file containing a JSP file, with, as clever observers will have surmised, the date and time.

As stated above, it's pretty obvious that using Rails or Django for something so simple is overkill: <h3> Better Tests for the Future</h3>

I would like to run similar tests with a more realistic application, but I simply don't have the time or expertise to sit down and write a blog, say, for all of the above platforms. If I can find a few volunteers, I'd be happy to discuss some rough ideas about what those tests ought to look like. Some ideas:

  • They should test the application framework with a realistic, real world type of example.
  • The data store should figure as little as possible - I want to concentrate on testing the application platform for the time being, rather than Postgres vs Sqlite vs Redis. Sqlite would probably be a good choice to utilize for the data store.
  • Since this first test is so minimalistic, I think a second one ought to be fairly inclusive, making use of a fair amount of what the larger systems like Rails, Django and PHP offer.
  • I'd also be interested in seeing other languages/platforms.
  • The Holy Grail would be to script all these tests so that they're very easy to run repeatably.
<h3> Results</h3>

With that out of the way, I do think the results are meaningful, and reflect something of what I've seen on various platforms in the real world.

First of all, here we look at the total "VSZ" (as ps puts it) or Virtual Size of the process(es) in memory. Much of this might be shared, between libraries, and "copy on write" where applicable.

The results are impressive: Rails, followed by Django and PHP eats up a lot of memory for each new concurrent connection. Rails, which I know fairly well, most likely suffers from several problems: 1) it includes a lot of code. That's actually a good thing if you're building a reasonably sized app that makes use of all it has to offer. 2) Its garbage collector doesn't play well with "copy on write". Which is what "Enterprise Ruby" aims to fix. Django and PHP are also fairly large, capable platforms when compared to something small and light like mochiweb.

That said, excuses aside, Erlang and Mochiweb are very impressive in how little additional memory they utilize when additional concurrent connections are thrown at them. I was also impressed with Jetty. I don't have a lot of experience with Java on the web (I work more with J2ME for mobile phones), so I expected something a bit more "bloated", which is the reputation Java has. As we'll see below, Jetty does take up a lot of initial memory, but subsequent concurrent connections appear to not take up much.  Of course, this is also likely another 'apples and oranges' comparison and it would be good to utilize a complete Java framework, rather than just a tiny web app with one JSP file.

So what's this mean in real world terms of dollars and cents? As your Rails application gets more popular, you're going to have to invest relatively more money to make it scale, in terms of memory.

For this comparison, I utilized the bytes/dollar that I'm getting for my Linode, which works out to 18,889,040.85 ($79.95 for 1440 MB a month).

As we can see, to have a similar amount of concurrent users is essentially free for Mochiweb, whereas with Rails, it has a significant cost.  This information is particularly relevant when deciding how to monetize a site: with Erlang and Jetty it would appear that scaling up to lots of users is relatively cheap, so even a small amount of revenue per user per month is going to be a profit, whereas with Rails, scaling up to huge numbers of users is going to be more expensive, so revenue streams such as advertising may not be as viable.  It's worth noting that 37 signals, the company that created Rails, is a vocal supporter of charging money for products.

There's another interesting statistic that I wanted to include as well.  The previous graph shows the average cost per additional concurrent user, but this one shows how much the platform costs (using  when there is just one user, so it acts as a sort of baseline:

As we can see, Jetty is particularly expensive from this point of view.  The default settings (on Ubuntu) seem to indicate that, for instance, the basic $20 a month Linode package would not be sufficient to run Jetty, plus a database, plus other software.  I think that the Apache Worker number is off a bit, and may reflect settings made to handle a large number of connections, or perhaps a different MPM would make sense. <h3> Source Code / Spreadsheet</h3>

The spreadsheet I put together is here: http://spreadsheets.google.com/ccc?key=0An76R90VwaRodElEYjVYQXpFRmtreGV3MEtsaWYzbXc&hl=en

And the source code (admittedly not terribly well organized) is here: http://github.com/davidw/marginalmemory/

Syndicated 2010-01-12 11:39:37 (Updated 2010-01-12 14:20:27) from David's Computer Stuff Journal

8 Jan 2010 »

Detecting BlackBerry JDE Version

Recently, I went back and added some preprocessor code (it's pretty much necessary in the world of J2ME) to ensure that Hecl would compile with older versions of the BlackBerry JDE. However, I also faced a problem: how to figure out what version of the JDE we're using. It could be my latest cold clouding my mind, but I couldn't find a simple way to do this. It never seems to be simple with the BlackBerry platform, unfortunately.

I did, however, finally find a nice way to obtain this information programmatically: the bin/rapc.jar file, which ships with the JDE, contains a file called app.version, which, indeed, contains the version of the JDE in use. I hacked up this code to read it and print it out: <script src="http://gist.github.com/266010.js"></script>

Syndicated 2009-12-30 12:15:55 from David's Computer Stuff Journal

8 Jan 2010 »

File Selector for Java ME

I recently did some work to make Hecl read files, which also means that it can execute Hecl scripts from the phone's memory. This is especially important for environments like Blackberry, where we will be distributing a signed version of the Hecl application. To create your own Hecl applications, instead of simply replacing the script in the .jar file, you can point to a script on the device's file system. This is also available for normal Java ME phones, but unfortunately, for an open source project, the cost of a code signing certificate are prohibitive (on Blackberry, it's only $20, so I bought one with my own money).

In any case, as part of this effort, I developed a very simple 'file browser', which is used in Hecl to select a script to execute.

The results are, like all of Hecl, available under an Apache license, which means that you can use it pretty much wherever you want:

http://github.com/davidw/hecl/blob/master/files/org/hecl/files/FileFinder.java

http://github.com/davidw/hecl/blob/master/files/org/hecl/files/FileFinderCallback.java

Of course, if you spot any ways to improve it or fix problems with it, I'd appreciate it if you sent patches back.

Syndicated 2009-12-14 12:31:46 from David's Computer Stuff Journal

375 older entries...

 

davidw certified others as follows:

  • davidw certified davidw as Journeyer
  • davidw certified cgabriel as Journeyer
  • davidw certified mbp as Journeyer
  • davidw certified mjs as Master
  • davidw certified Radagast as Journeyer
  • davidw certified uzi as Journeyer
  • davidw certified joey as Journeyer
  • davidw certified lupus as Master
  • davidw certified cas as Journeyer
  • davidw certified dhd as Journeyer
  • davidw certified rasmus as Master
  • davidw certified mblevin as Journeyer
  • davidw certified daniel as Journeyer
  • davidw certified dsifry as Journeyer
  • davidw certified zab as Master
  • davidw certified bneely as Apprentice
  • davidw certified deirdre as Apprentice
  • davidw certified crackmonkey as Journeyer
  • davidw certified jim as Journeyer
  • davidw certified schoen as Journeyer
  • davidw certified wichert as Master
  • davidw certified inf as Journeyer
  • davidw certified hands as Journeyer
  • davidw certified stig as Journeyer
  • davidw certified lilo as Master
  • davidw certified jgg as Master
  • davidw certified branden as Journeyer
  • davidw certified seeS as Journeyer
  • davidw certified jimd as Journeyer
  • davidw certified nick as Journeyer
  • davidw certified digdude as Journeyer
  • davidw certified netgod as Journeyer
  • davidw certified dres as Journeyer
  • davidw certified gorgo as Journeyer
  • davidw certified ruud as Journeyer
  • davidw certified tausq as Journeyer
  • davidw certified vincent as Journeyer
  • davidw certified jes as Master
  • davidw certified stephane as Apprentice
  • davidw certified ajt as Journeyer
  • davidw certified EwS as Apprentice
  • davidw certified ajk as Journeyer
  • davidw certified Joy as Journeyer
  • davidw certified ettore as Master
  • davidw certified jkh as Master
  • davidw certified hpa as Master
  • davidw certified elise as Journeyer
  • davidw certified BrucePerens as Master
  • davidw certified corbet as Master
  • davidw certified bcollins as Journeyer
  • davidw certified ciro as Master
  • davidw certified bdale as Master
  • davidw certified puffin as Master
  • davidw certified justin as Journeyer
  • davidw certified davem as Master
  • davidw certified drow as Master
  • davidw certified clameter as Journeyer
  • davidw certified dburcaw as Journeyer
  • davidw certified mdorman as Journeyer
  • davidw certified lalo as Journeyer
  • davidw certified davidm as Journeyer
  • davidw certified ianmacd as Journeyer
  • davidw certified dyork as Journeyer
  • davidw certified orabidoo as Journeyer
  • davidw certified JHM as Journeyer
  • davidw certified shaleh as Journeyer
  • davidw certified jpick as Master
  • davidw certified star as Journeyer
  • davidw certified gord as Journeyer
  • davidw certified gstein as Master
  • davidw certified wcooley as Apprentice
  • davidw certified sethcohn as Journeyer
  • davidw certified csurchi as Apprentice
  • davidw certified Daryll as Master
  • davidw certified eskimoses as Journeyer
  • davidw certified pompeiisneaks as Apprentice
  • davidw certified stefano as Journeyer
  • davidw certified fog as Journeyer
  • davidw certified zed as Journeyer
  • davidw certified jhasler as Journeyer
  • davidw certified evo as Journeyer
  • davidw certified eckes as Journeyer
  • davidw certified dido as Apprentice
  • davidw certified rubys as Master
  • davidw certified rse as Master
  • davidw certified anton as Master
  • davidw certified sascha as Master
  • davidw certified paci as Master
  • davidw certified fielding as Master
  • davidw certified sama as Journeyer
  • davidw certified panta as Master
  • davidw certified antirez as Master
  • davidw certified joke as Apprentice
  • davidw certified hacker as Journeyer
  • davidw certified Tv as Journeyer
  • davidw certified xtifr as Journeyer
  • davidw certified eugenia as Journeyer
  • davidw certified CarloK as Journeyer
  • davidw certified jimw as Master
  • davidw certified Slimer as Journeyer
  • davidw certified RoUS as Master
  • davidw certified ask as Master
  • davidw certified dwiner as Apprentice
  • davidw certified jimjag as Master
  • davidw certified andersee as Journeyer
  • davidw certified Dunc as Journeyer
  • davidw certified brlewis as Journeyer
  • davidw certified claviola as Journeyer
  • davidw certified stevecassidy as Journeyer
  • davidw certified ldunbar as Apprentice
  • davidw certified atai as Journeyer
  • davidw certified bma as Journeyer
  • davidw certified mperry as Journeyer
  • davidw certified cjwatson as Journeyer
  • davidw certified daniels as Journeyer
  • davidw certified rbb as Master
  • davidw certified mkraemer as Master
  • davidw certified whitinger as Master
  • davidw certified tromey as Master
  • davidw certified thom as Master
  • davidw certified jlatour as Apprentice
  • davidw certified Rich as Master
  • davidw certified pusakat as Journeyer
  • davidw certified enigma as Journeyer
  • davidw certified ewsdk as Apprentice
  • davidw certified acoliver as Journeyer
  • davidw certified latchkey as Master
  • davidw certified cwinans as Apprentice
  • davidw certified andreaskupries as Master
  • davidw certified jenglish as Master
  • davidw certified benh as Master
  • davidw certified bonzini as Master
  • davidw certified imbe as Journeyer
  • davidw certified patthoyts as Master
  • davidw certified lars as Master

Others have certified davidw as follows:

  • davidw certified davidw as Journeyer
  • mbp certified davidw as Master
  • cgabriel certified davidw as Journeyer
  • uzi certified davidw as Journeyer
  • dhd certified davidw as Journeyer
  • bombadil certified davidw as Journeyer
  • ajt certified davidw as Journeyer
  • andrei certified davidw as Journeyer
  • joey certified davidw as Journeyer
  • cas certified davidw as Journeyer
  • lupus certified davidw as Journeyer
  • daniel certified davidw as Journeyer
  • dsifry certified davidw as Journeyer
  • crackmonkey certified davidw as Journeyer
  • jim certified davidw as Journeyer
  • schoen certified davidw as Journeyer
  • inf certified davidw as Journeyer
  • lordsutch certified davidw as Journeyer
  • branden certified davidw as Journeyer
  • bneely certified davidw as Journeyer
  • cech certified davidw as Journeyer
  • ruud certified davidw as Journeyer
  • gorgo certified davidw as Journeyer
  • jgg certified davidw as Journeyer
  • tausq certified davidw as Journeyer
  • wichert certified davidw as Journeyer
  • digdude certified davidw as Journeyer
  • knghtbrd certified davidw as Journeyer
  • ajk certified davidw as Journeyer
  • bma certified davidw as Journeyer
  • Joy certified davidw as Journeyer
  • no certified davidw as Journeyer
  • rcw certified davidw as Journeyer
  • ciro certified davidw as Journeyer
  • bdale certified davidw as Journeyer
  • drow certified davidw as Journeyer
  • bribass certified davidw as Journeyer
  • davidm certified davidw as Journeyer
  • ianmacd certified davidw as Journeyer
  • dyork certified davidw as Journeyer
  • shaleh certified davidw as Journeyer
  • jpick certified davidw as Journeyer
  • jae certified davidw as Journeyer
  • star certified davidw as Journeyer
  • csurchi certified davidw as Journeyer
  • wcooley certified davidw as Journeyer
  • sethcohn certified davidw as Journeyer
  • nixnut certified davidw as Master
  • zed certified davidw as Journeyer
  • evo certified davidw as Journeyer
  • dido certified davidw as Journeyer
  • panta certified davidw as Journeyer
  • antirez certified davidw as Journeyer
  • joke certified davidw as Journeyer
  • eugenia certified davidw as Journeyer
  • xtifr certified davidw as Journeyer
  • CarloK certified davidw as Journeyer
  • jLoki certified davidw as Journeyer
  • jao certified davidw as Master
  • jimw certified davidw as Journeyer
  • pompeiisneaks certified davidw as Master
  • highgeek certified davidw as Journeyer
  • stone certified davidw as Journeyer
  • claviola certified davidw as Master
  • wardv certified davidw as Journeyer
  • MikeGTN certified davidw as Master
  • walters certified davidw as Journeyer
  • technik certified davidw as Master
  • ks certified davidw as Journeyer
  • mperry certified davidw as Master
  • adulau certified davidw as Master
  • fxn certified davidw as Journeyer
  • Jordi certified davidw as Journeyer
  • baux certified davidw as Journeyer
  • gp certified davidw as Journeyer
  • cjwatson certified davidw as Journeyer
  • darkewolf certified davidw as Master
  • daniels certified davidw as Master
  • demoncrat certified davidw as Journeyer
  • rkrishnan certified davidw as Journeyer
  • sdodji certified davidw as Master
  • sand certified davidw as Master
  • stevecassidy certified davidw as Journeyer
  • const certified davidw as Master
  • ewsdk certified davidw as Master
  • aftyde certified davidw as Master
  • Rich certified davidw as Master
  • ariya certified davidw as Master
  • chalst certified davidw as Master
  • pasky certified davidw as Master
  • sral certified davidw as Master
  • bonzini certified davidw as Journeyer
  • ploppy certified davidw as Master
  • RickMuller certified davidw as Master
  • alejandro certified davidw as Journeyer
  • imbe certified davidw as Master
  • lars certified davidw as Master
  • migus certified davidw as Master
  • patthoyts certified davidw as Master
  • sgala certified davidw as Master
  • zbowling certified davidw as Master
  • andrea certified davidw as Master
  • arahwilde06 certified davidw as Master
  • jacopoc certified davidw as Master

[ Certification disabled because you're not logged in. ]

New Advogato Features

FOAF updates: Trust rankings are now exported, making the data available to other users and websites. An external FOAF URI has been added, allowing users to link to an additional FOAF file.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!

X
Share this page