Thinking about syntax

Unexpectedly learning from a small side project.

Learning a new tool is frequently worthwhile for more reasons than a direct benefit toward development speed or efficiency. Whether that tool is a language, library, or text editor, it can expose you to new ways of thinking.

Although I very much enjoy learning new tools, I don’t have many compelling opportunities to make them — my daily work as a front-end software engineer consists of developing websites and web applications, integrating and building from preexisting libraries and tooling.

A few days ago, I starting working on a syntax theme for the Atom text editor. It’s not a technically difficult project by any means, but it opened my eyes to a few things I don’t usually think about when developing application software. For instance, I doubt I had actively considered before that JavaScript’s typeof is an operator rather than a keyword.

That’s a concrete example, but in an abstract sense, looking at code as a collection of tokens and thinking about how those interact is something I typically do subconsciously. Working on this theme has encouraged me to actively look at code in a different way than usual.

Another note I’ve taken from this is the benefit of working with tools I’m comfortable modifying. Atom is written in on a web-based platform, so writing a plugin or extension is perfectly natural to me.

I look forward to improving this syntax theme, and I’ll have an eye out for other opportunities to explore the world of tools in the future.

Related articles

Beyond allowing the await keyword to be used within them, JavaScript’s async functions have their own useful aspects. As an alternative to Promise.resolve() and Promise.reject(), consider using async functions to cleanly wrap return values in Promises for convenient mocks in your test suite and to ensure consistent return types.


How to integrate build-time or server-side syntax highlighting for markdown code fences with two libraries: markdown-it and Highlights (Atom’s syntax highlighting engine).


A Firefox issue where right click on a button results in a click event listener firing because of event delegation performed automatically by a JavaScript SPA framework.