I've just made what I hope is a good fist of the Juxtapose website. You can find the link in the websites section below. Here is it again, I guess for emphasis:
As I mentioned in my previous update, I am a big fan of programmatic styles and JSX, which is partly why I have made this renewed effort.
Both the Occam website and the Occam IDE (such as it is) are written with Juxtapose and programmatic styles.
Update: I've also been working on a pretty printer:
Essentially it is a simpler version of the Occam IDE's pretty printer and it incorporates several of the Occam grammar packages. You can see about a dozen instances of it on the Juxtapose website.
You probably shouldn't read this unless you think CSS is interesting.
I've been programming with CSS since the late nineties, and for most of that time I've had the distinct feeling that I didn't really know what I was doing. I certainly tried to do a good job, but a glance at the CSS I produced would invariably suggest otherwise. And when I looked at other people's CSS, it appeared that they didn't have much of a clue either.
There could be many reasons why CSS can be harder that it first appears. Here's my tuppence worth:
Actually the situation is much better these days. And one thing that I did manage to figure out over the years was that the above deficiencies weren't actually the root cause of bad CSS. The problem was what can best be described as an organisational one. The nature of CSS selectors meant that you always ended up with a cat's cradle of dependencies between styles and therefore the way they affected any particular HTML element was often anyone's guess.
Then SASS came along and things got better. I think SASS gave us three invaluable things:
These things can obviously lead to better organised code in a shallow, syntactic sense, but, crucially, they can also encourage and facilitate a more modular approach fundamentally. In fact I eventually came to the following conclusion:
CSS selectors should not be indicative of and encapsulate any specific collection of properties, and then be applied generally. Instead, they should be used solely to target specific kinds of HTML elements, and should only encapsulate that kind of element's requisite properties.
It took twenty years to figure this out.
Together with JSX, I think programmatic styles are something of a panacea for web programming. There will no doubt always be debate about the architecture of large web applications, but in my opinion the presentation side of things appears to be a done deal.
Here are some new build tools:
None of them are any great shakes, to be honest, but they have brought the build times for my projects down from the often seemingly interminable to the reasonably acceptable.
Update: I have spent the last several months improving these tools. Here is a summary:
The big one here is the support for SWC and ESBuild. I have actually migrated all of my projects over to these tools and the result is that build times have generally improved by a factor of ten or more.
I've finally gotten to grips with eliminating left recursion from BNF. It was all a bit much for a readme file, so I wrote a paper:
The implementation is in Occam's grammar utilities package, a link to which can be found in the resources section.
Update: These changes have been added to version 2.4 of Occam.
Further update: I've just added a video guide to Occam's grammar tools. You can find it on the Occam website.
Recently I learned about 996.ICU. Several months after everybody else, probably. Anyway, it gave me the excuse to run through my open source projects and refresh their licenses, which I've now done. The standard MIT license that I use for all of these projects bar Occam is very amenable to the inclusion of the Anti-996 license. See here, for example. I also merged the standard Apache and Anti-996 licenses for Occam into one license, which can be found here. Feel free to lift either of these licenses for your own projects, obviously.
I have finally finished the new version of Occam. There is even a macOS version.
Update: As of version 2.3 there is Fira Code support!
I decided last year that I should get anything related to Occam's verification into the public domain. With this in mind I've released some new packages concerned with Occam's grammars and its document object model. Specifically:
These links can also be found in the updated resources section.
Update: This one has also been added recently:
I've just published an implementation of the Concur algorithm.
You can find a link at the foot of the resources section, too.
Earlier this year I was kindly invited out to France to meet with others interested in formal mathematics. I ended up giving an impromptu talk and have just gotten around to completing the slides that would have gone with it. You can find them in the new presentations section below.
I should take this opportunity to sincerely thank Josef Urban and Henk Barendregt for their interest in Occam.
I've been working on the Open Mathematics website again. You can now make changes to package's readme files and publish them directly from the website. Other than that there is now some support for GitHub. Specifically, you can commit the aforementioned changes to readme files to underlying GitHub repository at the same time as publishing; you can edit and create issues; and you can do the same for comments on issues. There is also support for TeX, which can be added to readme files, issues and comments.
The result is that the website now functions at least partially as a kind of maths enabled, GitHub overlay. You can compare the readme file of the 'minimal-propositional-logic' package across the two sites here and here to get an idea.
Lately I've been out in the real world talking to other programmers and the subject of Reaction has occasionally 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 website do, then here are some suggestions:
Update: I've had to move over to a production build for the aforementioned Ope Mathematics website. The development build was getting too big and consequently the pause before anything appeared was beginning to impact the user experience, especially on mobile. There is another website you can look at, however. I don't feel like putting a link to it here but it was mentioned in the Joy of JSX videos. It's probably a better place to start anyway, being as it is much smaller and simpler.
There is a new website for publishing Occam packages as well as a command line package management tool to enable you to do so, called Open Mathematics. You can find a link to it in the websites section below.
Last updated 3rd May 2021