My new place at Slideshare...

Since a lot of time ago, I wanted to create a slideshare place for upload presentations, but always I leave it under other tasks. At the end I do it. It was difficult. It took me more than three years ... Now you can check my slides at http://www.slideshare.net/jcarrasko 

And the first presentation that I publish is one that I liked a lot. Was an event organized by In2, Balearis, Liferay and Alfresco in Palma de Mallorca at a magical date: 09/09/09. At this event, we could find really very good presentations, like the one from the great Jorge Ferrer (Liferay) or the good one from Gabriele Columbro (Alfresco).


Mine presentation was pure Mediterranean. I spoke about “how to avoid the fat on critical mission infrastructures with Open Source and Balearic ingredients”. A good diet. In fact, were two case studies (from 2009) with some data about how Open Source, specially Liferay and Alfresco, works fine at critical environments, such as governments or financial. It’s in Spanish, but I’ll translate it in English one day.


Well,  Mallorca and Open Source rocks!

CloudFoundry, the heaven for open Apps ?

The cloud is in good shape. VMWare has released their new PAAS platform, called Cloud Foundry. It is not a surprise. VMWare with their divisions, such as SpringSource or hyperiq, it’s in a very good position for bringing us a completely full and top rank PAAS. In fact, Cloud Foundry, can support multiple frameworks, multiple cloud providers, and multiple application services, all on the same platform. This is a good new, really. We already have some others PAAS platforms, focused on java, such as google's appengine. However, there is a plus. We mustn't forget that SpringSource, who makes the base framework of the majority of best of bread java products such as Alfresco or Liferay, is a VMWare division, and it’s at the core of this platform. Good. And another plus: one of the stronger virtualization technologies at the back. And of course, with all experience from their vFabric Product Family.



We can tell that Cloud Foundry is a step over the limits of other cloud approaches. One thing is sure, is new, fresh and will push other competitors like Google or Microsoft to rethink some features of their stacks. Until now, with some exceptions, PAAS was tied to a particular environment. By example, .NET for azure, Java for Amazon's Elastic Beanstalk. And they weren’t full frameworks. By example, Java for google appengine, is a reduced set of what is java. This technology concentric approach was a strong handicap for a manager which wants to take a decision of migrating developments to the cloud: vendor Lock-in, lack of cloud portability.

Another big handicap that was having these cloud systems, was the fact that only we could deploy on public clouds. This hits another time the portability. But for some financial and government organizations, it’s just, not an option. With Google’s appengine we have some options for mounting private clouds, such as https://elasticserver.com/, anyway.

The proposal of VMWare is far from these limitations. They offer us a wide range of frameworks as Ruby, Groovy, Java or Node.js. And the most important: the promise that some other frameworks are coming. With CloudFoundry you can deploy against public and private clouds, as you can run them on the top of vSphere and vCloud. This is great, too. CloudFoundry code is Open Source, under Apache License.

Right now, CloudFoundry is more flexible and will open the PAAS platforms to apps that actually can’t use the advantatge of PAAS platforms. However, I have some doubts about how will perform this new approach:

1.- From the manager and architect perspective, the PAAS platform, as show us Google or Microsoft, makes easy the definition and governability of the IT infrastructure: this is the cloud framework, these are the cloud libraries, this is the cloud way to work. With this open approach, now, the people must define more, like we do onsite. This will be more configurations, more particularities, more work ... more cost.

2.-Some months ago I try to deploy Liferay on Appengine. Just for fun :)  However, the google’s big table model made me desist. VMWare data services will use MySQL, or big tables as MongoDB or redis. I would like to see the pricing and how they manage the connectivity against the database, specially, MySQL. In other words, if for use my app I must change my app’s persistence layer, I don’t thing will be a great deal.

At glance, a big PAAS approach from , I think, the most prepared player. We will see how its perform. You can sign up free at http://www.cloudfoundry.com/. It looks like if deserves a try.

Another good point to think, is the VMWare’s bet for PAAS concept. SAAS and IAS are very well known approaches, and PAAS was like the third way. But every day more, PAAS shows as that can be probably the best goody that the cloud can bring us.

Vikuit, a Social Networking Engine for Google's Appengine


I'm enjoying a lot this week! This weekend we had launched two new projects. We were working there since the start of this year. Both projects are very connected.

Some months ago, with Belustia & co, we were speaking about that we really miss a place to speak about voice technologies such as ASR and TTS in Spanish. We are working a lot there, and it’s hard finding online resources. We really found that the fact that there is few information about voice technologies is one of the bigger handicaps for their adoption here, in Spain. This is the key motivation that moves us to the Hispavox's born.

www.Hispavox.org is a place, just a try, for building a professional networking community focused on voice technologies, something what we call in Spanish “voz electrónica”. However, Hispavox is not only for high technicians. We wanted a place for users, too. A place where a Dragon'sNaturallySpeaking user can share its experience with professionals who are working with CMU Sphinx or some Android Developer, who is testing new Google’s voice features.

Even if now we are looking at voice’s technologies, we come from the web’s world. We know resources for building a community online, and we tested some. Our first option, were SAAS networking engines, such as Ning or Grou.ps. They were good alternatives, but we didn’t like Ning's costs (now is not free, but even with the subscription, there are some limitations). Our test with grou.ps was less convincing: we didn’t like that we started with the free account, and later they change its subscription model, making basic features as an own domain became only for the subscription account… With Grou.ps we had also some critical performance issues when we had one user online …

The second way that we looked, were enterprise engines like liferay or php based engines as drupal or elgg, deployed on amazon cloud. This way was really a very good option for creating an online community Using a full featured server like Liferay, is a great way for easily building a community. With amazon’s free micro-instance, the hosting was free, too. Liferay and Amazon cloud is an enterprise level solution that a good architect must recommend it, but…

However, we didn’t want to go so far. We only want three things: easy to deploy and develop, open source and free hosting. And we had a hidden wish: do it under google’s appengine. The truth, when we start to search for a social networking engine for GAE, we thought that we were going to find a lot, mountains of software. Which one try? The reality was that we only found few little applications that covered what a social networking engine means, and far from totality.

Searching, searching, we found a fantastic project near home. The guys from debugmodeon develop on 2009 his first version of his site for the appengine and they publish it on BerliOS under GPL v3. They used python, djanjo and jinja2. The technologies that we were looking at. Later they migrate to Java and hosted environment, but their code gave us a good foundation to do what we call Vikuit. Vikuit is the engine under hispavox , and it’s a try to have a full coloured social networking engine for google’s appengine.

Vikuit’s social networking engine has features as microbbloging, google’s authentication, articles, communities, forums, WYSWYG editor with ckEditor, image gallery. Suitable in English, Spanish and some other translation work in progress. We are working to finish a chat using google’s appengine capabilities and a text to speech service embedded for impaired people, suitable for 1.0 release. From developer view, we implemented the vikuilet’s, a way to add features taking all the advantage from using jinja2 and its hereby model. Its support themes and layouts, too. Of course, scalability, easy for deployment and all the great stuff for administration that Google’s appengine give us! We think that one of the Biggers advantages of Vikuit, relays on the free quota that gives us Google's Appengine. This means for a lot of sites, zero costs hosting. And this is a step forward.

We eat our meat, and we are using it on hispavox. You can take a tour looking at some basic “infrastructure” that we create for the project:

And the project’s page at http://code.vikuit.com

It’s open source, under GPL 3. Check the license. Free for use, free for host.

If you know Spanish, please, take a look to www.hispavox.org, the reason of all :)

Joulemeter, just for know power consumption

While I was looking at the Microsoft research, where you can find a lot of interesting initiatives from the guys of Microsoft, I found a little app that let us to track the power consumption of our computer usage, such as CPU utilization or screen brightness.  One big detail: it calculates the estimated consumption of CO...

You can check the project details at here.
This is my x200t usage:






No such much for a L9400 and a Toshiba outdoor screen :). How much is yours?

`const_missing': uninitialized constant Gem::Requirement::OP_RE

If you are having the following issue with buildr ( 1.3.4 , 1.3.5):

/usr/lib64/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2503:in `const_missing': uninitialized constant Gem::Requirement::OP_RE (NameError)
from /usr/lib64/ruby/gems/1.8/gems/buildr-1.3.5/lib/buildr/packaging/version_requirement.rb:24
from /usr/lib64/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
from /usr/lib64/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
from /usr/lib64/ruby/gems/1.8/gems/buildr-1.3.5/lib/buildr/packaging/artifact_namespace.rb:17
from /usr/lib64/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
from /usr/lib64/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
from /usr/lib64/ruby/gems/1.8/gems/buildr-1.3.5/lib/buildr/packaging/artifact.rb:19
from /usr/lib64/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
from /usr/lib64/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
from /usr/lib64/ruby/gems/1.8/gems/buildr-1.3.5/lib/buildr/packaging.rb:17
from /usr/lib64/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
from /usr/lib64/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
from /usr/lib64/ruby/gems/1.8/gems/buildr-1.3.5/lib/buildr.rb:21
from /usr/lib64/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
from /usr/lib64/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
from /usr/lib64/ruby/gems/1.8/gems/buildr-1.3.5/bin/buildr:18
from /usr/bin/buildr:19:in `load'
from /usr/bin/buildr:19


You can apply this fix:




checking for jni.h... no *** extconf.rb failed ***

If you are having the follow issue tryiing to install Buildr or the Ruby Java Bridge on a windows box (ruby one click installer) :

checking for jni.h... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=C:/usr/tool/Ruby/bin/ruby

Try to look if the platform is correct. In my case I used the follow command:

gem install buildr --platform x86-mswin32-80

If you get the gem platforms help, you will look at the follow text:

RubyGems platforms are composed of three parts, a CPU, an OS, and a
version. These values are taken from values in rbconfig.rb. You can view
your current platform by running `gem environment`.

RubyGems matches platforms as follows:

* The CPU must match exactly, unless one of the platforms has
"universal" as the CPU.
* The OS must match exactly.
* The versions must match exactly unless one of the versions is nil.

For commands that install, uninstall and list gems, you can override what
RubyGems thinks your platform is with the --platform option. The platform
you pass must match "#{cpu}-#{os}" or "#{cpu}-#{os}-#{version}". On mswin
platforms, the version is the compiler version, not the OS version. (Ruby
compiled with VC6 uses "60" as the compiler version, VC8 uses "80".)

Example platforms:

x86-freebsd # Any FreeBSD version on an x86 CPU
universal-darwin-8 # Darwin 8 only gems that run on any CPU
x86-mswin32-80 # Windows gems compiled with VC8

When building platform gems, set the platform in the gem specification to
Gem::Platform::CURRENT. This will correctly mark the gem with your ruby's
platform.

Because one history where I'm working I installed the VC8 redistributable and then my ruby became a rock.

Of course, check if jni.h is ok in your jdk/include folder :)






Thinking about windows distros

We know that Linux has a lot of advantages. We speak about performance, about design, about freedom to choose the provider that better match our needs. Sometimes we speak about the goodness of linux`s open source nature... But this goodness is something more than check the code, download and play it easily.


I remember that some years ago, I install at home a box for see films and play music. I use a light distro that has only the programs that I need for entertainment. I don’t remember the name of the distro (at this moment we can choose between several distros, sure), but the idea was use a customized distro for my purposes. Windows Media Center appears some years later. It was so late for my experiment. Really, the fact that we could have the possibility of specialize a Linux distribution is a key feature: you can customize the operating system just for the tasks that you need where a general purpose box will be not so much appropriate.


Another example of a customized linux distribution is Agnula. Agnula is a project that born on 2002 and was financiered by the European Commission and Red Hat. Agnula project is a linux distro tuned and used for music production. But Agnula involves more than applications. The kernel was patched for low-latency and other special features specials for make music. Now the link is down, but you can find its work in another kind of distros. Agnula is an example; the promise of Ubuntu is another.


We know other examples at the enterprise world. We use Oracle Enterprise Linux or Red Hat for Oracle Databases or high performance systems. I don’t remember any Java or Oracle based system that I design where I use a Windows Server for production. Why never a Windows box it`s my first choose? The answer is easy: we can only tune few aspects of a windows box, while with Linux we can control every aspect related to the implementation easily. Of course, the freedom to choose a provider, the other components of the ecosystem and the customer`s preferences are keys for choose the operating system. But thinking clearly, only in the technical stuff, a Linux flavor will be my first choose. If it`s vanilla flavored, better :)


The absent of tuning means less flexibility and less specific use. Sometimes we make a conceptual mistake: tuning is not only a performance question. Probably, tuning a Linux box will not represent more than the 5% of performance. We know that play with the limits, open files, by example, can define the frontier where you have a constraint at your system or an issue. If we can`t tune this limits, we have a constraint for serve pages even if the hardware could, by example. Other good example is play with the journal of the file system. At home or at a simple system this will don`t worry us. Imagine a System with Tb of documents…


Of course, the boys of Microsoft do some work in this aspect. I’m writing this post from one founder mini-note, with an XP tablet edition, and at office we have vista media center at the meeting room. But, really, is not enough.


Some days ago, I test a windows distro: WindowsUE. The author says that he close his page because the actions of Microsoft. You can read it in Spanish under http://www.windowsue.com/. Of course, you can find more versions out there from another people. There are a lot of modified windows such SuricataOS, VelenoOS ,biowindows or Angelical. This and other windows distributions have more or less the same features such less drivers, tweaks in the registry for stability and performance, the default programs are removed, and some of them has a special install GUI for unattended installation and some options.


We can analyze this situation. I have a lot of licenses of different Microsoft operating systems. Even I have some of this licenses that I don’t use because in some of my boxes I have installed Ubuntu. Why, if there is a good Windows tuner, that makes a really good Windows Distro, I can`t use it? This distro has an incredible performance, only the basic features that I need for some uses, and the better: you can find distros about 150 Mb each iso that can run comfortable on 64Mb pII boxes.



For test and show products to my customers, for example, I use virtual machines. This represents for me a lot of space (we speak about Gbs). Some many Gigabytes mean to me time and money: Time for copy, install and move the virtual machines. I spend money for RAM , harddisk space and, of course, time. I have low performance because I use a general purpose windows XP box. If I use the classic virtual machines, I have three options: use windows 2000, use this kind of tuned windows distros or use linux boxes. In a lot of scenarios, use a tuned windows distro will be the better option: easy, light and with the sufficient performance. I don’t need to carry so much unuseful binary (we speak about Gb) that I don’t use. If I don’t have this option, then better use linux.


This will be piracy?

But use a tuned distro of a Microsoft product isn`t a estrange practice for Microsoft. At windows mobile world, this is a common practice. At xda-developers.com we can find distros for our HTC machines that match exactly what we want. The result of this practice is that there are a lot of cookers that cooks its own distro. Now, by example, for my HTC TYTN, we can use the Faira32 ROM with Windows Mobile 6.1: Faster, tuned and with more performance that the original from HTC. Probably, without this option, I would move to another kind of operating system.



The guys of Microsoft must evaluate if this way of understand an operating system is a piracy or really is a new practice that the market demands. I don’t think that this is an option. A kit for make your custom distro of windows and a more permissive license would make that a lot of people that now use other operating systems in specialized cases continue using some of the great features and products that relay on Microsoft Windows. Microsoft give us an option: windows XP embedded. But this option is more focused on the machines than targeted in our needs. I have the same feeling about the license, not suitable for follow the c2c and web 2.0 patterns focused on users.



Anyway, I will continue using my favorite’s linux distribution for my production environments. Every element at nature is tuned for a special purpose. Why not our systems? If Darwin were a Software architect probably wouldn`t use Windows: It`s only prepared for survive in a limited ecosystems rather than in complex environment.


Eva, my partner, toll me that in Cabrera, a Little Island near Mallorca, were living a special kind of goats with only frontal vision and short legs. They were happy while not other components were living there. And then the humans come… What happens when arrives to a homogenous Microsoft architecture some new components (requirements at all) or load demands? The goat is there…