Quick maven tip for deploying to remote FTP repository

First, you’ll need to make sure the following jars exist in %MAVEN_HOME%/lib (i include the versions i currently have):

  • wagon-ftp (1.0-beta-2)
  • commons-net (1.4.1)
  • oro (2.0.8)

Then define a server (& its credentials) for the remote repo in your ~/.m2/settings.xml and finally issue something like:

 mvn deploy:deploy-file -Dfile=mysql-source.jar -Dclassifier=sources
     -DpomFile=mysql-connector-java.pom -Durl=ftp://my.server.com/path/to/repository -DrepositoryId=my.server.id

Athens Facebook Developer Garage

Athens Facebook Developer Garage
(live blogging from Athens, Zografou)

Evolution of the Web

Some stats on web, web2.0, adoption, AOL, yahoo, …, googlemaps, youtube

The facebook platform

  • Massive ditribution
  • Fast experimentation
  • but

  • Constant changes to policies

Architecture

php+java official libs (wasn’t official java support dropped???)

FQL – one table per query only (no join), access user, friend, group, group_member, event,event_member, photo, album, photo_tag

FBML – subset of HTML, some custom tags, Mock AJAX… Canvas belongs to you, apart from anything deceitful, you can put anything you want there (ads,..) – but ads like googleads don’t have context info to show related stuff, so???

Anatomy of An Application

  • Only one-line status messages can be added to user statuses from apps… bigger ones must be approved from users.
  • Now, limit to how many invitation an app can send to friends.
  • Presenter (Nikolas Kokkalis) took part to Stanford Facebook class
  • Cannot store male/female user info from facebook (for more than 24h), but if we ask users then we can!
  • Viral factor f = X*Y*Z, f>1 then Viral growth… For each user, at least one friend accepted invitation (for PerfectMatch, f was 1.4 – they had to rename to Best Match due to … lawyers!)
  • They’ve done experiments with the same exact app registered with 5 different names – and it does make A LOT OF DIFFERENCE (name matters)
  • Every concept can be made viral … with the right modifications
  • Other ways of income (apart from ads) : Virtual currency, virtual objects (VERY popular for teenagers to pay for those), surveys!!! (you ‘sell’ people filling surveys)
  • Also, users think your company is more legit if they see ads in your site.

Virality

  • It is an Art that requires a ton of Science
  • Invitation text is terribly important
  • Make it social, simple – use viral channels, ab test all
  • Viral channels in FB: invitations, notifications, newsfeed, email, profile box, profile action
  • Knowledge gap (we know the perfect match, do YOU know it? there’s a message for you, do YOU want to see it?)
  • Modify a channel, gather data, analyze results (& restart)
  • but… changing a channel can be time consuming, measuring + analyzing results difficult (reference to their http://viraltuning.com/ but not much info there yet)

Some apps

… developed by greeks

  • Greek Namedays
  • kerasmata
  • mySidebarBook

Tapestry-4.1.6 maven archetype

There’s an updated archetype for Tapestry-4.1.6-SNAPSHOT over at (the well known snapshot repo)
http://people.apache.org/repo/m2-snapshot-repository

All the hard work was done by Ulrich Stärk, so big thanks to him

For the record, here’s how to quickly generate a Tapestry project

mvn archetype:create -DarchetypeGroupId=org.apache.tapestry \
 -DarchetypeArtifactId=tapestry-archetype \
 -DarchetypeVersion=4.1.6-SNAPSHOT -DgroupId=org.example -DartifactId=myapp \
 -DremoteRepositories=http://people.apache.org/repo/m2-snapshot-repository

15 Years ago – a sprite editor in assembly

15 Years ago – a sprite editor in assembly Looks like X86 Turns 30 Years Old. So, here’s a screenshot of a Sprite Editor I did 15 years ago (!) written in 8086 assembly (using debug.com as an … assembler). Sprite Editor

Of course, there’s a story behind this program… We (me, brother, parents) were on vacation at Pilio and we went to Volos to meet some friends. After walking in the town for a while, we found a park and started playing football. Then, out of nowhere a dog came and tried to bite the ball – causing it to deflate!!@$!@#$

Then the owner of the dog started swearing at us, and to cut a long story short… lots of negative feelings generated that day.

That’s how I came up with the idea of creating a computer game (named as “Kill The Dog”)

That’s why I needed to do graphics for it

And that’s why this sprite editor was done.

Tapestry for Nonbelievers

InfoQ has just released an article on Tapestry 5.

It’s a well written article that manages to cover many of the new features introduced in Tapestry. It goes through:

  • Setting up a Tapestry application
  • Creating a page and a component
  • Using the awesome Grid component for easy display of your data
  • Using BeanEditForm for one-line pojo editing!!!
  • Ajax and ajax components

So, go ahead and read it.

And now, moving on to the exclusive content of this entry…During my last trip to Germany (Emi and I were supposed to fly for Dubai, but we ended up in Frankfurt – that is another story) i got to meet the two authors of this article, Renat Zubairov and Igor Drobiazko.

So, here’s a photo of the three of us drinking beer:

Tale 52

Tale 52

Once upon a time, I was studying Physics at the local university. There I quickly realized a few things:

  • it wasn’t going to be as difficult as i thought it would – but at the same time, it wouldn’t be rewarding either (perhaps that’s a … greek thing)
  • it was easy to make out the best students and see their hard work
  • i met a few geniuses that seemed to … just grasp things without much effort and also seemed to just … never study
The best example that fits into the last category was Alexis Alexiou – he wouldn’t generally participate in the lectures/classes, but he always knew what was going on + answers, e.t.c. Plus, I had the pleasure of doing labs with him (Physics III,IV, Nuclear, Astronomy to name a few). We’d also hang out and play basketball, watch thrillers and it was obvious that he was a cinema addict but in my mind, he would go on to be a brilliant physicist – after all, already from the end of the 3rd year (out of 4) he had passed all the courses needed to get the diploma!
Imagine my shock when he decided to drop out of Physics and concentrate on (apparently) his true love, cinema. But, it was the right thing to do. I remember helping him make his first short film… we used my brother’s recording camera (and i was terribly handling it) and my father’s 4-head VCR for editing / postproduction! We produced a cover for the video tape and he made quite a few copies to pass around (i think i have the uncut versions somewhere, perhaps they’ll be worth millions??!)
Alexis then signed up in a private school for movie making, e.t.c. and i eventually lost track of him – though i’d always bump on him at plateia mavilis
Anyway, his first long movie is now being shown on cinemas in Athens and so i just wanted to wish all the best to him and his career… well done Alexis (i’d still beat you in basketball though!)

Everyone loves GoogleDocs

Everyone loves GoogleDocs
… and here’s another testimony from a Slashdot user:

I love Google Docs. When I had to kick my three-timing wife to the curb we used a google spreadsheet to collect data about our assets, debts, insurance policies, etc. for the property settlement phase of our divorce — and another to track child expenses for our shared custody arrangement. It’s awesome. I didn’t have to interact with her anymore than was strictly necessary. Thank you, Google.

Patching maven-surefire-plugin… yet again!

Patching maven-surefire-plugin… yet again!

People have been using the 2.4-collab-SNAPSHOT of maven-surefire-plugin for a long time. The main reason for that was that the ‘official’ 2.4-SNAPSHOT was … incompatible with the latest TestNG versions.
Thankfully, 2.4, 2.4.1 and 2.4.2 official versions have been recently released (Jan-Feb 2008) and TestNG support is back to normal. OR is it?
Well, according to SUREFIRE-463 (disclaimer: i filed and provided the patch for that) you’re NOT able to run custom TestNG suite XML files, i.e. use the suiteXmlFiles configuration of the plugin, as described here.
So, if you too are bitten by that issue, go ahead and vote for it.