Installing Intellij IDEA on Mac and Ubuntu

It has been a year since I moved my professional and community development projects from Netbeans to IntelliJ IDEA. Netbeans is still a great IDE and I recommend it over any other open source alternative, but the productivity brought by IntelliJ is so great that the time I’ve saved using this IDE already paid off.

I have IntelliJ installed at home and at the office. It’s the same license but the deal is: you can install it in several computers but use one installation at a time. I use Mac and Ubuntu at home and my experience installing IntelliJ in those platforms was the following:

Installing on Mac

I’m not really going into step by step here. IntelliJ is pretty easy to install on Mac, but I had a problem with the JDK and I’m going to focus on that now. IntelliJ uses the JDK distributed by Apple by default, which is a JDK 6 implementation. Well, this is not a big deal, since we can install the most recent JDK and configure our projects in the IDE to use it instead. But, for some unexplained reason, I couldn’t configure the IDE to start the application server in a JDK different from the one used by IntelliJ (JDK 6). In the image below, you can see I’ve configured JDK 8 to run WildFly, which requires JDK 7 or superior, but it didn’t work.

wildfly-configuration

So, I had to change the JDK used by the IDE. For that, I:

  1. closed IntelliJ;
  2. went to the folder where all applications are installed (/Applications) and selected the file “IntelliJ IDEA ##.app”;
  3. accessed the context menu (mouse click with two fingers) and selected “Show Package Contents”;
  4. opened the file “/Contents/Info.plist” and
  5. located the JVMVersion to change its correspondent value to 1.8*.

After this configuration, I could finally make IntelliJ run Wildfly.

Installing on Ubuntu

The installation on Linux is traditionally more complicated. I wonder why people complain about the low number of Linux desktop users. :) The IntelliJ IDEA download page mentions only two steps:

  1. unpack the “ideaIU-XX.Y.Z.tar.gz” file using the command “tar xfz ideaIU-XX.Y.Z.tar.gz” and
  2. run “idea.sh” from the bin subdirectory.

However, this instructions don’t deliver IntelliJ as delivered in other platforms. People don’t go to the installation folder and execute the file idea.sh. They either create a desktop icon or add the bin directory to the path, but these steps are missing. So, in my understanding, the installation is not completed. To launch IntelliJ from anywhere in the command prompt:

Become the root user:

sudo -i

Move the unpacked folder to “/opt/idea”:

mv ideaIC-XX.Y.Z /opt/idea

Edit the file .bashrc:

gedit ~/.bashrc

Add the following line to the end of the file:

export PATH=/opt/idea/bin:$PATH

Log out and log in to the change take effect.

To add the launcher icon on the desktop, there is a soft and a hard way.

The Soft Way

Fortunately, IntelliJ can help you once you run it for the first time. In the welcome window, select “Configure”:

intellij-configure

And then select “Create Desktop Entry”.

intellij-configure-desktop-entry

That’s it!

The Hard Way

As a good Linux user, you may prefer doing it the hard way, as follows:

Create a desktop file:

cd /opt/idea
gedit idea.desktop    

Copy the content bellow to the file:

      [Desktop Entry]
      Name=IntelliJ IDEA 
      Type=Application
      Exec=idea.sh
      Terminal=false
      Icon=idea
      Comment=Integrated Development Environment
      NoDisplay=false
      Categories=Development;IDE;
      Name[en]=IntelliJ IDEA

Install the desktop file:

desktop-file-install idea.desktop

Create a symlink:

cd /usr/local/bin
ln -s /opt/idea/bin/idea.sh /usr/local/bin/idea.sh

Finally, display the idea icon in dash:

cp /opt/idea/bin/idea.png /usr/share/pixmaps/idea.png

At this point, you will finally feel IntelliJ as an application, integrated with the desktop and always ready to be executed.

Auberge de la Ferme: Wine Choices for Dinner

I never had the opportunity to write about the experience at Auberge de la Ferme. I will do it in another opportunity because now I just want to share our wine choices for dinner. They have an extensive selection of wines in a big cave and every time we go there we spend a lot of time choosing the right one, hoping it is good enough for the occasion.

This time we made a very good choice at a good price. They are:

Montravel

We had a gastronomic dinner with 7 services and most of the dishes demanded a white wine. We choose Montravel, that was one of the waiter‘s suggestions. This is a very good 12% dry and fruity wine 2013.

White wine Montravel
White wine Montravel

Julienas

Some of the dishes demanded a red wine. So, we once again accepted one of the waiter‘s suggestions. The dry, 13% red wine Juliénas 2011.

Red Wine Julienas
Red Wine Julienas

We still are amateurs in the art of wine appreciation. So, I’m saving the choices here for the next time :-) .

How a JUG is Born and Stays Active Over the Years

(This post was originally published at yougi.org)

We recently attended EMEA IOUC Summit 2013 in Ghent, Belgium, last spring (EMEA IOUC stands for International Oracle User Group Community from Europe, Middle East and Africa). This meeting was very important because that’s an opportunity that user group leaders have to share what really works and what actually doesn’t work when managing their community.

EMEA IOUC Summit 2013

After acquiring Sun Microsystems, Oracle included Java™ User Groups (JUGs) in IOUC and many JUGs within EMEA were invited to attend the summit. According to some veterans, the gathering at the beginning was like water and oil. Now, they’re much more in line, but there is still a rich diversity in terms of organisation and culture. That’s a real cultural mix.

JUGs are used to be independent and lean. They are supported not only by Oracle, but also by several players, such as RedHat, IBM, Google and others. They are less attached to products and more attached to solutions, which is inherited from the spirit of Java™: “Write once, run anywhere”. Oracle does respect that, continuing as the main JUG supporter out there and avoiding interfering in JUG’s organisation. The coordination of community initiatives is always done with JUG leaders, who contribute with ideas and actions through their respective user groups.

Recently, Oracle and community leaders realised that the process of creating new JUGs was outdated. Ironically, the process was heavy and difficult to manage, not fitting in Jug’s philosophy. Perhaps, it explains why it didn’t really worked. Bruno Souza, an active Java evangelist, was involved since the beginning and gave further details about that:

“Java.net was always structured to be a ‘code’ site, and because of that, it has the concept of project approval and the incubator. Project approval was the step where an admin of a java.net community would consider relating a project to their community (for example, the Desktop community would probably not accept a server side, JEE project). A JUG’s project approval was very loose. If someone said their project was a JUG, we simply took their word for it. The project then would be accepted into the ‘incubator’, that was a staging area, were the project could start, and be clearly labeled as ‘incubating’. To graduate from the incubator, we had a series of steps, that have evolved over time to include the JUGs Map and other basic requirements.”

He concluded saying:

“Of course, as time went by, some of this got lost, some of the approval process started to be done by java.net support staff and not by the JUG leaders, many JUGs never completed the incubator steps (we have around 40 JUGs on the incubator right now), and many JUGs don’t even know about any of that.”

Then Oracle started a discussion with some community leaders (Bruno Souza, John Yeary, Nichole Scott, Tonya Moore, Sonya Barry and Frank Nikola) about what is working and what is not working. They came out with the following process to create and maintain JUGs:

  1. A prospective JUG leader joins Java.net and requests a project with the proposed JUG name.
  2. At creation, the project owner receives an automated email asking him(er) to contact the community manager at Java.net to request that the new JUG project be made public.
  3. The JUG leader can choose between Java.net, their own hosting provider, a social network or any other online service to host JUG’s online content. In case it is hosted elsewhere, the leader just have to add the external link in its Java.net project profile. Actually, the only reason Java.net has to create an actual project is to prevent name collisions and keep the database consistent. The project itself can be entirely empty.
  4. Java.net asks for a KML file to add the location of the JUG in the map, in case it hasn’t been supplied yet.
  5. Java.net’s team adds the JUG to the map and make the JUG’s project public, moving it directly to the main JUG community.

Process to create new JUG

Paired with this, Java.net will start an annual review of JUGs. The process works this way:

  1. Once a year, people listed as “admin” in JUGs’ projects receive an email asking if they’re still active and if Java.net needs to update any information on the site. The reply can be as simple as “yes, we’re still active, no changes”.
  2. If Java.net doesn’t receive a positive reply within 30 days, they will follow up with a bit of a research to see if they can find the JUG in question. Perhaps the leadership has changed or a URL has been updated.
  3. Java.net tries a second contact using any new information they have. If necessary, they translate the message to the local language.
  4. If Java.net doesn’t receive a response to the second inquiry within 30 days, then they send the final notice.
  5. At 90 days without a reply, Java.net moves the JUG project to an archive/inactive state and removes the marker from the map.
  6. A quick note is sent to the leaders’ list, letting them know which JUG has been retired.

Process to review JUG

Any retired JUG can be reactivated at any time, by going though the first process described above.

The intention, as pointed out by Mattias Karlsson, JFokus organiser, is to be “generous and don’t set boundaries if anyone wants to start a JUG.”. Sonya Barry, director of community Infrastructure at Oracle, believes the goal is “to grow the community, and make it easier to join and more inclusive”.

These processes started running in March 2013, too soon to figure out what is coming out of them. They invite further discussions a year from now to see how effective they are. But it is already good news to have established and transparent procedures. Congratulations for the team involved!

crescimento-cejug-2012-2013

Statistics Help JUGs Make Good Decisions

(This post was originally published at yougi.org)

Since its first execution, in January 2011, Yougi has been helping CEJUG to manage its membership process and events. Yougi has collected a lot of valuable data in the last 2.5 years and it is urging now to explore all possibilities of data analysis. Some relevant analysis have been done and we aim to discuss them now.

The figure below depicts two charts generated by Yougi to show the membership growth during the current year while comparing it with the previous year. The intention of the chart is not to show the total number of members, but the growth throughout the year, taking into consideration only data collected in that period.

By comparing real events with these charts CEJUG could understand what was actually happening and make decisions based on that. At the beginning of 2012 the group was very active, with many events and participation. However, activities felt down throughout the year after a crises in the leadership team. It impacted the group’s attractiveness reducing the number of new members. At the beginning of 2013, CEJUG went through a major leadership change and general reorganisation, resulting in concrete growth in the latests months of 2013.

Thanks to the latest events and projects supported by CEJUG, the group is on pace to surpass the year 2012 in number of registrations. The last three months have been higher than last year’s results for the same period. If this pattern of growth persists in the next six months, CEJUG will have a lot to celebrate at the end of 2013.

Data shows that events are what really makes the difference, because it was exactly during the months of April, June and May that events took place in 2013. The same phenomenon can be observed in 2012, where major events were held in February, March and May.

With time, it gets harder to overcome previous years because there is a limited amount of programmers in the region covered by CEJUG. But there is always a lot of factors that may ensure continued growth. We are going to list three:

  • Market growth: When the IT market grows, it attracts more professionals and some of these professionals are Java developers. To attract these people, CEJUG can organize events within companies.
  • New Students in Computer Science: Every year, hundreds of young people choose computer science as their future carrier. CEJUG already collaborates a lot with local universities, although this collaboration can be further enhanced.
  • Nationalisation of the group: CEJUG already has a considerable number of non-local members, showing that it has a good level of attractiveness. Therefore, CEJUG has potential to become a national community, representing Brazil in several international initiatives.

These factors could help to organize CEJUG’s actions to ensure good results in 2014.

Speaking at Brussels JUG: User Experience for Business Process Applications

I’m glad to inform that I will speak at the next Brussels JUG‘s event about user experience thinking and design for business process applications. The event will take place at Hogeschool-Universiteit Brussel, Building Hermes, on Thursday, 30th of May, at 6:30 pm. Visit Brussels JUG website for more information: http://www.brussels-jug.be.

You won’t find a lot of information about this subject on this blog, but I have been doing research about it in parallel since 2006, in collaboration with Kênia Sousa, who would be happy to share the stage, but she had to decline due to family duties. You may find more information on the page Publications of this blog.

If you were assigned to design and implement a business process based application, You may find this session interesting. User interface design is the most time consuming task in a software development process. It is highly subjective and under heavy criticism by end-users. This presentation will help you better deal with this problem, exploring strategies to represent business processes in a way that end-users can easily understand what they see based on their business knowledge. We will discuss about a different approach for Business-IT traceability based on UX, an architecture and a methodology to support constant process changes, navigation approaches and the right widgets for the right actions.

See you there!