This Blog


Favorite Posts


February 2010 - Posts

  • Fifteen years of Delphi

    Yesterday, Valentine's Day, was the 15th anniversary of Delphi. On 14th February 1995, in the middle of the Software Development conference in San Francisco (SD West), Borland launched this rather good language called Delphi, except that, of course, Delphi was rather more than just the language: it was the stunningly fast compiler, a brand new run-time called the VCL, and a complete RAD IDE with lots of controls.

    MangoDiskette At the time I was working for a company called TurboPower Software. We had a booth at SD West but I'd drawn the short straw and wasn't there. Nevertheless, Brian Foley and Lee Inman were and demoing our new still-in-beta Delphi-compatible products, Orpheus and Async Professional. Or, rather, since the Borland booth was being completely mobbed by attendees wanting to see the new product, Brian and Lee were just demoing Delphi itself.

    And no wonder the Borland booth was being mobbed. An IDE and language that enabled you to write controls in the language itself? Pow! Take that, Visual Basic.

    We'd been using betas and early alphas for a while (I still have the "Mango" diskette set that Borland provided TurboPower — see right for the first one in the set — downstairs in the basement, with, of course, no diskette drive now to read it) and had been playing around with the new RAD technology (drop a button on the form and the code changes!) and features like exceptions. We were completely sold on the new ease-of-use and ease-of-development that Delphi provided — Turbo Pascal for Windows was just horrible — and I still remember that feeling of euphoria on writing my first control, installing it in the IDE, and dropping one on a form. Unlike Nick Hodges' TSmiley, it was a progress bar, if I recall correctly, and eventually became TovcMeter. Lee Inman and I wrote that first version of Orpheus, but apart from the meter, the grid (which we called a table) and its edit controls, I can't remember what other controls I wrote. I suspect that Lee wrote the rest, but I'd have to check with him.

    About three or four years later, this upstart new company called Developer Express burst on the scene with, what I can easily admit at this remove, a rather better grid control than the one I'd written for Delphi 1. Of course by then Borland were up to Delphi 3, so it was all very much easier for them than for us pioneers. (Heh, I'd better watch out the next time I see the R&D guys...) DevExpress then proceeded to release a whole set of controls and to take over the VCL third-party UI control market (but don't let Ray hear I said so).

    Of course, in the past 15 years, the Delphi world hasn't been totally plain sailing. There's the K-word, the myth that even-numbered versions sucked, Inprise, Borland, Delphi for .NET, is Borland selling it or not?, and so on.

    But notwithstanding all that, there certainly has been some remarkable technology released under the "Delphi" banner. 32-bit Delphi 2 only a year after 16-bit Delphi 1. The ability to create OCXs and controls for VB. (Pow! Take that, VB. Mwhahaha!). Design-time data throughout the versions. Delphi Prism. Gesture support. Etcetera, etcetera.

    And, now we're promised a Mac OSX version, and there are mutterings about a 64-bit version. It certainly seems the next 15 years are going to be an equally wild ride.

  • DevExpress Newsletter 21: Message from the CTO

    image With 20 newsletters under our belt, we decided to try out something new for issue 21: having the Message from the CTO as a video you can watch instead. It also helped that the topic or theme I was discussing easily lent itself to a visual metaphor and our videographer, Jeff, had a field day in so translating it. (Click on the image to be directed to our video site, tv.devexpress.com.)

    I've had a couple of requests for the text of the Message as well — sometimes it's hard to watch at work, or just frowned upon — so here it is:

    Thinking in black and white can be bad

    I've done this myself in the past. I'll hit a problem, decide on a solution, and suddenly that solution is the correct one forevermore. My solution has entered the black-and-white zone, the programmer's binary view of reality, zero or one, right or wrong.

    Unfortunately, reality is more like the Twilight Zone. There's shades of grey everywhere. Heck, even on the web there are 254 levels of grey between black and white.

    You'd think I'd know this from my own interest: algorithms and data structures. Take for example that most ubiquitous of structures: the map or the associative array. It stores a bunch of name-value pairs in such a way that finding any of them by name takes place in constant time. That's right: despite the number of items in the collection a search for any one of them will be the same. An identical result goes for adding a new name-value pair to the collection or removing an existing one.

    It's an extremely strong concept, which is why the underlying structure, a hash table, is used all over the place. Seems pretty black and white, no?

    Unfortunately, what I just said is not quite the whole truth. The problem with hash tables is that their efficiency is actually quoted as an *amortized* value: over very many insertions, deletions, and searches, the average time per operation is constant. However, in certain situations, namely when the hash table has to be grown to lower its load factor, the time to complete an insertion will be proportional to the total number of items in the table. The application will suffer a hiccough.

    In other words, the run-time efficiency of a hash table (and hence a map or an associative array) is not black and white. It's a light grey. You may decide that the greyness is light enough that you don't care, or you may decide that you'd prefer using something else that has an even lighter grey, but either way you cannot view it in black and white.

    Every time we write code, we're encountering scenarios for which we have to make a decision on how to proceed. These decisions are made based on the reality we see, on the experience we have, on the understanding we perceive. They aren't black and white but are some shade of grey, perhaps darker, perhaps lighter. If we could spend more time on the research, we could perhaps lighten or darken the grey.

    In other words, we should views our decisions (and other people's decisions) as being better or worse, rather than absolute right or wrong. Cross with me into the Twilight Zone.

    I was talking to a friend recently about this topic, and he said it is, in a way, the core of an agile development methodology. Things are never black and white there: you try something out, if it works, great, if it doesn't, equally great, since you can try something else out. Of course you then get to polish your initial design and implementation and lighten or darken the grey.

  • (Early) Sneak peek: Charts get better and better in v2010.1

    I twisted Damon's arm in the recent conference call on DevExpress R&D progress to show me some of the new things that his team has already added to our charting products for v2010 vol 1. This morning I got an image-laden email that caused Outlook to sweat a bit and all I can say is they've been working their tushes off for the past couple of months. I'll note there's still a good 4 weeks to go before code freeze for v2010.1 so there's bound to be another charts sneak peek before then.

    So, grab yourself a cuppa and relax as I go through some of the completed new stuff.

    First of all, let's look at the traditional XtraCharts product for WinForms and ASP.NET. There's a big new chart type — with many variants — for XtraCharts v2010.1: the stacked side-by-side bar chart. Here's the standard 2D look:

    Stacked Bar Side-By-Side WIN

    (As usual, click the image to embiggen.) Of course there's a "full" version as well:

    Full Stacked Bar Side-By-Side WIN

    And, it almost goes without saying that there 3D variants of them both. The normal version:

    3D Stacked Bar Side-By-Side WIN

    And the full version:

    3D Full Stacked Bar Side-By-Side WIN

    The team has also added the ability to custom draw the legend of a chart (the color, the marker size, and the text attributes):


    I'm sure you'll agree that this is pretty impressive all on its own. Furthermore the team are currently working on another oft-requested feature: annotations. Since this is still under development, this is a very early snapshot (and the look may change before release), but at least you can see where they're going with this:


    On the WPF side of things, in DXCharts, there is just as much forward development. Here's the stacked side-by-side bar chart:

    Stacked Bar Side-By-Side WPF

    And, of course, the full stacked side-by-side bar chart:

    Full Stacked Bar Side-By-Side WPF

    They've also already added custom-drawn Chart titles:


    And custom-drawn series titles:


    And, if you remember from the 2010 Roadmap, the team is also working on making the 2D charts in DXCharts compatible with Silverlight, ready for a beta version with v2010.1. As I said, the charting team has been working really hard.

  • Curl up in front of a roaring fire with our EULA

    OK, the headline is said partly in jest, but the intent is serious. You see, we had a weird support case over the weekend where tempers were starting to rise, until Alex in support worked out what was going on.

    The customer was writing a small test program with ASPxScheduler. Worked fine on his development machine — yes, it's the perennial programmer's excuse Smile — but when he copied the test app over to the production server with all required DevExpress assemblies and ran it, blam, the Yellow Screen of Death. The error was frankly bizarre: "Make sure that the class defined in this code file matches the "inherits" attribute, and that it extends the correct base class." Nice, but what the … does it mean?

    Of course, the support team couldn't replicate the problem either (more "works on my machine" in other words). We thought it was one thing and then another, nothing seemed to make sense, and every back and forth would dial up the frustration and the tense atmosphere towards the magical 11. Even Mehul was dragged into the fray, and he's in Paris.

    Finally this morning, Alex noticed something in a screenshot: the customer was copying the *.design.dlls to the production website as well. The customer considered them part of the "required DevExpress dlls" and had unknowingly copied them over along with the run-time dlls. Our support guys, knowing the language in the EULA, had naturally assumed that this wasn't the case and so were trying more and more outlandish scenarios trying to replicate the customer's problem. Removing the design-time-only dlls solved the issue.

    The moral of the story is this: the EULA not only defines your rights and ours and is admittedly quite boring to read, but it does also define a long list of dlls that you can — are allowed to — deploy along with your application. None of the *.design.dlls are deployable.

    So, take a moment to read our EULA. You may save yourself some support time in the future…


Chat is one of the many ways you can contact members of the DevExpress Team.
We are available Monday-Friday between 7:30am and 4:30pm Pacific Time.

If you need additional product information, write to us at info@devexpress.com or call us at +1 (818) 844-3383


DevExpress engineers feature-complete Presentation Controls, IDE Productivity Tools, Business Application Frameworks, and Reporting Systems for Visual Studio, Delphi, HTML5 or iOS & Android development. Whether using WPF, ASP.NET, WinForms, HTML5 or Windows 10, DevExpress tools help you build and deliver your best in the shortest time possible.

Copyright © 1998-2018 Developer Express Inc.
All trademarks or registered trademarks are property of their respective owners