Friday, February 26, 2010

Tales from the Scene #7 - Marco Polo

Your reviewer was looking at a funny post on a certain forum:

"Marco Canto has released an updated version of his "handbook" for Delphi 2010. ...
Does anybody have it and is willing to share ?"

For those who are uninformed, Marco Polo refers to the game of Marco Polo. In context of programming, it means:

1) You use Delphi and stumble upon partially documented or unknown feature
2) You find a feature that is "new" in Delphi 2009 or Delphi 2010
3) It's not in the help file, or the files were removed, or the only explanation is 1 or 2 postings on Google Groups.
4) You wonder what this feature is used for.
5) You try to use it, but eventually fail because of bad or extremely poor documentation
6) You ask around your friends, they never used it or even heard of it.
7) You wonder if you are the only person in the world who uses Delphi?

Example #1 - There's this new feature called "Class Constructors". The only place in the whole internet about this is Oracle at Delphi. and the first comment #1 is "I'd like to see this in Delphi Help" but it's not there in the Delphi help files. In fact, there is almost no documentation for this and you are left scratching your head if this is a new feature or some marketing buzz?

Example #2 - The only place with lots of information about IDE is in Mr. Christopher Benson's Blog, Macro Cantu's Delphi 2010 handbook. Maybe they should put his blog, book, or anything else important into the help file, so it does not look thin and pale.

Example #3 - There's this new feature called "multiple build" but no clear way to make all the DPR files's compile settings in a group all similar?

Example #4 - The most amazing ActiveX feature not found in Delphi is ActiveX property persistence. There is not even 1 single good post in the whole Internet about this - just anecdotes, discussion, obsolete tips, pointers, half codes.

Maybe nobody in the whole world maybe except DelphiHater who tried to write professional ActiveXs using Delphi and hit upon a brick wall which seems to make Delphi seem useless.

Example #5 - There is literally no documentation how to use Delphi resultant EXE files with Citrix. Citrix is used by thousands of corporations and no single good how-to or best practices information.


Example #6 - there are dozens of new units in Delphi 2010 and mostly 1-line explanations. Even the help file is mostly 1 or 2 lines per procedure. The old Delphi 7 help had 1 example for 1 procedure and very useful.

Marco ... Polo!
The whole idea of programming with Delphi becomes playing a game of Blind Man's Bluff, where you have to constantly search for this, that, and try to get ideas how to get things done.

With such help files, your reviewer thinks this will happen:
1) New Features with not much help. Nobody will use them. The component vendors will not use it because of backwards compatibility. There are still customers using Delphi 6/7/2005/2006/2007.Why use something specific to Delphi 2010 when everyone else uses Delphi 2009, 2007, 2006, 2005, 7, 6?

2) The help files could get much worse. More new and newer features but no clear instructions how to use them.

3) Delphi Book sales are so low, if you compare NET, PHP, Python, they have very detailed and documented help files. Maybe Embarcadero cannot afford to hire documentation specialists?


4) New people who want to learn Delphi, find they cannot learn Delphi quickly enough because of bad helps.

5) Component vendors may even feel the same. RemObjects Prism suffer from the same. LMD latest VCL component - docking components comes with 3 pages of help files. Amazing! There will come time when maybe there are no help files with the component.

6) Anyone who complains about help file, TeamB will discuss this. Maybe there should be embarcadero.help.wanted.to.improve.documentation newsgroup instead.

:)

Sunday, February 21, 2010

Review: AVLockGold. Should component writers stop giving sources?

Review of GodilocksOnce upon a time, there was a security protection called AVLockGold (sold with sources) which has never been hacked or cracked. It also reads like the story of Goldilocks and the 3 bears.. For those who do not know about this story, see: Goldilocks and the Three Bears



Code review

Your reviewer was surprised to see much of:
 -Ararat Synapse (Copyright (c)1999-2008, Lukas Gebauer),
- Rijndael API (http://rcolonel.tripod.com),
- parts RX Library, parts TurboPower SysTools.

Let me explain:
in /component/ folder -
AVLockS4.pas - from AVLock (with parts from RX Library, from SysTools
blcksock.pas - from Ararat Synapse
boxes-ref.dat.pas - from Rijndael API
NewIn32.txt.pas - from AVLock
rc_rndcrypts4.pas - from Rijndael API
rijndael_alg_refs4.pas  - from Rijndael API
rijndael_api_refs4.pas  - from Rijndael API
Simple4_TLB.pas - simple WMI instrumentation
sntpsend.pas  - from Ararat Synapse
sswin32.pas  - from Ararat Synapse
synacode.pas  - from Ararat Synapse
synafpc.pas  - from Ararat Synapse
synaip.pas  - from Ararat Synapse
synautil.pas  - from Ararat Synapse
synsock.pas  - from Ararat Synapse
userstats4.pas  - from AVLock
(16 files, 8 files from Ararat Synapse, 4 files from Rijndael API, 1 COM wrapper, 3 files).

Even though it is mostly open-source, your reviewer thinks this is better than ICE License. For IceLicense, the authors copied almost 99%, including TurboPower LockBox encryption flaws, TurboPower OnGuard errors, TurboPower SysTools errors, TurboPower Essentials Errors. In AVLockGold, the author repaired some errors in Synapse, Rijndael and other routines so they would be compatible with Delphi 2009/2010.

At least AVLockGold used Synapse to do TCP/IP. (In IceLicense, it binds with Indy v7, so it causes link errors if you use Indy v8 or v9, but few people know, since the author removed his website's forum so nobody could complain.)

Flaws
There are several flaws in AVLockGold:
  1. In AVLock Gold is where is the blocked-serials list? Opps, you have to make it manually. Also, the OLM (on-line license manager) has no capability to enter blocked serials.
  2. The public/private key pair in RC4 is stored in DFM, in plain-text, so your program can be easily broken.

     That is, if someone else licensed AVLockGold, they can enter the same values you enter into AVLockGold to generate keys for your program.
     
  3. Lack of network metering capability
  4. On-line License Manager sends via non-encrypted and post results (from web-server) can be emulated. 
  5. Trial can be easily reset by deleting files AVLock generates.
  6. The cryptographic buffers are not cleared. That means RC4 results are still in-memory.
  7. While AVLockGold calls certain time-servers to check real time, it does not have a list or alternate time-server as back-up. (Meaning, if you call Time-Server, the copy-protection system should implement a list of time-servers, so if one time-server call fails repeatedly (due to firewall, packet filtering, time-outs) it can switch over to other time-servers.
  8. Can be patched/ or copy-protection mechanisms can be bypassed in binary
Price
AVLock comes with 4 prices - free (who will want to copy-protect non-commercial software?), basic at US$49.95 (without sources), Professional (without sources) at US$76.95 and Developer (with sources) at US$149.95.

Your reviewer thinks few people will want to license something that is mostly 70% based on open-source codes or based upon Freeware. Your reviewer hopes at least, the author of AVLockGold donates some money to Sergey Kirichenko



Thoughts over Leaks and Piracy
Your reviewer was thinking about losses over software piracy and wondered if the author of AVLockGold (and other Delphi vendors as well) think this suggestion -

Here's an interesting suggestion. Since there is chronic and persistent piracy (because Delphi users are cheats, liars and honorable thieves) why not stop giving away source codes? Right now, as this article is written, the authors of AVLockGold, Mr. Alcides Valega is busy constantly deleting RapidShare links, MediaOnline and other file-sharing links where Delphi developers can download the full sources of AVLockGold. [Password: exclusive@(site) replace (site) with some worthless site]. Funny thing is, once one link is removed, 3 or 4 more file-sharing links are put-up in replacement. The moderators of that site and others know about it too, and keep on making troubles.

Suppose other authors get fed-up of this nonsense, such as TMS (the authors must be busy deleting links to their software, posted by honorable thieves) and consider releasing non-source code versions of their software instead, and always have partial sources (similar to IntraWeb, ReportBuilder) is starting to become good idea.

Many years ago, Pirapati Reporter (now called as ReportBuilder), had this same problem with piracy until their made their Enterprise version non-source code version. That decision to switch from source to non-source made them very, very rich. Same with IntraWeb as well.

Your reviewer suggests, as an example to TMS software guys:
TMS Software:
- US$299 (partial sources or some sources protected in DCU format)
- US$2999 (full sources)

TMS Scripter Pro
- US$199 (partial sources or some sources protected in DCU format)
- US$999 (full sources)

TMS GUI Motions
- US$199 (partial sources or some sources protected in DCU format)
- US$999 (full sources)

If they consider this kind of pricing, then the TMS authors can become very rich. This price deterrent is to prevent 'leaks' like this.

There should be a discussion - should component writers stop "giving away" sources, or components purchased with source codes?

Your reviewer thinks, component writers like TMS, LMD, DevExpress should consider stop giving full sources and go back to partial sources. That way, they can be rich, gain profit from their works.

Friday, February 12, 2010

Beef Flambé: FIB Plus

Cook: How would you like your components served?
DHR: With no support, bad help files, worse and worse quality and infrequent updates.

Cook: How would you like to pay by?
DHR: By ShareIT or by SWREG, I would certainly pay for it, but thousand of free-loaders won't.

FIB Plus came as brain-child from Gregorg D, looking at using Interbase instead of using MSSQL. Interbase was supposed to be best-of-the-breed database system, the alternative between Oracle, MSSQL and Sybase. It was much cheaper, better, and costs less. It was frequently compared as having better features than SAP Adibas, Solid Server's Solid Database (used in telephone companies - AT&T, Sprint) and considered the winner in certain database circles.

The database that could.
Interbase 4.0, 5.0 is an interesting database with impressive features, but suffers from poor connectivity. Earlier versions of Interbase ODBC driver was formerly supplied by InterSolv's ODBC driver and later, EasySoft ODBC driver with US$99 per-seat royalties (and the usual upgrade fees). Your reviewer remembers the Delphi 5 days when Interbase was shipped with InterSolv Interbase ODBC driver. InterSolv was later acquired by Merant, then Serana Software[1]. While Delphi 7 was shipping, Interbase was open-sourced, causing Borland to loose an estimated US$50 million. However, if Borland did not open-source Interbase, your reviewer thinks Interbase would the mongrel database, another failure story.

To Market, To Market
To connect to Interbase, there are serveral developer header file (*.h) that shipped with Interbase, that showed how to connect to Interbase. In comparison, MSSQL had ready-made ODBC/ADO/ADO.NET and other certified drivers. Sybase had working decent ODBC/ADO drivers that worked flawlessly. Ditto for Oracle, MySQL and Interbase competitors.

With Delphi, there was FIB - a pile of sources now maintained by DevRace, IBObjects - by Mr. Jason Wharton. The thing that Mr. Jason Wharton did right - was fix the threading part. You could run 10, 20 or 30 users with your Interbase or Firebird database and no problems. Mr. Jason Wharton gave phone support and reading from his mailing lists, gave impressive support. From the huge number of customers, I would say most companies won't blink to give him US$15,000 or maybe US$30,000 for his IBObject for licenses.

FIB on the other hand, was done by a secretive author, who rarely replied to technical support requests. Although DevRace forum is not filled with spam, your reviewer was surprised to see questions since 2006 (4 years ago) not answered. What kind of service is that? In order to get updates, you had to pay "prolongation" fees, e.g., US$56 per year to keep on getting updates (for 1 user).


Cooking a storm
The troubles started in 2007, when FIB 6.xx was released, and for whatever reason, one fix after another, the thing was full of bugs - from memory leaks, threading issues, random hanging and freezes. Upgrading from Delphi 2006 to Delphi 2009 broke the camel's back. Many issues that wasn't noticed become really bad, the Unicode upgrade broke loading/saving to/from Interbase/Firebird, strings became broken, memos could not be read nor written correctly. Attempts to reach the vendor were in vain.





Revival
Your reviewer thinks, with this bad economy, and huge amount of time required to fix all those bugs with FIB, there would not be a revival anytime soon. Between waiting for upgrades, customers would find better alternatives - such as previously mentioned IBObjects or UniDac[3].

Since IBObjects and UniDac give almost correct results, and FIBPlus does not, it's just a couple of week's worth of work to move over from FIBPlus to IBObjects and UniDac. Of course, if you need help, you can request for priority support with Mr. Jason Wharton's.[4]


Which leads to your reviewer's master-chef recommendations:
1] If it is not your own components, don't be surprised you won't be able to maintain it.
2] If it is not your own works, don't be surprised whatever bug-fixes you do, leads to worse and worse results.
3] If you don't give any support, don't be surprised your competitors will eat you up.
4] If you give not much help files, don't be surprised your competitor support to FIB's customers will blow you away.
5] Being very secretive does not help. Answer those questions on your own forum.


Firebird Recommendations
Your reviewer would recommend DevArt.com Unidac or IBDac instead.



[1] Wikipedia entry - http://en.wikipedia.org/wiki/PVCS
[2] Devrace - www.devrace.com
[3] Unidac - www.devart.com
[4] IbObjects - http://www.ibobjects.com/ibosupport.html

Thursday, February 11, 2010

Why DevCo pulled TurboDelphi ...

Many years ago, there was Delphi 2006 (Professional) and TurboDelphi 2006. For those of you who remembered, this was the "bug-fix" version of Delphi 2005.

Delphi 2005 was a basket case. Before Delphi 2005/2006, Your reviewer was happily using Delphi 6/7, some of his friends were using Delphi 5 and some even Delphi 4. Many of you would remember the Kylix fiasco, where they released 3 amazing Kylix versions without any bug fixes :), or how they released Delphi 8, or Delphi.NET, which was almost unusable. Ditto for C++ Builder for NET, which was "more of the same".

After overwhelming complaints on the Borland newsgroups, Borland released Delphi 2005, which was mostly unusable garbage. To everyone surprise, and alienating everyone, they told everyone who brought Delphi 2005 to "upgrade" (costs more money) to Delphi 2006. Most people thought Borland was joking - no Unicode, just another version of Delphi with more bug-fixes, no 64-bit support, no proper 2.0 NET support (while Visual Studio supported NET2.0). To add insult to injury, 2 months before Delphi 2006 was released, Borland was offering Delphi 2005 at 20%-30% discount price and then tell those victims who brought Delphi 2005 to upgrade again to Delphi 2006. Right.

TurboDelphi 2006 review
TurboDelphi 2006 was the smaller cousin of Delphi 2006, minus the (useless) bells and whistles, like TeeCharts (rarely used?), IntraWeb (nobody uses it), Midas (nobody uses it), DbExpress extension (rarely used), extended ActiveX support (nobody uses it), UML (nobody uses it), Rave Reports (nobody uses it), Interbase support (nobody uses it). It was almost the perfect "version" of Delphi - the price was right, all the useless garbage that could be replaced by 3rd party libraries.

Let me explain:
- TeeCharts. The Professional Delphi 2006 never came with source code version and missing some files, which when asked about, David Berenda from TeeMach explained that you need to buy the full version. Of course, you could buy the full version at US$400 more or US$800 with sources (historic prices, 2006) or you could live with making your own charts from some freeware code from Torry.net

- IntraWeb. The Professional Delphi 2006 version came with a 5-user license, which it seems nobody seems to use. If it was used, we'd be having thousands of sites powered by IntraWeb, but atlas, even AToZed's own website uses ASP.NET, and you don't have to buy IntraWeb/Studio to use ASP.NET. If you wanted to make websites, you could use Visual Studio/ASP.NET express which seems to do almost everything that Delphi did for almost free. Even the hosting for ASP.NET web-projects are as of today, still cheaper than website hosts who host IntraWeb sites. So not having IntraWeb means no need to look at it all the time browsing between Standard VCL libraries and 3rd party components.

- Midas never caught on, maybe because of run-time licensing fees (it was waived in Delphi 2007+) or because it was so buggy and slow, and it often resulted in crashing the server-side portion of MIDAS when connecting to a MIDAS-enabled server. Between MIDAS and the emerging WSDL/SOAP, SOAP was free (depending on which library/which platform) and interoperability meant you could substitute MSSOAP for MIDAS.

- Few people used Interbase Express, probably because there was Jason Wharton's IBObjects, which promised transactions, working decent support for both Interbase 6.0 + Dialect 3 and Firebird 1.2 + Dialect 3 and transactions, and proper memory management during threaded database calls. And of course, not to mention Unidac, IBDac. Since Interbase Express no longer works with Firebird 2.0+, most people cannot be bothered with using it.

- Few people used that TogetherUML add-on that came with Delphi. Most people simply saw it as a fat, bloated add-on to Delphi which slowed down the IDE so badly, the Delphi IDE came to crawl and sucked-up all the RAM on those 2006-era PCs. The solution? Disable the Together UML support. Together, forever :)

- Few people used the StarTeam that came along with the Delphi 2006. It was touted as one of the best Version Control System - until Borland neglected it. Just press F1 on StarTeam and see the half-baked help file, or how the StarTeam server required a US$1000-per-user license. Borland reduced prices later, but at US$1000, you could buy PerForce (which has much better speeds, better versioning support) or use other cheaper VCS systems.

- Few people used Rave Reports, for 2 reasons: There was Report Builder Pro, which seems to do what Rave Reports did, and Fast Reports, which seems to be better than Report Builder Pro. There was also this strange website - www.nevrona.com that barely worked.

- Since few people used Delphi-NET, that meant lost sales. But really, it was a good thing, since it meant that TurboDelphi compiled faster (since that NET-crap didn't have to be installed with TurboDelphi) and all those not-needed things were removed.

- COM requires some explanation. Most of the ActiveX/COM restrictions could easily be bypassed by looking up Torry's or Google Groups. Since Delphi 2.0 onwards has never properly supported COM/persistence, COM/Database layer, COM/serialization, you had to write your own codes from snippets all over Torry's or Google Groups, if you wanted to make that ActiveX DLL or Com Automation Server that worked correctly with Microsoft Word.

For the benefit of doubt, try making an automation server that works with IE5/6 (and now IE6/7/8). That's why there is no "good" Internet Explorer Toolbars made with Delphi. (You can make one, but if you browse around, there is no good solution for IE8, other than using Visual C++). Or try making an Automation Server (read carefully) that works with Microsoft Word, you'll notice it's almost impossible because Delphi's memory manger fragmented Word memory and caused it to crash. An automation server refers: Word menu - Insert|Object, insert your Delphi component to the Word document. Using Delphi with OLE Automation is very popular, however, if you use older versions of Delphi, if you / or your component mismanages memory in COM, you get frequent Word/Excel/PowerPoint crashes and unhappy customers. That's why there's some vendors who sell XLS-generators, RTF generators. Go figure.

- Since you probably don't need Turbo C++ Builder (except for that occasional ZLib compile, or simple C codes compile), you could just email the requested sources to compile to your friend and get back the OBJ files to use. Oh well. Since most Delphi users don't use C++ Builder, they don't miss out on those additional Unit testing tools.

- The remote debugger, you could replace that with emitting debug messages to GExperts Debug helper or using MadExcept or Euraka Log (or older Diamstr Logger for those who know).

- Since most ISPs hosts MSSQL, MySQL, and interestingly - don't host Blackfish or Interbase 2007 server, it was another unneeded thing that you didn't need to unnecessarily pay for.

- All those additional database library support came from using DBExpress. But the problem is it don't abstract the metadata from different servers or abstract the SQL statements, so you get some fiddly process of using different database servers, weird SQL results and no source codes, which means = extremely long delays to fix DbExpress bugs. Since TurboDelphi didn't include this shagpile of code, it meant you could buy a 3rd party database solution that realistically worked.

The kind of Delphi your reviewer would love
Your reviewer recommended TurboDelphi to his beloved friends, since they could not afford the US$800 upgrade price (price includes VAT, S&H and taxes) and those new friends who could afford US$300 for a hobby but not US$2500.

Since TurboDelphi was free, you could actually recommend it to someone, and get him hooked. but atlas, there was no TurboDelphi 2007, TurboDelphi 2008, TurboDelphi 2009, TurboDelphi 2010, probably because:

a) Borland was cash hungry and TurboDelphi was eating-up into profitable Delphi sales. It's simple to explain. People didn't need to all that additional and unnecessary codes.

b) Borland does not have a clue that what is shipped is full of bugs, it's like almost non-existent QA and the only working codes were the add-ons that 3rd-party vendors supplied. It was so bad that some people started a FastMM project, FastCode project which is now in the Delphi 2006 RTL.

c) They wanted to make the balance sheet a bit nicer, so they could command US$100million for the sale but no takers.


The 64-bit suspense
... Fast forward to today, why there is no TurboDelphi 2010 -

Embarcadero needs money now to finance 64-bit support. Your reviewer looked at the RTL/VCL, and all the low-level stuff. Most of RTL/VCL is in assembler magic. If you use Olly/IDA, you can see the very large internal assembler, internal parser, internal Delphi code generator that lies in the heart of DCC32.EXE.

Your reviewer noticed that the FP - Delphi floating point codes are still at 486/Pentium levels (to be fair, the Delphi RTL uses MMX codes from the FastCode project), most codes are still at the i386 level, like as if everything else from the day Anders Hejlsberg (the architect of Delphi) left, only bug-fixes and Delphi language-updates were made. It was only until Delphi 2009 was released, that serious improvements were made into Delphi itself.

- To make a 64-bit EXE, it would require a 64-bit byte-code bootstrap code to make the assembler:

E.g.,
copy tasm64.exe /b MZStub.bin + Section1.bin + Section2.bin + Section3.bin + Section4.bin + ...
[where this is the DOS copy command to copy sections of files into one EXE file]

- To make a Delphi 64-bit compiler, requires Debugger, RTL, VCL, and other things to be fully upgraded to x64, and then embedding parts of the assembler into Delphi compiler itself.

This requires lot of work, lot of skilled expensive people (which Borland was never able to afford), lot of time and ... money.

It would be simply suicidal for Embarcardero to release a TurboDelphi which would kill the Delphi 2010 sales, and this would in-turn, slow-down Delphi/64-bit support...

but the masses, the wanna-be Delphi developers, the old-timers, the new developers want a TurboDelphi 2010....

It would be between financial redemption - the ability to finance newer versions of Delphi - and financial loss - 1000 copies x US$0 = US$0. Maybe 100,000 copies x US$0 = US$0.



The Delphi moment
If there was ever a moment, it would be to really consider that TurboDelphi was a step in the right direction. There is really no need for TeeChart, no need for IntraWeb, RaveReports, and others fancy not needed features. Why not push them off the cliff and tell those vendors they are no longer needed?

With every new version of Delphi, Borland/DevCo/CodeGear has to stop selling the older version due to "copyright restrictions", presumably, due to 3rd party that's contained in Delphi. It would be just nice if these additional "copyright restrictions" are no longer present in Delphi, and we can get along with having the best and greatest version of Delphi.


It would be also time to think of a dream Delphi -

- Delphi with DevExpress components built-in
- Delphi with FastReports components built-in
- Delphi with /IPWorks components built-in
- Delphi with CoreLab's Unidac components built-in
- Delphi with TMS/LMD ElPack/LMD Tools components built-in

Just switch the RaveReporter to FastReports, switch the Indy stuff to IPWorks, switch the AToZed VCL to TMS or LMD or both, and add in some DevExpress stuff. Replace the DbExpress with Unidac (and don't forget to upgrade the TurboPower components). Then make price affordable - that would be a Delphi everyone will buy.



:)


Article corrected for x64 inaccuracies.

Saturday, February 6, 2010

Why Delphi developers need a "Delphi overflow"

Reply to:
Do we need DelphiOverflow.com?

Why Delphi developers need a Delphi Overflow

Which Delphi-vcl technology is mature enough to handle thousands of users?

- You could use RealThinClient, with custom ISAPI, and serious coding, but that suffers from immature HTML handling (you do it yourself and every page is hard-coded), errors in scripting causes blank pages, database usage could leak memory (can you explain how to use RealThinClient with Databases other than some notes on RealThinClient's forum?)

- You could use Cold-fusion, like what DelphiPages used to use, until they got hacked. But wait, that's not Delphi, right?

- IntraWeb, but it costs thousands of dollars and requires 2* dedicated server to host it. Not very money-friendly.

- extJs. Radical new technology that's Ajax friendly.

- You could use ASP.NET, or ASP, which is considered a bastard language (hint: VB/VB.NET) by most Delphi users.

- You could use Kylix with Linux, provided you could get the ISP to host 2* servers with older Linux versions, provided you have good firewall, make sure everything works...

- You could use "depreciated" WebSnap, but it sounds like you could "snap" under pressure and wondering who uses this stuff?

Suggested answerer: It seems no Delphi VCL technology is ready to use to create a site similar to "StackOverflow". We could possibly use JavaScript ExtJs solution with Delphi back end.


Which Delphi database solution could scale thousands of customers?

Your reviewer looked around and found:
- ADO, the one that Microsoft uses, but too-bad, the version shipped in Delphi is 2.1, not upgraded to ADO/2.9SP4, and any attempt to update DbGo leads to BPL issues, since Borland/CodeGear/Embarcadero does not ship full set of files required to build all the BPLs.

- AnyDac/Unidac. Serious contender, but..., costs money. Your reviewer thinks at least RemObjects got the MSSQL/ MySQL issue correct. That's US$399 solution.

- Delphi's own Database Technology. Serious contender, but not production quality. There's this issue about DFM/Fields corruption, Database issues (driver issues for MSSQL2005/MySQL 5) and no bug-fixes until next version of Delphi.


Which Delphi solution exposes SOAP/RSS/ATOM/Ajax?
Your reviewer looked at it and sighed.

- There's IntraWeb, but IntraWeb does not support DoJo or extJS, or other frameworks.
(If IntraWeb supported DoJo or extJS, they would have to seriously consider marking-down their price from Euro 600 a person to Euro 50, if they consider people buying it)

- SOAP, requires RemObjects payment, so ho-hum, another US$399 spent on buying something that should have came with Delphi. There's also that stinking feeling we'll need it if Delphi SOAP implementation is not robust enough.


Maddening costs
Your reviewer looked at it, and gasped:
- Delphi 2010 Enterprise at US$2,799 + (probably need for 20% SA)
- RemObjects (to expose SOAP interfaces) at US$399 per user.
- AnyDac (to expose Database interfaces) at US$399 per user.
- ExtJS/Delphi (there's Delphi wrappers)
- ExtJS at US$400 per user.
- MadExcept (to trap exceptions) at US$100 per user.
= cost per developer = US$4,097 (Excluding VAT, S&H and other charges)

Estimated cost for person working 6 months @ US$5,000 = US$30,000.*
Estimated cost for 2 servers (at 1and1, others) for 6 months (server rentals) = US$8,000

* Let's assume we're hiring an expert Delphi developer, not "Ajay" the outsourced Indian Delphi developer.

Estimated cost for 6 months expenses: US$4,097 + US$30,000 + US$8,000 = US$42,097

If you have your own server-based solution, you need 2 servers, because NS (Name-server resolution requires 2 servers minimum, or 2 IP addresses going to 2 different servers). If one fails, the other server is still alive to respond to WWW requests.


Advertisements, Advertisements and more money please!!
Your reviewer wishes to remind those who want a DelphiOverflow, (including Mr. Primoz Gabrijelcic who wrote the original blog entry), it costs alot of money, and if there was a better way to blow US$40,000 windfall, this has to be the best way to do it.

Think about it:
- why bother develop in Delphi if after 6 months, you cannot recover US$40,000 in costs?
- DelphiPages owner sold off his DelphiPages.com, because he did not make so much money off his site.

For those hard-core Delphi developers:
- We need more people (other than Borland/CodeGear/Embarcadero) to cheer for Delphi, and tell others that losing money on Delphi is the best way to go.
- Tell other people that there is a StackOverflow "clone" made fully with Delphi technologies, for non-Delphi developers to marvel at.
- We need more people to invest in Delphi, that is one example of what Delphi can do.

For those who see reality:
- There will never be a StackOverflow. Embarcadero uses Confluence and JIRA. Nick Hodges refer to this as their "internal bug tracking system".

(Since you can buy JIRA and Confluence for yourself, you can setup something similar to what Embaracdero uses for their newsgroups and internal bug tracking system.

Example:
http://support.citrix.com/forums)

- US$40,000 is lot of money and to blow it on a business project that makes little or no sense (It makes alot of sense for Delphi developers) is a terrible investment, and in this market, I doubt if you could ever re-coup back any profits from this project.

- Delphi Developers are lazy, they will probably screw-it-up and make an even worse solution than StackOverflow. Did anyone see any Delphi-forum solutions?

- You could outsource it to some Indian developers, but they could make such bad job, the project could go around in circles with ever-increasing costs.

- Then, did you hear about Delphi developers who were overworked, underpaid and did such a project and got laid-off?


Conclusions
You could get VBulletin 4.0 at US$399, or free SMF forums, or free PhpBB forum to build your community. But wait, we really need a DelphiOverflow, because it's fresh, clean, nice, and fully made with Delphi...

It does not matter about costs, we live in a dream-world where costs does not matter, and we live in some kind of delusion where only Delphi developers have better jobs (less than 1% of jobs) and customers don't blink when it comes to money.

It's time to give the Dream team a wake-up call :)

[Article correction, Delphi prices, RemObject prices, Citrix URL added]

Tuesday, February 2, 2010

Help wanted - many flames available

From:
https://forums.embarcadero.com/thread.jspa?threadID=32101

Quoted:
--------------------------
While I read these news groups daily, I very rarely post. However, tonight I feel like sharing my two cents just so I can say I informed Embarcadero that I won't be giving them any more of my money and why.

First, like a lot of people I go back to the Turbo Pascal 3.0 days and on thru Turbo Delphi 2007. While I did skip a few Delphi versions, 8, 2005, 2006, 2009 and 2010; I did purchase all the TP from 3.0 thru TP 6, Borland Pascal and so on. I also dabbled in the Turbo Prolog, Turbo C, Borland C++ and other Borland business products.

So why haven't I upgraded/bought versions 2009 and 2010. Well, the price! RAD Studio is just too expensive. I know it is supposed to be enterprise; however, I've been an independant contracter more since 2000 then I have been a full time employee (where the business paid the freight).

This isn't because I necessarily want to be independant; there just aren't Delphi jobs out there. Do a national search on dice.com with the keyword "delphi". I did it last week and there were 20 jobs. This is compared to more then 3200 Java and 1600 PHP jobs.

Delphi contracts are becoming even harder to find. With 20+ years in the pascal business, I have found myself forced into other languages.

How is this Embarcadero 's fault/responsibility? Well,the software development market place has changed, and Delphi has not changed with it. Two points of frustration for me are web and mobile.

Embarcadero does not have a delphi dynamic scripting solution like ruby, python, php and perl. So many businesses today don't want desktop apps, they want web sites built with popular languages and open source frameworks. If you look at those Java and PHP jobs, they are overwelmingly web stuff; from simple to complex. I have worked with webbroker, websnap, intraweb and delphi prysm. All but delphi prysm are non starters with shared hosting. As for Prysm, if I have to learn a slightly new language and a huge API, I might as well use the free tools for C# or just learn c#. For even more job oppertunities I should choose java/php.

This post is already way too verbose, but the mobile market is much the same.

Face it, when Delphi 1.0 was released, it was, without question, the best solution for destktop and c/s applications. Embarcadero doesn't have a compelling reason for me to shell out anymore money.

What do I want? Release an open source delphi language interpreter specifically designed for the web server. Use that brain trust to create a superior solution. Sell the ide and tooling but push all the shared hosts to support it on windows and linux. Many businesses start with shared hosting and then move up.

Create the language for mobile operating systems. If android can run c++, it can, then a delphi variant can be written for it. Again, sel the ide and tooling but give away the compiler/base editor. Flood the market with a free, easy and powerful solution.

Anyway, feel free to flame away. I made the mistake of posting so I deserve what I get.
--------------------------