Category Archives: internet

In my previous post I dealt (as the greatest part of tech bloggers) with Google Android Developer Challenge.

I just discovered in the FAQ these lines, which upset me:

Who’s eligible to participate?

  • The Android Developer Challenge is open to individuals, teams of individuals, and business entities. While we seek to make the Challenge open worldwide, we cannot open the Challenge to residents of Cuba, Iran, Syria, North Korea, Sudan, and Myanmar (Burma) because of U.S. laws. In addition, the Challenge is not open to residents of Italy or Quebec because of local restrictions.

Looks like the bureaucracy in Italy is way too complicated:

Fabrizio Giudici (post 405849595839) writes:

You might wonder what are those “local restrictions”. Well, for my country:

  • prizes must be assigned in presence of a notary public and a representative from an acknowledged consumer association;
  • prizes that are not delivered (for any reason, including recipient not picking them) must be donated to some non-profit organizations, explicitly listed in the contest rules;
  • there are some papers to fill in and the contest must be registered to two different Ministries (you know, in Italy there are a lot of Ministries, sometimes it’s hard to understand who’s doing what) and to the State Monopoly Administration.

But above all:

  • the entity which is organizing the contest must guarantee in advance a security deposit “cash loan” (not sure of the translation here, but I hope you get the point) covering the whole value of prizes.

I’m speechless… absolutely speechless.

Ok, no sweat, the shift from desktop-centric offline apps to web-centric online apps started long ago, and should go a step further with Google Gears, Firefox 3 [2] and other efforts which promise offline access to 2.0 webapps.

The Mozilla Foundation is working towards a webapp browser, so Webrunner [3] (Mozilla’s XUL-based lightweight app-wise browser) is now a Mozilla Labs project, code is in the trunk and named Prism, which ships a bunch of new features [4] (extension support, amongst others) and promise integration with Firefox, to make it easy for the user to “install” a webapp on its machine and access it without the need of a full featured web browser. Some of the benefits of “desktopized” apps in [1].

The border between desktop and browser seems to become blurry, and the day we’ll see the web as a platform to run applications upon seamlessly might be quickly getting closer. The project looks quite ambitious and sparkles a lots of interesting development scenarios in my head: they declare to be “working to increase the capabilities of those apps by adding functionality to the Web itself, such as providing support for offline data storage and access to 3D graphics hardware”.

To me, this looks much closer to the actual direction web/desktop development is going to undertake than other akin technologies’, and will endow developers with the best of both worlds, bringing the user experience right on the edge of the transition.

However, even if smart and far-seeing, this is just a glimpse: in the next years, no surprise, noticeable implications will likely come from the grid/p2p/multiagent systems, and distributed filesystems/OS research areas, whereas joint efforts and results will probably bring a real revolution in our perception – and use – of the web.

“Just” another step forward.

Links:
[1] Zoli’s blog
[2] Read/Write blog: Firefox 3 and offline apps
[3] Webrunner
[4] Mark Finkle
[5] ZDNet Blogs

Believe it or not, the price of a single SMS text message here in Italy is 0.15 EUR (0.20 USD, more or less). Let’s get it a bit more impressive: a single character is a byte, a single text message is 160 characters long, so I get charged 0.20 USD to send you 160 bytes, which means transferring a megabyte of text would cost to the final Italian user 1325 USD. It looks like a lot of money, right?

Fortunately a lot of smart people live on this planet, and Davide Marrone – a 24-years-old computer science student @ University of Milan – developed Skebby, a java app to enable people texting via their mobile phones (through Skebby’s servers) at a much lower rates.

The free membership allows users to send a limited number of text message (exploiting free services) at a cost of 0.01 EUR.

The premium membership allows no-limit texting at rates depending on how many text messages you buy in advance, but you might get till a 50% 70% off the current price.

[UPDATE: You should also add the cost of connecting from your mobile to Skebby's servers. ]

I don’t remember but if I’m not wrong Skebby.it is still only in Italian (actually it was on the national TVs yesterday, so servers went down immediately, they’re moving on right now :D ). If so, I hope they’re going to get an English version as soon as possible.

I want to recap my summer of code so far, before the final evaluation starts. Here’s what I accomplished so far. It was a lot of work, and a huge fun as well, hope to catch your interest and get some feedback on future developments! :)

GUI CONTRIBUTIONS

global_view

  • new component submission view (drag and drop support from the repository explorer to add dependencies easily :) )
  • repository explorer view
  • preference page (set repository URL)

IMPLEMENTED FEATURES

  • submit a new component
  • usual search features (name, version, tags)
  • search components providing a set of tasks
  • search components providing all the tasks of the selected ones
  • “smart” search of components functionally equivalent to the selected one (reasoning here)
  • search components depending on the selected one
  • assert functional equivalence between components

HANDS-ON

Let’s take a test drive. I submit a new component, in this case (just as an example) the “last-gsoc-demo” one. I fill in some data, and press submit. I can just drag-and-drop dependencies from the repository explorer to the dependencies viewer.

submit drag drop

I previously submitted some sample components. Now since all jdbc drivers implement the same specification, to some extent it is correct to consider them “functionally equivalent”, and I push this statement in the knowledge base.

find-eq

For sake of brevity I ask you to trust me without further shots, what I did is just assert all jdbc drivers in the repository (besides the “dummy-jdbc” one) “functionally equivalent” to the postgresql one, and then assert the “dummy- jdbc” only equivalent to “mysql-jdbc”. I can ask now the repository to give me components “functionally equivalent” to the selected one (“dummy-jdbc”), just clicking on the context menu item:
assert-eq

Here’s what I obtain:

inference-rulez

You might notice that the selected item is still there, which makes sense since everything is of course functionally equivalent to itself. ;) Furthermore, it is worthwhile to note I only said the “dummy-jdbc” was equivalent to “mysql-jdbc”, full stop! The rest is just the result of the reasoning process.

Now, I can also describe a component in terms of the “tasks” it carries out. Let’s suppose – just as an example – I have two components, one for “dom-parsing” and the other for “sax-parsing”.

tasks

Suppose now I was not on earth in the last years and I want to know if there exists a single component doing the two things.

union-tasks task-union-found

I can select both of them, click on the shown item and I’ll get xerces-j actually does both things. I might decide to use it if it fits my needs, since a single dependency is better than two, in most cases.

I also could want to know if other components rely on mine, or for instance how many components actually use one, which usually means it has great reputation. Remember the “last-gsoc-demo” component? I put “mysql-jdbc” as a dependency there. I just right click on the component, and find the components depending on the selected one. :)

search-clients client

CLIENT-SERVER ARCHITECTURAL VIEW (after latest modifications)

architecture

KNOWN BUGS

  • troubles with SPARQL queries involving literals: searching against id and tasks is ok, versions and tags are not (yet the http://repo.url/tag/{tag} resource works fine… i had no time to investigate further befor pencils were off)
  • dangling dependencies (i.e. after a delete operation) are not handled yet.

COMING SOON (random order)

  • rest (not in the soa-ish meaning)
  • enable license and license-style search criteria on the plugin
  • associate a new perspective with the provided views
  • improve repository explorer (i don’t like that tree very much)
  • bundled repository exploiting the eclipse embedded jetty server
  • import existing metadata from maven POM or OSGi manifest (URL drag and drop from web browser?)
  • address repository data access layer performance issues
  • setup an update site somewhere on the globe

CHEERS
That’s all for now, I really enjoyed the work, and I am confident this both- side fruitful collaboration will go on. A lot of things remain to be done on this project, and I won’t let it down after Google Summer of Code stops.

I want to thank Philippe Ombredanne for mentoring me, and all the guys @ #eclipse-soc for supporting me and other students day after day. It was an invaluable experience to work with you guys.

See you online,

cheers,

Savino Sguera.

My previous post was about releasing early your application. This is what you call “early”! And the app is nice, maybe even nicer than the average product posted @ Techcrunch.

Read more:

Here is a very nice post by Andy Brice @ “Successful Software” about the importance of releasing early in software development. I commented the post as well, so I won’t say the same things here.

“You wouldn’t write a thousand lines of code before you tried to compile it. Why would you spend a year or more on development before testing it in the market?”

The author lists a few arguments “for” and “against” releasing early, and puts “Reputation” in the “against” list (ok, not properly, since he explains how not to get a bad reputation). I surely agree with his argument and I think “Reputation” should be in the “for” list as well.

If I release early and frequently add new features in response to users’ feedback, I will incrementally build users’ confidence in the product, acquire new customers, get blogs buzzing about the application and its improvements, and make users feel like their desires do really count and are driving future developments of the product.

On the other hand, if I come up with a late released, one-size-fits-all product, users won’t feel part of the development process at all, which is weird since they actually are important project’s stakeholders.

Anyway, some really good points are in the post… you made it easier on me to release v1.0 for my GSoC project (review coming soon) :P .

(BTW the blog is currently the “Fastest growing blog” @ wordpress.com. Congratulations. :) )

I am bundling the Semantic Repository for my GSoC project as an Eclipse plugin, relying on the embedded Jetty server shipped within Eclipse (yes, once it was Tomcat, used by the Help plugin).restlet

The repository publishes a set of REST API, and makes use of the RESTlet framework, and I just discovered that guys @ Noelios provided a nice and easy way to integrate RESTlet in plugin development: have a look at FAQ#21.

Sometimes I’d really love to live in a world where people just talked about stuff they knew, and did not spam opinions and taunts here and there.

Techmeme reports:

Sir Elton says the internet is destroying music — POP legend Sir Elton John wants the internet CLOSED DOWN.

I just agree with Zoli Erdos, Sir Elton John lost a good chance to keep silent. :)

Recap: previous status reportall about my GSoC project @ Eclipse

Most significant updates for this week:

  • Model refactoring
  • Ontology design improvement
  • Jastor classes update
  • Implemented marshalling subsystem (XStream)
  • Added persistency to Jena model (Apache Derby embedded DB)
  • Tested full stack data flow:
    Restlet’s DomRepresentation <-> Document <-> XML <-> Javabean <-> Jastor class <-> Jena statements <-> RDBMS
  • Discussed dependencies licensing issues (no problems ahead)
  • Started client’s architectural design (and assessed code reuse scenarios)
  • Added javadoc
  • Committed new code to eclipse-incub

Very next steps:

  • Discuss some modeling issues with Philippe
  • Implement REST layer
  • Get a live demo of the repository up and running
  • Start client design
  • Add a “dependencies” page to project’s wiki

I recently bought two new books from amazon.co.uk, to get a quite deep focus on topics my Google Summer of Code project @ Eclipse will involve and rely upon; they arrived this morning (a bit late, though).

I bought Service-Oriented Architecture (SOA): Concepts, Technology, and Design, by Thomas Erl, and Eclipse: Building Commercial-quality Plug-ins, by Eric Clayberg and Dan Rubel.

I love new books :) . Just had a walkthrough, but they seem very very interesting and dense of contents. Can’t wait for reading ‘em … both of them are about 750 pages, argh, gonna need some intensive reading sessions :P .