Apache Maven Fluido Skin 1.0 is out!
simonetripodi
I know, it is just a skin with nothing special neither original, but I think that also mixing good pieces of software is someway nobody already did before, has its originality :)

For my few readers, the fluido-skin is a concept I started working a long time ago: the idea is combining the Maven Doxia ability to generate documentation, with modern frontend technologies to add a little more dynamic, such as Twitter Bootstrap, JQuery, Google code prettify and Tango Icons.

Even if really simple - I built it in ~140 commits - it is something that the Open Source community was waiting for, Apache Direct Memory has ben the test case while developing it,  Christian Grobmeier already started integrating it in the Apache Struts site, the Apache Maven community is planning to adopt it, MyBatis started publishing the documentation using that skin and some other that still have to be bookmarked :)

Enjoy it! :)

Being part of something special makes you special! (take 2)
simonetripodi
This week my good Apache friend Olivier Lamy made me an amazing surprise...
It has been maybe the most touching surprise this year because, honestly, I was not working to achieve it: after accepting the Apache Maven Fluido skin (see previews here and here) in the Apache Maven Sandbox... he proposed me (!) to the Apache Maven PMC as new committer and I've been accepted!!!

Wooooaaaaaaahhhh I think it was one of the happiest day in my life :) Yes, being part of something special makes you feel special!!! Thanks Olivier for believing in me like I've never done!

An open source Pizza!
simonetripodi
As a typical Italian, food for me is part of my culture, I love eating at the same level that I love cooking. Please don't think we are crazy!

The Mediterranean Diet is NOT a kind of religion but IMHO a very good guideline that allows people eating good, tasty, without the risk of getting easily fat - but please pay attention, if you eat 1Kg of pasta each day, you will :)
Pizza is, as everybody knows, one of the most typical Italian food - where there is pizza, there is always a little part of Italy around!

You are maybe wondering what does this concerns with OpenSource development... my foreign friends maybe think that Italian cook has a lot of secrets to be so tasty, but... this is false! Italian cook is simple, pragmatic and, above all, based on healthy ingredients. So let's "open the source" of a good Italian pizza!

Preface: this technique aims to show how to make a high digestibility pizza, so it requires at least 48h of rising!

So, let's chose first the ingredients (pizza for 4):
* 400g of wheat flour 00 (you can optionally use the 10% of whole wheat flour);
* 320g of water;
* ~3g of dry yeast;
* 10g of salt;
* 16g of olive oil;

Once collected the ingredients, you are now ready for mixing! Let's see how a professional Pizzaiolo does:



Once completed, let the mix rest for 10 minutes, then you can start applying the technique called "regenerate" for 5 times, one each 10 minutes:



Once done, cover the pizza as shown in the video, put it in the lower in the refrigerator and say goodbye for 48h :)

OK, 48h have passed, you are now hungry enough and ready to cook it :) Don't forget to pull out the refrigerator the pizza 4-5h before cooking it.
When ready to cook, let's drawing it up first



Then cook and spice it:



Do you see how easy it is? That's the way we do at home. Do you want to see my results? Visit my Apache Pizza album on Picasa!

Have a nice OpenSource pizza, buon appetito!

It has been a nice OpenSource weekend
simonetripodi
Weather was really bad for the whole weekend, rained heavily so we were forced stay home :(
Anyway, not totally sad, OpenSource rescued me and brought fun to my home (even if my wife would have preferred something different) :)

There are news on Apache Digester: while fixing some issues about missing components in the DigesterLoader, improving the fluent APIs in the RulesBinder and optimizing performances in the XML ruleset, I think the most interesting feature available in the next release is the ability - even if with some limitation - of the ObjectCreateRule to create objects not only with the default empty constructor, but extracting constructor arguments from the matching element attributes.
Unfortunately, nested elements cannot be supported at the moment, because objects are created exactly when the XML element matches - and backtracking is not supported.
You can follow the Digester progress by reading the 3.2 version RELEASE NOTES.

The other activity I've been involved is improving the Maven Fluido Skin - wich is build on top of Twitter Bootstrap.
There are new icons - we are using the Iconic set, developed by P.J. Onori, licensed under Creative Commons Attribution-ShareAlike 3.0 Unported license - and flexible customizations, but the nice part of that skin is that, just only via configuration parameters, there are 4 skins in 1!
Have a look at two previews:

Join the Maven dev@ Mailing List if you want it released!

Does XML suck? Maybe. But you are not good as well on modeling data.
simonetripodi
When I started working in the IT in the far 2004 - yes, I'm still relatively young - there was an era when describing anything in XML was a must, even if could had been avoided :)
Then, when JSON came out, the bigger part of that people blindly switched to the new format after reading few blogs pages mainly because "it is faster to parse".
Of course, no doubt about it, but... are we sure they were good on describing data in XML?!?

For what I learnt, to write a good model, the designer has to keep in mind no just data to be modeled, but how to write an efficient processor as well.
Follow below a serie of horrendous mistakes I met during my - even short - carrer.

1. Properties
A customer in a TLC company gave me a REST API set to integrate, it described a collection of objects and looked, more or less, like:

<objects>
  <object id="properties">
    a=1
    b=2
    c=3
  </object>
</objects>


And I don't think that deserves any comment.

Update
Just today I had to generate some XML snippets, it is (more or less, for privacy policy):

<objects>
  <object>${prefix}::${ID}-${NAME}</object>
</objects>


and realized that the processor parse the text to extract different parts... please don't think I'm pedantic, but since we are using XML, what's the reason of writing a parser inside the XML parser, when setting attributes would have been:


  1. human friendly: I would understood the attributes semantic earlier;

  2. easier to parse: just get the attributes values.



2. Nested elements
This is fun as well. The same customer had a legacy application that was configured with a proprietary XML dialect - and no, not chances to get an XSchema nor even a DTD - that looked like

<objects>
  <object id="nested">
    <I>
      <dont>
        <remember>
          <how>
            <many>
              <nested>
                <elements>
                  <properties a="1" b="2" />
                </elements>
              </nested>
            </many>
          </how>
        </remember>
      </dont>
    </I>
  </object>
</objects>


So when he decided that was verbose enough, replaced the current descriptor with a JSON one:

[ {
  id: "nested",
  a: "1",
  b: "2"
},
{
  ...
},
... ]


Do you think that customer was in the position to complain XML or the use he did of XML?!?

3. XML to transfer binary data
People used to transfer binary data inside XML did never understand that putting Base64 encoded data inside XML forces developers to write not one, but two parsers, Base64 elements should be decoded using en efficient incremental writer - or you want to read the whole text and then decode it?!?

<objects>
  <object>
    <I>
      <dont>
        <remember>
          <how>
            <many>
              <nested>
                <elements>
                  <content>PG9iamVjdHM+CiAgPG9iamVjdCBpZD0icHJvcGVydGllcyI+CiAgICA8ST4KICAg
ICAgPGRvbnQ+CiAgICAgICAgPHJlbWVtYmVyPgogICAgICAgICAgPGhvdz4KICAg
ICAgICAgICAgPG1hbnk+CiAgICAgICAgICAgICAgPG5lc3RlZD4KICAgICAgICAg
ICAgICAgIDxlbGVtZW50cz4KICAgICAgICAgICAgICAgICAgPHByb3BlcnRpZXMg
YT0iMSIgYj0iMiIgLz4KICAgICAgICAgICAgICAgIDwvZWxlbWVudHM+CiAgICAg
ICAgICAgICAgPC9uZXN0ZWQ+CiAgICAgICAgICAgIDwvbWFueT4KICAgICAgICAg
IDwvaG93PgogICAgICAgIDwvcmVtZW1iZXI+CiAgICAgIDwvZG9udD4KICAgIDwv
ST4KICA8L29iamVjdD4KPC9vYmplY3RzPg==
                  </content>
                </elements>
              </nested>
            </many>
          </how>
        </remember>
      </dont>
    </I>
  </object>
</objects>


No alternatives for binary data - treat them as they are, just attach metadata descriptors!

4. No legacy XSchemas/DTDs
The good and dark side of XML is its eXtensible nature. Anyone can invent his own format to describe the domains... oh, how powerful it is!
OK, no standards match with your needs and you have to model you domain... But if you don't provide at least a DTD, how can you [...] pretend people continue modeling data by samples?!?

5. Did you know XML has attributes?
preface: I'm an addicted fan of Apache Maven and I ahve to say a big 'thank you' to all the guys I have been maintaining it, but thumbs down for the pom.xml format. It never uses a single attribute.
Do you complain Maven's pom is verbose? No objections, but NOT ENOUGH to complain about the whole tool.

So, my suggestion for my few readers: don't be superficial, study in deep technologies before putting systems on production, be critic, don't accept blindfolded one format or another just because Mr. XYZ wrote on his blog "X rocks, Y sucks", invest more time on optimizing your infrastructure and less on stumbling on affirmations like this :)

Apache Maven site: spread the new skin!
simonetripodi
We are living the HTML5 era and a lot of pages on internet still are plain old HTML, not even valid XHTML... that is really a shame, especially when who produces such pages are automatic generators.

People used to Maven-based builds are used to generate documentation sites as well, and it is really comfortable: it aggregates reports, informations, allows adding pages, and in just one launch users can publish a huge, complete set of documentation in just few time.
What is not really good is (IMHO) the generated HTML code and default look and feel.

We are trying to fix both: thanks to a Christian Grobmeier's idea to improve the Apache Incubator site layout and Olivier Lamy's proactivity, we are contributing to Maven community on realizing a fresh new Fluido Skin, based on Twitter's Bootstrap framework to start the new-generation era of Maven skins.

Curious to see it in action? Just have a look at my personal page at the ASF.

Want to use it? SNAPSHOT is already available, just add, in the site XML descriptor, the following snippet:

    <skin>
       <groupId>org.apache.maven.skins</groupId>
       <artifactId>maven-fluido-skin</artifactId>
       <version>1.0-SNAPSHOT</version>
    </skin>


Want to join? If you are already an ASF committer, Maven Sandbox is already open, just write a message on the dev@ ML that you intend to collaborate, and start checking out the code!

Two new kids in the town: Any23 and DirectMemory joined the ASF
simonetripodi
Recently I took part at two important (IMHO) proposals for the Apache Software Foundations, and both have been accepted; I'm speaking about Apache Any23 and Apache DIrectMemory.

Why so important: Any23 - literally anything to triple - is focused on Semantic Web technologies, aims to ingest various Web documents extracting structured RDF Data, and it is the core component of Sindice, the first Semantic Search Engine supported by DERI, NUI Galway, Web of Data - FBK and the OKKAM project (ICT-215032).
Michele Mostarda, one of the Any23 core developers, is a close friend of mine - we have been friends since the College years - and we met  during the last Summer in Rome, while speaking about our preferred topic - technology! - we started planning Any23 to join the ASF. Davide Palmisano, yet another close friend and Any23 core developer, was immediately by our side. It was just a matter of arranging stuff and get the right people involved :)

DirectMemory instead is a great invention born on Raffaele Guidi's mind: after Terracotta announced BigMemory, he started coding on GitHub a free, open source, Apache2 licensed off-heap cache version. Being BigMemory the only off-heap solution, due to its commercial license nature, people started spreading the voice about DirectMemory very quickly and of course I got in touch with Raffaele. He enthusiastically accepted my proposal to donate his work to the ASF and just today the VOTE successfully closed. 
Ah, you can already start following DirectMemory news on Twitter ;)

Agreements: the always present Tommaso Teofili, Maurizio Cucchiara, Christian Grobmeier and Olivier Olamy.

MyBatis still rocks!
simonetripodi
One of my involvements I'm proud of in the OpenSource world, is my contribution to MyBatis - formerly known as Apache iBATIS  - community.
I happily joined them after they left the ASF, been invited by Clinton Begin, the project creator/lead, because of my commitment on developing the Google Guice integration and 3rd parties caches integrations.

Why do I think is a powerful tool?
  1. It's not yet another ORM tool: that pattern is widely implemented by Hibernate - the best ORM framework AFAIK - and a clone/competitor would be a waste of time and resources, it would make more sense IMHO joining efforts instead. MyBatis, as we are used to say, is a SQL Mapping framework, that means that allows users mapping Java object to SQL statements - and not Relational Entities. That is a HUGE difference between the two approaches;
  2. Is not driven by any specification - and history teaches us that alternatives always killed "standars", such as the Springframework that literally threw the EJB spec to the window;
  3. Has a slow learning curve: with the advent of release 3, users are able to write production-ready applications in quarters of hour without the need to buy any book or commercial support;
  4. Has a wide ecosystem: the community manages integration libraries with DI/IoC frameworks, 3rd parties caches, Apache Maven/Eclipse plugins, and some companies started integrating their products;
  5. It's community-driven: no affiliation or sponsor behind it, just a group of volunteers that maintains it for pure passion of writing software that simply works.
Not convinced yet? Join the Mailing List and have a look at the project page!


... and then, Async Apache Commons DbUtils
simonetripodi
Time ago a Commons user, William Speirs, submitted an interesting patch for Apache Commons DbUtils adding asynchronous JDBC calls, that involuntarily contributed to add that kind of feature to Apache Commons Digester.

The minor improvement that IMHO we could do is, instead of returning Callable<?> instances, we could return directly Future<?>, managing ExecutorService directly inside the new class.

Et voilà, next Commons DbUtils release will contains that new feature and users will be able to run JDBC calls in separate threads:

DataSource dataSource = XXX;
AsyncQueryRunner runner = new AsyncQueryRunner( dataSource, Executors.newFixedThreadPool( 10 ) );
...
Future future = runner.update( "UPDATE table_name SET column1=?", param );


Stay tuned for next Commons DbUtils because we are going to submit a RC soon!

Being part of something special makes you special!
simonetripodi
These words simply charme me, I want to tell a little story to explain why.

I've been looked for my own identity for years, since I've always been sourranded by strong personalities, so it was quite hard for my understand which is my path.
When I went to school, I clearly remember I couldn't be a perfect student, there were excellent people like my really close friend Marco Giammatteo that were brilliant - and still are, take a look for example at his LinkedIn profile!
When I went to BoyScouts, I had to accept the estabilished hierarchies and felt suppressed by them.
When I went to sport clubs, I've always been very good but never felt so confident of my means to become a real champion.
When I went to the College, I had a non good start, and run behind the better students.

During my life, I've always expressed great potentials without any excellent result. That would be depressing, but fortunately the rainbow always raises after the rain.

Once I termineated the college, I had to move from my small city, L'Aquila, due to the lack of work - open positions were reserved for the best only! - to Rome, where a company were interested about my programming skills...
That was the episode that saved me: I was totally alone, without any friend, facing my issues: I started understanding that I could have done much more of what I already did and, above all, I had no lack of meanings to achieve my objectives.

So, I started working really hard until starting contributing to the Apache Software Foundation: finally an environment that accepted for what I am, where I can freely express my thoughts without the worry of suffering the hard judgement of hierarchies or more qualified people, where I can fully provide my means to the community to help other people, actively contribute on writing code and release amazing components. I can now feel a true champion (not in the meaning everybody knows) but I won't ever forget where I come from.

I am finally part of something special that makes me feel special, thanks ASF!

?

Log in