Software Development optimize

Developer news: Rails updates, SQL Server 12, more Azure pricing cuts

Read about PHP 5.4.0, IronPython, Bing Maps for Metro style apps, NetBeans IDE 7.1.1, why Visual Basic is better than C#, and more.

Language/library updates

PHP 5.4.0

PHP 5.4.0 is available. This release has undergone a lot of release candidates and testing. The new release looks good -- it even includes a webserver for testing.

Rails updates

Rails 3.0.12, 3.1.4, and 3.2.2 have been released. All of the updates contain a smattering of big fixes.

Typesafe Stack 2.0

Typesafe Stack 2.0, a full open source software stack for Scala development, is available. It adds the Play Framework, Typesafe Console, and Akka 2.0.

Scala 2.9.1-1

Scala 2.9.1-1 addresses a few minor bugs.


IronPython is finally available in a full release. Included are previews of mobile versions for Windows Phone 7.5 and Mini for Android, which should be of interest.

Bing Maps for Metro style apps

Microsoft released a version of its Bing Maps SDK that presents maps in a Metro style for use in Metro applications.

Tools and products

SQL Server 12

SQL Server 12 has gone gold. This major release incorporates Hadoop and a new in-memory database system that provides incredibly fast performance for data warehousing and BI.

More Azure pricing cuts

Microsoft cut the cost of Azure storage and compute instances. Microsoft and Amazon seem to be in a race to the bottom here, with customers to benefit.

NetBeans IDE 7.1.1

The latest version of NetBeans IDE updates the GlassFish and Java ME SDK support and has the most recent patches and small performance tweaks included.

Unisys AMPS

Unisys launched its new AMPS solution for helping enterprises modernize existing applications with SOA techniques.

AppFog adds ClearDB and CloudMailin

AppFog has partnered with ClearDB and CloudMailin to support its offerings within its Platform-as-a-Service (PaaS) solution.

Typemock Isolator V7

Typemock released version 7 of its Isolator unit testing product. New features include Autorunner (to only run the relevant tests on each build) and Visual Code Coverage (which shows what parts of code are test covered).

Editorial and commentary

10 reasons Visual Basic is better than C#

Andy Brown points out 10 things that Visual Basic does better than C#. I agree with a lot of them, but I think a few just aren't that important.

Tips and tricks

Writing unit tests for C#

Patrick Smacchia has an extremely in-depth, must-read article on unit testing at Simple-Talk.

Mongo + PHPCloud

Kevin Schroeder wrote a good, brief tutorial on calling Mongo from PHPCloud.


March 26-29, 2012: Agile ALM Connect - If you're interested in Agile methodologies and techniques, the Agile ALM Connect event will be put on by the Eclipse Foundation March 26 - 29, 2012 in Reston, VA. The conference has announced its program and speakers. May 3-4, 2012: webDU 2012 in Sydney - TechRepublic Australia Editor Chris Duckett writes: "The conference has also issued a call for papers, with potential speakers required to submit a relevant topic for a 50-minute session. The WebDU site says that just about anything to do with web and rich internet-application development and related topics will be considered. Submissions are due by January 8, 2012." Go to the webDU site for more details about the event. May 18-19, 2012: Italian phpDay - There will be a phpDay conference in Verona, Italy May 18 and 19, 2012. June 7-9, 2012: PHP conference in Amsterdam - The Dutch PHP event will be held in English. October 1-3, 2012: Business of Software 2012 - Registration is now open for the Business of Software 2012 event, which will be held in Boston. I'd love to get to this event myself, though I doubt my schedule will allow it.


Also read on TechRepublic

Keep your engineering skills up to date by signing up for TechRepublic's free Software Engineer newsletter, delivered each Tuesday.


Justin James is the Lead Architect for Conigent.

Mark Miller
Mark Miller

You already know what I've said about preferring VB for Office applications. When I worked with VB.Net, it felt clunky (though familiar), and often verbose. Somehow I felt better in C# when I worked in .Net. I'll answer most of the points. His objection about upper and lower case is understandable from a beginner's perspective. The key to dealing with it is to use discipline. In the projects I worked on in C, C++, and C# I always lower-cased the first word in a variable name, and then upper-cased the subsequent words, and upper-cased each word in a structure or type name. If I had a prefix in a variable name, I used that as my first "word" in the name. Once you set up a predictable pattern, you don't have to guess. I agree, though, this makes things complicated, and I think that the C languages *do* make things complicated when you try to use them for applications. They weren't meant for it, but C# tries to deny that, as so many programmers did before it came along. I thought he made a nice point with the "case" statements. The VB code looks nicer there, from a common sense perspective. I was thinking that someone who was more into logic would be confused by it, because they could ask, "Why doesn't it come out as 'middle-aged' for anything under 65, since it would satisfy all of the statements up to the Else?" There is some implied logic going on that the code doesn't make clear. Maybe this is why C# programmers prefer its style. It makes the logic very explicit. I was trying to think if there was a way to do what he wanted succinctly using what C# has built in, but all I could think of were if-else statements, and even then you'd have to repeat tests. I did a little looking, and it turns out C# has ranges, but I don't think it would solve this problem, since it looks to be restricted to defining enumerators, and all that enables is iterating through a loop, not testing bounds. I think the kind of range I'm thinking of could be constructed with a kind of range class you define yourself, and a method extension on Int32, or something. I was trying to think of how this would be done in Smalltalk. Some enterprising C# programmer could use it as a model for this scheme. ((0 to: 17) includes: ageEntered) ifTrue: [txtVerdict := 'child']. ((18 to: 49) includes: ageEntered) ifTrue: [txtVerdict := 'young person']. ((50 to: 64) includes: ageEntered) ifTrue: [txtVerdict := 'middle-aged']. ageEntered >= 65 ifTrue: [txtVerdict := 'elderly']. I could do something more succinct than this, but it wouldn't come out well in C#... I thought some of his points were invalid. You can certainly "rewire" controls and rename them in code in C#. You don't have to use the IDE tools. It's just more work, as he pointed out. "Stupid symbols?" Meh... He hasn't experienced the beauty of C's expressions, but it is kind of difficult to experience that when you're writing applications, because you don't have too much use for them. C has a function for testing if a value is a number. I think it's called isdigit(). There's probably something like it in C#. The catch is it's character-based. It doesn't look at strings, though nothing stops you from putting this into a loop and testing the whole string... Not that I'd enjoy doing that, though I have done it. Re. enumerations As I recall, in C# they're considered like symbols in other higher level languages, so that you can say stuff like: if (a == enum.Xml) {...} So if "a" is the same enum type, there's no conflict. C# has the same type strictness as the other C languages. You have to cast types in them, too. Personally I think C# was invented to attract C-language programmers to the .Net platform, much as Java was designed the way it was. Its conventions and behaviors are designed to feel familiar to people who've done work in C and C++. There isn't any real reason it has to be the way it is other than that.

Sterling chip Camden
Sterling chip Camden

If what you want is an infantile syntax for procedural programming. Comparing the two is sort of like saying "cat food is tastier than dog food."


As far as infantile, it's nice to be young in code as well as young at heart.