Problem running Shared VMs on Windows 2008 R2 in WMware Workstation 9.0.2
UPDATE: SOLVED THE PUZZLE !!
After I had removed “127.0.0.1 localhost” from the Windows hosts file, everything works fine now
I have installed WMware Workstation 9.0.2 on a Windows 2008 R2 Server. Everything works fine, except I cannot enable sharing of VMs in the configuration.
The WMware Workstation server service starts, but dies after a few seconds. I have already searched the usual sources for a solution. ( replacing datasources.xml, re-installing the software after removing all previously installed components and cleaning the registry … ) I also made sure that the HTTPS port is not in use. Nothing helped.
I installed the software on a VM running Windows 2008 R2 and it worked immediately. I replaced the files on the physical machine with the ones from the VM. Same issue …
I really cannot figure out, what is going wrong. From the log I can see, that the service dies, while the software continues logging on the VM with the working setup.
Here is some more information from the log. Perhaps someone can tell, what is going on …
2013-07-28T09:47:02.376+02:00 [02172 info 'Proxysvc'] Proxy config filepath is C:\ProgramData\VMware\hostd\proxy.xml
2013-07-28T09:47:02.376+02:00 [02172 trivia 'TCP'] getaddrinfo((null), 9443, &hints, &result) returns {[::]:9443, 0.0.0.0:9443}
2013-07-28T09:47:02.376+02:00 [02172 info 'TCP'] WSASocket(23, SOCK_STREAM, 0, NULL, 0, WSA_FLAG_OVERLAPPED)returns 904
2013-07-28T09:47:02.376+02:00 [02172 info 'TCP'] CreateIoCompletionPort(handle=904, _iocp=28, key=1, NULL)
2013-07-28T09:47:02.376+02:00 [03116 info 'Default'] Thread attached
2013-07-28T09:47:02.376+02:00 [03116 info 'ThreadPool'] Thread enlisted
2013-07-28T09:47:02.376+02:00 [02172 trivia 'TCP'] bind(socket=904, addr=[::]:9443, len=28)
2013-07-28T09:47:02.376+02:00 [02172 trivia 'TCP'] listen(904, SOMAXCONN)
2013-07-28T09:47:02.376+02:00 [02172 info 'TCP'] WSASocket(2, SOCK_STREAM, 0, NULL, 0, WSA_FLAG_OVERLAPPED)returns 908
2013-07-28T09:47:02.376+02:00 [02172 info 'TCP'] CreateIoCompletionPort(handle=908, _iocp=28, key=1, NULL)
2013-07-28T09:47:02.376+02:00 [02172 trivia 'TCP'] bind(socket=908, addr=0.0.0.0:9443, len=16)
2013-07-28T09:47:02.376+02:00 [02172 trivia 'TCP'] listen(908, SOMAXCONN)
2013-07-28T09:47:02.376+02:00 [02172 info 'Proxysvc'] Plugin initialized
2013-07-28T09:47:02.376+02:00 [02172 info 'Nfc'] Startup breakpoint disabled
2013-07-28T09:47:02.376+02:00 [02172 info 'Nfc'] Mockup false
2013-07-28T09:47:02.376+02:00 [02172 info 'Nfc'] File Services initialized fmgr([class NfcSvc::NfcFileManager:0231E1D8])
2013-07-28T09:47:02.376+02:00 [02172 info 'NfcManager'] [NfcManagerImpl] NfcManagerImpl created
2013-07-28T09:47:02.392+02:00 [02172 info 'Ovfmgrsvc'] Plugin initialized
2013-07-28T09:47:02.392+02:00 [02172 info 'Statssvc'] Initializing statssvc plugin
2013-07-28T09:47:02.392+02:00 [02172 info 'vim.PerformanceManager'] Collection interval is 20 sec
2013-07-28T09:47:02.392+02:00 [02172 error 'vim.PerformanceManager'] Stats Depot has future timestamps. Discarding old statistics information
2013-07-28T09:47:02.392+02:00 [02172 warning 'vim.PerformanceManager'] Reverting to default stats configuration
2013-07-28T09:47:02.439+02:00 [02172 info 'SupportsvcPlugin'] Plugin initialized
2013-07-28T09:47:02.439+02:00 [02172 info 'VcsvcPlugin'] Plugin initialized
2013-07-28T09:47:02.439+02:00 [02172 info 'ha-host'] About:(vim.AboutInfo) {
--> dynamicType = ,
--> name = "VMware Workstation",
--> fullName = "VMware Workstation build-1031769",
--> vendor = "VMware, Inc.",
--> version = "9.0.2",
--> build = "1031769",
--> localeVersion = ,
--> localeBuild = ,
--> osType = "win32-x86",
--> productLineId = "ws",
--> apiType = "HostAgent",
--> apiVersion = "5.1",
--> instanceUuid = ,
--> licenseProductName = "VMware Workstation",
--> licenseProductVersion = "9.0",
--> }
2013-07-28T09:47:02.439+02:00 [02172 info 'ha-host'] Initialized StoragerRM/Vmsvc powering-on interceptor
2013-07-28T09:47:02.470+02:00 [02172 info 'HostsvcPlugin'] Plugin started
2013-07-28T09:47:02.470+02:00 [02172 info 'HttpSvc.HTTPService'] Using default for nonChunkingAgents: 'VMware VI Client|VMware-client|VMware-client/3.*'
2013-07-28T09:47:02.470+02:00 [02172 info 'HttpSvc.HTTPService'] Using default for agentsNeedingContentLength: 'VMware-client'
2013-07-28T09:47:02.470+02:00 [02172 info 'HttpSvc.HTTPService'] Max buffered response size is 104857600 bytes
2013-07-28T09:47:02.470+02:00 [02172 warning 'WelcomePageCustomizer'] Error loading OEM link information. The system cannot find the path specified.
2013-07-28T09:47:02.470+02:00 [02172 verbose 'WelcomePageCustomizer'] Created customizer with oem file '/etc/vmware/oem.xml' and dynDataUrl '/dyndata.js'.
2013-07-28T09:47:02.470+02:00 [02172 info 'HTTP server'] HTTP server created with docroots C:\Program Files (x86)\VMware\VMware Workstation\hostd/extensions/;C:\Program Files (x86)\VMware\VMware Workstation\hostd/vimLocale/;C:\Program Files (x86)\VMware\VMware Workstation\hostd/coreLocale/;C:\Program Files (x86)\VMware\VMware Workstation\hostd/docroot/, chunked responses enabled: true
2013-07-28T09:47:02.470+02:00 [02172 info 'Solo'] soapPort: 8307
2013-07-28T09:47:02.470+02:00 [02172 trivia 'TCP'] getaddrinfo(localhost, 8307, &hints, &result) returns {127.0.0.1:8307, 127.0.0.1:8307}
2013-07-28T09:47:02.470+02:00 [02172 info 'TCP'] WSASocket(2, SOCK_STREAM, 0, NULL, 0, WSA_FLAG_OVERLAPPED)returns 920
2013-07-28T09:47:02.470+02:00 [02172 info 'TCP'] CreateIoCompletionPort(handle=920, _iocp=28, key=1, NULL)
2013-07-28T09:47:02.470+02:00 [02172 trivia 'TCP'] bind(socket=920, addr=127.0.0.1:8307, len=16)
2013-07-28T09:47:02.470+02:00 [02172 trivia 'TCP'] listen(920, SOMAXCONN)
2013-07-28T09:47:02.470+02:00 [02172 verbose 'TCP'] closesocket(920)
2013-07-28T09:47:02.470+02:00 [02172 info 'Default'] Win32 service stopped
2013-07-28T09:47:02.470+02:00 [02172 info 'Default'] Thread detached
[Follow up] – Unable to load text filter library: … IBMLotusDominokvfilter.dll
I was able to solve the issue. As I wrote in the recent article, it had to do with the M$ C++ Redistributable packages. Either a conflict or something was missing or a configuration problem. Using sxstrace is not of much help. If you are not familiar with this stuff, you will only get a bunch of information, but you would not know, what to do with it. And I doubt, that someone with no deep knowledge of M$ programming will find the cause in the trace file.
What I did was to delete/ uninstall ALL C++ redistributable packages before running setup.
( CAUTION : This can/ will cause issues with other applications ).
I then ran the Domino 9.0.0 setup. At the very end of the setup process, the installer installs the correct vcredist packages.
I guess that my first attempt to fix the issue by reinstalling Domino failed, because the files where already in place and were not reinstalled during installation
Unable to load text filter library: … \IBM\Lotus\Domino\kvfilter.dll
Since I’m running Domino 9 64bit on Windows 2008 R2 64bit, I see the following error on the console:
It does not seem to have any impact on the running server. Just wonder if this is a known issue and one can simply ignore the message.The file in question is on the server.
I have already posted a question in the IBM Notes 9 Forum; nobody seems to know an answer; or nobody cares .
The Windows enetlog shows the following error:
SideBySide errors are typically caused by the current Microsoft Visual C++ version not being backward compatible with the application that failed. The Event ID 33 error message is typically: Activation context generation failed for “program name”..Please use sxstrace.exe for detailed diagnosis. There are other similar SideBySide errors with the same problem of backward compatibility.
If the software works OK then you don’t have to fix it but if it does not or you want to get rid of this error here are two possible Fixes:
1) Reinstall Domino. Often the installation package will have the version of Microsoft Visual C++ that it uses and will install it. – did not help
2) Try to figure out what Microsoft Visual C++ Redistributable Package version (available versions are: 2003, 2005, 2008, & 2010) the application needs (most likely the one that came out prior to the date that the application software was created; check the dates of the files in the package). . These are available through Microsoft’s Downloads.
Well, I’ve tried a couple of them and also installed the exact version that is used on another server that does not show the message, but still no success.
Maybe some day in the future someone at IBM will see the exact same message on the console and fix the issue. In the meantime … …
Weird error installing VMWare Server 2.0.2 on Windows 2008 R2
I know, VMWare Server is outdated an I better should use ESXi or at least VMWare Workstation. Indeed, the plan was to replace the VMWare Server installation with WMWare Workstation 9.0.2 and enable the sharing of virtual machines.
To install WMWare Workstation, you have to uninstall the VMWare Server fist. “There can only be one” (virtualization system). After installing the Workstation, everything worked fine. Except the sharing. I was not able to run the Workstation Server service, and after a lot of attempts to solve the issue, I finally gave up; for now.
Next I wanted to reinstall the VMWare server. After the installer started, I got an error message and the installation finished unsuccessfully.
I asked Google for advice and found some hints to unreg and register the Windows Installer. This did not help.
Next I looked into the event log and found the following entry
Drive “E” by the way is the DVD drive of the system. …
For any unknown reason, the installer tried to install some bits and pieces onto the DVD. This obviously is a futile attempt.
To solve the issue, I assigned an other drive letter to the DVD device. The installer now ran without any issues; there was not even a volume “E” in the system any longer.
amazon.com / amazon.de
We are living in a global village. When it comes to travel, we book a flight and within a day we are able to get to almost every corner of our planet. The internet gives us every information we need with just a couple of mouse clicks. We have “friends” on facebook and a blog post goes around the digital world in seconds.
We sell, buy, exchange goods and ship them to other countries; no big deal is this.
eBooks eliminate the need to wait for the printed copy; it gives you also the good feeling to be part of the “Green Planet” initiative. How easy it is to order an ebook.
Ehm, wait … What about Amazon??
For about 1 year, I have 100$ on my amazon.com account. The money came from a gift card. And for about 1 year, I am not able to order anything from amazon.com and use the money for payment.
Today I started a new attempt. I thought that ordering an ebook would be ok. There is no shipping cost, no tax etc. So I tried to order
Oh, did I mention, that I am located in Germany? Amazon does know and instead of letting me order an eBook it just gives me a hint that I should order from amazon.de.
That would not be a problem, if I only could use my amazon.com giftcard on amazon.de.But the giftcard is not accessible from my amazon.de account. According to amazon, shifting the money from one account to another ( for the same user ) is not possible. I cannot even give away the money for charity or just move the money from my account to another account.
And if I see this correct, I am not even able to place an order for a friend in USA and use his address for delivery.
AMAZON, this is anoying!! In Germany I would take you to court for taking the money and not providing a benefit. …
Hacking Notes Applications with hidden design
I was kindly asked by an IBM representative to remove the blog post:
Ulrich – would you please take down this blog post? …
I haven’t had a chance to look at post in the DP forum but have made the dev team aware of the issue.I am not sure what we can do to resolve but would appreciate if we could handle outside of a public venue.Thanks, …
[FollowUp] jQuery Mobile Seems incompatible with XPages in Domino 9.0
This is a follow up on an article, David Leedy wrote yesterday
I recently ran into an issue with Domino 9 and jQuery Mobile. I had to completely deactivate Dojo. Otherwise the mobile components did not render. But doing so, I would lost all of the XPages functions like partial refresh et al. On friday, my colleague at BCC asked a question on StackOverflow regarding a problem with jQuery Mobile. He finally got it working by ACTIVATING Dojo in the application.
Over the weekend, I tried to find out, what was going on. Here are my findings
In our project we are using jQuery 1.9.1 + jQuery Mobile 1.3.1 and the application needs to work even on Domino 8.5.1. This part works. No problem here.
There is a difference in the development platform. While my colleague uses IBMNotes/Domino 8.5.3, I use IBM Notes/Domino 9.
ND 8.5.3 comes with Dojo 1.5.1 and ND 9 has Dojo 1.8.1 as its default. Should not make any difference …
The first hint came from Mark Roden
jQuery Mobile uses attributes like data-role=”page” and if Mark was right, using a different namespace , changing the attributes to data-bcc-role=” … should fix the issue. To make a long story short; it does not.
Next, I installed the application on ND 8.5.1 FP3 and it worked as expected. The only thing that did nor work was pagers in views and other events.
This is caused by the createForm=”false” entry in the page root. This setting was recommended bay several members of the community; so I just folowed their recommendation.
To make events work, you have to put a xp:form tag around your view control. Tim Tripcony posted an interesting entry on StackOverflow. I recommend, that you read this article.
After adding the tag to the controls, everything worked just fine.
Next was to upgrade the server step by step to release 9. Everything worked fine until I upgraded the server to version 9. I then moved the dojo-xxx folders from the previous installations to the IBM\Lotus\Domino\data\domino\js folder. Next I configured the server to use a specific Dojo version by editing the xsp.properties file in IBM\Lotus\Domino\data\properties.
With xsp.client.script.dojo.version=1.5.1 my application started to work on ND9 without any issue. Here is an overview of which version of Dojo and Domino worked, which had issues and which combinations did not work at all.
But configuring the whole server to use a different Dojo version is not a good idea. In ND 9, you can also set the dojo version in xsp.properties in the application.
So my workaround for now is to set the dojo version to 1.5.1 in the application. ND9 has Dojo 1.5.2 installed in the IBM\Lotus\Domino\data\domino\js folder, but using this version, events are not triggerd. You will see the following error in WebInspector console in Safari.
Unable to open https sites with self signed certificate on IE 10
Just ran into a problem with IE10. I was unable to open a website with https protocol which have not trusted certificate by trusted root authorities.
In previous versions of IE it was possible to open such an page with warning but in IE10 I am only getting this error message without any option to open it instead.
Trigger the following command from the command prompt
certutil -setreg chain\EnableWeakSignatureFlags 8
N ow you will be presented the option to open the page again.
Sample Application from BLUG Session
Here is the sample application from the BLUG session “Life in the fast lane: Full Speed XPages”.
Also take a look at the lifecycle.nsf application from the XPages MasterClass project to learn more about the JSF Request Lifecycle.
And as a Java Developer, I recommend to take a closer look at the org.openntf.domino project on GitHub
BLUG 2013 recap
BLUG 2013 took place from March, 21 – 22 2013 in Leuven , Belgium. The Faculty Club was a wonderful venue and also the conference hotel was a great place to stay during the conference.
I attended BLUG for the first time as a vendor and speaker after choosing to work at BCC since November 2012. So I had to be at our booth most of the time, but thanks to Fathima Gany ( BCC Sales ) and Sarah Steffen ( BCC Development ) I also had the chance to attend some sessions.
Scott Souder and Louis Richardson presented at the OGS. I only saw a small part of the session, but according to other attendees it was great. .
During the 2 days, I met some people, I only knew only virtually. It was fantastic, to meet you in person, guys ( and gals ) .
The usual suspect gathered together on wednesday evening for the welcome reception. A lot of different beer was served along with some excellent food. Lesson learnt: Do not drink too many different beers. Headache guaranteed.
Thursday evening I had to present at SpeedSponsoring. It was the first time for me and to be honest, I was a bit scared all over the day. But after the first round I had fun doing the presentation. OK, I managed to do my 3 minutes take in only 2 minutes in the first round, but that was a good practice, as Paul Mooney decreased the presentation time from 3 to 2 minutes during the one hour of screaming and shouting in the sponsors area.
On friday I presented “Life in the fast lane: Full speed XPages”. With the help of Matthew Fyleman from We4IT it was a great presentation. Matthew and I never presented together before and we only ran thru the slides once on friday, just a couple of hours before the presentation.
I got some great feedback after the session. Also there was a tweet saying that the presentation has helped to identify a bottleneck in an application.
During the closing session the raffle took place and as always many valuable stuff was given to the attendees ( iPad Mini, Apple TV, Books, Ytria Software licenses, TLCC course licenses and more )
The number of attendees at the 5th BLUG conference was about 325 ( if I recall correctly ). This is a huge success for the organizers. Congratulations.
Next BLUG ( now called the BENELUX Notes User Group ) will be in Breda, The Netherlands. Watch blug.be for details.
Convert @Created to Unix Timestamp using @formula
In a multi-language enabled application I’m using JSON from a view as a datasource for a jqGrid in an XPage. To convert the date-time in the JSON, I need the date/time value a UNIX timestamp.
It’s easy in LS, but I do not want to change the programming of the application, to calculate the timestamp on document creation and store the value in an item on the document.
To convert the @created date into an UNIX timestamp I use the following @formula:
_seconds:=
@ToNumber(@Hour(@Created))*3600 +
@ToNumber(@Minute(@Created)) * 60 +
@ToNumber(@Second(@Created));
((@BusinessDays(@Date(1970;1;1);@Created) - 1 )*86400) + _seconds
Update: Well, the formula is nice and does what it should. But there is a much easier way to achieve the aim.
@Created - @Date(1970;1;1;0;0;0) - 1
gives exactly the same result …
Get all available language resource files for language selection
Assume you have built a multi language XPage application and want to add a language switcher to the application. The content for the selector should be build automatically when you add a new language resource to the application.
I store my language resource files in the files section of Domino Designer. Each file has a file suffix of “.lang.properties”
To get a list of all files with this specific suffix I put together some Java. The code builds a NoteCollection of MiscFormatElements and then does a serach within the collection to return only elements that match the search criteria.
package de.eknori;
import java.util.Vector;
import javax.faces.context.FacesContext;
import lotus.domino.Database;
import lotus.domino.Document;
import lotus.domino.NoteCollection;
import lotus.domino.NotesException;
public class Design {
private static final String SUFFIX_PROPERTY = ".lang.properties";
private static final String EMPTY_STRING = "";
private static final String FIELD_TITLE = "$TITLE";
public static Vector getLangFiles() throws NotesException {
Vector vec = new Vector();
try {
FacesContext fc = FacesContext.getCurrentInstance();
Database db = (Database) fc.getApplication().getVariableResolver()
.resolveVariable(fc, "database");
NoteCollection nc = null;
nc = db.createNoteCollection(false);
nc.setSelectMiscFormatElements(true);
nc.setSelectionFormula("@Contains(" + FIELD_TITLE + ";\""
+ SUFFIX_PROPERTY + "\")");
nc.buildCollection();
String nid = EMPTY_STRING;
nid = nc.getFirstNoteID();
Document doc = null;
while (!(EMPTY_STRING.equals(nid))) {
doc = db.getDocumentByID(nid);
vec.add(doc.getItemValueString(FIELD_TITLE).replace(
SUFFIX_PROPERTY, EMPTY_STRING));
nid = nc.getNextNoteID(nid);
doc.recycle();
}
nc.recycle();
} catch (Exception e) {
}
return vec;
}
}
In your XPage, you can then simply make a call to the method from a combobox
< ?xml version="1.0" encoding="UTF-8"?>
And here is the result
And with just a little tweak you can use the code to get a list of available themes and build a theme switcher … Happy coding!
XSnippets – DBColumn / DBLookup (Java) & XPages Toolbox
Ferry Kranenburg posted a new XSnippet on OpenNTF. “Pure Java version of DbLookup & DbColumn, with cache, sort and unique” . I use similar code in my projects and thougt that it would be a great idea to do a performance test. I’m using XPages Toolbox to profile the backend code. Here is the result for a DBColumn call on 18044 documents in a view
Elapsed time: 1622 msec
Methods profiled: 9
Total measured time: 1168 msec
Looking at the profiled classes, you can see that the ViewNavigator.getFirst() method is obviously invoked 2 time, but the code itself only contains 1 call to this method. Not sure, if this is due to a bug in XPagesToolbox or a bug in the ViewNavigator class. Anyone aware of this issue ?
[Connect-O-Sphere] Yes, I’m still alive
According to some tweets, people seem to be seriously concerned about me still being alive while I’m attending my first LotusSphere ever.
As far as I can say, I’m safe and sound. Although I’m not sure if my feet share this opinion.
Thanks to all who are eager to help a LotusSphere rookie to not get lost at the conference.
VMWARE: Converting Multiple VMDK files into one
VMware supports both growable and pre-allocated virtual disks. In addition, the disks can be specified to be contained in a single file, or divided into multiple 2GB files
I recently had to work on some older VMs and thought it would be a good idea to do some housekeeping. Renaming the machines and vmdk files to a more meaningful name and also consolidating multiple 2GB file into a single one.
All these tasks can be done in one single step using the VMware Disk Management Tool
The VMware Disk Management Tool is a command line tool which is installed by default with VMware Workstation or Server.
The executable file is named vmware-vdiskmanager and is located in the VMWare program directory on Windows hosts, and /usr/bin on Linux systems.
To convert multiple VMDKs into a single file, I used the following command (Windows 2000 Server-cl3.vmdk is the name of the first VMDK file – i.e. the one attached to the VM):
vmware-vdiskmanager -r “Windows 2000 Server-cl4.vmdk” -t 0 win2003-32.vmdk
The above operation takes a while, but not too long. It shows its progress as it completes.
Next, you can configure your VM to use the new VMDK file and delete the obsolete files from the disk.
Convert VirtualBox (vdi) hard drive image to VMWare (vmdk) format
I recently installed VMWare Workstation 9 on my laptop. I also have VMWare Server 2.0.2 running. Using virtual machines from VMWare Server on the workstaion is not a problem. But I have a couple of virtual machines that have been created with VirtualBox.
The vdi files are not compatible with VMWare Workstation or Server.
Fortunately, the VBoxManage utility of VirtualBox can actually convert a VirtualBox vdi image to the vmdk format used by VMWare. It can do it rather easily, as well.
The command format is:
VBoxManage clonehd
[–format VDI|VMDK|VHD|RAW|]
[–variant Standard,Fixed,Split2G,Stream,ESX]
[–existing]
Example (Windows):
C:\VirtualBox\VBoxManage.exe clonehd “vb_Win8_64.vdi” win8_64.vmdk –format vmdk –variant standard
Successful run gets this output:
Next, open VMWare and select Create a new virtual machine
- Select “I will install the operating system later”
- Make your OS selection about the OS that’s currently on the vmdk you will be using. (The guest OS, not the host OS).
- Later on, you will have the option to use an existing vmdk image as your virtual hard drive. Do so.
You should now be able to finish setup and boot your converted disk image.
Windows 8 – Get The Start Button Back
When users found out that Microsoft’s next version of Windows wouldn’t have a Start button, they panicked.
Replaced in Windows 8 by the user interface formerly known as “Metro,” that tiny button is apparently so important to long-time Windows users that they can’t imagine life without it.
Rest easy, neophobes — adding the Start button back to Windows 8 is easy and free.
Windows developer Ivo Beltchev has created a utility called Classic Shell . The utility allows users to bring back the classic Windows Start menu layout and customize it in a number of ways.
In addition to getting the Start Button back, ClassicShell allows you to directly display the desktop instead of the still uncommon start page.
UPDATE: ClassicShell also works on Windows Server 2012
IBM XPages Performance Masterclass
From October, 17-18th, XPages Performance MasterClass took place at the IBM Labs in Dublin, Ireland. The event was sponsored by IBM; only transportation and hotel had to be paid by attendees.
40+ people from all over Europe ( Germany, Austria, Italy, Greece, Sweden, Czech Republic … ) gathered together for all things XPages Performance optimization.
Maire Kehoe, Martin Donnelly and Tony McGuckin did an excellent job sharing their knowledge. They provided 4 deep dive sessions each of the two days, covering all aspects of the JSF lifecycle, partial refresh / exectution mode, design patterns and Java debugging, just to name a few of many topics.
Eamon Muldoon from IBM Ireland said, that his team setup this masterclass on top of their daily job. Aside from preparing the next major release launch and working on PMRs and also new stuff, they prepared all the content, slides and samples to cover almost 16 hours.
All I can say after 2 days packed with first class information is “Thank You!!”. It was great to have the opportunity to attend this event.