Continuing the previous discussion with some more issues and followup.

This document focuses on tuning the VFS and running some additional experiments with lower level libraries.

Issue #11 : What factors are affecting IndexedDB performance the most?

What about deferred writes?

Consider the essential method in wa-sqlite/src/examples/IndexedDbVFS.js

_putBlock(store, file, index, blockData) {
const key = this._blockKey(file.meta.name, index);
file.cache.delete(key);
file.cache.set(key, { data: blockData, dirty: true });
/* this._purgeCache(store, file); */
}

The existing VFS always flushes its write cache on every block, it does this on all writes not just at Sync operations. That’s pretty conservative. Maybe we could do this…


This is an exploration of using WASM to help with web product engineering. This document focuses on some of the initial questions which tell us if we have any hope of getting this idea off the ground at all. A lot more investigation is needed, some of the followups are mentioned below.

Issue #1 : What kind of penetration does WASM have anyway?

Actually the answer here is very good.

By vendor/version:

By usage:


Sometimes people talk about making the Lab more like Production. Actually this is usually an anti-goal. That may sound surprising but consider this:

Production:

  • lots of users
  • lots of data samples
  • variable available memory
  • variable available disk
  • variable other things running on system
  • variable network quality
  • variable [other stuff]
  • metric goal: what is actually happening to users

In order to get the lab to look like production you’d have to start emulating those things. Now consider:

Lab:

  • tiny number of test users
  • small number of configs
  • tightly controlled execution environment
  • tightly controlled disk/memory etc.
  • metric goal: have we done something bad?

The…


UPDATE! Visual Studio goes 64 bit in VS2022!!

This was one of my most contentious postings ever. I dug up an archived version because the original was deleted from MSDN. Many of my posting are archived there (e.g. Development Tools Ecosystem Summit | Microsoft Docs). But it seems some of my articles were censored. I’m kind of sad about that, this is an important article that reflects real thinking at the time.

So keeping in mind this is quite old… here it is for reference in its entirety. I recovered it from Wayback Machine (archive.org) at Visual Studio: Why is…


The / thing is a serious case of legacy compat gone nuts. And it happens when you have an ecosystem and you need to keep things working in that ecosystem even as it evolves.

So, we have to go ALL the way back to CP/M an operating system most of you won’t ever have heard of but it was popular on a variety of devices in the late 70s and even into the early 80s.

CP/M has no directories, it’s for floppies, small ones at that. Well actually small in capacity, but they were usually the 8” huge floppies you…


I wanted to talk a little bit about securing C code, this came up a few weeks ago in a friendly twitter discussion and I said I would write something; so here it is.

Securing C is not an easy thing to do generally but we had pretty good success in Project Lightspeed. Now please don’t consider this a pwnme challenge: it’s not that. Nobody needs that in their life (see this if that excites you). But I think we ended up in a pretty good place and it is C, so I thought it would be worth it to…


I’m a big fan of unit tests. Really. Big fan. Super big. Massive. Like, “make unit tests great again” massive. That.

So when I was working on my FB project (https://cgsql.dev) of course I invested in a lot of tests. In fact there is about as much test code as there is code code. And I wouldn’t have it any other way. That stuff saves my life on a daily basis because when you’re working on any code, but maybe especially on a compiler, it’s really easy to hork things up. So the code has 100% line coverage and lots…


I thought I would write some notes on some old “networking” tech that I worked on in the early 80s. I have “networking” in quotes because it isn’t really like what you would call a modern network, this was more about sharing particular devices but in some sense the things we’re going to talk about are “switches”. This is the Microshare line of products. I’m doing this all from memory so there’s some chance I have some of the details wrong but I’m confident this is substantially correct.

The general need here was to be able to share Commodore peripherals…


This is obviously an opinion piece and a bit of nostalgia but, despite that, Win95 being the most important OS ever is not a claim that I make lightly. I’m a student of this space and there are many great contenders but, in my opinion, none had as dramatic an effect on the entire industry, and certainly none as quickly as Win95.

So, what am I talking about? Let’s set some context:

  1. In 1995, PCs outnumbered all other computers at roughly 80M units, growing to roughly 90M by 1998. I think a case can be made that this out numbers…


So the usual caveats apply: In the interest of brevity, what I’m going to write is only approximately correct, so do take this all with a grain of salt.

So here I’m talking about Fail-fast in the context of coding, not experimentation. This is the idea that there are many cases where your program should just abort rather than trying to recover. Classic examples of this sort of thing include “exit() or abort() on out of memory” or “out of disk space”. That sort of thing.

People are often surprised by this approach, having been trained to (e.g.) guard every…

Rico Mariani

I’m a software engineer at Facebook; I specialize in software performance engineering and programming tools generally. I survived Microsoft from 1988 to 2017.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store