Thursday, November 6, 2014

Handling Concurrency



Programming languages offer various ways to handle concurrency. In languages like Java, concurrency is handled at library level, in other languages like Erlang concurrency is handled at language level itself.

Semantics of handing concurrency,
  • Locks/Mutex
  • Compare and Set
  • Copy on write
  • Event loop/machine
  • Messaging
    • Actor
    • Communicating via sequential processing (CSP)


Java language provides library to support Locks/Mutex, Compare and Set and Copy on write semantics.

Scala - a JVM based language provides Actor based semantic.

Ruby language provides Mutex based semantic and we also have event loop based semantic via external library (EventMachine.rb).

Node.js provides event loop based semantic at language level. At language level IO related events (such as Network, File system) are supported. Generation and handling of custom events also supported.

Go language supports Mutex based semantic and also CSP semantic via channels.

Erlang language supports Actor based semantic.

Wednesday, May 14, 2014

Paperstencil - cross between word processor and web form

Have open sourced our product - Paperstencil - cross between word processor and web form.

Paperstencil helps enterprises to roll-out data collection solutions, contracts, signatures, payment related solutions of their business needs in few minutes.

Wordprocessors such as "MS Word" are good for constructing documents. Web forms are good at validating and capturing user input. Meet "Paperstencil", a cross over product between Wordprocessor and Web form.

Features :

  • Create "PDF Form" like natural looking document without external plugins.
  • Validate and capture user signature and other user inputs such as address, email, date etc.
  • Constructed documents shall be viewed on both Desktop and Tablets without external plugins.
  • Constructed document shall be shared as web link, thus making it easy to embed in other web assets and email.
  • Table/Nested tables make it easy to structure custom page layouts.


Demo : http://www.paperstencil.com/demo





Monday, May 12, 2014

Web based opensource rich text editors for Tablet, Mobiles and Desktop


There are few rich text editors that depend on 'contenteditable' attribute of HTML5 to provide rich text editing. Author of codemirror  describes his experience with writing 'contenteditable' based code editor, and why he switched away from it. If support for 'contenteditable' is so buggy in desktop browsers, think about support for it in tablet/mobile browsers !!.

On the other hand, there are open source rich text editors built with web technologies that didn't depend on 'contenteditable' attribute of HTML5. Instead they depend on their own layout engine. Here are two opensource rich text editors that have their own layout engine,

Carota  : HTML 5 Canvas based rich text editor.
Demo is accessible at http://earwicker.com/carota/
Source is accessible at https://github.com/danielearwicker/carota

Firepad : Codemirror based rich text editor from Firebase.
Demo is accessible at http://www.firepad.io/
Source is accessible at https://github.com/firebase/firepad