Category Archives: geek

Google Summer of Code is (almost) on this year too … sounds like some more app and approx 1000 students will be in this edition (slightly more than last year).

The IRC channel has changed since last year, so now head to irc.freenode.org, #gsoc.

Random links:

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.

In order to create a large and lively open source community around the Android mobile OS, Google has launched the Android Developer Challenge, which will provide $10 million in awards for mobile applications built on the Android platform.

Submissions will be accepted from January, 2nd through March, 3rd, 2008.

More info about Android and Android SDK (YouTube links):

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

Rosenberg’s Law: “Software is easy to make, except when you want it to do something new.”

Read more:

http://www.gamearchitect.net/Articles/SoftwareIsHard.html

Don’t know how long this site has been out there so far, but I just love it. A list of all kinds of interviews questions, ranging from career goals to specific technical problems, browsable by category and company as well. Very nice.

Ordered some new books from Amazon to get into my readings page (new for me actually, they’ve been out there for years :D ):

  • F. Buschmann et al. – Pattern-oriented software architecture (Vol. 1)
  • Guy Kawasaki – The art of the start
  • Guy Kawasaki – Rules for revolutionaries
  • Chad Fowler – My job went to India

The first one just arrived, and I have to say I like it more than the GoF book (which I definitely loved…). Looking forward to get the others… :)

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.