New Patterns in Software Development

Today we’ll have a slightly different post, delaying a little bit our other favorite themes, speaking about “new” (note the quotes) patterns in today’s software landscape.

Well, one can write an entire book on this theme, that’s why we’ll stop today on just one pattern: The Open Project.
Continue reading

Dangerous Cross-Roads

{$IFDEF Danger}...

Nobody can harm me, except myself.

St. John Chrysostom, speaking about his executioners

While preparing the FileSuite for release (already a beta is available for download) we will dig(g) once again in the dark areas of Delphi’s source code.

While in one of ours last posts we spoke about an opinion which now and then is a hot theme in Delphi community (the legendary var block) – and enough programmers expressed their concerns about the safety issues tied to this – today we’ll speak about something opposite… Continue reading

Community Pulse: Delphi and RAD Studio Prices from v1 till Now

Hi guys, we usually don’t post so often, but there are very hard fights on .public.non-technical battlefield about a yet-to-be released low-priced / free Delphi edition. There are very very very good posts by members of the team – Michael Swindell (the “Senior Vice President of Marketing and Product Management“) stands out by far – seconded by Nick and Allen. Be sure to check them out, (if you didn’t already) because Michael reveals many things which were till now unknown or misinterpreted…
Continue reading

FileSuite, Delphi Core and the Cross-Platform Quest

Well, we have a new release of FileSuite featuring a fine-grained multi-threaded file engine which can execute any (oh, well…) custom action, exe file or script on a file or host event (yes, you can have a centralized backup control for any host from the network immediately when it will be online – no need to install any software client) enough bug fixes, mirroring enhancements aso. You can see some from the enhancements in the screenshots page. Also we found a new payment processing company which has much more features thing which allowed us to reduce the price. So, we must be happy… And yes we are. Almost. Continue reading

How the Humans Think

Happy new year to everyone! 🙂

To everyone? Well, yes, I suppose so because we don’t require any password to read this post 🙂
New year? Well, yes. Dude, have a look at the calendar. (Well, we accept as standard the Gregorian Calendar, isn’t it?)
Happy?… hmmmm… this can be a problem. A tough one. Let me explain… Continue reading

What one can found behind a mask?

What if we’ll add the “x” feature?
This is the question.

(adapted from) Steven C. McConnell

Well, first of all let’s see what we see 🙂

Masks.MatchesMask Function

Indicates whether a file name conforms to the format specified by a filter string.

function MatchesMask(const Filename: string; const Mask: string): Boolean;

Call MatchesMask to check the Filename parameter using the Mask parameter to describe valid values. A valid mask consists of literal characters, sets, and wildcards.Each literal character must match a single character in the string. The comparison to literal characters is case-insensitive.Each set begins with an opening bracket ([) and ends with a closing bracket (]). Between the brackets are the elements of the set. Each element is a literal character or a range. Ranges are specified by an initial value, a dash (-), and a final value. Do not use spaces or commas to separate the elements of the set. A set must match a single character in the string. The character matches the set if it is the same as one of the literal characters in the set, or if it is in one of the ranges in the set. A character is in a range if it matches the initial value, the final value, or falls between the two values. All comparisons are case-insensitive. If the first character after the opening bracket of a set is an exclamation point (!), then the set matches any character that is not in the set.Wildcards are asterisks (*) or question marks (?). An asterisk matches any number of characters. A question mark matches a single arbitrary character.

MatchesMask returns true if the string matches the mask. MatchesMask returns false if the string does not match the mask. MatchesMask raises an exception if the mask is syntactically invalid.

Note: The Filename parameter does not need to be a file name. MatchesMask can be used to check strings against any syntactically correct mask.

(from Delphi’s Help)

So, we have here a very nice function primarily designed to (quote again) Indicates whether a file name conforms to the format specified by a filter string, right? Wrong!Continue reading

Community pulse: New ways to enhance Delphi

There is an interminable thread on the public.non-technical battlefield called ‘Delphi for the Mac’. At the time of writing, there are approximative 500 (five hundreds) posts on that. (493 to be more exact). No, I won’t provide a link. Because I think that is better (at least now after 500 posts) to start a concrete discussion in order to enhance our tool of choice.

Don’t get me wrong, I do think that defending a tool is good, but this defense must take the form of enhancing our product, and not denigrating the other one just because it doesn’t fit with “my/our” philosophy.

So, in my humble opinion, we must take and adapt what is good on the other product (XCode / Interface Builder in this case) and avoid what is bad. I know that you are willing to do give feedback on this, the vast majority of you proved it many times, including in the last poll which we made. The results are depicted in our classical pie on the right.

However, our community has a long lasting disease – we transform ourselves in a community of talkers in order to be a team of doers. We had this also with .NET and now it seems that we start to have it with Mac. Sons, the better covering of user’s needs through innovation is the thing which will ensure our survival.

So, in short: …and correct me if I’m wrong. 🙂

Continue reading

Return of the JEDI

Battle of Wikipedia

Don’t sign my doom because is unfair. But support the next Patriarch which will come after me, if he’s chosen accordingly with the rules. The schism is the worst thing.

St. John Chrysostom

Our biggest strength is unity. Even if everyone from us has his own paths. But the conscience of a community makes us strong, stronger than others who are alone trying to compete one with each other. I think that the reason of our existence is to cover as good as we can the needs of our user base and not so much to compete with other entities (commercial or not) which might target the same market segment. We know what happened when a certain company tried to make different “killers”, finishing with .NET ‘killer’, forgetting about the real needs of its community.

On the other hand, if someone will do a study… Continue reading

Why we didn’t convert to .Net. And perhaps we never will…

ShipFirst of all, let me tell you that I don’t care about Delphi as a product by itself. But I do care about our users.

In fact, I was a very convinced assembly guy at the beginning. I didn’t like ZX Spectrum’s Basic, neither the Commodore’s, neither CP/M’s (sorry, guys, perhaps your mileage may vary). Always I tried to please the others and Basic didn’t gave me the power to do this.

In the days of Turbo Pascal I was quite distant from the product because… Continue reading

The Omega Effect


The Green Grass of Home

Yesterday, David I passed by  and congratulated in a comment all the winners of “Delphi Legends” Community Award. (Look at the comments in that post).

It was a very nice gesture, but I really want to comment some of his words here because I think that they are really important.

We now have more people working on Delphi than ever before. Even with increased resources, we still need the vibrant Delphi community to make programming in Delphi the best way to build applications.

David Intersimone “David I”

Well, I think that is the time to speak about the Omega Effect…
Continue reading

Delphi Legends 2009 Community Award: The interviews

WinnersHi guys, once again. We have one week since we published the results for Delphi Legends 2009 Community Award. We have also a lot of interesting info to publish both technical and some points of view regarding to important community events which we pass now (including the somewhat unrelated mySQL matter), but today we have a very special post. You will have the occasion to see who are the winners and what your chosen ones are thinking about. The post is rather long (it seems that is a fashion nowadays) but the content (in my humble opinion) really worth the effort… Continue reading

The Genuine Value



“Any IT problem is human in its very core”

Few days ago I spoke about a war of thoughts which is present in our community – basically saying that somewhere in the future Delphi will die. And I proved that this isn’t founded – it is a perception which others exploit. But it seems that we should add much more data on this. Well, let’s start… Continue reading

Delphi is dying (TM) …NOT!


The devil seeks the accord in your mind. It is enough for him to start the war.

St. Mark the Ascetic

There is a constant thinking culture which questions the future of Delphi, “Delphi is dying”, if it is (still) a reliable tool etc. And now I don’t want to focus on the incurable nay-sayers which are among us, programmers, because these kind of characters are always a more or less useful presence for the community… Continue reading

WordPress’s Contest – Ways to leverage the community potential

Hi guys, WordPress started a nice contest – more details here. This should give us an idea how to leverage the community potential and be on target while keeping a fast paced advancement of a “certain product” ;-). Why shouldn’t we follow their example?

Also, please don’t hesitate – if you have more ideas to win the contest I’m eager to listen – I really want to make our tool of choice more popular, and bringing new guys here is one of the ways.
Anyway here are my entries to contest:… Continue reading

Turbocharging Delphi 2010 #2: Adding dynamic functionality to 3rd parties – the solution



First of all, let me stress that once again it is shown that the community is way smarter than any individual alone. And of course, when I say any individual, I mean any individual, regardless of company at which he’s working ;-). That’s why I think that the feedback was, is and will be the main innovation power, especially in our industry were, due of the very intellectual nature of our job we can make very easy mistakes if we advance alone. Only in this way we can approach to the naturalism and neutrality of perfection. Yes, I put the Stanley Kubrik‘s photo on purpose.

The man of the day in this case is Heinz Z. (Heinz, if you want, I can make public your full name 🙂 ) which on my latest post about different techniques to extend the functionality of a class which we cannot control, gave a very simple and effective solution. Rather than leaving his answer there I think that’s appropriate to make a special post here giving him the pen:… Continue reading

Fighting The Battle of Innovation


“Father, what we are missing in order to become saints like the ones from the past?”

St. Seraphim of Sarov

Preamble: This post is a humble addition to a comment made by someone from you. I’m sure that he knows what I’m talking about… …feel free to skip if you wish…

…On the day of the attack on Pearl Harbor (December 8, 1941, in Manila),… Continue reading

What means RAD anyway?

ClimbingOnce upon a time, Rapid Application Development “meant” IDE. This was Turbo Pascal. One could way faster work with an integrated environment rather than with disparate programs trying to fit them together in order to form a toolchain.

After this was the Visual bubble. The Form Designer with an Object Inspector near to it in order to speed up the GUI development process. This was Delphi and Visual Basic… Continue reading

For Whom The Bell Tolls


Take a look to the sky just before you die
It is the last time you will…

…being from enough years now a Delphi community member. Also, I monitor and/or I’m involved in other communities. But from some time now I look at Delphi community from outside. Also my other ‘specialty’ allow me to cast a very different eye on the matters. Different from a programmer perspective. But I’ll try to bind all the puzzles… Continue reading

On Programming Warfare

“Do not repeat the tactics which have gained you one victory, but let your methods be regulated by the infinite variety of circumstances”

Sun Tzu

HumansThe father of modern strategic study, Carl von Clausewitz, defined military strategy as “the employment of battles to gain the end of war.” Hence, he gave the preeminence to political aims over military goals, ensuring civilian control of the military.
Of course, this applies also to the software development where any IT problem is human in its very core… Continue reading

RAD Studio 2010 Released!

RAD Studio 2010 is released!

We wish to thank to all Delphi / C++ Team Members which did a really great job with this release. Perhaps they’re not perfect but what was really impressive was the fact that they tried a lot to focus on what the community as a whole really needs. That’s why I think that their love which is embedded in this product will last in time.

That’s why we had beta reviews of it and we still have. But let’s have a look upon them… Continue reading

2nd virus threat: Now Much Dangerous than the former

PropagandaPerhaps you already know about the “Delphi virus” which is in the news these days. I would not enter (again) in the details of this. There is already enough virtual ink on this. For example, Marco Cantu summed up some links on the theme. Also Craig Stuntz has a nice post about this.

But now in the wild is a 2nd ‘virus’ with a much more dangerous ‘payload’ that the former:Continue reading

Building impossible frameworks

twinsSome time ago we had to write an impossible application. And like any other such application, it doesn’t showed up from the beginning how “impossible” it was. It was about a team scheduler which would assign different task to different team members, based on various constraints related to each member’s capabilities as well as to the project time line.
Why I remembered this? Because of some comments on a previous post made by Chris Rolliston and Ken Knopfli. Both made good comments with regard to the hidden complexity which most of the times surfaces during the application lifecycle.
And remember, the most common cause of failure of a software project is (according to Steve McConell) is it’s uncontrolled complexity. Also, Tom DeMarco & Timothy Lister note in their reference book (Peopleware – a must read) that not even a single project (from thousands which authors examined) failed because of a technical reason.
So, we took our weapon of choice (Delphi of course) and started to build the impossible… Continue reading

RAD Studio 2010 Review #7: – A historic moment

RAD GesturesHi guys, as usual we’re talking about a prerelease beta. Please keep in mind that anything can change till release. Also, many thanks to Embarcadero for giving us the permission to talk about this.

Well, today, at least for me, is a historic moment. (ok, as a field tester it was some time ago). But why? Take a look at the following picture (it’s a Delphi form in the IDE’s Form Designer), stop reading, and try to spot what is so historical in it. Please feel free to comment at the end… Continue reading

The Worst Unfixed Fixed Inexistent Bug

Wondering eyesWe all know that Delphi is a really great tool. Many consider it #1 in Desktop Windows development. So do I, but perhaps I’m biased. I use it from so many years, and I still have to find something better that it, especially when it comes to talk about complex GUIs, speed of development, speed and size of executable, power and flexibility given to the developer, mainly when we speak about database-related applications.

Pretty nice advertisement, eh?…

Well, many of us think that this is true, especially with the latest versions of it (I mean D2007, D2009) – guys, no religious wars, please! The post is about another thing.

It’s about a thing which, while “inexistent” (note the quotes) from technical POV (perhaps) it was (and still is!) one of the Most Expensive Human Bugs which I found in my entire career… Continue reading

On Design

DesignThese days we had to work on some glyphs for some components which we’re about to release. Well, we had a great discussion on this because (isn’t it?) we all like to give our favorite color to the bike shed. But sometimes we must overcome our personal passions and inclinations and think to the others. Anyway we do not design for ourselves but for others.

At a first glance we should ask “How do you like it?” And indeed we should.

At a first glance we should obey to what the users  say. And indeed we should.

At a first glance that’s all. But is not… Continue reading

The power of a Community

David I.Just saw the David Intersimone’s post SourceForge announces winners of Fourth Annual Community Choice Awards mentioning that “The best open source project for enterprise was Firebird SQL and stressing that Firebird has its roots in Interbase, one of the Embarcadero‘s products.

Also, David (as well as other Embarcadero insiders) stated enough times already that they will support Firebird in their upcoming products (where applicable), including their flagship product, RAD Studio.

Also, David states that “We look forward to a great future working closely with the Firebird community.”

I think that this is an historic post. It makes… Continue reading