The Source for Java Technology Collaboration
User: Password:



Felipe Gaucho's Blog

February 2006 Archives


Using OpenSource projects as classroom material

Posted by felipegaucho on February 19, 2006 at 09:32 AM | Permalink | Comments (3)

In the last CEJUG - Café com Tapioca, I introduced Cejug-Classifieds as a project designed to be a study-case for the J2EE community. The aim of the project is to allow university students to test their subjects on an alive project, taking advantage of collaborative effort in a real J2EE test bed. The reduced scope and some didactical strategies serve as guidance to students and are also a way for teachers to follow up their pupils learning. Some of these strategies are enumerated below:

Strategies used to facilitate the adoption of the project as classroom material

  • The project is an implementation of the chapter 6 of the book Core J2EE Patterns. The book can be used as a guide for the understanding of the code. Every pattern proposed at chapter 6 has an implementation into the project, and students can learn with patterns in action. The correctness of the implementations, the way patterns interact among the others and the J2EE details seem a good starting point for lectures and class debates.
  • The classes receive a suffix identifying their patterns, for example: the source of a helper class is named ClassnameHelper.java.
  • The package names also receive a suffix identifying their patterns, i.e., the pattern adopted by the classes that composes the package.
    • This suffix strategy promotes the following project tree:
      .
      root.gif JavaSource
      empty.gifi18n
      folder.gifnet.java.dev.cejug.classifieds.bean
      folder.gifnet.java.dev.cejug.classifieds.command
      folder.gifnet.java.dev.cejug.classifieds.controller
      folder.gifnet.java.dev.cejug.classifieds.dao
      folder.gifnet.java.dev.cejug.classifieds.filter
      folder.gifnet.java.dev.cejug.classifieds.helper
      folder.gifnet.java.dev.cejug.classifieds.security.jaas
      folder.gifnet.java.dev.cejug.classifieds.security.jce
      folder.gifnet.java.dev.cejug.classifieds.taglib
      folder.gifnet.java.dev.cejug.classifieds.timer.task
      folder.gifnet.java.dev.cejug.classifieds.util
      .

The subjects explored in the current release

Despite every J2EE technique can be explored in the Cejug-Classifieds, some of the classical patterns and web application features were already discussed and implemented by the project members. The available code includes:

Message for teachers

Dear teacher, just as you are, I'm a teacher of undergratuate courses of computing and I share your anxiety about how better to teach and how to provide powerful learning stuff to the students. My frequent search for useful tools in teaching requires innovative thinking, such as the one I described above. Some ways you can use the Cejug-Classifieds in your classroom:

  • Just download the project contents from CVS and evaluate it with your students
  • Ask for a CVS branch in order to keep your own version of the classifieds. The enhancements you do in these branch can eventually be merged into the project head.
  • Ask for a subproject or a separate study project inspired on the classifieds, perhaps with a formal link between the projects with a guidance from the java.net community leader.
  • Ask me for an isolate folder inside the project, where you and your students can create a new flavor of the project
  • Your idea here - the main goal of the project is to become a good tool for teaching and every idea about how to reach that will be considered.

If you agree with the idea of an Open Source project designed to be used into classrooms, please help to improve this idea and also give some clue about how my project could help your students. Let's share teachers experiences. Just send me your thoughts about the model of Cejug-Classifieds as learning tool or comment any other trick you have adopted in your university.

Message for students

You are always welcome to learn from java.net projects. If you have new ideas on how such didactical project could evolve to become a good experience, be my guest to post your point of view. Students are the target audience of the project and your sincere opinion is one of most important quality indicator of our project.

Next steps

A complete description of the project and its design is a subject for a further article, but the above brief introduction of its goals cam help you to join our efforts.The next steps are formalizing a documentation about the usage of Open Source projects as didactical tools and also evolving the ideas with your contribution.

The enigma of the T-shirt

During my presentation on the Café com Tapioca, we distributed free t-shirts about the event. On the front side of the T-shirts, you can observe an enigmatic set of letters representing a secret sentence. The first person who reveals the secret message will receive a gift. Just a tip: all you need to decipher the enigma is on the T-shirt and/or into the project code. The t-shirt photos and the enigma are below:

front side - click to enlarge back side - click to enlarge
ERRATA: unfortunately the t-shirt was printed with some wrong character, and unfortunately I don't have more the original. Sorry by the inconvenience. In order to keep the competition, I'm posting the new set of (tested) characters:

ruRQ3oY91/UdghBSLuzbrkBk/v7k/w2VV9fUwlGMhOf195kgvXh6aTZkbH3H5wZh+GdewgnB4xYvv1SljdckdjcHWfxY
LLbUqMmHVle7nu2AgehG4pHZ/Z3uW/J0NgbjdcZuE6jf/tHUPaMkiNIlzXgtqSkLhlpzN/9nSggDVSu+EHBW+bvW8w==

Good luck ;) all photos of the event and the presentation in Brazilian Portuguese are here.



The IDEs are driving us crazy

Posted by felipegaucho on February 09, 2006 at 12:13 PM | Permalink | Comments (12)

Activities Report #02:

Planet Earth, 2006 A.D.
Workstation: java.net
Module: Cejug-Classifieds
Status: active
MEMBERS PROFILE:
orrego: Spanish native speaker. OS: MacOS 3.1. IDE: Sun Studio Creator.
rajesh_sannareddy: Indish native speaker. OS: Linux 3.1. IDE: Eclipse.
java.net robot: en_US default locale. OS: Solaris. IDE: console.
raphael_paiva: Portuguese native speaker. OS: Windows 2000. IDE: MyEclipse.
felipegaucho: Portuguese native speaker. OS: Windows XP. IDE: WTP 0.7.
Date: Time: From: Entry:
01, Wednesday11:30pmCHILEorrego modifies some presentation files and commits to the CVS repository.
02, Thursday1:00amINDIArajesh_sannareddy update the controller in order to show the new features on the web.
02, Thursday1:30amUSAjava.net cruise control robot triggers the integration tests. Snapshot release is published on the test server.
03, Friday8:15pmBRAZILfelipegaucho tries the snapshot and gets several usability problems. Flushed characters suggest encoding problems in the files stored into the CVS repository.
04, Saturday9:00amBRAZILraphael_paiva fixes the character encoding. He send a mail to the team asking why the code still formated with 80 columns Line Wrapping.
04, Saturday9:30amUSAjava.net cruise control robot triggers the integration tests. Snapshot release is published on the test server.
04, Saturday2:10pmBRAZILfelipegaucho tries the snapshot release and notice that all features were working ok. The snapshot release is published on the project web site. The team receives a mail about encoding - the source of the problem is still unknown

If you had patient to observe the above report, you noticed some messy running on the code produced by the project team during february. The scenario is simple:

My project has members from many countries in the world, everyone using a different IDE, a different operational system and speaking a different idiom. All the people are motivated to do the best to put the project in the right way, but this Babel of tools are causing much more problems than solutions.

Seems familiar ? I guess so because almost every project I ever seen in my life suffers from configuration problems. If you are a member of a project in which every person could choose his own development environment, I'm sure you have painfull experiences with the code-style, integration and even the project communication. It is so common I decided to register this situation here in my blog.

Two other recent situations I experienced in my projects:

  1. The project I'm working uses a modified template where the Line Wrapper was modified to 255 columns, instead of the traditional 80 columns. One week of good job and I decided to update my IDE - I installed the new version in my computer and keep working on the code. Few days later a colleague asked me: did you change the Line Wrapping rule?. Of course, as human being, I was tired and also excited with the new version of my IDE - and I simply forgot to redefine its defaults before start working.
  2. A member of my Open Source project decided to contribute - he updated the CVS snapshot and fixed several open issues. Great job, unless a mute trap - the IDE he was using adopted the file encoding of his operational system, completely different from the project defaults. Nowadays, the project has part of its code in UTF-8 and part of it in Cp1252.

Machines: please don't think, just obey

The configuration problems seem ontological to computing and I can't imagine great solutions without much human interference. Despite that, several IDE vendors are designing heuristics to provide their IDEs the ability to guess what the humans are trying to do. This comfortable feature causes lazyness and ignorance about the development details - such as file encoding or code-style, for example. When a machine start taking decisions instead to ask the person what to do, the problems start. I think friendly IDEs as a great stuff, but it should be less pretentious about their ability to help us in our duties.

Some ideas: project descriptors like the ones used by Maven seem a great idea and something like that could be available for the IDEs. Imagine for a minute a specification of a XML Schema created by a consortium of IDE providers, in order to unify the project descriptors. Imagine now that every IDE forces the user to inform this default project descriptor in order to start a new project. Wonderful ? I guess so. Unfortunately, it seems far beyond the reality. For now, all responsability to reconfigure every new tools is still on humans and, you know, humans are not perfect.

Until we can figure out a solution for configuration problems, I enumerated a sanity checklist to help you to keep your team working together - if you know smart ways to avoid configuration problems, please let us to know.

Tricks to keep the team sanity:

  • Be simple - don't reinvent specifications unless you have a serious reason to do that.
  • Create templates for all kind of documents, including source code, documentation and communication stuff. Ask the team members to adopt it.
  • Use Ant, Maven or any console builder tool. Keep away the IDEs from your builds.
  • Use some continuous integration tool, such cruisecontrol or luntbuild - it will early alert you about the mess running underneath the CVS.
  • If possible, create alerts for the most common mistakes induced by the IDEs, such as file encoding or proprietary code formating.
  • Be patient, for now we depend on human memory to keep the things working on. Unfortunately, people are not machines and eventually your project will fail because someone was thinking about his girlfriend instead of code formating ;)
  • Don't confuse friendly IDEs with intelligence, they are simulacrum of someone else thinking - someone that can think very differently from you.




  • Powered by
    Movable Type 3.01D
     Feed java.net RSS Feeds