Subscribe to this list via RSS Blog posts tagged in General Software Development

Posted by on in Blogs
JAWS, XP Themes, and Accessibility It seems that the popular screen reader (software which translates text on the computer screen into spoken audio for the blind) JAWS has problems with applications produced in Delphi when they are manifested for Windows XP.  I don't know if the problem is limited only to Delphi applications, though.  What I do know is that we tested the latest version of JAWS with a do-nothing application which simply displays a single, standard, text edit control, and a standard label which specifies the text e...

Posted by on in Blogs
"Let It Crash" Programming This past weekend I read Joe Armstrong's paper on the history of Erlang. Now, HOPL papers in general are like candy for me, and this one did not disappoint. There's more in this paper that I can cover in one post, so today I'm going to concentrate on one particular feature of Erlang highlighted by Armstrong. Although Erlang is designed to encourage/facilitate a massively parallel programming style, its error handling may be even more noteworthy. Like everything else in Erlang, its error han...
Covariant and Contravariant Subtyping In the .NET 2.0 CLR Danny Thorpe used to say that he was very much interested in things that the .NET CLR did which C# did not support. Examples include unmanaged Win32 exports and exception filters. One thing which had previously escaped my notice is covariant and contravariant subtyping of generic types, which was apparently introduced along with generics in the 2.0 CLR. C# does not presently have a syntax for this, although the team is talking about it. Of course, some would question whether adding such support ...

Posted by on in Blogs
Literate Programming Andrew Binstock's recent interview with Donald Knuth has received a lot of attention for his comments about unit testing, multicore, and other things of which Knuth is skeptical, but I was more interested in his comments on the topics which he endorses. Knuth is the originator of (amongst many other things) literate programming. One way to think about literate programming is that it turns the notion of commenting on its head. In a traditional program, you use relatively few comments, and part...

Posted by on in Blogs
Grammar Mistake of the Year (So Far) From the index of the user manual to Nuance's Dragon NaturallySpeaking 9: possessives.  See apostrophe's (Why is this funny?) I know. I'm amused easily....

Posted by on in Blogs
clMenuBar Renders Black on Windows 2000 In Delphi 2007, you may notice some newer color constants towards the end of the list, with names like clMenuBar and clMenuHighlight. Beware! These color constants aren't supported on Windows 2000, and they render as black. Since the default menu text is also black, this makes the menus rather tough to read! If you use them then you should detect Win2000 (and possibly earlier OSs) in code and replace them with a supported constant such as clBtnFace....

Posted by on in Blogs
Why an App Might Disappear Without Notice I was previously aware of two reasons that an application might simply disappear, without any notification to the user: A stack overflow (you sometimes get a message box about this, but not always) Data execution prevention Raymond Chen adds another item to the list today: Doing ugly things to the stack Know of anything else? Add it in comments....

Posted by on in Blogs
Versioning DB Metadata Changes and Performance Here's yet another guy with more good ideas on how to version database metadata changes. Unfortunately, the ideal method of database metadata versioning remains to be discovered. The ideas discussed in K. Scott Allen's series are good from a version control point of view, but they will have serious, negative performance implications in the real world. In particular, this bit: Once a script is published into source control, it cannot be changed! Once someone updates their database with an upd...

Posted by on in Blogs
On the Ubiquity of Garbage Collection In previous posts, I have described features of garbage collection which I consider beneficial. Today I am going to discuss a "feature" which I think is a good reason to learn about garbage collection, but not necessarily a good thing overall. To wit: If you intend to continue working in the software development industry, you're going to be using garbage collection, whether you like it or not. This may be a hard pill to swallow for so-called "C++ programmers" or "Pascal programmers" who do ...

Posted by on in Blogs
Garbage Collection and Functional Programming This post is going to be short and sweet, because the point is very simple: If you use a functional programming language (and, if you want to learn to think outside of the Delphi box, you should), then you will be using garbage collection. There are many reasons why this is the case. Garbage collection is a core feature of functional programming, because functional programming features do not work well with the semantics of explicit memory release. It is telling that language implementors ha...

Check out more tips and tricks in this development video: