The simplest things are always the hardest things

It's been several months of being hard at work on ELMS:LN's next generation authoring solution code named HAX. HAX has been getting a lot of attention recently from developer communities because of a few talks members of the core team have been giving around the country (one in New Jersey in Feb, one in Nashville in April). Beyond it starting to look cool and being easier to use it's really starting to shape up in areas of building and integrating with new elements.


Typically I focus there, on new elements we've made, what new integrations exhist. I haven't been writing as much here with updates because they've been rapid and I didn't want to flood channels (check twitter for an overwhelming stream of HAX news). But today instead of focusing on cool elements or integrations I wanted to deep dive into something really complicated that seems like it shouldn't be: Selecting text on the web.


It's easy to select text but because a selection isn't really an object and DOM is short for Document Object Model, you may see how there is a potential conflict of world views. Selections are arbitrary areas of the page which can span DOM elements and as such are much stranger to interface with.


This video is me talking through the code that powers a few complex operations that are made simple to end users: inserting things inline and breaking paragraphs up based on where you press enter. I hope you can appreciate all the hard work going into the rest of HAX from just these two pieces but then it's fun to illustrate how simple something like applying a link or bolding text is by comparison. HAX is slated for 0.10.0 which I've pushed back a bit until HAX is ready to ship for non-admin users. Currently it is available only to admin users in the 0.10.x branch we've been working on and until additional testing (user and code level) happens, we're going to hold off on a new release. We want HAX to start replacing the need for ever looking at the CKEditor again and we're getting very close.


Also a ton of progress is being made on the HAX desktop app (which then is an ELMS:LN desktop app because of how we've built HAX).


For comparison: the second video shows a multiple choice question with randomization capability. This takes 40 minutes to go from nothing to functional prototype.