Tact js / 2011-Present

TactJS is a side project I started working on in my spare time while I was still at Match.com with Tom Dupont. We were frustrated with the lack of cohesive, easy to understand tools in the javascript world at the time. AngularJS was still pretty incoherent, and the other options were geared toward solving a particular use-case and not much else. We still had jQuery, and it was the best tool of the age, so we decided to build on it.

TactJS is every JS dev's first major side project. It's an object-oriented shim (because prototypal inheritance is weird) with some shiny syntactic sugar and some useful features that make workflow a bit easier to manage.

The key feature of TactJS is the markup-driven behavior system. Just by including the TactJS library on your page, you could start writing behaviors with java-like folder-based namespacing, and reference those namespaced scripts via "data-" attributes (or your own arbitrary prefix, data was still too new to standardize on). Scripts referenced this way were necessarily closures and would be instantiated against the context of the element they were referenced on with "data-". Since you can reference multiple scripts this way, each providing their own "behavior" mechanics to the element they're added to, you can combine behaviors to get emergent effects. Communication between behaviors was done via jQuery selectors and messages, preventing any dependent coupling from cropping up and breaking the site with JS errors. The theme of the project was extremely high cohesion along with fanatical avoidance of coupling.

In theory it all sounds pretty great. In practice, it's difficult to get a development team fully committed to using it because of the single point of failure. Tom's since moved on, and I'm the sole expert on the framework. Bus Factor is a real concern. Still, it's a fun little project. I hardly have time to keep up with it anymore though so it's falling by the wayside of late. There's a github repo for the TactJS site and a NuGet package that includes a demonstration page for .NET MVC projects.

TactJS.com Presentation Crica 2011

TactJS.com Presentation Crica 2011