Thursday, May 24, 2007

Delphi Jobs

So David I posted a link for a Delphi job listing site, and Joe pulled a chicken little jumping to the conclusion that there are only 4 Delphi jobs in existence. Unfortunately there is not one single source that lists all jobs for any skill or category. You need to do a little hunting.

It used to be that DelphiJobs.com aggregated job listings from a number of job sites, and then allowed you to view them all from their site. It was as close as you could get to a definitive listing of Delphi jobs. Since they no longer do that, here is a snap shot of the Delphi job numbers as of right now:

(Click on the [feed] link to add a feed to your news reader. Maybe Delphi Feeds can include these in a special section!)

Grand total of 1022 jobs! And that doesn't include all the job openings that are not listed on these centralized search listings, or the ones that are filled through networking (the #1 way jobs are filled). Sure, there may be some duplicates between the sites, and some of the jobs postings that are returned in these searches may be mistakes, but it certainly proves that Delphi job market is NOT dead.

It is true that there may not be as many Delphi jobs as other languages, but that is an indicator of two things:

  1. It takes less Delphi developers to complete a project then with many other languages. It is a more productive environment and community.
  2. Delphi developers have greater job satisfaction and switch jobs less often, thus less vacancies.

So it is a good thing!

Wednesday, May 23, 2007

More on Microsoft vs the Free World

I had a great comment from Jason on my previous Microsoft vs. World post.

I'll work on using losing and not loosing. I actually checked that I had the right word, but I guess I forgot to update it. I've never claimed perfection in that area, lots of room for improvement.

Despite Microsoft's claims of 40 million copies of Vista shipped, I see signs like Dell offering Ubuntu and XP instead of Vista, based on customer demands, as a sign Microsoft is losing (see, I can be taught!) there totalitarian grip on the desktop. I also read a lot of blogs, mostly of developers, and a surprising number have rolled back from Vista to XP, or jumped ship to Linux all together. No hard numbers there, just a perceived trend.

I am well aware of the differences of patents and copyrights. If you read the GPL it does cover patent indemnification as well as copyrights. In the paragraph 7 of the preamble it states:

Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.

Read the rest, especially section 7 on Patents.

From what I was reading in Fortune's Microsoft takes on the Free World, this specific patent coverage in the GPL is why Microsoft is offering certificates and not offering SUSE directly. But I was only skimming at that point while I was in the airport.

I actually do understand the GPL fairly well for not being a lawyer, but I do appreciate Jason's concern. However I may have misstated things. I was saying that the idea behind open source is that users can change or add to the code - that is one of the the basic freedoms of open source. The GPL says that if the user does distribute the changed version, then their changes are also covered by the GPL. This is referred to as Copyleft. Free software was originally designed as a developer to developer (including administrators, etc.) system since they were the only ones using computers. The Open Source definition (which came after the GPL) says you cannot discriminate (point 5) users. As the users of computers and open source software has expanded to non-developers, now they are covered under the GPL even though they have no inclination to modify the code. Not sure if you were aware of it or not, but Microsoft actually offers their own copyleft license similar to the GPL, called the Microsoft Community License. Obviously calling it community would indicate the idea that a community would use and contribute to the code, but as you stated it, they are not required to contribute to use. It also covers patents similar to the GPL. Basically Microsoft made their own GPL so they can still call Stallman evil.

As far as my Tax law reference, Jason was correct. The copyright law defines the financial gain that a license is offered for ". . includes receipt, or expectation of receipt, of anything of value, including the receipt of other copyrighted works." For some reason I was thinking I read that in the tax law because it says "financial gain". Oops, my bad.

Thanks again for the great comment Jason!

C++ Builder 2007 Announced

Just in case anyone missed the announcement. If this comes out before Orcas then CodeGear will have two IDE's released that specifically support developing for Vista and Microsoft will have 0. Looks like things are returning back to the way they were.

Key features and capabilities provided by C++Builder include:

  • Seamless support for Microsoft Windows Vista Aero, Vista Desktop and Vista APIs
  • Increased ANSI C++ conformance and compatibility including Boost and Dinkumware C++ library support
  • New C++ build flexibility and custom configurations powered by the Microsoft MSBuild engine
  • Up to 5 times in-IDE build performance improvements over prior versions
  • UML C++ source code visualization
  • Integrated C++ unit testing
  • New DBX 4 RAD data access with support for the latest versions of popular RDBMs including CodeGear InterBase®, Microsoft SQL Server, MySQL®, Oracle®, IBM® DB2, and Sybase®
  • C++ IDE enhancements including virtual folders and enhanced C++ structure pane
  • New INDY 10 Internet Protocol component suite

Read the press release

Tuesday, May 15, 2007

Microsoft vs. The World

Everyone knew it was coming, despite Microsoft's claims to the contrary. . . .

In the past, resorting to seeking revenue through patent infringement against consumers is a sign a company is going under or getting desperate. It is only when a company is losing customers at a very fast rate do they resort to assaulting consumers directly. I guess Microsoft has finally realized they are becoming irrelevant and loosing the battle to open source.

According to Bloomberg news, Microsoft "wants makers of [open source] software to pay royalties." Now InformationWeek is stating that instead of litigating or just demanding royalties, "Microsoft wants to create more arrangements that mirror the company's deal with Linux distributor Novell." But my question is what if they don't want to enter such a deal? Then does Microsoft litigate?

Contrary to popular belief, trademarks are the only intellectual property that in unenforced is lost. So you are not compelled to enforce a patent. If you were then most of the patents Microsoft owns, as well as most of the other software patents out there, would be invalidated.

Microsoft claims they only want to reach licensing agreements, but I want to know how are those arrangements that much different then the arrangement provided by the GPL (which essentially provides a reciprocal license of code in exchange for use of the combined result.) If Microsoft wants to use and contribute to Linux then they would in effect be in that kind of arrangement with every other user and contributor of Linux. That is what the GPL does.

First of all, I think they should explicitly cite the patents and the infringement, which they refuse to do. Their refusal to do that reminds me of SCO and their fishing for people to charge royalties.

Now I am a big fan of capitalism, and companies making money - that is where many jobs come from, including mine.

What Microsoft is threatening to undertake is similar to what the RIAA, SCO, and other "intellectual property holding companies" have done in the past. These companies realize that their best source of revenue is to attack consumers. It is amazing that Microsoft has decided they are in that position.

Patent law actually allows a patent holder to attack the user of an unlicensed patent. This is different then trademark or copyright law. So the fact that Microsoft "wants makers of such software to pay royalties" is an indication that they want to go after consumers. Sure they are dressing it up with "license over litigation" claims, but the fact remains they are going after consumers.

Now I am sure you are about to say "Wait, they say they are going after makers, not consumers! This is just like Apple vs. Microsoft, etc." That is where the issue of open source comes into play. Open source (specifically the GPL) is a license where by the user is allowed a license in exchange for their contributions to the code. Interestingly this license arrangement is pretty much explicitly allowed for in the US Tax law. So by saying they are going after makers of open source they are actually going after consumers, and leaving it open to go after pretty much anyone involved. I know I have contributed to some open source projects. Have any of you made your code available for the use of others? If so, then your code may have been incorporated into one of these monstrosities that are robing poor Microsoft of their revenue and they may come after you!

Since they won't tell anyone exactly what parts are infringing, and with what patents, it is obvious they would rather extract a toll then work something out. The open source community, especially Linux, has specifically said if anyone pointed out where and how they were unknowingly infringing they would be glad to correct the situation.

Technorati Tags: [] [] [] [] [] [] []

Saturday, May 05, 2007

Delphi 2007 and Binary Compatibility

A really cool feature of Delphi 2007 is it is binary compatible with Delphi 2006 (on the Win32 side). What this means is that unlike every previous Delphi and Turbo Pascal release (as far as I know) you can keep all your compiled DCU files. That means you don't have to wait / hope / pray for your 3rd party component provider to release an updated release for Delphi 2007, most of your Delphi 2006 components for Win32 will work just fine.

Typically what makes a DCU stay compatible is if the interface section of the unit remains unchanged. The really cool thing about Delphi 2007 is they added a new property to TForm for support of Vista Aero, but they still remained backwards compatible.

Allen Bauer broke the news about how this was pulled off. Steve Trefethen has some more behind the scenes details. And as usual, Hallvard Vassbotn has a great technical write-up on all the details.

One really cool think, is I think it was Nick Hodges that said they might actually go to a release cycle that only every other release of Delphi was a breaking release. That would certainly be cool, but their component partners might not like that so much.

Technorati Tags: [] [] [] []

Free Turbo Delphi, C++ or C#

Just in case you some how missed it, you can get a free Turbo product from Borland / CodeGear. You your choice of Delphi for .NET, Delphi for Win32, C# Builder or C++ Builder, but you can only have one installed at a time. They are based on Delphi 2006. The catch for the free version (called Explorer) is you cannot install components, add-ins, etc. and can only have one version installed at a time. You can buy the Pro version for just a little bit more and lift those restrictions.

[TurboExplorer.com]

Future version will be based on the newer Delphi IDE's. I suspect that after they come out with Delphi Studio 2007 (guessing on the name) with support for .NET, Delphi, C# and C++ then they will have an updated Turbo release. They hinted they may change the restrictions some then too.

Technorati Tags: [] [] [] [] [] [] [] [] [] []

Friday, May 04, 2007

Delphi 2007 IDE Multi-Monitor Support

Last night Steve asked if you could change the docked and embedded Delphi 2007 IDE to look like Delphi 7 and earlier where everything is undocked and the designer is not embedded in the same window as the code. This is especially nice if you have multiple monitors! I couldn't remember how to do this at the time. Nick Hodges, the Delphi Product Manager at CodeGear, just made a great video showing how to undock and unembed the IDE so it looks more like Delphi 7 and earlier.

The video only takes about 2 minutes and is part of his 2 minute tutorial series.

[Watch]

For the record, you CANNOT have a docked IDE with an unembedded form designer. If you skip the step he includes of switching to undocked, and just uncheck the Embedded Form designer option it switches you to undocked automatically.

Here is what to do, if you don't want to watch the video:

In the Delphi 2007 IDE go to Tools / Options, which brings up the Options dialog. From there go to Environment Options / VCL Designer in the tree on the left. Then in the Options box on the right uncheck the Embedded designer check box. Restart the IDE and you are reliving the good old days!

Lets see you do that in Visual Studio! Multi-monitors is a huge performance improvement, so anything that takes better advantage of that is a great thing.

Technorati Tags: [] [] [] [] [] []

Wednesday, May 02, 2007

8 defensive programming best practices

This article is written for PHP, but at the high level these 8 practices apply everywhere. Here they are (with comments by me). The original article has more comments and PHP specific resources.

  1. Handle unexpected conditions - of course you cannot expect every unexpected condition, but you can write code to handle things when they don't happen as expected. Even if the code just raises an error.
  2. Process external systems data properly - Instead of just assuming all input and output is correct, validate it. Be sure you are getting what you are expecting, and that what your program produces is correct. This is especially an issue with SQL and HTML injection!
  3. Test your code - Hello McFly, anyone home? You need unit tests, regression tests, UI tests, user tests, etc. Then look at what you are not testing and test that. Especially if you are releasing to the public.
  4. Monitor your site errors and act upon them - Whatever kind of development you are doing, you need to log all errors (serious and minor) and if possible centralize them. Then analyze your error logs and do something about it. When you start seeing those exceptions you put in for #1 show up, that means the unexpected happened. Now that you know what it is, you can expect it and act on it.
  5. Do not disclose errors to the users -This is huge for websites. I don't know how many times I have been using a website and it breaks and I am presented with a beautiful debug screen with all sorts of juicy details that if I were a hacker I could make use of. This is the worst with ASP/ASP.NET sites. Remove debug messages when you release - same goes for non-web development.
  6. Damage control - Make sure your program fails gracefully. Save the users data often.
  7. Backup - This is another really obvious one. First of all, use a GOOD source control system so you are backed-up during the development process. Remember to backup your database and other non-source code bits too. Then backup your users data for them. Even if you can't force them to backup their data, at least make it easy.
  8. Do what you can as you can never get defensive enough - This is like Lather, Rinse, Repeat. Once you have done all the above, refactor your code, and go through the steps again. Just be aware that things break. This goes back to #6. What can you do to make sure they don't break to bad? That is a good start.

One other point it makes is "If anything can go wrong, it will." I would not say that every worst case scenario will play out. I will however say that the more possibility for malfunction you leave, the greater the chance. Also, the more users you have, and the more time the users spend using your application, the greater the odds of any errors showing up.

What are your defensive programming best practices?

Technorati Tags: [] [] [] [] []