More and more, it is clear to everyone that when the software you use is free, you’re the product. Free software products make money by serving ads and selling your data. The most common alternative is a subscription, and you see more and more subscriptions and paywalls nowadays. And people complain about that. It is simply not doable nor affordable to have a subscription for all and…
This page gives an overview on the projects I’m working on. These include projects I work on at work as well as in my spare time. JSON Editor Online JSON Editor Online is a versatile, high quality tool to edit and process your JSON data. It is one of the best and most popular tools around and has a high user satisfaction. The editor offers all your need in one place: from formatting and…
I’m Jos de Jong, living and working in Rotterdam, the Netherlands. I’m happily married with the nicest girl in the world, and we have two awesome kids to take care of, plus two more in the weekends. I believe God created this marvelous world where we can live, love, discover, and develop. I’ve studied at Delft University of Technology, and have a Bachelor Mechanical Engineering,…
When developing a new application, your code base starts small and simple. Over time, your code grows and becomes more complex. It can be hard to fight complexity and keep a code base maintainable in the long run. Here some principles that help me with that. Recon with the cost of maintaining code, not just the cost of development When buying a car, it’s quite easy to reckon with both the…
I’ve moved this blog from octopress to hugo , since octopress isn’t maintained anymore. I’ve tried to keep the urls of all pages backward compatible. Thanks again octopress!
In this article, I share with you the journey and the struggles of turning a large, monolithic JavaScript mathematics library, mathjs , into a modular one embracing ES6 modules and functional programming. Because of the heavily intertwined nature of the functionality this was a huge and unique challenge. Why? Math.js is a popular JavaScript library that brings advanced mathematics to the web…
tl;dr The JavaScript community is doing a great job in creating an ecosystem of highly composable, configurable, and extensible components. Unfortunately, this has complicated usage of these components. It is time to focus on the user again. Deliver components with a good default configuration which matches the typical use cases, and ensure a gradual learning curve for more advanced usage of a…
tl;dr So far I’ve been hesitant to embrace static type checkers like TypeScript. It’s because I associated static type checking with the restrictions and interoperability issues that I know from Java and C++. However, it turns out that TypeScript is different: it uses a structural type system rather than a nominal one, which eliminates these downsides. It gives us a way to describe…
tl;dr Math.js v2 has been released a week ago. It has a completely reworked, modular architecture which allows creating custom builds. All functions have been rewritten into typed-functions. This takes away a lot of overhead for type checking and type conversions. These changes create a lot of flexibility in both extending and consuming the library. A week ago math.js v2 has been released, a big…
tl;dr In order to ease full stack JavaScript development, we need to take away the hurdles keeping these worlds separated. We need unified, isomorphic solutions for common functionality like module loading, networking, background processes, logging, and others. Ever had to use statements like the following? if ( typeof window !== 'undefined' ) { // browser } else { // node.js } It’s a simple…
It may be the holy grail of programming: writing reusable code. Not getting stuck by inventing the wheel again and again, but moving forward and building on top of what has been done. Looking at what we do today, we still haven’t really figured this out. So you are writing a software library. You had a great idea for a simple, broadly applicable solution. You have cooked up a nice API and…
A while ago I read the blog post Ranging Near and Far by Scott Sauyet. On Echo JS , Scott titled a link to this blog “Choosing simple APIs over flexible ones” . This title suggests that you have to choose between either simple or flexible APIs, which is a false dilemma. This got me thinking: What makes a good API? Flexibility Scott discusses the API of the range function of Ramda…
A few months ago I did an astonishing discovery, namely how strong your solutions are shaped by the programming language you use, the language that lives in your head. The interesting thing is that I already knew this. But despite that, I hadn’t expected this to be so incredibly influencing until I saw such a clear case of this in my own work. The right tool for the right job First a short…
Ask any programmer to the worst bug he ever encountered and you will very likely hear a terrible story concerning multithreading and data locks. Or maybe an issue around memory corruption or memory leakage. Two topics which are apparently hard to master for us programmers. The latter case, memory corruption, is becoming less and less of a problem, as most modern languages come with automatic…
This is a theme which pops up again and again at the software projects I am working on. I really liked this blog by Jeff Atwood in this regard, explaining all your app is, is a collection of tiny details . Software which has not taken care of details right can be extremely annoying, and vice versa, an application having its details right can be real joy to work with. This article explains the…
Welcome at my blog. I just installed it freshly using octopress . Like everybody, I’m very unique and have the world a lot of interesting things to tell ;-). So here we go.