Thursday, January 27, 2011

JUG Management Now on Git

The JUG community asked and we have moved the JUG Management source code from SVN to Git. I have to admit that I'm new in Git and it seems to be a quite change of paradigm from SVN. My first feeling is that it is more complex. For the moment, my motivation to learn Git comes from the fact that there is a big probability that the market will value this knowledge.

To access the Java.net Git repository is not a trivial task :( You will need SSH (Security Shell protocol) to have an encrypted connection to the server. I think this is too much for our needs, since this is not such a critical system, but this is real life, thus I followed the steps below:
  1. Download and install a Git client according to your operating system. Clients are available at http://git-scm.com/download.
  2. Installing Git is not enough to start working. You have to configure it, adding a public SSH key to your site profile as described in Generating an SSH Key. The whole process will take some time, but if you do it carefully, step by step, everything will work fine. It worked in my first attempt ;-)
  3. register yourself in CEJUG's project at java.net. You will have access to the repository only if you are a member of the project. Registering in the project doesn't mean you will become a CEJUG member. Actually, we use JUG Management to control our members ;-)
  4. When you login on Java.net and go to the source code section, you will be able to see the checkout URI of JUG Management's repository. The address contains your username. Example: ssh://[user-name]@git.java.net/cejug~jug-management.
  5. Copy the URI above and go to the command line and type the following command to checkout the code: git clone ssh://[user-name]@git.java.net/cejug~jug-management. It will create a folder "cejug-jug-management" in the directory you ran the command and the full source code will be available there.

This is a good start. Now you can open the source code and try to learn the project. I will explore in the next post how to open the source code in an IDE and build a package for deployment. At the same time, I'm learning how configuration management works with Git in order to start receiving your contributions. I'm studying the book Version Control With Git by Jon Loeliger for this. I hope the idea of branch is still there, just with a different name.

Sunday, January 2, 2011

New CEJUG Open Source Project

As I have mentioned yesterday, I'm working on a new project, managed by the CEJUG community, which aims to develop a web application for managing Java User Groups. We put it into production in the first day of the decade, January 1st, 2011, and we made the source code freely available on our java.net project.

The first goal we want to achieve is the definition of what is actually being a CEJUG member. Nowadays, we simply consider all those registered in our technical mailing as members. This simplicity is good for management purposes, but we lose lots of information because of that. We don't know, for instance, for what reasons a member is leaving the group. Did we do something wrong? What can we do to get better and get members back into the boat? We also noticed that even non-technical people, as entrepreneurs, recruiters, and those who decided to unsubscribe because of too many messages, would like to keep in touch with the group, not necessarily going into technical discussions, but proposing other ways to help. Adopting a separate application to manage subscriptions would help us to collect more feedback and be more inclusive.

Developing our own solution can make data work in our favour and allow our sustained growth. Consequently, we are generating an additional source of knowledge for the community. This application is open source and everyone can run and see how CEJUG works. Beginners will have a solid source to start their studies on the development of Java web applications, experts can help with bug fixing, refactoring, and developing new features according to our issue tracking. Adopted design patterns may be subject of valuable and warming discussions in our community.


Of course the application was developed in Java ;-) We have the duty to write the software architecture document in the coming days, but we can already say in advance what we are using to develop and deploy the application. The presentation layer was developed in JSF 2.0, using the Primefaces component library; the business layer was implemented in EJB 3.1; the persistence layer was implemented in JPA 2.0; data is persisted in MySQL; and everything is running on Glassfish 3.0.1 Application Server. The current version was developed using Netbeans 6.9 due to its productivity when developing JEE applications. We rely on the container to manage security, database transactions, connection pools, and email sessions.

The next step is to document the application, add customisable features and internationalise it in order to spread its adoption by several other JUGs out there. We are looking for contributors and supporters to make this a successful open source project. We hope one day, we could promote interoperability between JUGs through this application, sharing mutual knowledge, events, effort on the growth of the Java platform and the Java community.

Saturday, January 1, 2011

CEJUG: Commitment with My Homeland

At the beginning of 2010 I was in Brazil prospecting jobs and I couldn't find anyone that would use the knowledge that I had produced in the last 4 years. Then I started thinking about writing a project to submit to Brazilian investors. I did, but it seems that most of investments have been redirected to oil (they just found a large oil reserve in the cost of Rio de Janeiro) , sports (Brazil will host the World Cup 2014 and Olympic Games 2016) and city services (IBM kind of changed governments' minds with that idea of Smarter Planet). As a consequence, other studies have almost no chance if not related to those subjects, and, of course, if you don't invite project evaluators for a dinner, your project will probably be forgotten.

I also tried to become a professor in my hometown, since a PhD title would help me to achieve that. To get a good salary we have to work for public universities but there was no vacancies at the time. Some opportunities were available in other states like São Paulo, Paraná, Rio Grande do Sul, but my State is Ceará and I would love to contribute for its development. I kept searching until finding vacancies in private universities, but the salaries were very low and it would force me to work day and night to get a fair total income. No way!!!

When the idea of returning to Brazil was getting too difficult, I started looking for opportunities in Europe. With a bit of luck and a nice CV, I started a job as a software architect and it has been very exciting and rewarding so far. At the same time, the feeling that I was abandoning my country just for personal reasons has been always present. I'm currently helping Europe to better face technological challenges (that's what a software architect usually does in an organization) while Brazil is still struggling with poverty, big social differences, and poorly educated people. I cannot accept that because Brazil, with all its problems, was responsible for my education and my qualifications. If I like the person I became, I certainly like the place where I was educated and the people who educated me.

To have peace of mind and no regrets, I've built a way that my staying in Europe, at least for a while, doesn't imply in abandoning my homeland. I'm actually investing my free time to co-lead the Ceara Java User Group (CEJUG), helping on the technical education of Ceara's developer community. By doing this, I'm contributing to change the life of students and professionals there for better. The more knowledge we produce and share, the better will become the technology created there, increasing the competitiveness of the local software industry, which implies in more jobs and more valuable products.

CEJUG Event with Oracle representatives
Actually, I have been doing it for a while. I'm just dedicating more time than usual now. My current project is the development of a web application to manage the user group. I believe this is the first initiative of developing such kind of application so far. At least, I'm part of the international Jug Leader community and I never heard about one before. By the way, its first version is already in production. There are so many positive things about this new application that it deserves an exclusive post. That's what I'm going to do next. Wait for it!