Interning symbols
Mike Ajemian wrote something about dynamically interning symbols using the ~:@ format construct to upcase parts of the symbol's name. This works fine on standard CLs, but if you want to write something...
View ArticleHTTP Caching
(This is something I wrote for a now-defunct web publication in 2008. I've inlined the text here.) Giving caches a chance Though it tends to get treated as one, HTTP is not just a dumb file-transfer...
View ArticleAnnouncing: ST-JSON
After dragging my JSON implementation through various projects, and having several incompatible versions exist at the same time, I got permission to open-source it from the company that originally paid...
View ArticlePostmodern 1.13 released
There were a handful of small fixes still sitting around, as well as the deftable addition. It has been four months since 1.12, so: 1.13! Champagne all around. Download.
View ArticleParse-js library released
I've released the JavaScript parser (in Common Lisp) that I had sitting around as a proper package. It's small, fast, and complete, but not terribly well-documented. Get it from the project page.
View ArticleAnnouncing: CL-TK
I've just put my Common Lisp Tcl/Tk bindings online. They differ from the existing LTK library in that they... Support for both FFI bindings and talking to a wish shell. Have hardly any 'wrapper'...
View ArticleA Gentle Introduction to Machine Fundamentals
Read this post at http://marijnhaverbeke.nl/turtle/.
View ArticleCursor motion & bi-directional text
"Unicode is hard" is a commonplace among developers. And I guess it is hard. Witness the amount of systems that get things like string en- and decoding wrong. And that is the easy part—the real fun...
View ArticleHeckle, or how I shall try to blog again
Last week, the need for a platform to publish my bi-directional text story on forced me to think about blogging software once more. I had heard that all the cool kids are now using Jekyll on their...
View ArticleCodeMirror's document representation
This post is part of an ongoing series of articles that aim to document the internals of the CodeMirror code editor. I will use the cm-internals tag to distinguish these posts—if you intend to hack on...
View ArticleJavaScript closure vs. object look-up performance
Note: the question asked in this post, "why aren't closures super-fast?", was thorougly answered by Vyacheslav Egorov in his followup. Reading that is probably more informative than reading the text...
View ArticleFaking an editable control in browser JavaScript
This is a post in the cm-internals series, describing the internals of the CodeMirror editor. The problem it tackles is this: you are writing a JavaScript control that needs to act as a text input...
View ArticleCodeMirror 2.34 and 3.0beta1 released
I've just marked the current state of the master branch as version 2.34. The main changes are: New mode: Common Lisp Fix right-click select-all on most browsers. Change the way highlighting happens:...
View ArticleCodeMirror's mode system
A CodeMirror mode is a module that helps CodeMirror, a code editor, highlight and optionally smart-indent text in a specific programming language or other kind of structured text format. Code editors...
View ArticleAcorn: yet another JavaScript parser
Acorn is a JavaScript parser written in JavaScript. Another one. Just like: The original UglifyJS parser The new UglifyJS parser ZeParser The Narcissus project's parser Esprima Acorn produces a...
View ArticleOverloading plain text: CodeMirror marked ranges
One common feature request that CodeMirror version 1 was fundamentally unable to support (due to its reliance on contentEditable), and which was thus built into version 2 from the start, is...
View ArticleA tale of a pathological scrolling model
When you've lied about something, it tends to take more and more lies to cover up the discrepancies created by the first lie. A very similar thing happened when CodeMirror needed to fake its...
View ArticlePostmodern 1.19 released
Postmodern is a Common Lisp library for communicating with a PostgreSQL database. Sabra Crolleton recently published a nice collection of examples for the library. That reminded me that it's been over...
View ArticleParsing line noise as JavaScript
I am writing a tool that tries to enhance a JavaScript code editor by doing some halfway serious static analysis on code, as it is being written. To analyze code, you'll want to parse it,...
View ArticleShared documents in CodeMirror
From the very start, CodeMirror was set up as a system with zero unused abstractions. This is a doctrine that I've come to esteem highly: write code that solves the current problem you have, and not a...
View Article