When you want to ask for help in programming …

then use the following template:

  • Explain details that you see as much as possible. Environment, problem, etc.
  • Explain exactly what you want – what you think should be happening.
  • Explain what is actually happening.
  • Explain why you think it should be working differently.

By walking through all these steps you may find answer by yourself. In any case this will greatly increase a chance of getting adequate answer fast.

Web Frameworks: React vs Vue

Practical investigation on effectiveness of Virtual DOM (React) updates versus direct DOM updates (Vue).

Stats of list  update having 100 items.
Stats of list update having 100 items.

Clearly React takes significantly more CPU time for the task of updating 100 items list.

That proves once again that there is no silver bullet in Web Front End design. Each task has its own optimal framework/architecture.
“Ideal framework” should allow to use multiple paradigms – list-of-items view should use virtual list, it could be one-way bound with data [model] and item-details may or may not be data bound – depends on its structure.

What if just start from our old friend jQuery with its system of plugins and/or components/modules architecture of Twitter’s Flight.
Where you can add view routing, data bound lists and other plugins of your choice? Only when and where they are needed …

Is it close to that optimal, flexible and stable architecture web applications we are dreaming of?

Russian Roulette game, .JS style.

Disclaimer: the game is quite dangerous and may lead to alcoholism of participants even after first game. Play responsibly!

Idea of the game:

Players, in their turn, name random English word. To this word they add “JS” or “.JS” suffix and go google for it.
If google will give JS library or framework with that name – you won and drink one Vodka shot.

You’ll be surprised… and read disclaimer above.

Studies show that a TODO list is the most complex JavaScript app you can build before a newer, better framework is invented.

Allen Pike: “A JS framework on every table”

WPF vs Sciter


WPF Sciter
Definition Windows Presentation Foundation (or WPF) is a graphical subsystem for rendering user interfaces in Windows-based applications by Microsoft. Is an embeddable graphical user interface engine (dynamic or static library) by Terra Informatica Software.
Released 2007 as part of Windows Vista. 2006 – h-smile core release date (HTMLayout, Sciter1, Sciter2 and Sciter3).
OSes Microsoft Windows Microsoft Windows, Mac OS X, Linux/GTK.
Technology .NET Framework 3.0 and above. Only managed API. Native code with native plain C API.
Distribution WindowsBase.dll, PresentationCore.dll, PresentationFoundation.dll (without .NET core) ~ 5 Mb Single sciter32/64.dll ~ 4 Mb
UI Architecture XAML DOM tree W3C compatible DOM tree.
Markup language XAML HTML5 and SVG.
Style language XAML, no cascading CSS – cascading style sheets.
Code behind UI .NET languages tiscript (JavaScript alike, built-in), C, C++, Delphi
Data Binding XAML data binding: one-time/one-way and two way
  • built-in string interpolation via stringizer functions;
  • kite – {{mustache}} alike template engine;
  • +plus – AngularJS alike two-way bindings based on Object.observe();
  • +vlist – one-way, virtual lists bound with arrays of records.
Media services vector and raster images, audio, video vector (SVG) and raster images, video with audio.
Graphics WPF rasterizer on top of DirectX.
Platform graphics:
  • Windows – Direct2D on top of DirectX
  • OS X – CoreGraphics
  • Linux – Cairo
Graphic primitives 2D graphics along with brushes, pens, geometries, and transforms.
  • All standard CSS primitives including filters and transforms.
  • <canvas> alike graphics primitives for immediate mode drawing along with brushes, pens, geometries, and transforms.
Templates Look of an element can be defined directly, via its properties, or indirectly with a Template or Style. Look of an element can be defined directly, via its style properties, or indirectly via style sheets. Structure of elements can be "templated" by Behavior classes (native or in script) and Aspect functions and applied to elements via CSS – properties: behavior, prototype and aspect.
Animations low level animation via timers and higher level abstractions of animations via the Animation classes. CSS transform property based animations, timeline (TweenLite alike) animation engine, low level animations via Element.animate().
Printing Supports paginated documents via DocumentViewer class. <frame type="pager"> supports print preview and printing of paginated HTML documents. Supports CSS page-break-after/before/inside properties.
Accessibility Microsoft UI Automation Microsoft UI Automation on Windows.

BlockNote on KickStarter

blocknote2

I have started BlockNote campaign on Kickstarter

That is about funding of BlockNote2 development: WYSIWYG HTML editor for the rest of us that will work on Windows, Mac and Linux.

BlockNote editor was free last 10 years and if you have found it handy please donate if you can. Each river starts from a small stream.

As a part of this campaign I am also offering discounts (up to 50%) for Sciter license and source code access. And yet advertisement spots on BlockNote front page. Note: that space and number of offerings is limited.