Jamal's Professional Blog

Sunday, 19 October 2008

Senior Developers are in Mars

Last week one of my technical consultation clients (development of network security applications for ISP's and ...) asked if I know someone with great experience in Microsoft .NET with strong VC++ background, and team leadership as well; someone who's willing to manage the mixed C++/.NET development environment.

Well, it did deserve a blog post as it's now 3 different clients who I know are looking for a Senior Developer to manage their development team! And like a recruiter, I've tried finding and recommending someone for the positions, someone preferably from my own professional network with a history (just to be able to give detailed comments), but you know what?! nothing happened and things are just getting worse and worse! I might soon admit experienced senior developers with strong leadership attitude are no longer available; perhaps they're all in Mars now!!!

If you know someone for the positions, please drop me a short line at jamal@mavadat.net (jamal [at] mavadat [dot] net)

Technorati Tags: ,

Labels: ,

Tuesday, 30 September 2008

Visual Studio 2010 and MS .NET Framework 4.0

Yesterday, Microsoft Redmond unveiled the next version of Visual Studio and .NET Framework:

Within last 4 years MS had been so fast on releasing development related stuff! I've seen lots of IT guys arguing this and the way MS is maturing it's framework so fast! Seriously, what do you think?

Labels: , , , ,

Thursday, 25 September 2008

Oracle's Data Warehouse Server

Although this isn't Oracle's first attempt to enter hardware market, this time it is supposed to be bigger and a bit innovative. Oracle software plus HP hardware, tested by Google. Read more:

Labels: , , , , ,

Friday, 22 August 2008

Entity Framework 3rd Party Providers

You may have already noticed 11 days back Entity Framework matured out of beta. Luckily, I've already got projects running EF and will be definitely blogging around some best practices and issues later time. But for now, I'm just sharing the following list of soon-to-be 3rd party providers for EF:

Providers Planning Publicly Available Versions in 2008 (Q3 & Q4 CY2008):

  • Devart (formerly Core Lab) - Providing connectivity to Oracle, MySQL, PostgreSQL and SQLite databases
  • Firebird - Providing connectivity to Firebird databases
  • IBM - Providing connectivity to both IBM DB2 data server and Informix Dynamic Server (IDS) database
  • Npgsql - Providing connectivity to PostgreSQL database versions 7.3+ and 8.x
  • OpenLink Software - Providing connectivity to OpenLink Virtuoso, Oracle, Informix, Ingres, Sybase, MySQL, PostgreSQL, DB2, Progress and Microsoft SQL Server databases, and any data source accessible via OpenLink ODBC or JDBC bridge drivers
  • Phoenix Software Solutions - Providing connectivity to SQLite databases
  • Sun Microsystems - Providing connectivity to MySQL databases
  • Sybase - Providing connectivity to SQL Anywhere databases
  • VistaDB Software - Providing connectivity to VistaDB database

Providers Planning Publicly Available Versions in Early 2009 (Q1 CY2009):

  • Synergex - Providing connectivity to Synergy/DE databases

Providers Committed to Supporting the Entity Framework:

  • DataDirect Technologies - Providing connectivity to multiple data stores including Oracle, Sybase, Microsoft SQL Server and DB2 via DataDirect Connect® for ADO.NET

Third Party Provider Support for the Entity Framework RTM

Technorati Tags:

Labels: ,

Friday, 27 June 2008

String.Empty vs. ""

During my .NET years I've been many times asked about the differences between C# String.Empty and empty literal (""). Which one is more preferable?! Even when developing C# and .NET coding-style and implementation guidelines this has always been challenging as every programmer has his own ideas and experience.

A) string s1 = String.Empty;
B) string s2 = "";

Here is some advise:

Performance
String.Empty is a static read-only public field which is initialised by the static constructor of the String class. Simplified MSIL code generated for A is ldsfld String.Empty which simply pushes the reference of the specified field into local stack after executing class's static constructor for the first time - 5 bytes instruction. Please consider String.Empty assigns the empty literal ("") to a static field only once during the first access to the String class and that's totally not a big deal; the resulting reference to "" will be reused during your application domain lifetime.

At the other hand, the C# statement B results into ldstr "" MSIL statement; again a 5 bytes instruction. ldstr pushes the supplied literal into AppDomain's internal string pool (CLR internal GlobalStringLiteralMap C++ class) if not previously loaded into the map. The reason is obvious, more efficient memory usage by sharing string literals in memory - a technique called string interning.

When comparing the two alternatives, statement A is so straightforward in CLR implementation making it simple and fast, whilst statement B goes through the overhead of checking the AppDomain's string pool (an internal hash-table) bringing very small performance penalties during JIT compilation of the containing method.

Coding Style
Throughout my professional career and when developing proper coding-style, I've considered we're not only talking about technology; it always involves aesthetics and human nature!!! Increasing readability reducing maintenance cost is a generally accepted coding-style design measure.

Picking String.Empty syntax usually results into higher readability score compared to the "" syntax. I'll definitely go for the first one as feel more comfortable when reading and skimming the code, not to mention how error-prone could the latter be when confused with " " (single white-space string literal).

Labels: , , ,

22 Million of Firefox 3 Downloads

Download record for Mozilla Firefox 3 in the first 24 hours (Download Day) was 8.3 million. By the way, I just got curious what is the download record now few days after the launch date and the result was over 22,560,000 download requests: http://www.spreadfirefox.com/en-US/worldrecord/

And here's more detailed download statistics: http://downloadcounter.sj.mozilla.com/

Have fun...

Technorati Tags: ,

Labels: ,

Sunday, 8 June 2008

Microsoft Distributed Cache - Velocity

"Velocity" is a distributed in-memory caching platform for building scalable, high-performance enterprise and web data-driven applications. Read More...

Microsoft's "Velocity" is very much similar to memcached (pronounced mem-kash-dee), but Microsoft's "Velocity" has nothing to do with The Apache Velocity Project which is an open-source Java templating platform.

I recommend all scalability, availability, and performance lovers give Velocity CTP1 a test drive.

Labels: , , , , ,