Thursday, September 10, 2015

The Coursera Experience

Coursera ( is a free online training website. It includes great courses from renowned universities around the world
In the last years I took some courses there and I would like to share my experience.

Read more at:

Thursday, July 23, 2015

Sunday, January 12, 2014

Running Nibiru Mobile on iOS

For those who doesn't know about Nibiru Mobile (the 99.99% of the people reading this, I guess, hehe), I'll  transcribe the introduction from Google Code page:

Nibiru Mobile is a framework for developing portable mobile applications created at Oxen.
You can use it in order to create portable HTML-based (GWT) application and/or native Android applications reusing most of the code.

In short, the framework defines a common Java API for building mobile apps. Writing for this API, you can develop native Android apps and HTML apps for other platforms (iOS, Windows Phone, BlackBerry, etc) using GWT+PhoneGap. The only native platform supported is Android.

Some time ago we read about RoboVM, which allows compiling from Java bytecode to native iOS using LLVM. It also includes a Java bridge for some Cocoa APIs. We though that using it to create a native Nibiru Mobile implementation would be cool, so we started a proof-of-concept (still in progress).

There where some Nibiru Mobile component implementations that were currently used only in the Android platform. Since these components weren't compatible with GWT, they where placed in the project. Now, some of these implementations could be reused on iOS platform, so we created a new project ( and moved them to it.

Amazingly, many of these Java stuff worked ok on iOS using RoboVM. This is impressive, since RoboVM is in an early development stage (0.0.7 version at time of writing this post). Some Java implementations that worked using RoboVM include:

  • Dependency injection using Guice (in fact, there where an error with version 0.0.6 that was fixed on 0.0.7)
  • i18n message internationalization using ResourceBundle + dynamic proxies.
  • JSON serialization using Jackson.
We're still working on
  • HTTP handling using Apache HTTP Client.
  • Event subscribing/publishing using Guava EventBus.
Regarding native implementations, we wrote implementations for MVP interfaces using Cocoa classes. Place management, adapters for widgets, etc. There is still a lot of work to do in this area.

Another pending issue is implementing persistence. Probably we'll implement DAOs using Core Data.

At the moment of writing this, the POC can be found on iOS branch on Google Code. It is being developed on 0.3-SNAPSHOT Nibiru Mobile version.

Any idea/suggestion is welcome!

Sunday, January 27, 2013

In defense of Open Source

A lot of debate has been done about Open Source. And it is still matter of discussion. So, probably I will not say anything new in this post. But I'm going to describe our experience. I expect to make Open Source to gain followers.

I think that there are many reasons for realeasing your framework/library as Open Source. Some of them are purely idealistic/egocentric:
  • It is good to give back something to the community (most of people uses Open Source!).
  • It is cool to share something that you created !!! Specially when people likes the work that you have done.

Other are related to development itself:
  • The code becomes better, since it is tested and revised by more people. It should be more solid and have a better design.
  • Since releases are not commercial deadline driven, the product is released when it is ready.
  • If your framework is widely used, you can easily find programmers who already know it. 

But there are also some commercial reasons:
  • You can improve the company image (it is like free advertising).
  • You can sell services over your framework (an area where you have expertise!).
  • You can get new customers (due to the interest in using the framework).
  • Customers don't want get locked with a closed source solution.
  • Nobody is going to pay for your framework anyway!!! Customers don't want pay for frameworks, there is a lot of Open Source out there.

Despite the commercial reasons, many companies are reluctant to open source their code.

At Oxen we support Open Source by sharing our frameworks and libraries (check the Open Source Projects links on this blog) as Apache 2.0 (we don't mind if somebody makes money with them, go ahead). We started sharing small libraries, but at some point, we developed a full server side development framework, Nibiru. We doubt about releasing it and we asked many people for an opinion. Some were in favor, but many colleagues who owned a company recommended us not releasing it.

They talked about the "competitive advantage" of having the framework closed. I didn't get convinced with that argument (which could be such competitive advantage? developing a solution in less time?) and released it. In fact, we also released NibiruMobile.

The only weak point in my argumentation was that it was pure theory. But now, we have a concrete case. A company from China (Jinan Roof Technology) stared using it and we're working together in order to run Nibiru on Karaf container using OSGi Blueprint (the work is almost finished at the moment of writing this post).

Our company doesn't have the commercial structure required for selling projects in such distant country.  Until this project, we were limited to near markets, like USA, Mexico, Brazil and, however, Argentina.

So, I just want to say: thanks, Open Source !!!


Wednesday, December 5, 2012

Nibiru Mobile released!

Nibiru Mobile is a framework for developing portable mobile applications created at Oxen.

You can use it in order to create portable HTML-based (GWT) application and/or native Android applications reusing most of the code.

It provides:

  • A common API for components typically used on mobile development.
  • Implementations of these APIs for GWT and Android.
  • Generic modules providing common functionality (currently, only a security module is included).

We are releasing it as Open Source. Current version is 0.2.

More info at:

Saturday, November 17, 2012

Nibiru 0.3 and Oxen Java Commons 1.1 are here!

Nibiru 0.3 and Oxen Java Commons 1.1 are here!

Today, Oxen released Nibiru 0.3 version.

New features include support Oxen Java Commons licensing module, support for password hashing and c3p0 support.

Security module has been refactored, improving its design. Also, suppor for "autologin" (for applications which doesn't require authentication/authorization was added.

Also, we released Oxen Java Commons 1.1, which includes the mentioned licensing module.

More info at:

Monday, July 23, 2012

Nibiru 0.2 released !

After working on many improvements, we finally tagged the 0.2 version.

Many functionalities were requested during two Oxen's projects (DTS and SIGA). So, we added them to the framework in a generic way. Some of them (such as validation, mail, security or report modules) were already planned. Another ones, such as custom web apps or service/bundle separation) raised from project's requirements.

As mentioned before, big changes were made. Some other big changes (such as a workflow module) are planned for future releases (maybe according to customers request, we don't have resources to dedicate full time development to the framework - any help is welcome!).

There are still 2 know bugs open... but in order to ensure compatibility with mentioned projects (the API is still unstable), we're closing the 0.2 version. The bugs aren't critical, so we'll fix them in 0.2.1 or 0.3 version.

Read more at: