You may all know about String concatenation in Delphi, but do you know about the implicit String variables the compiler may create for you?
Along with the implicit variables come implicit exception frames, and a whole lot of hidden stack juggling, which can quickly become hidden complexity bottlenecks.
The built-in time-stepping support for the upcoming release of SmartMS got an overhaul in the form of a now frame-rate oriented Game View component, and a simulation-oriented TMetronome time-stepper.
Chrome for Android 31 (currently in the beta channel) added the ability to add a web application to the home screen, which iOS fans will notice it had been available for years on their fruity phones.
Upgrading a SmartMS application to allow installing on the Android Home Screen is very straightforward.
As noted in a recent post, Unicode is not so straightforward. Namely claims of utf-16 being simpler than utf-8, or that you do not have to care about Unicode complexities.
Maybe that was the case ten years ago, but The Unicode jungle is much closer to home these days.
Here are a few dangers lurking in the not-so-dark shadows.
Work and processing classes are typically short-lived, created to perform one form of processing or another then freed. They can be simple collections, handle I/O of one kind of another, perform computations, pattern matching, etc.
When they’re used for simple workloads, their short-lived temporary nature can sometimes become a performance problem.
In DWScript WebServer in the metered cloud, I mentioned setting up a light weight Windows 2008 r2 Virtual Private Server to serve as web server host.
A parallel series of articles deals with the DWScript Web Server itself, and this is a mini-series about setting up Windows 2008 with minimal memory, CPU, storage and vulnerability surface.
Implementing an efficient worker thread pool in Windows can be achieved through the use of IOCP, which is the barbaric acronym for (just as barbaric) Input/Output Completion Port API introduced by Microsoft a while ago.
To make use of IOCP, one has to deal with further barbaric API functions, but the principles are (somewhat) more civilized, and the implementation is quite straightforward.
A pre-compiled server executable is available from google code (1008 kB), built from current trunk version.
edit 2013-08-30: the zip has now been replaced by a proper installer
Below is a quick start guide to playing with that server, I hope to later find time for more complete guide up to setting up a complete “production server”.
I’ve now been running the DWScript Sample Web Server for 8 months in a metered host (Ikoula’s 1€/month VM), so it’s time for a more formal introduction article.
It served web pages and JSON dynamically generated by DWScript, using an SQLite database for storage. It ran on a Windows 2008 R2 Standard installation, minimized so that OS+Server stayed around 256 MB RAM.
This article deals with reference-counted String theory, it doesn’t relate to String Theory, unification of gravity with other quantum forces or canadian fashion.
Instead it deals with leveraging reference-counted String data to unify them and minimize memory usage requirements.
edit: as pointed in the comments, the usual terminology for that optimization is interning, which is a misnomer derived from an old LISP function “intern” which related to internal/external and packages.