New page on this blog

I finally took some time to put the list of books in my library online. This is something I had been willing to do for quite a while, but I never felt like placing any effort into it. The good thing is that producing that list did not require any effort at all, except for the part where I actually had to search for the book ISBN numbers. I could have picked up the books and find it, but I did not feel like typing them.

I just wrote a small script to pull the information from Amazon using the ISBN code. Using the Zend_Service_Amazon component, it was a matter of minutes. Until now, I didn’t think these service classes really were useful and required to be part of the base framework distribution. That was because I never had to use them. Now I wish there were even more.

Right now, the list is not very useful, but I intend on adding comments on all of the books. Feel free to ask for comments on any book listed, I will give them a higher priority.

PHP Interoperability & PDM Works Enterprise

One of my clients recently purchased PDM Works Enterprise in replacement for Visual Source Safe. In the pas few days, I got to familiarize myself with the tool and the objective is now to integrate it’s functionality with the existing intranet. It brought me in lands I had not visited in a long while: Microsoft technologies.

PDM Works Enterprise exposes a large COM interface for external applications to communicate with. The easy solution is to write VB applications to be called in command line. All examples provided in the documentation are either VB or VC++ and autocompletion makes accessing the COM objects very easy. Before going that route, I decided to give a try to the PHP COM extension, which reduces the amount of bridging required.

After a few minutes searching for the appropriate COM object to load, I got it running and everything worked flawlessly. I was really surprised. Finding the name of the COM object is far from easy thought (at least, for a non-Microsoft person like me). In the VB examples, EdmLib is imported and EdmVault can be instantiated. My first guess was something like this:

$vault = new COM( 'EdmLib.EdmVault' );
$vault->Login( ... );

Failure. After a few searches on Google, I came to the conclusion that no one ever used PDM Works with PHP. No big surprise there. Worst, it seemed like I was the only one who couldn’t figure where to find COM object names. How am I supposed to find them? I still don’t know, but a search in the registry brought me to this solution:

$vault = new COM( 'ConisioLib.EdmVault.1' );
$vault->Login( ... );

I could have figured out the Conisio part, which is the previous name of the product. Actually, I had a few attempts made in that direction, but the “.1” part, I had no clue.

After that point, methods can be called. Some of them return objects and they can be dealt with seamlessly. Performances are acceptable and the API documentation provided is sufficient to remove the need for auto-completion. I still built myself an abstraction layer to get better error handling and especially to get rid of the weird calls required to iterate the lists. Although the COM extension supports iterators, the library does not seem to use them.

For some reason, I was expecting that I would need to run the PHP scripts from the PDM Works server. To my great surprise, they can run from anywhere, as long as the client software is installed and a local view is set-up. I could fairly easily perform all the operations I needed.

This solves the problem of the intranet to PDM Works communication. I will still have to write some VB to handle the various hooks in the process thought. At this time, the greatest obstacle is that Microsoft won’t let me use their products. I first installed the express edition and got a product key registered. They key they provided does not work. Great. Since I had no time to waste getting it to work (because it’s probably a firewall or proxy issue), I actually attempted to purchase the standard edition. The store on the MSDN website only ships to US. Staples is out of stock and ordering is not enabled. Futureshop does not sell it anymore. Amazon.ca is out of stock. Amazon.com does not ship software in Canada. Every other online vendor I visited from the reseller page does not have the product in stock. Is it actually possible to buy Visual Studio?

RoCoCo / RecentChangesCamp

Moving from city to city, RecentChangesCamp reached Montreal around two weeks ago. As most people in the F/OSS community in Montreal, I was invited to participate at the event. On the first day, I had absolutely no idea of what to expect. I had never attended to an un-conference. I must admit that I really liked the format. In conferences, I usually enjoy hanging out in halls than attending to sessions. This time, I had no dilemma. No conferences, only people discussing about what they like. All the best.

On the first day, nothing is blank. No schedule. Only a central topic and around 70 people. After a short introduction, the crowd decides on the schedule by sticking topics on the wall and sometimes, moving them around. People simply identify what topic interests them and, if anyone attends to it, it will be discussed. The result is that multiple small groups get formed all over the place, starting discussions over a given topic. Sometimes it stays on track, sometimes it simply drifts away. Either way, the discussion is about what ever attendees feel like talking about. There is no need to have a central speaker holding the truth. Everyone in the room has a certain experience which can help solving someone else’s problems.

RoCoCoCamp’s topic was wikis. Before going there, I never could have imagined there was such a movement behind those. I’m just a software developper. I contributed to wiki projects over the years, but only on features I thought were interesting at the moment. During the un-conference, I met a whole lot of passionate people about wikis. Not only did we discuss specific topics during the entire day, discussions kept going during the lunch breaks and evenings. At one moment we could discuss interoperability, an hour later it would be information architecture and categorizing data or reaching collective consensus.

The great aspect of the event is that it was able to attract people from many different backgrounds. Some were developers, as pragmatic as I can be. Others were self-declared philosophers. Of course, some down to Earth people with real problematics were also present. I think their input was the most valuable of all, even if I preferred hanging out with other developers. Many of them were present. All these guys (obviously, as most technology-related events, this was mostly a male event) were very involved in different projects and had a whole lot of experience to share. I haven’t worked much with wikis in the past. To me, their achievements were way above man scale. I can barely understand how individuals can spend so much time on projects and keep their life on track. The results are impressive. Many of them actually travelled, at their own expenses, to Montreal only to attend the event. This is beyond simple interests, this is about passion.

During the lunch hour second day, leaders of all wiki projects present gathered to discuss how they could work together. For some reason, I was with them as a spectator. The lunch was far from a break. Some of the solutions are very simple, but without an actual face to face meeting, most of these things would have never occurred.

This is one topic that kept coming up over and over in discussions. The problems cannot always be solved by technical solutions in the wiki world. There are social issues. You need to deal with individuals. There is no process that can be controlled. A wiki is just a blank sheet of paper. There is no formalism, but without guidelines (or “best practices” as some would call to avoid the rigid “guideline”), wikis turn to chaos. The only real solution is education, but it takes time and effort.