Working on several platforms with different OS can become a nightmare. After several essays (screen switch, VNC software) I found the solution, I will access a Virtual Machine server through my MacOs Box.
Step one: Choose a software and Read the documentation
My first choice was to select VirtualBox as VM server. Indeed it is free and remote display is allowed. The other issue is also to adminstrate all my vm images and the pc on which virtualbox will be host. After googling a lot about this subject I found an open source solution RemoteBox
This software can be installed on MacOs 10.8 but need some works …
Step two: Installation of required softwares
This software is a package manager such as brew you can install compile and mange open source software on mac via macports.
Beware to install xcode before on your mac (if you have several version of xcode you have to run xcode select to define the default one).
sudo xcode-select -switch /Applications/Xcode45.app/Contents/Developer
2- Installation of MacPorts
Download it from the macports web site the latest version is 2.2.1 (choose your macos corresponding dmg). Install it.
3- Installation of X11
X11 is not installed on MacOS 10.8 so you have to download it. Indeed if you launch /Application/Utilities/X11.app/ a web page will appear to ask you to install XQuartz.app from sourceforge. Download the dmg (the 2.7.5 is the latest one) and install it.
Step three: library installation, script modification and first run
1- Installation of gtk2, soap-lite and rdesktop
RemoteBox need some libraries to work
sudo port install p5-gtk2 p5-soap-lite rdesktop
2- Modification of remotebox perl script
After dezipping the archive on your HD you have to modify tge remotebox perl script
change #!/usr/bin/perl by #!/opt/local/bin/perl
3- First launch
Click on remotebox script, here it is X11 is launched and ready to used.
Innovation makes people push their limits. Imagination is the only frontline. Business is cold and reuse old ideas, which aren’t mature for commercial use when they outcome. Inventors are forgotten and Business man becomes icones.
What I liked in IT company is the innovation promotion. During the 90s two major Software Companies compete to be the leader in innovation. However Microsoft won the business challenge, Apple was the heading company and Microsoft the follower. To stay in race Microsoft bought a lot of innovative startup without a clear strategy.
Now the competition is between Google and Apple. Apple is still good at innovation and Google try to keeps the distance. As Microsoft, Google works with a lot of startup company or get inspiration from these innovative company, but with a better integration strategy.
-The Impressive Street view is born with the collaboration of a canadian company
-The Project glass comes after some years of research by different companies
(Sony video glasses at CES 2009
Lumus OE-31 at CES 2012 … ).
But who cares, only one video make forget all these companies: Google Project Glass is every where in every mind. History is erased, only business is important and I am sad of it.
Coming from java ‘s land, I got some habits.
I was very surprised to see that xcode features seem to be as efficient as ecplise + maven.
In fact xcode got same concepts:
xcode workspace is equivalent to eclipse workspace
xcode project is equivalent to eclipse project
xcode target is equivalent to maven project
xcode scheme is like maven lifecycle.
Declarative configuration are also very similar.
Jenkins can also be used for continous integration. As in java (I have suffered a lot before maven 2.10), I spent a lot of time in configuration, linking error are very hard work
“duplicate symbol” some times appear because of category issue
Some people don’t use them because of this issues. But I can tell you it works. I succeed in not thanks to documentation, but thanks to video of WWDC, only available if you paid ….
Recently, I join an IOS Team.
I was in charge of designing the GUI. I was very surprised by the state of the art. However IOS 5 got a lot of advanced graphical components, a lot of things are missing, such as data binding, real skin, validators…
Yes all these things are integrated in java JDK and all these things are normalised. But right now the most buzzy langage is like java at the beginning of the year 2000….
Futhermore, objective-c is late compare to c sharp and java in graphical components framework. It’s like reinvent the wheel. I thinks that thinking different is not good in software revolution.
Issues when releasing
In theory “mvn release” ease developers to release maven project, that is to say:
- test the code
- tag the corresponding source
- deploy the artifacts to the repository
- create a web site for documentation
- Finally prepare the next iteration
But sometimes, maven become a nightmare. In this post I will give you two examples
which illustrate the issues we have to bypass.
1) The multi modules project case
Sometimes when you use multi modules project, you design your code with some
dependencies between modules. In this example below you have three modules.
project-impl depend on project-api ….
<modules> <module>project-api</module> <module>project-impl</module> <module>project-web</module> </modules>
In theory if the order of compilation is the same that the order in the parent pom, there’s no issue.
But in practice there’s compilation issues. Issues appear during release prepare and release perform.
Indeed release prepare has to compile the version n-SNAPSHOT artifacts and
the release perform has to compile the version n+1.
Compilation issues do not appear with mvn install so you can bypass with the following solution:
Solution very dirty
- mvn install (to compile version n-SNAPSHOT)
- mvn relase:prepare (it tags the version n in the scm)
- checkout the tag version
- mvn install (to compile version n)
- mvn release:perform
If you don’t do that you never deliver your project to your community.
1) The profile environment case
When you deploy artifacts on different repositories, one for developpement and one for production
you have to distinguish the two destination in the same pom.xml, that’s why you use profiles and the classifier tag.
Normally with that you will deploy your artifact in the right repository and the name
will have the right suffix.
<profile> <id>production</id> <distributionManagement> <repository> <id>production.repo</id> <name>My Production Repository</name> <url>Host to Production Repository</url> </repository> </distributionManagement> ... <classifier>prod</classifier> ... </profile>
In this example wi will have a jar filename like that artifaceID-version-prod.jar.
Unfortunately you will observe that pom.xml won’t be deploy when you release with a certain profile.
Solution crappy to deploy again the pom.xml.
Maven got a lot of bugs, which forbid developpers to use right out of the box for releasing software.
You have to inform your community with crappy solution or you have to patch the maven plugin for you
Issue on Repositories
Maven is composed by three different parts:
the binary (shell, jar and configuration xml files)
the local repository(jars and xml files)
the maven project
When you use maven you launch the binary to modify, compile and produce artifact from your maven project
all libraries are coming from repositories. This libraries are downloaded from external repositories to your local repository.
When you have a missing libraries.
The local and the external repositories does not contains your libraries.
You have to change something but what?
The default external repositories is
This is configured in a xml files (from the binary) the super pom.
You have to change it or to add other external repositories.
1) add new repositories in the pom file of your maven project
<project> ... <repositories> <repository> <id>my-internal-site</id> <url>http://myserver/repo</url> </repository> </repositories> ... </project>
2) add a mirror in the settings.xml
<settings> ... <mirrors> <mirror> <id>UK</id> <name>UK Central</name> <url>http://uk.maven.org/maven2</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors> ... </settings>
When you have missing libraries, you have to find which external repositories contains your libraries.
You can googled to find them. Then you have to add the external repositories.
The first way add specific repositories to your maven project.
The second one is to handle failure when repo1 is down.
A long time ago when I began to work, I was amazed, I discovered a magic command. The name of this fabulous command was make. Indeed this command did everything, I didn’t have to say words, it did it.
But sometimes it did wrong, I thought it depend of the mood of my computer. Unfortunately it was always complicate to debug.
Some decades later, I am less naive. But sometimes I think that Maven, is a lit bit like make, magic, moody and complicate.
In fact I think Maven is good for automate the build process, but not for replacing my IDE.
After developping java projects with Maven during thee years, I know that Maven is not easy, and can’t be used just out of the box.
That’s why I decide to write some post about it.
I will name it Maven heaven or hell or how to survive when maven won’t work.