NHibernate.Mapping.Attributes for NHibernate 2.0.0.Beta1 released

 After the release of NHibernate 2.0.0.Beta1 two days ago, I finally release its NHibernate.Mapping.Attributes. You can download it on SourceForge.net.

The funny thing is that I worked on it few hours before the released of Beta1 and was about to release it (for Alpha2) but I couldn't access SourceForge from some reason (it seems that my ADSL line at home doesn't like SF.net...). So, I had to postpone the release and that's when I saw the announcement of the release of Beta1. Then, I just had to change the version number (nothing else changed as far as the mapping is concerned) and here it is :)

Windows Vista Service Pack 1 publicly available

After its release in February to OEM partners and MSDN subscribers, and its distribution via Windows Update in March, Windows Vista Service Pack 1 can now be downloaded as a CD/DVD image or as an executable with "all" languages integrated.

Download links:

Windows Vista Service Pack 1 All Language Standalone (KB936330): The x86 executable
Windows Vista Service Pack 1 All Language Standalone CD ISO: x86 version
Windows Vista Service Pack 1 All Language Standalone for x64-based Systems (KB936330)
Windows Vista Service Pack 1 All Language Standalone DVD ISO: x86 & x64 version

I am downloading the executable now to install it on my family members' laptops, hoping that they will complain a little less about Vista :)

KlearTouch: A Facebook application using Silverlight

(Version en Francais: KlearTouch: Une application Facebook utilisant Silverlight)

Prologue: (If you just want to learn how to use KlearTouch, you can safely skip this paragraph)
Well, today is this blog's birthday; so here is a cool gift Cake For the past few ... months, I have been working on my first Silverlight application (which is also my first Facebook application). I started it to participate to the contest organized by Mentez. This blog entry is its draft documentation. So don't expect any tech stuff; they will come later. Now, let's go!

KlearTouch is a photo viewer. It displays your friends then the photos of these friends. To install it, just go on http://apps.facebook.com/kleartouch/ then log in and add the application to your profile. KlearTouch uses Silverlight to provide the look and feel of a desktop application. So after adding KlearTouch, you will probably have a screen like this:

Install Silverlight before using KlearTouch

Silverlight is a browser plug-in like the Adobe Flash Player used to play videos on Youtube. KlearTouch uses Silverlight 2.0 which is currently in beta (ie: work-in-progress). As you can see on the screen-shot above, there is an image with "Install Microsoft Silverlight" written on it; just click on that button to follow the procedure (it will download a 4 MB file and install it). Note that it is available on Windows and Mac (you can follow these links now to install it). And it works on Firefox too. For Linux, install Moonlight.

If everything went well, you can re-open KlearTouch and you will see a screen similar to this one:

KlearTouch just after opening and loading

Quick-start: Click on one of your friends (on the left) and his/her photos will appear on the right side. You can then click on one of this photo to see it in full-screen. Note the Close button below on the right (in red).

As you can see there are many more buttons to play with. Here is an explanation of the ones numbered in the previous screenshot:
0- Before anything, click on this button: "Display in full-screen". it will get the application out of the small space allocated by Facebook.
1- Button "Display all friends": Clears whatever you have written in the textbox "Search a friend ..." (Cf. the next line).
2- TextBox "Search a friend ...": Filters your list of friends; very helpful to find a specific friend.
3- "Display/Search photos": Same principle as for friends (Cf. 1 & 2). Allows you to find a photo based on its caption.
4- Buttons "View": Changes the view of the photos between thumbnails and details (which also display the date of the photo).
5- Buttons "Sort": Sorts the photos based on their creation date; allows you to see the newest photos first (button "Ascending"). Note that, when sorting, the photos are not grouped by user/album. To go back to this mode, click on the button "Sort by date".
6- "Zoom": Resizes the photos in the list using the slider. Use the button "Zoom (x%)" to reset the zoom to 50%.
7- Button "Photos of the last x days": After entering a number of day in the textbox, you can click this button to quickly see all the recent photos of your friends. Note that it only displays the photos of the friends that are visible in your friend list. This means that you can first search for a friend (Cf. 2) and then find his/her recent photos.
8- Button "x friends of y": Tells how many friends you have. Click on it to reload your friends list.
9- "Friend list": List of all your friends; click on one of them to display his photos.

After a click on me, here is what I get:

Display of my photos

1- First, I looked for myself, filtering out all my friends
2- The photos are grouped by user and by album.
3- Each photo is displayed by default in thumbnail mode, so you can see the image and its caption.

You can change the photo list a lot. Here is what you get after using all KlearTouch features:

My photos after filtering, viewing in details, sorting and zooming

1- First, I search all the photos containing the letter "p". There are two.
2- I changed the view to details mode.
3- I sort the photos in descending, ie: newest photos first.
4- I zoom in to 82%, making the images bigger.
5- Here is the result, a photo properly visible with its caption and creation date.

Now, I can click on this photo to display it in fullscreen:

A photo with all the controls visible

1- The photo's owner and album is displayed on the top.
2- The creation date and caption is displayed near the bottom.
3- Button "Save/Print": Opens the photo in a new window as a normal webpage (See the last screenshot). You can then save that photo or print it.
4- Buttons "Rotation -+ 90°": In case the photo isn't orientated as you want (or if you just want to play :) ), you can use these buttons to rotate it.
5- Buttons "Previous/Next": Go to the previous/next photo. The order is the one you had in the photo list (taking into account the filtering and the sorting).
6- "Auto": The button turns the automatic mode on/off. When on, the photo changes every few seconds. Note that if you press the previous button, it goes off.
7- Button "Shuffle": This button allows you to display the photos in a random order.
8- Button "Close": Go back to the friends & photos lists.

Now, we can rotate the image and here is what we get:

A photo with all the controls hidden and after a rotation

1- First, click the button "+90°"
2- The photo is rotated and, surprise, all the buttons and text disappeared. Actually, they are still there; they just faded away to let you enjoy the photo. They will reappear when you put the mouse over them. Note: Remember the location of the Close button (Cf. previous screenshot).

More detailed quick-start: After opening KlearTouch,
- Click the button "Display in full-screen",
- Press F11 on the keyboard (full-screen mode for the browser),
- Open a lot of photos (the ones you like),
- Click on one of them,
- Adjust the automatic speed, turn Auto and Shuffle on,
- Enjoy!

In case you want to save or print a photo, you will notice the "Save/Print" button (Cf. the screenshot above); after a click on it, here is what you get:

After a click on Save/Print, you can see the photo outside of KlearTouch to save/print it

1- This window is a new one, so you can close it and go back to KlearTouch. But, in case you closed KlearTouch, you can open it again by using the link "Open KlearTouch". You can also see the profile of the owner of this photo on Facebook, in case you want to learn more about him/her.
2- You also have the photo's information and the image.

The end!

Let me know what you think about it. The best way would be to write a review on KlearTouch's information page. And let your friends know about it; I hope you all find it useful and cool :)

If you want an additional feature, I will see what I can do. By the way, I already intend to support reading and writing comments, but it will take some time to add.

You can now stop reading and go see for yourself Smile

What's up with NHibernate and its book?

It has been a while since I have blogged about NHibernate and the book. Since then, many changes happened:

First, in case you didn't realized, NHibernate 1.2.1 has be out for quite a while. NHibernate has a new project leader: Karl Chu. He is very active in the development mailing list and he participates in the discussions that will eventually lead to NHibernate 2.0.

NHibernate is being reorganized to move away from its current monolithic structure. Most features of Hibernate 3.2 should be ported in NHibernate 2.0 (Thanks to the efforts of Fabio Maulo, Dario Quintana, Ayende Rahien, etc). There are also many on-going side-projects worth checking: NH.Shard, NH.Search, NH.Linq, NH.Validator, NH.Burrow. For more details, take a look at the new NH-Contrib project and their documentation for Hibernate.

I think that the release of NHibernate 2.0 will be a turning point in the way NHibernate is developed. It will start evolving on par with Hibernate.

About NHibernate in Action:
I was quite busy in 2007, and I barely managed to complete all the chapters for the final review few months ago. After that, Tobin Harris was asked to complete the work. He is now a co-author of the book.

It took him some time to get comfortable writing the book but the result should be even better than the state in which I left the chapters. For those who subscribed to the MEAP, please, be patient, Manning wants a high quality book and it takes a lot of time to part-time (and first-time) authors to write it :)

NHibernate in Action is going to production next week, which means no more changes and no more delays. The last bit that I am still concerned about is the source code. Currently, it is pretty much done but it needs to be polished and organized.

In the last couple of months, I have been playing with Silverlight and .NET 3.5; it will be the topic of my next blog entry :)

Is Windows Vista that bad?

I have read a lot about Windows Vista before and after its release. At first it was about its most anticipated new features (Aero, WinFX, etc.). People were expecting a lot from Vista, which is understandable after five years and a lot of marketing hype.

However, there were already people complaining about the hardware requirements and the compatibility issues. As many people said, I think that the change from XP to Vista is similar to the one from Windows 3.11 to Windows 95; many people will not like it at first, but it will lead to a better platform in the long run.

It is not surprising that, after the release of Windows Vista, the reviews went from hopeful to bad to harsh. Few weeks ago, I could only read these debates from my well-oiled Windows XP. But this is no longer the case.

About two weeks ago, I finally installed Vista on my primary PC (on a different hard drive, since I still need my XP) and I seriously started using it (I've had it one another PC for six months but I never used it because I didn’t need it). I've also installed Office 2007 and Visual Studio 2008. The result is that I felt like I jumped in the future :)

The first day was spent installing and configuring my software. I bumped on a few problems:

  • I couldn't get ZoneAlarm to work properly, and to be honest, I didn't try hard.
  • I lost a whole directory when trying to delete some files in it: I always use shift+del and I did that after selecting the files with the mouse. I didn't pay attention to the fact that the highlight was still on the directory (on XP, it changes on-mouse-down but not on Vista) and I answered yes to the UAC without reading. It was only after the directory was gone that I realized my mistake Embarrassed By the way, I used an undelete software to recover my files :)
  • I must now use Visual Studio's "Search in files" feature because Windows's one seems to have disappeared. It was bogus in XP anyway so I don't really mind.
  • And the most annoying problem: Since all my files were created in XP, the UAC complains each time I modify/delete them. I understand the security reason behind that but it is still annoying (Note: the one-time solution is to give these privileges to the user account).

The aspect that surprises me the most is that I don't find Vista especially slow! This is the number one complain about it so it is really weird. To be more precise: Vista is much slower than XP, but it seems that my tolerance level on this matter is quite high... :) (And Vista is so better looking)

For example, I had a 486 running Windows 2000 (for people who don't know, 486 is the predecessor of the Pentium... I mean the "Pentium 1" not the Pentium 4 that you all know :) ). That configuration was slower than my current one. Maybe that's why I am not a demanding person.
Note that my PC is a Celeron 2.8 Ghz with a Geforce FX so it is far from being a top PC.

On the bright side: I like Aero and it has an amazing potential (I hope that Microsoft will open it; people would plug-in amazing effects). I also love the new fonts of Vista; my eyes keep thanking me for them. I don't like IE 7 but Firefox works just fine. I've even started using Windows Media Player 11 and Windows Photo Gallery (I still prefer my dear old versions of BSPlayer and ACDSee which provide better keyboard control, but they don't work well on Vista).

At first, I was planning to use Vista only for my .NET 3 development (more on that later), but I haven't been on XP for a week. And I don't see the need coming...

Disclaimer: I was probably lucky to not have any (serious) hardware/software compatibility issues and two weeks is not enough to accurately review an operating system. I am also more forgiving/accommodating than many people. So I would understand if you don't share my point of view Smile

PS: I am watching the new Windows Vista marketing videos right now. It seems that the real Vista marketing finally begins. It targets end-users; software developers know that an OS is more than just a nice UI.

Debuts as a 3D artist using Blender

When I started learning programming, my main interest was Game Development Geeked. I learned a lot about DirectX programming in C++ (more on that later) and a little about 3D modeling.

Yesterday, I decided to spend some time (re)learning how to model. However, most 3D software are very expensive; about $1000 USD for a standard edition and up to $9000 for the unlimited edition (although you can also buy a student edition for a couple of hundreds dollars).

The good news is that there is an Open Source Software (OSS) called Blender which is as powerful as the commercial packages. So I obviously jumped on it.

Basically, a 3D software allows you to go from a simple cube to a realistic-looking and complex model (a car, a house, whatever you want). My goal of the day was to follow the Beginner Tutorials of Blender 3D: Noob to Pro. Here is as far as I went:

My first model in Blender 

The tutorial says: The Blender Windowing System is a treat. I know, it looks like some sort of space-ship control panel and you have never seen anything like it. Once you learn it, however, you'll wish all your programs worked this way.

It took me a few hours to get used to the interface and model this simple person; and I must say, it is very cool when you use the keyboard instead of the menus. The popular commercial software have an interface that is easy to use (with the mouse) and many wizards. However, Blender was built (at first) for the professionals; therefore, its UI was designed with productivity in mind. It is only afterwards that its user-friendliness was improved. Funnily enough, it makes me think about Windows and Linux Stick out tongue

As a software developer, I think that it is interesting to learn different style of interfaces because it stimulates your creativity Smile. Although you can't design a classic management software that way, there certainly are some tips about improving the productivity of your UI.

Here is the final result (after rendering):

Rendering of my first model in Blender 

Isn't that pretty! Big Smile 

The next step is to add an environment around this model; then play with the lights, add some textures and maybe an animation. I will post again at the end.

C♯ language name

I've always thought that the name C# had this origin:

The term C# is a play on words similar to the language name C++: the expression C++ in the language C means C incremented by one, and the author of C++ named the language C++ in reference to its incremental improvement over C. It is sometimes thought that name comes from C++++, ie. an increase on C++, but with the + signs arranged in a square to form the # sign.

And also that it was a play on words with see sharp Smile

However, I just learned that:

C# The spoken name of the language is "C sharp" in reference to the musical "sharp" sign (♯), which increases a tone denoted by a letter (between A and G) by half a tone. However, for ease of typing, it was decided to represent the sharp sign by a pound symbol (which is on any keyboard) rather than the "musically correct" Unicode sharp sign. The Microsoft and ECMA 334 representation symbols thus agree: the # in C# is the pound sign, but it represents a sharp sign. Think of it in the same way as the <= glyph in C languages which is a less than sign and an equals sign, but represents a less-than-or-equals sign.
- Microsoft Online Customer Service.

In the title of this post, C♯ is written the way it should be (with the sharp sign). I hope that most web browsers support that.

For more details, go to http://en.wikipedia.org/wiki/C_Sharp#Language_name

We learn some new things every day. (thought this isn't mandatory to write C# code Wink )

Thanks to Wikipedia!

Come Back

After almost seven months without blogging, I am still waiting for the "right time" to come back Smile I guess there isn't a right time, so let's do it now. 

A lot of stuff happened/changed since February and it will take a while to blog about all that.
Before that, here is a funny comment that I kept receiving during my absence:

"I've more or less been doing nothing worth mentioning."
"So it goes. I've just been letting everything happen without me lately."
"Pfft. I haven't gotten anything done today."

There were others like this one. I almost freaked out the first time I receive this (like if it was a message from my subconscious) because I had really "done nothing worth mentioning" Smile

Anyway, that's one of the (minor) reasons behind my "come back". I wonder if it will stop now.

By the way, this website never flags them as spams; why? Is it some weird feature of CommunityServer? Big Smile

Oh, and for some reason, my post "My first blog's comment spam" is attracting a lot of spams. Actually, all the spams that I receive go in that topic.

Feel free to enlighten me if you know the reason.

Web 2.0 ... The Machine is Us/ing Us
I just found a video on Youtube: "Web 2.0 ... The Machine is Us/ing Us".

It is a short and simple demonstration of what the Web was and what it is now.
The kind of videos that you show to your friends (not in the IT world) so that they see how cool our work is Smile
Avoid MEAP

While taking a look at some stats, I found something quite ... (I haven't found the word yet)

Someone ran the query ["NHibernate in Action" torrent] on Google Surprise

He wasn't lucky but it certainly makes me think... 

Get NHibernate in Action Now

 My upcoming book "NHibernate in Action" is now through the Manning Early Access Program (MEAP).

Get NHibernate in Action Now! 

 The first chapter is freely available. Go, download it and post your comments in its forum.

You can also access chapters 2 to 4 through the MEAP. Basically, you buy the book now (click on the image Add to cart), you read its chapters as t hey become available and you get the final book at its release. For more details, read the FAQ of MEAP.

I'm looking forward reading your comments to meet all your expectations :) 

NHibernate in Action

In the most formal way, I am pleased to (officially) announce that a book on NHibernate is coming:
"NHibernate in Action" will be published by Manning Publications.
For more details about its content, go to its homepage: manning.com/kuate
It is also already on Amazon (not final, I would say)

Get NHibernate in Action Now!

I have been working on it for a year and it will soon go in production. If you can't wait for its release (and even if you can :D), I encourage you to sign up for Manning Early Access Program. It will allow you to read the first chapters now and to provide feedbacks (yes, you can ask me to add more content :) ). More on that later.
BTW, as you can see on the homepage, the planned release date is August 2007.

And as promised, the winner of my "NHibernate Contest" will receive (at least) an electronic version of the book. 

For people not familiar with NHibernate, it is a .NET Object/Relational Mapping tool; it allows you to load and save objects (class instances) from/to a relational database.
And for laymen (not in the IT world), I would say that it is a "tool that allow you to nicely use a database" (I'm writing this for some of friends ;) ).

NHibernate Contest - The End

Well well, looks like Amazon let the cat out of the bag :D

So the contest is over. I received many guesses, some funny, others interesting and many right.
So yes, we have a winner (the first right guess); it is: Ben Scheirman (more on that later... and maybe I should dismiss him as he had a "2nd though" :P).

What I really liked with this contest is that it generated a lot on nice ideas of projects I could work on in the future :)

Enough mysteries, you will read the announcement in my next post.

Create an application in 8 mouse clicks

Yes it is possible! Just take a look at the advertisement I just saw on ... this website:

 WinDev ads

I went to their website to find out what kind of (impressive) application you can build in 8 mouse clicks; but I guess that I will have to buy the software to find that out Confused 

NHibernate Contest - Some clues

My previous post (What am I up to?) didn't generate many comments; maybe it was too hard to guess.

So here are some helpful clues:
- Very useful
- Lengthy work
- Commercial aspect
- Hibernate has "something like that"
These vague clues should be enough for any good diviner.

BTW, I planned to make the announcement sooner, but it looks like it isn't ready for that yet :)

To make this contest more interesting, I will make sure that the first to guess it right will fully benefit from this work without having to deal with the "commercial aspect".
You have few more days...

Merry christmas and happy ending year Party!!!

More Posts Next page »