<commit_before>---
title: 'Contract: New techniques, old technology'
date: 2016-05-31T18:39:28.919Z
layout: post
path: /contract-new-techniques-old-technology/
next:
previous: /avoid-these-abused-words/
tags:
  - contract
  - reactjs
  - software
---

![Marionette + React](https://static.sinap.ps/blog/2016/05_may/new_tech_old_tech/marionette-and-react.png)

Last fall, after having worked with [React](https://facebook.github.io/react/) or [similar technologies](http://www.ractivejs.org/) for a couple years, I took [a contract](https://scottnonnenberg.com/work/#ookla-2015-q-3-to-q-4) working with [Marionette.js](http://marionettejs.com/). A much older technology, based on [Backbone.js](http://backbonejs.org/), it was uncomfortably familiar. I was dealing with problems I hadn't had to think about for a while! But there were some benefits to my contact with new technologies…

<div class='fold'></div>

## MVC vs. Flux

[Model View Controller (MVC)](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller) is the old standard. It's been a darling of the architecturally pure for years. A crisp separation between an application's data (Models), user interface (Views), and business logic (Controllers). [Rails](http://rubyonrails.org/) was held up as true MVC architecture. But it wasn't always so crisp. You'd have [so much business logic that it didn't feel right in the Models](http://www.justinweiss.com/articles/when-is-an-activerecord-model-too-fat/), or it wasn't clear whether a given bit of code [should go in the Controller or the Model](http://www.justinweiss.com/articles/where-do-you-put-your-code/).<commit_msg>Update image in contract: new tech/old tech<commit_after>---
title: 'Contract: New techniques, old technology'
date: 2016-05-31T18:39:28.919Z
layout: post
path: /contract-new-techniques-old-technology/
next:
previous: /avoid-these-abused-words/
tags:
  - contract
  - reactjs
  - software
---

![Marionette + React](https://static.sinap.ps/blog/2016/05_may/new_tech_old_tech/marionette-and-react-rev2.png)

Last fall, after having worked with [React](https://facebook.github.io/react/) or [similar technologies](http://www.ractivejs.org/) for a couple years, I took [a contract](https://scottnonnenberg.com/work/#ookla-2015-q-3-to-q-4) working with [Marionette.js](http://marionettejs.com/). A much older technology, based on [Backbone.js](http://backbonejs.org/), it was uncomfortably familiar. I was dealing with problems I hadn't had to think about for a while! But there were some benefits to my contact with new technologies…

<div class='fold'></div>

## MVC vs. Flux

[Model View Controller (MVC)](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller) is the old standard. It's been a darling of the architecturally pure for years. A crisp separation between an application's data (Models), user interface (Views), and business logic (Controllers). [Rails](http://rubyonrails.org/) was held up as true MVC architecture. But it wasn't always so crisp. You'd have [so much business logic that it didn't feel right in the Models](http://www.justinweiss.com/articles/when-is-an-activerecord-model-too-fat/), or it wasn't clear whether a given bit of code [should go in the Controller or the Model](http://www.justinweiss.com/articles/where-do-you-put-your-code/).
{'fraction_non_alphanumeric': 0.13315299068229636, 'fraction_numerical': 0.02374511571986775, 'mean_word_length': 4.631133671742809, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 8, 'lorem ipsum': 0, 'www.': 6, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4043837', 'n_tokens_mistral': 1119, 'n_tokens_neox': 1026, 'n_words': 331}