Brief History of StoryServer
On this page, you’ll learn:
About EccoPro, and inspiration
Attempt #10, #40, maybe #300, … #350,… #2,000… and built from ground-up…
What made EccoPro a cult-classic
EccoPro is based on an unknown algorithm.
An exhaustive search and, the hard and difficult road towards success.
The two kinds of developers.
Building EccoPro is like climbing Mt. Everest.
The roots of StoryServer’s inspiration are a 1990’s PIM (personal information manager) named EccoPro.
EccoPro won awards year after year. However it was core-coded with unsolvable memory limitations and was dropped from development in 1997.
Over the years die-hard enthusiasts have advanced EccoPro’s functionality and despite it’s memory limitations, EccoPro remains a cult favorite.
A determined developer wanted to duplicate EccoPro’s functionality with a modern 64 bit memory structure, database and encryption technologies.
After thousands of versions and many years of development, StoryServer is here.
The below was implementation of v1 and v2 - ugly and terrible…
Then more months passed…
Something would mess-up and it would be back to square one…
More Ugly ducklings…
More years passed…
There were countless tests made. Years passed…
EccoPro is one of the most unusual apps there are. There have been attempts to replicate or duplicate EccoPro, but nearly all have failed. Nobody has a clue how it was made.
EccoPro (or otherwise called as Ecco, Ecco Pro, EccoExt ) is governed by an unknown algorithm. As of 2018, the algorithm is unknown.
The ‘algorithm’ or ‘series of algorithms’ exhibits the following characteristics:
N:N tuple storage across multiple dimensions.
Storage of calendar data with reference to multiple dates, multiple time-periods to multiple hierarchical nodes. An impossible ‘tickler’, ‘related dates’, ‘alarms’, ‘multiple dates’ system with no known prior-art.
|The whole EccoPro is an expression of that unknown algorithm.|
An impossible ‘notebook-control’ where there are invisible tab-sheets, negative tab-sheets (an impossibility in Windows)
Impossible editing system. The methods of operation of the one-pane editor is largely unknown. Most effort is done via extensive trial and error.
The algorithm, UI, underlying database and associated data-structures are highly resistant towards cloning or soft-copying.
The algorithm exhibits an impossible branching or shard(2) not seen in later or future versions of similar cloned apps.
|StoryServer is an implementation of a similar algorithm that the developers at Polywick Studio ‘suspect’ embodies the algorithm.|
|All the UI screens, are governed by different expressions of an algorithm acting on compound data-structures. The coding is incredibly hard. The problem isn’t making the UI. That’s easy. The harder part is making it behave similarly.|
The algorithm exhibits interesting behaviors:
Ability of a N:N (many to many) menu and toolbar system. Such a system would break or defy traditional menu-systems where each menu-button is considered unique. There are no known toolbar system or even prior-art which has a MRU (Most Recently Used) button which allows right-click to drag and drop buttons around.
Notice the “Show Tools in these Menus” which is a N:N menu implementation.
For many parts of the UI, algorithm and database, there are no known prior-art and still, as of today, — no known Tickler, multi-day alarm system, Calendar system, open-ended form and One-Pane grid.
Novel usage of negative (-100) numbers as combined primary keys or identity numbers. Thus, a notepad can have -1, -2, -3, -4 page-indexes, when valid index numbers are only positive numbers (0…999,999). Such numbers will cause an access violation when passed as normal parameters in the Windows API.
Novel usage of both a (stored) positive-integer and imaginary number as primary keys. Although the positive integer is stored, the unreal (complex number) is used during operations. The imaginary numbers were found/discovered in passing parameters via DDE .
There was a deep-search for a similar or ready-made implementation. There is none. As a developer, when you make it work initially, something happens, and you have to re-do the whole UI to make the behavior feels similar.
1) one who purchases & deploys ready-made libraies full of controls without understanding the underlying mechanisms and 2) one who makes custom controls and who therefore understands completely the UI layer.
There is no prior art for StoryServer.
All EccoPro and EccoExt code is copyrighted and/or outdated, therefore StoryServer had to be developed from the ground up with 100% custom algorithms and custom controls. The outliner control, the tab control, and the grid are all hand-rolled.
The One-Pane Grid is so hard, that many who attempted to replicate this, would fail… miserably, and become a laughing stock, a stupid fool, unworthy of further discussion.
The One-Pane Grid is something like climbing a Mount Everest. Many developers who attempt to conquer this mountain… would be overcome by the formidable challenges and … eventually fail.
As time passes, many more developers have attempted to climb, in an attempt to conquer this mountain. Many have been left with their reputation in tatters.
Failure is an unforgiving master. Would those, who scaled this mountain listen to what failure would speak?
I have not failed 700 times. I have not failed once. I have succeeded in proving that those 700 ways will not work. When I have eliminated the ways that will not work, I will find the way that will work.
EccoPro is a different kind of beast. Developing an alternative to EccoPro is like climbing a K2 or Mount Everest. With out preparations. — the average developer will run out of oxygen and fail.
The development of StoryServer is seen as a challenge — an accumulation of years and years of experience of implementing UI.
Perhaps, “It has been said, that the tower in the center of the world is connected to Paradise. Dreaming of a life in Paradise, many have challenged the secret of the Tower. but no one knows what become of them. Now there is another who will brave the adventure.
For more source-code snippets see the Medium Article - Implementation Of Bookmark Feature.