Mar 23, 2009

Db4o with Visual Studio 10 / .Net Framework 4


When Microsoft announced they would make available VS 2010 CTP I got curious about how easy (or hard) it would be to compile / run Db4o and also how OMN would behave in this early CTP (would it just work, without even require a recompilation? If not, how easy/hard it would be to make it work if possible at all, etc).

Well, yesterday I managed to download the CTP; after extracting the files (24 Gb!!) I just took OMN 2008 installation and give it a try. It was really amazing. The only change I've applied was to update the file %ALLUSERSPROFILE%\Application Data\Microsoft\MSEnvShared\Addins\OMAddin.addin in order to change the target VS (OMN 2008 will set it to 9.0 but VS 2010 is 10.0). 

After this change I just fired up VS and OMN addin was there, working with no issues (as far as I tested :)) as you can see in the screen shot bellow. Cool.

Next step was to load Db4o 2008 solution file; VS 2010 asked whenever I'd like to convert the solution/project files to the newer version; I just consent to that and when it finished converting I just run Db4o Tests. 

This time some tests failed due to missing jars (I didn't run a full build) required to run Java/.Net compatibility tests; besides that expected failure,  only one test failed (I just disabled it for now).

My next steps will be:

  1. Try to understand / fix the falling test.
  2. Prepare the environment to at least run the target "build-before-checkin"  defined in build.xml (and uncomment any test commented out to make the tests pass).

  3. Reason whenever it makes sense to use some of C# 4.0 / .Net Framework 4.0 new features (for instance dynamic types) and how Db4o handle them.
Since these will require more time to investigate / test I'll leave them for a forthcoming post.


Mar 21, 2009

Benefits of working from home - Epilogue

After 9 posts in this subject (BTW, I have written this post long ago) I am going to finish it... and the big question is:

Did it worth?

Well, to answer this question I pondered on various aspects: It allowed me to move to a smaller city, closer to my wife's parents, a less violent, less expansive
city, etc; it gave me the chance to spend more time with my family and a lot more benefits!

So, IMO it really worth the move! Even missing some "usual work style", I am pretty happy working with very smart people, in a really cool product, applying really nice development methodologies and last, but not least, being able to organize my own time :).

I don't know how long I'll be working with these stunning guys, but I do hope I could be there for a long time ;). There's just so many things to learn yet!

That's it ;)

See you all.


Mar 10, 2009

Automating Skype through COM

Wow.. finally a technical post again :)

Those of you who knows me knows that I am a firm believer of component technologies.

Personally I really appreciate Microsoft's COM technology; ok, it does has it drawbacks (as everything in life) but when used correctly it proved to be a very powerful way to support software automation and extensibility. Let me briefly explain what those funny words means for those who don't know yet.

Basically, software automation is the process of a software controlling another one. For instance, if you have Microsoft Office installed it's possible to write a program (even a JavaScript script) that creates a Word Document through automation, i.e, your program may "control" word (and Excel, Power Point, etc). This kind of flexibility can be very helpful in some scenarios.

By extensibility I mean ways of extending a given application. A good example is Windows Explorer; it's possible to add new items to a context menu (in the same way 7-Zip and many other applications do) simply by implementing an specific COM interface (and registering your component of course).

These are just 2 examples of what's possible; of course other softwares also support some level of automation (for instance Adobe Acrobat).

In this post I just want to talk (again, briefly) about Skype and how it's possible to extend it through COM (Skype also supports automation through Java, XXX, etc).

First let me just explain that the possibilities are infinite; what you may want to do with automation is not my business :); all I can say is that if you think a little bit you'll be able to find some nice use for skype automation.

For instance (as I said in my last posts) I use Skype heavily on my work to communicate with other team's members. At least once per week we do a Skype meeting in order to decide what we're going to do in that week; to manage these tasks we have a "queue" of tasks in our Jira installation.

One annoyance during this meeting is that once someone decide he wants to take a specific task the process involves at least 2 steps: to announce in the chat meeting and going to the browser to update Jira.

Since it's possible to automate Skype I wrote (to be more precise I am debugging it right now) a "plug-in" that simply keeps listening all chat messages and react accordingly for specific patterns; for instance if I want to take a task (let's say TSK-1) I may just type:

$jira assign TSK-1 myself

This way I announce to the team and update Jira at once :) (I don't need to go to the browser anymore)

The plugin is "smart" enough (through configuration) to figure out who I am ("myself") and to go to Jira (through a WebService) and update the specific issue (task).

And this is only a basic example about what can be done (the sky is the limit :).

For more information about Skype automation visit

If you want to take a look into this plugin, just grab the code at: or browse the code online at (just keep in mind that there're lots of assumptions/dependencies to our Jira installation but I guess one can learn a lot about how to integrate to either Jira or Skype). 

See you.