CJUG Meeting 2011-02-15

We have another CJUG Meeting on February 15, 2011. Ray Ploski of Red Hat will talk about Drools. You can find info on the CJUG site here. You can RSVP for it here.

The past few CJUG meetings have gone pretty well. We are now having them at CME. It has really helped our attendance. We used to be lucky to get a dozen people. Now we get about 30. The RSVP software we are using is called gathers.us. It was made by a few guys here in Chicago. It uses the “freemium” model, and free events are limited to 50 responses. A few times we hit that limit. If we keep hitting it consistently we might have to either find something else or convince the GathersUs developers to increase that limit. They have responded to some feedback from me and a few other people, so we will see what happens.

For future CJUG meetings, there are some plans in the works. I will probably give a presentation in March on Android. Jeff Palmer of the Chicago Groovy Users Group will give one in April about Grails. Someone from a local consulting firm might be able to give one about hooking mobile apps up to JEE servers.

I would also like to get some presentations about some trends in the software industry. I think that the current threading model of concurrency is being replaced by the Actor model. The Akka library in Scala can also be used in Java. I would like to have a presentation on that. Also, NoSQL is gaining some traction. I would like to have a presentation on MongoDB, showing how to use it and some examples with the Java API.

If anyone could do these (or point me to existing presentations that I could use), that would be great. Alternatively, I could collaborate on these with someone. We could set up a GitHub account and hash out a presentation deck and some code; I think using Maven would be the best bet. I do not have a Mac, so the deck would have to be in OpenOffice.

Image from Wikimedia, assumed allowed under Fair Use. Image from the Vatican Virgil, a 5th century manuscript of poems by Virgil. Note: Some images may contain spoilers.

Events of the past few weeks

A couple of weeks ago I went to a technology conference at CME Group, arranged by Chicago Java Users Group‘s CME Contact, @agilefugue. There were three tracks: JVM languages, handing big data (Hadoop, caching) and agile methodologies.

I attended one of the big data talks and two of the JVM language talks: Scala with Daniel Spiewak (website, twitter) and Clojure with Aaron Bedra (website, twitter). One of my goals is to learn a functional language. I was going to look at Scala, but now I am thinking about Clojure. There are a lot of braces, brackets, parentheses, arrows and other stuff in Scala. It looks like line noise to me. I am still getting used to the parentheses of Lisp.

I have been reading a few articles on Lisp (such as this one and Paul Graham’s articles), and I starting to go through Practical Common Lisp. So I will go through that and check out Clojure a bit more.

We had a meeting for the Chicago Java Users Group on the 16th. Michael Segel gave an intro to Hadoop. He is the co-founder of the Chicago Hadoop Users Group. Contact them to find out more about Hadoop. A lot of companies in Chicago are using it.

I attended a meeting for Chicago Android. I stayed for an hour, but they could not hook up one of the big screen tvs to the host’s laptop. I am starting to get serious about Android.  It has taken me a while to think of an app to make, but I am starting to get a few ideas. There seems to be a big push to make Chicago a big center for mobile and Android development.

I also attended a seminar put on by Morgan Stanley about private equity. The speaker was one of the founders of Hyde Park Angels. The venture capital/startup community in Chicago seems pretty big. He gave some interesting statistics about the amount of money invested in companies throughout the state of Illinois (with Chicago being about half):

  • 2008: $467 million
  • 2009: $184 million
  • 2010 (January 1-June 30): $432 million

So it looks like the economy is looking up. There is another indicator: The floor I am on at work is filling up.

 Image from Wikimedia, assumed allowed under Fair Use. Image from Bibliotheque Nationale, MS It. 81, around 1310.

James Admin Web App might get used

There is a thread on the Apache James mailing list about making an application to manage Apache James to replace the Remote Manager telnet application. A few people mentioned JMX. Someone mentioned the James Admin Web App, and someone else emailed me off-list.

The James Admin Web App uses JSF and Hibernate to change the database directly to add and delete users, get a count of users, get some stats on messages in inboxes, and delete the messages in the dead letter table.

The James Admin Web App never seemed to gain much traction, and I stopped pushing it. But it might lead to something. I emailed to the list that I am willing to be involved. We will see what happens.

 Image from Wikimedia, assumed allowed under Fair Use. Image from the Roman Vergil, a 5th century manuscript of poems by Virgil.

Making a Static Site with OpenCms

This page will describe how to use OpenCMS to make a static site.

You must enter your server’s MAC address during installation. I never tried to enter a bogus one, so I do not know what would happen. There are about 19,537 steps during the import process. It takes about 10 minutes.

Make a new project. First make a root folder for your site. A good place is under “/sites”. Publish the offline project. Go to the Administration view. When you make a new project, you have to select a location on the virtual file system for the “Content | Resources” section. The root is good. Otherwise you will not be able to make a new folder. This eliminates all the other stuff on the menu.

In order to export the files, you need to set “Export” to “True” for the folder. Click on the folder icon, select “Advanced | Secure/Export”, and set Export to “True”. Publish the project for this to take effect. If you do this for a folder, this setting will be inherited by any new files and folders that you create under it.

To make a new page, you select the “New” icon along the top, and select “Page with free text” in the menu. When using the editor, you want to put the text into the “Body” element.

To export the site, you first must publish it using the “Publish” button on the Explorer view. Then you need to go to the “Administration” view, select “Database Management”, and select “Start Static Export”. As far as I know, you need to go through this every time you make a change in order for the changes to be reflected in your static export. The export step itself takes a few minutes.

After I export, I like to copy the files from my Tomcat directory to my Apache web server on my local machine to test the site out. Here is a bit of a script:

export WWW_ROOT=/var/www
export TOMCAT_ROOT=/zEKM/jarFiles/apache-tomcat-6.0.18
mkdir opencms
mkdir opencms/export
cd $WWW_ROOT/opencms/export ; cp -rvfp /zEKM/jarFiles/apache-tomcat-6.0.18/webapps/opencms/export/* .
cd $WWW_ROOT/opencms;
ln -s export/ opencms

The soft link above will need to be recreated on a server if you FTP the files somewhere else.

The file opencms/opencms/system/modules/org.opencms.frontend.templatetwo/resources/css/style.css did not export. Its export prop was set to false.

After that, it is pretty easy to make new folders and pages in your site.

  Image from Wikimedia, assumed allowed under Fair Use. Image from the Roman Vergil, a 5th century manuscript of poems by Virgil.

The Groovy Crescent

In addition to knowing Java, I have decided to start learning other languages. There are a bunch out there, so I decided to stick to languages that run on the JVM. In particular, I will stick to languages that are indigenous to the JVM, like Groovy or Scala, as opposed to languages that have been ported to the JVM like Ruby or Python.

I was in Texas recently, and someone asked for volunteers for help with a Grails project. I gave him my card, and he sent me a link to the project and a link to an online book about Grails. So I am now learning Groovy.

I have been attending the Chicago Groovy User Group meetings over the past few months, and I think that this Groovy language is a good thing to get into. They said the Midwest seems to be the center of the action for Groovy in the USA. One of the speakers was an author well-known in the Groovy community who lives in Saint Louis, the big GR8 Groovy conference was a few months ago in Minneapolis, and there are some decent-sized Groovy groups in Chicago, Madison and Milwaukee. So it seems like there is a Groovy Crescent in the Midwest.

 Image from Wikimedia, assumed allowed under Fair Use. Image from the Roman Vergil, a 5th century manuscript of poems by Virgil.

2010-05-27 Update

The James Admin Web App is currently on hiatus. I updated the files, but someone tried it and I did not upload the jsp files.  I must have done something wrong in git on my machine. Plus my hard drive is having issues. Based on Google searches of the error messages, I think I just need a new power supply.

Update on James Admin Web App

I made a few changes and cleaned up the James Admin Web App. I also added a few pages on the wiki explaining a bit on how to configure it and use it. I will post an announcement soon the James mailing list. Perhaps I will get some more response.

I posted that I planned on changing from JSF to Struts 2 since I see more demand for Struts 2 in the marketplace, but someone posted that I should stick with JSF since that is the official JEE standard. It was nice to see another person commenting on my project.

 Image from Wikimedia, assumed allowed under Fair Use. Image from the Roman Vergil, a 5th century manuscript of poems by Virgil.

Update on James Admin Web App

I am “Maven-izing” the James Admin Web App. It took a while. I was having a problem getting the Faces Servlet to work. I would either get blank areas on the screen, or the exception “java.lang.RuntimeException: Cannot find FacesContext”.

Part of the problem was the line with the tag library URL. This is what worked in NetBeans when I was using the NetNeans project format:

<%@ taglib uri=”http://java.sun.com/jsf/core”      prefix=”f” %>

Here is what worked:

<%@ taglib uri=”http://java.sun.com/jsf/core” prefix=”f”%>

Yes, those spaces before the word “prefix” and between the “f” and the percent sign made all the difference. I do not know exactly why that is. I did some Googling, and I was not able to find anyone else who had this problem.

 Image from Wikimedia, assumed allowed under Fair Use. Image from the Roman Vergil, a 5th century manuscript of poems by Virgil.

James Admin Web App

I posted an announcement about the James Admin Web App to the James developer list:

I started a project on GitHub that is a web project that people can use to perform some administrative tasks on a James mail server.

The URL is http://github.com/emacadie/James-Admin-Web-App

It works with the James 2.3 schema. It does not work with James servers that store messages and user info on the filesystem. There have been some requests/complaints for an easier way to perform some admin tasks in James. I found a link to something on sourceforge on the James wiki, but that project was abandoned.

It is still a bit rough, but right now, you can add, delete and list the users, as well as get a count of messages in the deadletter table, delete the messages in the deadletter table and get a count of the messages for each account in the inbox.

I use Hibernate and MySQL. I assume it would work with other databases, but I have not tried to set up another database with my James server.

I am starting to look into the code for James 3. Perhaps James 3 makes this obsolete. Right now the documentation is pretty sparse. Anyway, try it out and let me know what you think.

 Image from Wikimedia, assumed allowed under Fair Use. Image from the Roman Vergil, a 5th century manuscript of poems by Virgil.