I left my job at SSQ Groupe Financier, an important insurance company in Quebec to join Facilité Informatique, an IT consulting firm. For the next year, I’ll be working exclusively with C#/ASP.NET at Société Immobilière du Québec, a government organism that manages a lot of buildings around the province.
So, that means no more Java/J2EE and Adobe Flex for me for a while. In fact, .NET skills are in crazy high demand here in Quebec City while Java is unfortunately slowing dying… Microsoft really did a great job promoting their technologies!
Personally, I think C# has became a really great language over Java. LINQ is simply amazing, one of the greatest innovation from MS for a while. Also, small things like object and collection initializers are really useful, especially for unit testing.
Unfortunately, we’re using ASP.NET WebForms. I would I have loved to try ASP.NET MVC because so far, I think it’s really promising. As for data access, we opted for NHibernate, which is nice for me, because I’ve got a lot of experience with Hibernate in Java. However, Entity Framework 4.0 seems promising at this point. I’m looking forward to the evolution of those technologies.
Finally, I’ve begun testing BDD with a port of Ruby’s Cucumber to .NET called SpecFlow. I’m totally amazed at the possibilities of those tools. If implemented well, it could really close the gap between the domain experts and the developers while developing the system.
It has been around one year and half that I updated this blog so a new status update is way overdue!
I’m still living in Quebec City and still working for SSQ Groupe Financier. However, we finally bought a brand new house last February and we moved in early May. We really love our house because everything matches our taste, which is something really nice.
When I started that job I had absolutely no clue about Adobe Flex. Now, after almost two years working with that technology, I feel I became a very strong Flex developer. I really like working with Flex, it’s a very well though-out UI framework. We are really pushing the limit of it at work and I’m pretty proud of what we have accomplished.
Since moving back to Quebec city, I hadn’t have the chance to travel that much, which is something I’m missing a lot… However, this summer we had a nice 4 weeks vacation in Peru. That country is so amazing! I recommend everyone to go there. We saw obviously Machu Picchu but also Cuzco, Colca Canyon, Arequipa, the Nazca lines, Lima and even the jungle! I have to post some pictures on that blog.
Finally, I’ve been learning Spanish for the last year and half. It was very useful to have some knowledge of the language in Peru. I can now say basic sentences… To get to a better level, I should really start reading more online content in Spanish everyday. I should also start watching TV in Spanish… Well, I still have hope that one day I’ll be a true tri-lingual!
So, here it was, my annual status update! Hope everything is going great for you, my friends back in Redmond!
At work we had some heap usage issues with our J2EE/Flex based application. On a VM max heap of 1200mg, we were using 800mg right on startup. There was simply not enough memory to get some good performance of the app.
I did a memory dump of the heap and analyzed the objects that were not collected by the GC. It turned out that there were 400mg of char[] instances stuck in memory. All those strings where owned by Hibernate SessionFactory instances.
As I discovered, Hibernate caches all the SQL parts that it could use. (ex: for each mapped entity, it pre-builds the SELECT, INSERT, UPDATE statements, it caches the column names of each field, etc.) Because our database is very large, we have more than 200 entities in our SessionFactory, so it’s 70mg of memory that is uncollectable for each instance.
OK, 70mg is not a terrible price to pay, however, we have 6 databases that replicate that same tables and we have to use them all at the same time because the user can dynamically switch to the database he needs at runtime. So, here was 420mg of stuck heap memory.
Because there is no support to change the data source after a SessionFactory/Session is built, I had to implement a custom solution to fix the problem. The goal was to have only one SessionFactory that maps all the tables of our BD but where you could change the data source dynamically depending on the user choice.
In Hibernate, you can implement a custom ConnectionProvider. The implementer of that interface returns the JDBC connection to use. The problem is that you cannot pass parameters to a ConnectionProvider dynamically; you can only configure it once. So, I modified the Hibernate source code so that it’s possible to pass parameters to the ConnectionProvider.getConnection method.
Therefore, it becomes possible to create a new Session from the unique SessionFactory and dynamically bind the user’s data source to it.
A bit of warning however, when you do this, you have to disable the second level cache. Else, if you have rows with the same IDs across your databases, they won’t be differentiated in the cache, which is a big problem. There is surely a way to modify Hibernate in consequence, but this is left as an exercise to the reader.
No, I'm not dead! Moving back to Quebec City has been more difficult than I previously thought... First, we're having a very hard time buying a house... Unlike the US, the real estate market is still in bubble mode here... We got tired of the situation and decided to rent... So, we will finally feel at home again in May... Because we sold almost everything before moving back here, we're in a shopping spree for appliances, kitchen stuff, bathroom stuff, living room stuff, etc. Well, we're almost starting for scratch! At least, I was able to move my computer! :-)
As for my job, I've been working at SSQ Groupe Financier for the last 4 months... I'm working in the investment division and they are rebuilding their legacy green-text business system in Adobe Flex and J2EE... It's a bit weird because I don't work with any Microsoft technologies... Also, we're using SCRUM as the project management tool and my team-mates nominated me as the SCRUM Master... As you can see, all of that is very different from what I was doing at Microsoft... I like to try new things, so I'm happy with the change... Also, Adobe Flex is super interesting and very fun to program with. It is seriously one of the nicest GUI toolkit I've ever used!
However, I miss my friends in Redmond... I also miss the gorgeous landscapes of the Northwest... But, even with all the crazy snow we had this winter (5 meters!), I prefer the Quebec city's weather... It so much sunnier here, it's incredible... And now that Spring is here, it's even nicer...
You stay for six weeks in youth hostels and you see every backpacker spending all their computer time on Facebook.
I have to play with the Facebook platform ASAP.
Our holiday is over but was so nice! 6 weeks is a lot of travel time and we had the chance to see so many great things. Over the next days, I will write a couple of blog posts describing our experience. I will also post our best pictures as soon as possible. (I have 2500 to choose from :-)
For now, let's begin with New-Zealand North-Island. Our itenary was Auckland, Tauranga, Tongariro, New Plymouth and Welllington.
The highlights were the Tongariro Crossing, Roturua and Wellington.
The Tongariro crossing is a very long (18km, 8 hours) hike where you walk across and climb active volcanos (one is LOTR “mordor”). Near the huge red crator, you even feel the heat and see the fumes. However, I was so exausted at the end and my legs were so sour I even woke up in the middle of night because of the pain! I had never done a hike a like this. Simply amazing!
Roturua is the heart of geothermal activity in New-Zealand. There we saw real geysers, boiling mud pools and bathed in natural thermal sources. Very impressive and unsual for someone from Canada! We also learned a lot about the native Maori culture.
Wellington is the capital of New-Zealand and a very unique city. It is an extremely compact town surrounded by very lush and huge moutains. It is located at the southern tip of the island on the shore of the emerald cook strait. The pretty suburbs are all located along a narrow valley across the moutains range. Overall, a very unique city with a definite european feeling.
I subscribe to a couple of mailing lists. Therefore, on my desktop, I was using some filters to move emails around into different folders. Now that I have an iPhone, that method doesn't work anymore because there is no filtering possible in the MobileEmail app. My iPhone inbox was cluttered and almost unsuable.
I devised a strategy with the free Google Apps for domains. I opened an acount for my jfnadeau.com domain and activated the Gmail part. Then, the only thing I had to do was to change the MX record of my DNS.
I now have a super web-interface to view my Inbox in a web browser (standard gmail) and instead of using Apple's Mail filters, I now use the Gmail ones. Each Gmail filter creates a separate IMAP folder so my iPhone mail is now as well organized as my regular desktop and web client. Neat!
Also, gmail IMAP is super fast. Much much faster than my web host!
Our plane tickets are bought and we're leaving on October 23rd! We'll spend around 1 month in New Zealand (2 weeks North Island/2 weeks South Island) then we're visiting mostly Queensland state in Australia and finishing in Sydney. We'll be back on December 5th!
After living in Redmond, WA for 2 years and a couple of months, my wife and I decided to move back permanently to our home town of Quebec City, Canada to be closer to our families…
Working at the headquarters of the largest software company in the world was definitely an extremely good experience. I shipped the best browser-integrated RSS reader in Internet Explorer 7 in addition to a shiny, more comprehensive Windows Live home page.
For the past nine years, I’ve experienced so many different companies, from the smallest to the biggest in three different cities and two countries. I also had the thrill to start and sell my own company, Lektora. Finally, I’ve traveled everywhere on the west coast of US/Canada, even Hawaii.
What will the next years look like? I don’t even know yet… I’m taking a sabbatical for the rest of year. We’re also planning an extended travel in Australia/New Zeland and definitely some much needed quality time with our families and friends back home.
On this, I’ll be in Quebec City in a couple of days and it’s with mixed emotions. I’m leaving very good friends behind and unique memories of two special years…
I just came back from a 10 days vacation in Southern California and Arizona! We visited: San Diego, Los Angeles, Santa Barabara, Pasadena, Grand Canyon National Park, Sedona, Phoenix. Click on the map to see my pictures!