Quantcast
Channel: marijnhaverbeke.nl/blog
Browsing all 40 articles
Browse latest View live

Image may be NSFW.
Clik here to view.

Tern

I spend a rather large fraction of my days inside Emacs, writing and editing JavaScript code. Of this time, a significant amount is spent doing things that follow patterns. Pattern which, with a little...

View Article


On null and undefined in JavaScript

This is a brief post to explain why my JavaScript code is full of == null comparison expressions, even though linter software tends to disapprove. JavaScript defines both undefined and null as separate...

View Article


Review: If Hemingway Wrote JavaScript

Four out of five stars. Would read again. ★★★★☆ When Angus Croll first told me that he was working on a book that solves simple programming exercises in the style of various famous literary authors, I...

View Article

Eloquent JavaScript's Build System

A text is not just a string of Unicode. It has structure, and a certain internal coherence. People might want to read it in different formats, and if I am going to hand-edit it, I want its source to be...

View Article

Display Updates in CodeMirror

This post is part of the series about the internals of CodeMirror. This time, we'll discuss the way CodeMirror schedules updates to the DOM. The problem is this: CodeMirror has an internal model of the...

View Article


More Money For Better Open-Source Software

As a programmer I create artifacts that, unlike classical commodities such as loaves of bread or toothbrushes, can be copied at zero cost. Fitting copyable things into the capitalist market economy is...

View Article

ProseMirror

Sometimes I lie awake at night, feverishly searching for new ways to load myself down with more poorly-paying responsibilities. And then it comes to me: I should start another open-source project!...

View Article

Collaborative Editing in ProseMirror

This post describes the algorithm used to make collaborative editing work in ProseMirror. For an introduction to ProseMirror, see another post here. The Problem A real-time collaborative editing system...

View Article


Being a Resident at the Recurse Center

I spent one week being a resident at the Recurse Center in New York this November. The Recurse Center is a somewhat unusual institution. They call themselves a “programmers retreat”. That more or less...

View Article


My JavaScript Build Setup

I am looking forward to the time where my node.js and browser can natively run ECMAScript 6 code. Build steps are a pain, and one of the reasons I like JavaScript in the first place is the...

View Article

ProseMirror 1.0

Two years ago, I started the ProseMirror project because I wanted to take a stab at a better approach to WYSIWYG-style editing. Today, I'm releasing version 1.0 of the library. The architecture and...

View Article

Extensible Extension Mechanisms

(The details at the bottom of this post no longer reflect the way things work in CodeMirror 6. See this post for an updated description.) It has become fashionable to structure big systems as a number...

View Article

Computing Indentation from Syntax Trees

Most code editors have some concept of automatic indentation. For each language, they have some logic that can compute an appropriate indentation for a given line. They may immediately indent when you...

View Article


CodeMirror 6 Status Update

It has been almost a year since we officially announced the CodeMirror 6 project, which aims to rewrite CodeMirror (a code editor for in the browser) to align its design with the technological...

View Article

Lezer

I keep coming across people who consider parser technology a forbidding, scary field of programming. This is nonsense—a small parser can be very, very simple, and provide a wholesome exercise in...

View Article


CodeMirror MOSS project report

Development of CodeMirror 6 this year has been generously supported by Mozilla through their MOSS program. The MOSS program asks for a closing retrospective blog post describing the progress made...

View Article

Collaborative Editing in CodeMirror

This post describes the considerations that came up in designing the document-change data structure and built-in collaborative editing feature in the upcoming version of CodeMirror (a code editor...

View Article


CodeMirror 6 Enters Beta

I'm happy to announce that with version 0.8.0 the CodeMirror 6 project is entering its beta phase, and you're very much invited to start trying it out and poking at it. Roughly, this “beta” status...

View Article

Facets as Composable Extension Points

An extensible system, at its base, is a system that allows people to add additional functionality that was not anticipated by the core system. A good extensible system also makes sure multiple...

View Article

CodeMirror 6.0

CodeMirror 6 is a new code editor library for the web, a from-scratch implementation based on the experience of building and maintaining versions 1 to 5 for the past 13 years. It aims to be more...

View Article
Browsing all 40 articles
Browse latest View live