Live data from Hacker News

I miss Delphi

news.ycombinator.com

191–194 of 194 posts

Re: I miss Delphi

#191
post #184

Earlier quoted context omitted.

Wow, thanks for taking the time to reply! > 1) The "volume control" (...) used a progress bar instead of an actual draggable horizontal gauge (not available). Ah, that's the name of what I was looking for. I think HTML5 sliders can be styled similarly to how the volume control looks, but I understand you're targeting a wide variety of Web browsers here. The reason I mentioned it was because I'm used to being able to…

These are backwards, I forgot that HN posts the latest comment first. :-) > Yep. I can see the niche for this though. Plus, diverging from the mainstream means you get to neatly sidestep the frenetic insanity associated with the cutting edge, which can be really really nice if you find something that pays well. :) (Still looking for my own one of that) It's doing pretty well, and we're slowly but surely building up a…

> These are backwards, I forgot that HN posts the latest comment first. :-)

Ah, the 10k character limit. Heheh. Thanks again for replying!

In HN's case, it's because Arc sorts all comments with the same score chronologically... so I upvoted your first post. :)

Incidentally, Reddit's PM system happens to produce the same results too. Unfortunately due to post weight fuzzing the only way to keep things in consistent order is to make a tree of replies, or clearly mark "i of n" etc. Anyway.

> It's doing pretty well, and we're slowly but surely building up a decent customer base. Plus, we're a very small company, so we don't need much revenue.

(Very) small companies FTW.

> Yeah, try to ignore the web site issues for now. It's a little dated, and is about a decade old now. We're going to be "dog-fooding" the whole thing with Elevate Web Builder, once the web server is updated to include the Object Pascal run-time and the GZip/SSL support is added. It will make a good example that customers can use to build their own sites, etc. It will be a mix of back-end-generated pages with mini Elevate Web Builder apps for various sections that now use plain HTML forms. Having said that, we're going to move the logins on to HTTPS sooner than that.

Nice! I see.

>> (Regarding the captcha system, (...))

> Yes, it's performing some machinations on the time to generate the code. Essentially the code/PNG is stored and then deleted after it has been used. Again, not our finest work, but we don't have too many people trying that hard to sign up on the web site with robots. :-)

Oooh, I see. That's a nice and simple approach! I must admit my own thinking with captchas was something along the lines of "probably needs to be a Rube Goldberg machine, preferably one built out of kitchen sinks - that should make it secure enough"... I must admit I didn't quite think through simpler approaches like this (probably due to all the captcha fails I've come across, although I can't relocate the one I was thinking of right now).

>> I wouldn't be surprised at all if yours won out (...)

> I've also wondered the same. Besides what you point out, my concern with React is that it might stress the GC too much, but that's based upon my limited understanding of how its diffing algorithm generates what it needs to update the DOM.

FWIW, imgur is nigh unusable on my old ThinkPad T43 (if not for the Imagus image preview extension I {c,w}ouldn't use it). So yeah.

> In contrast, Elevate Web Builder only needs to track a simple change set per UI element and enforce one simple rule: no UI element will actually apply its DOM updates until all parent elements are no longer being updated.

Oh that's what you mean by reference counted... yup, that's a far simpler approach.

> The initial application load results in only one pass of DOM updates because there is a BeginUpdate..EndUpdate block around the application "surface" (body element) during the application load.

Nice :D

> And, more importantly, elements are created once and stay created.

I've noticed that modifying large chunks of HTML can cause rather large glitches, whereas isolating changes to the elements in question is ridiculously fast, yeah.

> Elevate Web Builder 2.06 actually adds some more optimizations in this regard (...)

That is really cool. I wish more application frameworks focused this much on efficiency :(

>> Also, Pascal doesn't actually look that bad. (...)

> It's actually quite a nice language, although the Elevate Web Builder variant is a little more restricted than Delphi, due to some of the limitations of JS. We've written database engines, ODBC drivers, PHP extensions, web servers, general applications and libraries, and an IDE/compiler using it, so it's pretty versatile.

I see (wow). So it _is_ a transpiler. Now I'm wondering if it'll ever have options to optimize for ES2015, or obsessing over JS generation (ref https://news.ycombinator.com/item?id=13762787), or even compiling directly to WebAssembly...

(FWIW, wasm's interpreter architecture and bytecode set are already locked in and both Firefox and Chrome already have (disabled by default) support - everyone's just tossing up how (hopefully not "if"!) to talk to the DOM.)

> More importantly, it has GUI options on the desktop, which is where a lot of languages fall down. It is often the case that "just use an embedded browser" is not a viable solution for a professional application, and then you're stuck using some tacked-on GUI toolkit that may or may not work particularly well with your language.

Yep, and this gets you Pascal->HTML. Makes a lot of sense.

>> Ah, the world of HTML4.999999999999

> :-)

The day HTML interpreters reach parity will likely be the day we're all using something else :(

>> (...) the web server failed to bind.

> It's probably just the binding to port 80 (...)

OH, of course, you can't bind to ports https://msdn.microsoft.com/en-us/library/windows/desktop/ms7...

It's okay though, I just picked a different port.

And now I have a new problem: I'm seeing "Emitted C:\users\i336\My Documents\Elevate Web Builder 2\Projects\D:\project1.js (total size is 965998 bytes - not compressed)", which presumably isn't working. (Previous "is this what you wanted?"s included "C:\users\i336\My Documents\Elevate Web Builder 2\Projects\..\..\..\..\..\project1.js"!). I've emailed you in case you're interested :) (full disclosure: I'm just playing around with this, and I don't know any Delphi people, although EWB is of course filed away)

>> Also, shift+scroll doesn't scroll horizontally (...)

> Thanks, I'll check that out and make sure that it's added.

* 1024x768 sort-of-masterrace *

>> I was also curious: have you ever considered pitching this for mobile UI development? (...)

(PS. By "snapping options" I was trying to describe dynamic flow/resize, yep)

> We also target mobile, fully support touch, and there are a lot of responsive flow options in the layout functionality, but yes, it's normally best to create separate mobile/desktop versions simply so that one can take advantage of the unique functionality on each platform. (...)

Oh okay! Nice. (Although not targeting mobile is kind of crazy, so it makes sense...)

Re: I miss Delphi

#192
post #184

Earlier quoted context omitted.

Wow, thanks for taking the time to reply! > 1) The "volume control" (...) used a progress bar instead of an actual draggable horizontal gauge (not available). Ah, that's the name of what I was looking for. I think HTML5 sliders can be styled similarly to how the volume control looks, but I understand you're targeting a wide variety of Web browsers here. The reason I mentioned it was because I'm used to being able to…

> While somewhat unintuitive, I have indeed learned that fewer bigger requests can load quicker than many small requests - which does makes sense, I guess obsessing about caching isn't everything. ( https://news.ycombinator.com/item?id=13601451 / https://danluu.com/web-bloat/ - particularly the 3G bits, since lots of people tether) There are some valid points to be made about bloat, and Elevate Web Builder's monolith…

>> While somewhat unintuitive, I have indeed learned that fewer bigger requests can load quicker (...)

> There are some valid points to be made about bloat, and Elevate Web Builder's monolithic applications do tend to be on the larger side. However, the big issue is always perceived load time, and that's what we always work on improving first.

Totally makes sense. Taking bandwidth into account too is important, but yeah, user perception... :)

> The size of the application itself only really matters on the first load after a change/re-compile/re-deploy, provided that you don't have a bug in your web server that complete negates this performance improvement. ;-)

Cool view :)

There's also the fact that browser caching can be terribly broken: I unfortunately can't find it right now but I read somewhere of how a dev found Safari on their iPhone was only caching a few KB (!!!!) of Web content. Obviously something was broken somewhere (maybe Safari used a disasterously incorrect percentage-of-free-space calculation) but yeah. I have to admit that I'm considering hand-rolled ServiceWorker-backed caching systems myself; the only infuriating question is where to actually store the data (ref http://stackoverflow.com/q/42288596/3229684).

>> Ah, I see, that's the app server.

> Yeah, and it's going to be getting some attention before summer, specifically with GZip and SSL support.

Nice!

> The general idea is that (eventually) we're going to be adding the Object Pascal run-time engine that is currently used in the IDE at design-time to the web server, thus offering the same language for the entire stack.

Oh coool.

> When you work with controls/components in the designers in the IDE, the run-time actually executes code from the component library, which is why scrollbars work and you can click on buttons in controls to add new sub-controls, etc. It's nice for a control/component developer because they only need to set a simple flag that indicates that they want design-time events for a given control, and the IDE/component library takes care of the rest.

I noticed that from the video! Really cool feature.

>> Now I'm wondering whether your UI architecture is abstracted enough that end-users could build UI components out of JS... hmm, that probably wouldn't work, the UI designer wouldn't be able to control them. (I'm guessing you can design your own controls in Pascal?)

> That's a very astute observation, and 100% correct. :-) The easiest way to use external JS controls in Elevate Web Builder is to use a TBrowser control, which is simply an iframe control that will isolate the control from the "normal" UI controls.

Oh, of course....

> However, it's also very easy to just create a wrapper control in Object Pascal that interfaces with the JS, which is what we did with the TMap control for Google Maps support.

It might be a very interesting idea to create wrappers for popular libraries. I'm not quite sure which libraries to support, but "look at this island written in Pascal" is suddenly very interesting when you go "and here's the dead-simple interop to this bunch of other things you already know".

> The whole IDE is designed around the idea of creating and installing your own controls/components, just like in Delphi. And, more importantly, it is a lot easier because there are simple UI element building blocks (in the virtual DOM) to use for building up controls, with the UI elements doing all of the heavy lifting and modifications being simple property changes/method calls.

I have to admit that I really like the visual design way of doing things. I played with Visual Basic just under a decade ago but I'm glad I moved on from it as it didn't impose enough architectural structure. I poked Lazarus recentlyish; it's on the todo list. :P (especially considering its Linux support)

>> (...) (providing source to a large portion of the codebase to accelerate urgent fixes).

> It's pretty much been the "Delphi" way of doing things since it was first created and sold by Borland, so we can't really take credit for it.

Ah, interesting!

> It' funny, though, because it pre-dates open source. I never used Turbo Pascal, but I think it did something similar, and it really pre-dates open source.

"Shared source"?

>> I was wondering how the Pascal bit worked for a while there. (...)

> We had some experience doing an interpreter in our SQL implementations for our database engine products, so it was a natural move for us. The most difficult portion was building the run-time execution engine, mentioned above.*

I think you're referring to WebUI.wbs...? 13k LOC (5448 without {...} blocks, 6076 with {$IF}s, apparently) is pretty crazy, yeah.

Re: I miss Delphi

#193

Earlier quoted context omitted.

You're still using Rust / Go ? I've been using Luna on the Rocket stack, with Huston for distribution and Apollo for stack management, and it fixes mostly all the problems you've mentioned.

> I've been using Luna on the Rocket stack, with Huston for distribution and Apollo for stack management That's so 2016, you really should get with the times.

No! Ethereum.

Re: I miss Delphi

#194
In Delphi, IT IS that simple to create Web Apps:

- For fast drag and drop RAD style development use UNIGUI, great interfaces, plain and simple delphi development.

- If you want a modern, optimized and responsive Web UI in full javascript (but with typed and gentle Object Pascal), use "Smart Pascal Studio", it´s like typescript but includes a GUI editor, widgets, node.js backend etc. check out their full js desktop https://www.youtube.com/watch?v=ee_kXdueV_4&feature=youtu.be (impressive).

- If you want to bring your existing client-server delphi apps to the web, use Thinfinity.

- For a incredibly fast, low resource consumption, REST ready ORM, use MORMOT.

- For a nice, elegant and simple ORM use TMS Aurelius.

Please keep an eye in Smart Pascal Studio, it shares some ideas with Typescript but their tools are way ahead in development, they started some time before Typescript, it is a glimpse into the future of Web-desktop-mobile development.

And don't forget FMX.

Post reply on HN