JavaScript posts

I've been writing more or less regularly to this blog since 1997. Here you can find my posts categorized with "javascript".

cover image for Flow-Based Programming, a way for AI and humans to develop together

Flow-Based Programming, a way for AI and humans to develop together

I think by now everybody reading this will have seen how the new generation of Large Language Models like ChatGPT are able to produce somewhat useful code. Like any advance in software development—from IDEs to high-level languages—this has generated some discussion on the future employment prospects in our field.
cover image for asComponent: turn any JavaScript function into a NoFlo component

asComponent: turn any JavaScript function into a NoFlo component

Version 1.1 of NoFlo shipped this week with a new convenient way to write components. With the noflo.asComponent helper you can turn any JavaScript function into a well-behaved NoFlo component with minimal boilerplate.
cover image for NoFlo and GNOME

NoFlo and GNOME

As the readers of this blog know, I’ve been working on a Flow-Based Programming implementation for JavaScript in the form of the NoFlo project. The idea of FBP in nutshell is to separate the control flow of software from the actual implementation. Developers build reusable “black box” components that are then connected with each other through a graph that you...
cover image for My interview on the origins of NoFlo

My interview on the origins of NoFlo

Here is a video interview of me talking about the origins of NoFlo, the flow-based programming environment for JavaScript:
cover image for NoFlo Kickstarter, the hacker's perspective

NoFlo Kickstarter, the hacker's perspective

This has been a big week for NoFlo, the flow-based programming environment for JavaScript. Yesterday we released NoFlo 0.4, which added support for running flow-based programs in web browsers. And today we launched our NoFlo Development Environment effort on Kickstarter. Before continuing, make sure to watch the video!
cover image for NoFlo: two years of flow-based programming

NoFlo: two years of flow-based programming

NoFlo — the flow-based programming system I started — is now two years old. I pushed the first commits to GitHub on June 5th 2011 from Hacker Dojo in Mountain View. To get us started with the story, I’ll let Wikipedia summarize:
cover image for Automated linking with rich text editors

Automated linking with rich text editors

The web is built of links, of pages linking to other resources on the internet. But making those links manually is tedious. This is another area where modern inline editors could do better.

Writing reusable, multi-platform JavaScript with Component

I’m currently in the process of porting the NoFlo Flow-Based Programming environment to run also in the browser. While there are some obvious differences in things like filesystem interaction and component loading, the goal here is to reuse as much of the same code as possible between these two platforms.
cover image for Create.js in 2013

Create.js in 2013

It is now 2013, and the IKS project, started back in 2009 to improve content management systems through semantic technologies, has ended. Alongside Apache Stanbol and VIE.js, the Create.js inline editing toolkit was one of the major outcomes of this European Union funded effort.
cover image for Create.js hackathon in Berlin

Create.js hackathon in Berlin

Last week we at IKS organized a two-day hackathon for developers interested in Create.js, VIE, and in new tools for editing websites semantically.
cover image for Video: Decoupling Content Management

Video: Decoupling Content Management

Our concept of Decoupled Content Management, together with the VIE and Create.js is really taking off. I’ve spent in various conferences this summer speaking about them.

What is the appeal of server-side JavaScript?

Node.js showed up at the right time. PHP, currently the most popular server-side language, has been mired in community squabbling amidst a large effort to refactor its character encoding support, while also losing developer mindshare to the many excellent Ruby web frameworks that have appeared in the last few years. But Ruby web frameworks, and the language itself, have become...

Elegance matters

CoffeeScript is to producing JavaScript what Markdown is for producing HTML. Elegance matters.

JavaScript in Qt5

Qt 5 is bringing JS at the same level of support as C++—Quim Gil, Nokia

Create.js

Create is a JavaScript library that can make any website editable through simple RDFa annotations and Backbone.js. MIT licensed, in GitHub.

Dart, Google's JavaScript killer

Dart, Google's JavaScript killerSo, Google finally announced Dart, their JavaScript killer. Initial reactions from the hacker community seem quite unimpressed.
cover image for JavaScript logo

JavaScript logo

Logo for JavaScript, courtesy of Chris Williams (source)

Windows 8 JavaScript code examples

Windows 8 JavaScript code examplesAs seen from the list, JavaScript is a first-class citizen in the Windows 8 world. For example, dealing with Contacts:

Microsoft embraces the Universal Runtime

Microsoft embraces the Universal RuntimeSimple JS calls like var instance = new Windows.SomeInterface() will be the new way to access Windows APIs, with HTML5 and CSS for rendering.

Implement LDAP servers in JavaScript

Implement LDAP servers in JavaScriptI’m quite excited about this. LDAP has always been an interesting protocol, but with rather complicated implementations.

Tame.js

Tame.js is an interesting new JavaScript transpiler that makes managing of asynchronous code easier. From the page:

JavaScript is the Assembly Language for the Web

So now JS is the x86 assembler of the web - not as pretty as it might be, but it gets the job done (GWT is the most hilarious case in point). It would be a classic case of worse is better except that Java only looked better from the bottom up. Meanwhile JS turned out to be pretty awesome.—Nick...

Atwood's Law

any application that can be written in JavaScript, will eventually be written in JavaScript.—Atwood’s Law, from 2007

Kratko: JavaScript refactoring

Kratko is a refactoring tool for JavaScript. Seems useful if you work with a large codebase.

Falsy Values JavaScript conference

Node.js workshop starting. Poll of people participating… most write mainly PHP, Java, Python, Ruby. But everybody also writes JavaScript.

Alternative JS syntaxes

Alternative JS syntaxesAltJS provides an amazingly long list of transpilers that turn code written in other languages into JavaScript. So many different syntaxes that can target the universal runtime…

Waterbear: Visual Programming for JavaScript

Waterbear is a visual programming environment for JavaScript. Great for teaching programming, and also possibly for developing on devices with constrained text input, like tablets or mobile phones.

What you need to know in order to know JavaScript

What you need to know in order to know JavaScriptAs this blog was started to document my JavaScript journey, I thought this laundry list of JS concepts would be useful to keep around for others undertaking a similar voyage.

Asynchronous Programming in JavaScript

Asynchronous Programming in JavaScripttyb on using Promises for preventing spaghetti code in asynchronous development:

Frontend Finland is a meetup group for JavaScript, web and mobile UX developers

Frontend Finland is a meetup group for JavaScript, web and mobile UX developersYesterday was one of their informal gatherings in William K. Quite interesting discussion ranging from MeeGo to CoffeeScript and integration testing. I demoed VIE and Midgard Create to a bunch of people there.
cover image for Swank: JavaScript REPL in Emacs

Swank: JavaScript REPL in Emacs

Experimenting with Swank JavaScript REPL environment on Emacs while working on Midgard Create.

Node.js for Python Developers

Pythonistas could think of Node.js as the JavaScript equivalent of CPython, Twisted, and setuptools packaged together in a single binary residing server-side. It includes a package repository (npm), and is all about event-driven I/O. That means that every time you make a call that would block, you pass a callback to it, kind of like how Twisted’s Deferreds work.—Pete Hunt...

PJAX

PJAX

Useful setTimeout patterns

Any halfway experienced JavaScripter is familiar with the setTimeout function. It takes two arguments: a function, and a number n. It will delay calling the function until n milliseconds (give or take a few) have passed. The delay is performed asynchronously. This means that the rest of your program will not halt while the timeout is ticking down.

JavaScript disruption

Here is the prediction then: within ten years, every major cloud service will be implemented in JavaScript. Even the Microsoft ones. JavaScript will be the essential item in every senior software engineer’s skill set. Not only will it be the premier language for corporate systems, JavaScript will also dominate mobile devices. Not just phones, but tablets, and whatever enters that...

jQuery UI widget factory

jQuery UI Widget Factory - or: “How jQuery UI saved me about 300 lines of code!—Sebastian Germesin from our VIE team posted an excellent introduction into writing jQuery UI widgets.

The Universal Runtime

In the coming years another billion people will get online. They will do it with their smartphones instead of what we consider computers. And their experience will be quite different from ours when we initially started using the internet.Despite its promises, it looks like the post-PC ecosystem will be a lot more restrictive than the PC one was even in...