ro:mu:s event at the lake Zug

by Didier 26. June 2010 09:33

Some colleagues from Innoveo and I were invited yesterday by our colleagues, friends and partners from the ro:mu:s company, which is bringing very high-valued and professional consulting in the fields of organization, project management and business advisory.

Their yearly event took place at the lake Zug, a absolutely fantastic place, specially with the cuper weather we had yesterday! We were on a boat during about 3 hours, making a slow trip all around the lake, with all these beautiful landscapes. And with some good food and wines. So an excellent evening!

Warm thanks guys for the invitation and friendly organization! (and thanks to Cédric for the pictures ;-)


As you see, I'm always well-positioned when it's a matter of food ;-)

Cross-posted on Didier Beck blog

Eclipse shared install on a Windows Server 2003/2008

by cedricwalter 6. June 2010 05:37

maven-logo-2 eclipse

I did develop this solution at work for our internal purpose at www.innoveo.com. Going away from the paradigm “As a developer I run everything locally” isn’t easy to accept but in some rare cases, it make sense. Below I list what I consider to be the main advantages and drawbacks.

Stability

  • Not everybody is changing the developer environment as you need admin right to be able to do changes, more stability.
  • The developer environment is standardized: convention over configuration always pays like in Apache Maven.

Sharing

  • you can work from anywhere as long as you have an internet/VPN connection
  • You can move your working place around, show your workspace to a colleague, reduce your coupling to Windows, use Linux, use a Mac!

Security

  • The source code stay on the server, if someone steal notebooks you don’t loose your software assets.

Efficiency

  • Somebody maintains the developer environment and settings for you, some developers can still beta test a new eclipse version before till it is considered stable.
  • Rollout is limited to a minimum loss of time, as you will see below 
  • Setting up a new developer account is basically settings up a new account on the shared server, running 3 lines of shell.
  • The server  is not full of unwanted applications running in background, only java.exe. eclipse.exe, databases can still run on another server (MYSQL, Oracle), runtime environment (Tomcat).

Speed, speed and speed

  • A server is cheap compare to one big notebook for every developer.
  • Server is most of the time fully 64bits, may have up to 8 cores, RAID 5 typically  output 350Mb/s read (a good notebook: 32 bits, 2 cores and 80Mb/s without SSD)

Drawbacks

  • A shared developer environment is a Single point of failure –> you need a very good backup, and eventually hardware fallback machine in hot standby!
  • You can not work if developer have no or limited internet access, in train for example.
  • It required a bit of initial engineering, hence this article.

Access

Windows

Use Windows Remote desktop connection, define a DNS entry to access the server.

remote.desktop

Linux

Linux has a free remote desktop implementation of Microsoft protocol, if it not installed, run either on Debian

# apt-get install rdesktop

or in OpenSuSE

# zypper install rdesktop

or in RED HAT

# yum install rdesktop

Create a script .sh file to save the connection parameters:

rdesktop -A -C -k de-ch -r PRIMARYCLIPBOARD -u username -p password -xl  ipadress

 

Eclipse

One install for all users

  1. Unpack the latest eclipse in any location, I recommend on c:\eclipse-3.5, but any location where you have some space will work.
  2. Start eclipse as administrator and install all required 3r party plugin: we use M2Eclipse, Subversive for example.
  3. Stop Eclipse,
  4. Remove ALL write rights to ALL users including admin if needed.
  5. When Eclipse will start under a developer account, it will copy its configuration files into C:\Users\%USERNAME%\.eclipse
  6. Every users will be able to adjust the eclipse.ini but these settings are a good start (adapt memory to your requirements)
  7. Create a shortcut for every developer on their desktop pointing to c:\eclipse\eclipse.exe

C:\Users\cedric.walter\.eclipse\org.eclipse.platform_3.5.0_1770938306\configuration\eclipse.ini

-startup
plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.0.200.v20090519
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
-configuration
../Users/cedric.walter/.eclipse/org.eclipse.platform_3.5.0/configuration
-Dfile.encoding="UTF-8"
-vmargs
-Xms2048m
-Xmx2048m
-XX:PermSize=256m
-XX:MaxPermSize=256m
-XX:+UseParallelGC

Updating Eclipse

A rollout of new Eclipse version is easy thanks to symbolic link. Download junction.exe, a small tool to create symbolic links

Windows 2000 and higher supports directory symbolic links, where a directory serves as a symbolic link to another directory on the computer.

and run as admin

junction.exe c:\eclipse c:\eclipse-3.5

Now thanks to symbolic links any update to a major new version of eclipse will be plain easy: just delete the symbolic link c:\eclipse and create a new one to the new version!

Users with Multiple Eclipse workspaces

  1. Create an empty directory for hosting your new workspace, for example at
        e:\%USERNAME%\workspace\maven
  2. Create a new shortcut with this content
    C:\eclipse\eclipse.exe --launcher.ini
    "C:\Users\\%USERNAME%\.eclipse\org.eclipse.platform_3.5.0_1770938306\configuration\eclipse.ini"
    -data e:\\%USERNAME%\workspace\maven

Apache Maven

Maven Local repository, every user has it’s own

It is not recommend to share the local Maven repository cache among users as Maven has no locking concept in place. The local maven repository is expected to be located at

c:\users\%USERNAME%\.m2\repository

If you have enough space there for all your users, you can skip that chapter, Otherwise I will show you how to locate it anywhere on the file system.

Let’s store it at e:\%USERNAME%\repository, here I have choose another drive with more space as Maven local repository can be quite big (700Mb per user today)

The design chosen impose me to one more time play with symbolic links, using junction.exe in c:\users\%USERNAME%\.m2\repository pointing to e:%USERNAME%\repository

When you are logged in as a normal developer account, in a dos windows, run the following

junction.exe c:\users\%USERNAME%\.m2\repository e:\%USERNAME%\repository

Maven settings.xml, one for all users

I like the idea to maintain only one settings.xml. Apache Maven recommend to have one settings.xml per user (located in c:\users\%USERNAME%\.m2\settings.xml). This is true if you have different responsibilities among all your developers. For example some may not be able to deploy in Artifactory/Nexus while other can. Luckily, this is not the case as for today in our company. That is why I will only have one Settings.xml on server, located at c:\server.xml

I will use a hard link to c:\settings.xml. When you are logged in as a normal developer account, in a dos windows, run the following

fsutil hardlink create c:\users\%USERNAME%\.m2\settings.xml c:\settings.xml

This make Apache Maven think that the settings.xml is in the default location c:\users\%USERNAME%\.m2\

Updating Maven

I do use the same trick for having a unique version of maven binary on the server while keeping some flexibility thanks to symbolic links.

  1. Unpack Apache Maven anywhere
  2. As an admin, in a dos windows, run the following:
    junction.exe c:\maven-3.0-beta1 c:\maven

Now you can let all your developer reference in M2Eclipse this virtual directory c:\maven. Switching all developers to a new version is done by deleting and pointing to an older/newer version of Maven.

It is not finished

Our shared developer environment setup also virtualizes MYSQL (multiple schema per developer ) and Tomcat (per developer port range) using –D system variables in eclipse.ini

References

Scenario #2 - shared install

Cross-posted on Cedric Walter Weblog

 

In this scenario, a single install area is shared by many users. The "configuration" directory under the install area is home only to the config.ini as shipped with the product (it is not initialized). Every user has their own local standalone configuration location.

The set up for this scenario requires making the install area read-only for regular users. When users start Eclipse, this causes the configuration area to automatically default to a directory under the user home dir. If this measure is not taken, all users will end up using the same location for their configuration area, which is not supported.

JAZOON 2010, Day 1

by cedricwalter 6. June 2010 05:33

v3_jazoon_subt_black_web

After the latest keynote at 19:00PM

Innoveo meet Adcubum @ JAZOON

With some colleagues of Adcubum AG

4662410921_681f95f639

From left to the right: Michael Duenner, Cédric Walter, Leif Jakob, Stefan Buehler, Adrian Schawalder.
Note: I am drinking orange juice!

4663026950_eafe849639

From left to the right: Adrian Schawalder, Roger Holger, Cédric Walter and Leif Jakob.

Cross-posted on Cedric Walter Weblog

JAZOON 2010 - Total Cost of Ownership

by cedricwalter 6. June 2010 05:31

I will attend the keynote of Ken Schwaber @JAZOON 2010, before heading to the Office

Keynote
Wednesday, 2 June 2010, 9:00-10:00, Arena 5


Ken Schwaber
Scrum.org

Abstract
Scrum is the dominant Agile process, used by 84% of all organizations claiming to be agile. However, Martin Fowler calls Scrum “flaccid.” Worse, Jeff Sutherland, the codeveloper of Scrum with Ken Schwaber, measures that less than 50% of all organizations using Scrum are actually using iterative, incremental development. As Scrum spread, its founders expected the developers who had been disabled by waterfall would come back to life as excellent, well-tooled developers. The expectation was naive, given the rot that waterfall caused over the last twenty years.
To address this problem, Scrum.org partnered with Zuehlke and others to create as “immersion” course to revitalize the developers. The Professional Scrum Developer (PSD) course is a novel five-day course that teaches a cross-functional development team to be able to develop an increment of potentially shippable product within an iteration, or Sprint, on a Scrum Project using Java, .NET and other technology stacks.
Ken Schwaber from Scrum.org.will discuss this program and how it is constructed during this session. They will also discuss the progress to date in delivering these courses, and the next steps in the rollout.

Cross-posted on Cedric Walter Weblog

Jazoon 2010 in Zurich Sihlcity

by cedricwalter 6. June 2010 05:29

v3_jazoon_subt_black_web

Tomorrow I will be tweeting from the international industry conference on Java technology

Jazoon is an international industry conference on Java technology in Zurich. It addresses software developers and architects, IT decision-makers and consultants throughout Europe and around the world. Jazoon gives Java experts a platform in the heart of Europe where they share their ideas and experiences.
From 1 to 3 June 2010, Zurich will be the meeting place for the international Java community. By presenting a comprehensive conference program and creating a communicative atmosphere, Jazoon helps personal contacts grow and transcend technical, geographical and cultural boundaries. A supplementary program including an exhibition of solutions, tools and continuing education as well as career opportunities and various networking events ensure added benefits for every target group.

I am planning to attend the following conferences:

Tuesday, 1 June 201

9:30-10:30
Java SE and JavaFX: The Road Ahead
- Danny Coward

11:00-11:50
Pattern Driven Security Design, for Web Tier
- Manish Kumar Maheshwar

12:00-12:50
Web Frameworks and how they kill traditional security scanning
- Christian Hang
- Lars Andren

14:00-14:50
Practical Dynamic Modules (OSGi) Security -- Protecting More Than Just Data
- David Smith
- James Gould

15:00-15:50
Construction Techniques for Domain Specific Languages
- Neal Ford

16:30-17:20
If You Know JSF, You Know Portals and Portlets
- Wesley Hales

17:40-18:30
97 Things Every Programmer Should Know
- Kevlin Henney

Thursday, 3 June 2010

9:00-10:00
The Gaia satellite and Data Processing
- William O'Mullane

10:30-11:20
Essentials of Testing: The Tools You Need to Know
- Bettina Polasek
- Marco Cicolini

11:30-12:20
Spring 3.0 - Themes and Trends
- Jürgen Höller

13:30-14:20
Conversational Web Applications with Spring
- Micha Kiener
- Jürgen Höller

14:30-15:20
Spring ROO - A New Level of Enterprise Java Productivity
- Eberhard Wolff

16:00-16:20
Real Java EE testing with Arquillian
- Aslak Knutsen
- Dan Allen

16:00-16:50
Powerful Portals with JSF
- Andy Bosch

17:10-18:10
Software in the service of handicapped people: Research & Development at Otto Bock
- Hans-Willem van Vliet

Cross-posted on Cedric Walter Weblog

About Innoveo

Innoveo is a software company whose products, services and technologies enable its clients to create business value. Its expertise in architecture (SOA), software engineering, infrastructure, and the insurance industry ensures that the company remains a valued business partner over the long term.

Month List