Wednesday, April 6, 2011

TDreamRich: The dream 10 years later.

Foreign Correspondent 


It has been almost a decade since Dream Company folded and its owner, Sergey Kostinsky moved from Ukraine to Australia, dumping all their customers (sounds familiar? The owner of KSDEV did the same thing).

One component which was never quite released is TDreamRich, the supposedly RichEdit component replacement written in Delphi, it was never completed, lot of people on Embarcadero's forums complained about problems moving DreamMemo from Delphi (non-Unicode) to Unicode and unable to upgrade it, ditto with DreamScripter, DreamReports. DreamReports probably prompted Borland to remove all the design-time units for Delphi, since Borland found some people illegally breaking the EULA and since DelphiIDE is a "trade-secret", they didn't like people replicating the Delphi IDE with Delphi's own source codes.

If you combine DreamReports + DreamScripter + DreamMemo, you had something similar to the Delphi 4 IDE, along with reusable design-time packages, drag & drop form designing, Resource streaming and Handle --> to Delphi component control development.

You can do this even better in Visual C++ with custom resource streaming, MFC custom-control development. ProfUIS does this well. The idea is you expose the whole CodeJock suite as custom-controls inside the ProfUIS run-time IDE, add JavaScript library and CodeJock editor and voila! Visual C++ scripting environment to give to your customers.

Apparently, Morfik has been taken over by Altium and lot of complaints started to fly around - like non-working editor, non-working database controls, non-working IDE, essentially becoming like a toy language.

New comers, expecting that Morfik eased the pain from transitioning from Delphi to Web, found very few things actually worked. Either there were memory leaks or the people who wrote ZEOS database library never did careful job of their product (i.e., Morfik uses ZEOS internally) and constantly blew up with MySQL.

There was lack-of-support for other Ajax libraries, such as Mortal Kombat Jax ExtJS, Moo Library, YUL and so on. There were 8 ways to deploy Morfik, but none of them actually made sense or too many steps to deploy.

Last summer, the Developers at Morfik realized the product was full of bugs and decided to make it for free. The people on the Morfik forum supported each other and the developers would drop in once a fortnight to answer a couple of questions and in a seemly Un-Australian manner, decided not to respond to them.

Now, any "offensive post" is simply deleted or your account is closed (Source).

Quoted:
A couple of days back allot of users was banned for 90 days, because their posts are uncomfortable, not because they are evil but because they demand to get what they have paid for and been promised.

Using offensive words or newbie questions - like - "how do you use PHP with Morfik", or any mention of "ASP.NET" will simply get you banned or your postings removed.

In the mean-time, your reviewer was using Visual Studio 2010 to write websites. At least it makes customers happy and brings in revenue.

I'm not sure about developers using Morfik. Maybe the name Morfik gives some clues about the kind of product it is - it eases the pain, makes the user delusional and emptying his wallet, get fired from jobs and leads to loss of income.

You can read the train-wreck in action at this moment happening on Morfik forums.

Tarry ho, would you like to go to the pub and have some Victoria Bitter? ...

:)

Tuesday, April 5, 2011

Scenes I'd like to see

1) Why not distribute Delphi/64 over Embarcardero's AppWave Store?

2) Why not make all EXEs produced by Delphi/32 and Delphi/64 (i.e., unless you have valid license from Embarcadero) only working inside AppWave store, max upto 100 customers (for starter edition)?

3) Why not redistribute Delphi/C++ Builder, AQTime and FinalBuilder with all updates inside AppWave Store?

Troll Tracking

Troll tracking has started to become more accurate - the latest research shows Internet trolls can be identified to nearest 690 meters or close to 100 meters (or approximately 1 building in other words)

IP Address of Doom?
In situations where person lives in rural areas (like in Aussie outback or on a Texas Ranch), it's pretty obvious who is posting those inflammatory remarks on Embarcadero newsgroups or constantly uploading to those web-based file-sharing sites.

This reminds me of the radar dome feature in Red Alert...

Now only if they could add geolocation with advertising  into Embarcadero's Delphi/C++ Builder or even DBArtisan, it's going to be really fun...


:) 

Commercial Break


We will return to you after this commercial break

(Translation of Commercial, from Romanian to English)

Nu pot = I cannot

Nu vreau = I don't want
Nu pot = I cannot
Nu vreau = I don't want
Nu vreau sa raman indiferent = I don't want to remain indifferent
Nu pot sa stau deoparte = I cannot remain away
Nu vreau sa renunt = I don't want to ronnounce
Nu cred in limite = I don't believe in limits
Indrazneste = Dare!

Friday, April 1, 2011

Commercial Break

We will return to your regular schedule after these following Czech caroling videos. It's kinda funny. This must be a small world. Your reviewer remembers a time when your reviewer was singing Czech Christmas carols...

Sunday, March 27, 2011

SciMark2 and Delphi

Your reviewer was surprised with SciMark test ported to Delphi that Mr. Phillip Goh posted.

On a Core i7-2600K it achieved:

**                                                              **
** SciMark2 Numeric Benchmark, see http://math.nist.gov/scimark **
** for details. (Results can be submitted to pozo@nist.gov)     **
**                                                              **
Using       2.00 seconds min time per kenel.
Composite Score:         1885.62
FFT             Mflops:  1426.20    (N=1024)
SOR             Mflops:  1146.66    (100 x 100)
MonteCarlo:     Mflops:   515.48
Sparse matmult  Mflops:  2096.31    (N=1000, nz=5000)
LU              Mflops:  4243.46    (M=100, N=100)

With same Delphi version:

**                                                               **
** SciMark2a Numeric Benchmark, see http://math.nist.gov/scimark **
**                                                               **
** Delphi Port, see http://code.google.com/p/scimark-delphi/     **
**                                                               **
Mininum running time = 2.00 seconds
Composite Score MFlops:   576.03
FFT             Mflops:   363.08    (N=1024)
SOR             Mflops:   935.87    (100 x 100)
MonteCarlo:     Mflops:   181.13
Sparse matmult  Mflops:   488.35    (N=1000, nz=5000)
LU              Mflops:   911.74    (M=100, N=100)

Readers are welcome to submit their own tests and find their own conclusions.
The C++ version is 3.2 times faster than Delphi version.

Readers can download the test at http://code.google.com/p/scimark-delphi and run it on their own computers.


There are deep implications beyond MFlops, FFT, LU and other metric tests.

Suppose you tell an organization to "get the latest hardware" to run your Delphi apps faster.

This benchmark was run on an Intel Core i7-2600K, 3.4GHZ (TurboBoost to 3.7GHZ). This is quite expensive for consumers. Most corporations would probably buy a Core i3 or Core i5 to give to their staff to use. If the program is not optimized to take advantage of latest hardware, it's like telling whatever expensive hardware you give it, it gives very little performance gains.

Suppose you're the developer creating these wonderful apps that sell for money but for some reason, there's this part which takes incredibly long, like generating reports, crunching numbers for sales report, making that graph (licensed from TeeChart) or computational intensive operation (like posting to proprietary Delphi Database). It takes hours or maybe a whole day to generate report.

Your competitor uses C# (or JavaScript or C++) and then makes a competing app, which seems to be 30 or maybe 50 times quicker than your app. What happens next?

You can foresee trouble that starts to brew.

Update 1:
The benchmark for Delphi is from Mr. Phillip Goh's Google Code site. Download the link from that GoogleCode website, it comes with 3 EXE files. From looking at the binary, it is GCC.

Friday, March 25, 2011

How not to File Share Delphi in Eastern Europe

In certain forums, there's always this person who have a need to share "Delphi 6, 7, 2005, 2006, C++ Builder" and unfortunately, many of them live in Romania and... Czech Republic.

Unknown to them, since Borland sold off their Delphi assets to Embarcadero, it was later found that Embarcadero has presence in Romania and Czech Republic.

For instance, the head regional manager of Embarcadero Romania and the sales manager at Embarcadero Czech can easily go and get a court order to Deutsche Telekom (and other ISPs) to disclose the IP addresses for those illegal forums and FTP sites.

Here are some suggestions to fight against piracy in their own countries:

a) The registrar for the .EU and .CZ domains keeps records who pays for what and who the owners are. They can strike off a domain based on fraud registration. (i.e., person gave fake credentials to register domain for software piracy).

b) They can bring the ISP to court to lookup the IP address of the idiots who opens FTP sites to share Embarcadero Delphi and C++ Builder...

Hint: the physical IP address of them are in Sofia, a few miles from Embaradero's head office :).

c) They can then advertise the person's name publicly after going to court. That way, everyone will never employ these persons ever again.

d) Bring RapidShare to court to find the actual IP address of that person. One company solved this by setup a fake file-sharing website to nab the actual IP address of the file-sharing person.

The funny thing about is, Delphi developers complain there are no jobs, maybe reason is stinkers sharing Embarcadero Delphi are doing this to their own people in their own countries.


Article Update: Czechoslovakia changed to Czech.

Thursday, March 24, 2011

JavaScript Performance vs. Delphi

Native compiled code should be faster than JavaScript interpreted code, the usual saying goes.

New Kids on the Block?
There are many reasons why Delphi developers claim Native development is better: It creates smaller EXEs (if you consider that 20megs setup packages to be pushed every month is fun for customers), it is faster (with certain exceptions) and better overall experience (like no garbage collection, so Delphi apps usually crash Windows 7, with Delphi Server Apps crashing Windows 2008 server with unstable TCP/IP and consuming 2 Gigs before dying).

JavaScript is considered the worst language (by Delphi developers' point of view) for coding:
  • It is not strictly type-cast, 
  • Has overall very poor performance and very, very poor floating point performance
  • Consumes lot of memory 
  • Waste of development time (i.e., the answer is IntraWeb instead)
  • Is interpreted and therefore, easy to make mistakes.
Yet, since Delphi developers eyes are closed to the world (i.e., the world revolves around Delphi and nothing else. A Delphi developer is a Delphi developer for life, they cannot open their eyes to learn other things).

The world passes by Delphi, both in price, feature and performance.

With JavaScript, there is:
  • Server Side Java Script (SSJS)- use JavaScript on server to stream web-pages,
  • Desktop JavaScript - why use Delphi for, when you can use JavaScript for "native" development
  • JavaScript.NET - the "unpopular" version of JavaScript
  • Javascript Java - see Rhino.
  • SQL with SQL - Using JavaScript to query Oracle, MSSQL and MySQL (except Delphi proprietary databases)

Costs for learning JavaScript is free with many IDEs available (see: Eclipse). There is working Intellisense (This is broken in many versions of Delphi), many free scripts available (example: HotScripts.com), many Ajax frameworks available (see: Moo Library, Node.JS, JQuery and so on).


Project Disclosure?
Your reviewer was looking at a post by Eric Grange how "another language" beat Delphi.

The problem with this lies in the way how formerly Borland handled disclosure of "floating point  benchmarks", performance benchmarks. Many (former) professors (i.e., the gray-hair one who teaches you computer science) were silenced by Delphi's license agreement preventing them to speak up against Delphi.

While other compiler vendors (D++, C++, PHP) started to optimize their floating point with lesser languages (FreePascal, GCC, RealBasic) starting to compile with SSE2 (and even SSE3, SSE4) optimizations and giving developers good floating point performance, C++ Builder & Delphi languished with i386, i486, MMX (Pentium) performance.

It was like saying, since the day Anders Hejlsbery left, Borland could find nobody to fix floating performance since Delphi 2.

It could be considered a classic conspiracy theory - Floating Point are like UFOs and floats around in the sky and the official policy is that floating points that fly faster than the average thing in the sky does not officially exist.

If the next version of Delphi still have same floating point performance, same problems and just bug-fixes (i.e., it should be called Delphi 2009 update '11)... it would be really, really tough sell...

Saturday, March 19, 2011

How not to appraise your competitors

How not to appraise your competitors
Your reviewer was looking at the Delphi Product Manager's blog, Mr. Michael Rozlog(1) and wondered if he was preaching to the choir(2). Mr. Michael Rozolog's blog goes two ways - writing opinions "Mobile will be a possible future" (which may be true) but the second one your reviewer do have opinion against: bashing competition. Posts like "Top 10 technology predictions" in the guise of promoting future, "Java is the cobol of the 90's" which bash Java.

Does the Emperor have no clothes in the future?
When you preach to the choir - you can make all sorts of insults towards other competitors, that they are no good, that their products are useless and will not help you. You can make assertions that your product is the finest development tool in the whole world and buying this product will make you hundreds of thousands (of dollars), if not millions (of dollars). You can make all sorts of claims, misrepresentations and allegations. But this is the real world, the world does not revolve around Delphi, it does not revolve around Embarcadero and if you cannot provide a working and affordable solution, there are other vendors hard at work to provide working and affordable solutions.

Your reviewer sees the usual pulpit preaching that other solutions are bad and Embarcadero's solutions are superior. Posts like "Java continues to be the Cobol of the 90's", "3D gaming technology is not the next big thing yet", "Top 10 technology predictions of the future" sounds like advising on all things you should not do with Delphi.

Sounds more like:
- Avoid 3D because Delphi's floating point and 3D libraries are not up-to par. Even Chris Benson wonders why the same EXE built with a physics engine ported to Delphi is much slower in Delphi.(3)

- Avoid TCP/IP SOAP stacks because RemObjects SOAP interop requires you to buy RO SOAP for NET or Java because the RO SOAP client/server serves up non-compliant SOAP packets whereas JavaSoap and NET SOAP interop with each other.

Corrections Requested
Your reviewer corrects some of Mr. Michael Rozlog's predictions with realistic assumptions:

- Native Development will be "in the game" again. He argues because of the smartphone booming. The hard issue is that he wants to make a logical fallacies framework: if you will take that Native Development will be the future, you will think in general that Delphi will be great. Also he states things that are true for VM in particular too: the idea that you can use whatever your OS can bring.
To be fair, there are places where native development do matter: performance critical parts of code. Games are the best frame to say so, bot to say in perspective, here is where Delphi as performance do not shine. Anyway, Mike was kind enough to estimate that games are not what it will happen. Many things changing native development (as of Win32/VCL)  are dead for some years. Your reviewer not here to say that it will disappear, but as of today reality are not that relevant. Is like if you write compilers you should know most likely assembly language, but never use it, excluding for that 10% that you have no other option (even in this case, you can write to LLVM or to VM's bytecodes, so rules are a bit different today).

Another area where "native development" matter is to achieve responsive guarantees that the a VM (mostly on underpowered device) is not always capable of. Anyway, this is different in many ways today, like Android uses a fairly decent VM (that have a JIT for some time), Windows Phone too, and in supported languages Delphi (or Delphi support) is not included.

Is Java really the next Cobol?
- Is it really Java a Cobol "replacement"? Why does Mike said things that he knows already, since he worked as the JBuilder Product Manager and he understands how Java works? He wants to promote his software that he's selling. At the end, he bashes the two platforms are competing Delphi at its heart: Java and .NET. Both are not as much as phone toys software, but are platforms that work on enterprise. Don't worry, he bashes one year before RIA (and he apologizes next year). that was another competition of Delphi: if you can distribute your application in browser, using either Flash, Silverlight or JavaFx, so you will not need Delphi anymore. Even you will use an HTML5 application, can become rich enough to not become RIA, browsers support that. Look to Facebook that you don't believe me or GApps (GMail, Google Docs, Google Calendar). Did you heard a Delphi's server side site that is widely used? Does anyone use JBuilder anymore?(3)

(Did anyone find a working, affordable and usable equivalent TCP/IP, HTTP, SOAP and RIA stack in Delphi?)

 Even Java did not released a big overhaul for some reasons as internal hardships (Your reviewer can argue that Delphi did the same from 2002 till Delphi 2006 making to stagnate as platform). Java is a platform that evolves and innovate. Is also much faster than .Net have to offer in raw performance and how applications scale. Delphi does not scale well server side as does not have support for 64 bits and huge heaps. Java and .Net offer mature support for 64 bits at least for 5 years to date. Java bring stable betas for at least 1 year as time. Some things may not be there for deployment, but everyone seems to love the message boxes that sometimes appear to Delphi application, and many complained on Delphi applications and libraries stability. JRuby is a very active project. Also GWT or Android could not exist without Java heritage, and they build and run and move as we speak.

At the end the problem is not about which platform is the best, your reviewer does believe that .NET is not a silver bullet, but on the other hand, Delphi as is today is not a better replacement for .NET.

Some things are missing in Delphi and as far as it seem for me, Delphi will lag behind more and more to "impress" people that will be long gone to .Net like platforms. AIR runtime for me at least appear a more mature distribution platform: a very small runtime to run, a fairly fast JIT that will generate for any web application an instant response, accelerated controls to: see movies, to make controls with easy workflows from Photoshop. Do you need speed for your HPC code and you cannot use Java as backend? You can call it from AIR by handling data via TCP. Theoretically Silverlight 4 let you call native code directly, if you allow it.

At the end, will Mike promote open ideas? Maybe never. As far as I'm concerned, probably your reviewer should not write this post, on the other hand, just thinking that making blunt statements at the end will hurt his blogging authority. Wanna see a more interesting and less biased posts? Look on Cliff Click(6) and Java in general, or Miguel de Icaza(7), or Linus Torvalds.

Your reviewer wonders why Mr. Michael Rozlog not praise his competitors? The Mozilla Team praises Chrome's JavaScript implementation(8)



Wanna biased talking persons, look also on Steve Balmer's quote: "someone will pay that much on an iPhone" he said... and people did.

Some of your reviewer's more accurate predictions vs. Mr. Michael Rozlog's predictions are:

1. It will be less usage of "native code" in enterprise word. People need to scale, a garbage collector give predictable throughput, a memory leak more  unlikely. Second problem is the software stack: vertical stacks are mostly in JEE or high level frameworks. And as C++ is hard, you will likely invest on a Ruby on Rails implementation or PHP implementation.
Talking about Garbage collection to Delphi developers is like talking to a lazy person who cannot check their own work because AQTime (standard) is massively crippled and requires US$599 for accurate profiling.

Did anyone hear about the Delphi developers who had a memory leak in the server application and the server applicate ate up 2 Gigs of memory before failing? Maybe nobody did because there are no Delphi embedded servers or lack of sales due to customers complaining about a big server app that eats-up 2GB of memory...

2. More applications will go towards browser-only, maybe HTML5: FF4, IE9, Chrome, Safari and Opera will have guaranteed JIT for all instances running your code. This will make clear that users will get a bit richer experience, maybe flash like from browsers.

3, "Going native" will happen probably on PHP server side, as Facebook's HipHop will get more traction and most of it's bugs will be fixed. No other platforms will likely get this path. Node.JS a Google JavaScript server side projects will get more traction for somewhat more complex server side part.

4. Google Go will be hit and still miss. Language sugar is not enough to change the world, just making interfaces minimalist will mean that some people may use it, still will not give to it momentum. As it have just C like integration, have no advantage to Java, C#, or Delphi on that matter.

5. A lot of Free to play game will appear. Browser based may use flash and integrated socially. Native ones will be free to play like MMORPG or so. The baseline will be connected and to one level social. The business model will change for a lot of games

6. (Your reviewer have just one biased prediction and is somewhat related with my project, but will happen your reviewer think for a lot of projects:) The tendency will be for people to integrate higher level platforms on top of old codebases. GCC is necessary for most people, sometimes reflection, a good code completion also helps. What your reviewer mean with this is that many giant applications will offer higher level platform interoperation: OpenOffice may rewrite some of the dialogs using  Java or Qt (this will be a 2012 prediction) to make the messy code to go away. Your reviewer predict this because your reviewer work on a fairly complex logic app. This application if was written in C++ was much less advanced than the C# today codebase. Your reviewer really think that similar codebase would require much bigger team and much more extensive tooling but with a lower market price.


(1) Michael Rozlog Blog. http://blogs.embarcadero.com/michaelrozlog/
(2) Idioms. http://www.phrases.org.uk/meanings/preaching-to-the-choir.html
(3) Box2D. Chris Benson's blog. http://chrisbensen.blogspot.com/2011/01/delphi-box2d.html
(4) JBuilder 2008 review. TheRegister. http://www.theregister.co.uk/2008/04/28/jbuilder_2008_review_rough_edges/
(5) HipHop. FaceBook. https://github.com/facebook/hiphop-php/wiki/
(6) Cliff Click's Blog. http://www.azulsystems.com/blog/
(7) Miguel de Icaza Blog. http://tirania.org/blog/
(8) David Mandelin's blog. CranShaft. http://blog.mozilla.com/dmandelin/2010/12/08/crankshaft/

Sunday, March 13, 2011

Beam me up Scotty, part II

Hi Scott,

Can you please check your mailbox and contact me...

First issue: The (other) forums are rigged. If you used the same password (as is for your Gmail or Yahoo account) for that forum, the mods and admins can find out your password by looking in the forum-database and steal your GMail or (Yahoo) account. If you are using same passwords as your Gmail or Yahoo account or any other account, please change it.

Second issue: I'd best advise that you stay away from those forums as those forums record down your City, Location, State as you go browsing along. If your ISP has enabled look-up or "IP triangulation", they can trace you down to the nearest 100m where you live.

I'm sure the forum admins will flatly deny these statements but think about it when you got hacked and got some other mysterious things happened to you...