James Smith

James Smith

jecs@imperial.ac.uk (related to academia)
james.smith@djalbat.com (all other)

I am a mathematician and programmer, almost exclusively JavaScript these days. I have worked very briefly with temporal logics in the past, inventing a new one (this is nothing very clever, new logics are invented all the time) and proving that it is equivalent to some others. I also seem to have devised what appears to be the first correct concurrency control algorithm, at least going by one commonly held definition. These days I am working on a proof assistant called Occam, if that's not obvious.

For what it's worth I am a supporter of the Cost of Knowledge effort.


Recently, I've been out in the real world talking to other programmers and the subject of Reaction has often come up. I've found myself dissuading people from watching the 'Reverse Engineering React' series of videos, however, and I now wonder why. I think part of the reason for this is that I feel things have generally moved on. So if you come by this website having stumbled across Reaction (as I suspect a significant proportion of the visitors to this site do), then here are some suggestions:

  1. Don't waste too much if any time on the aforementioned 'Reverse Engineering React' videos. They really are a bit dated, simply because Reaction's code base has changed. I haven't done a bad job of keeping up the errata, but I haven't done a great job, either. My suggestion would be, therefore, that you clone the repository and have a look around. I think the pertinent files are the topmost react.js file, which gives you JSX support; and all the files in the element directory and its subdirectories, especially the other react.js file, which implements the all-important ReactElement class.
  2. If you do fancy watching some videos, watch the Rewiring Redux series. There are far less of them, and four frameworks are discussed rather than just one, namely Reaction+Inference and React+Redux. More importantly, (I kid myself) I manage to draw a few distinctions between these two pairings which (I again kid myself) may shed some light on each of them. For example, there is a bare bones implementation of Redux in the redux.js file, which really is all you need in production (don't tell the BBC, ahem).
  3. Lastly, I've been working on the openmathematics.org site recently, and I felt obliged to use Reaction and Inference, seeing as how I wrote them. At times it felt like I was cutting my nose off, but now things are turning out well. I haven't minified either the JavaScript or the SASS, initially through oversight, but I'm going to leave it that way for now. So you can have a look at the whole lot using your browser's developer tools. I've also made a bit of an effort with both the Reaction and Inference readme files, ostensibly to explain the patterns I developed in order to get a data-driven site, as opposed to just a toy site, working.

I made the 'Reversing Engineering React' series of videos over two years ago, but the stats show that there's still a steady trickle of people watching them and the other videos even now. One of the most popular videos is Compiling JSX, which has been watched on average eighty percent of the way through. From this I surmise that at least some of the people who take the time to watch the videos actually get something from them, which is great. I hope the above suggestions prove useful, too.

[show older]


Occam has its own dedicated page including a section on how you can get it running locally.



These are not fully peer-reviewed papers and should not be judged as such.



Last updated 16th May, 2018.