
Research
Node.js Fixes AsyncLocalStorage Crash Bug That Could Take Down Production Servers
Node.js patched a crash bug where AsyncLocalStorage could cause stack overflows to bypass error handlers and terminate production servers.
gl-surface-plot
Advanced tools
Draws a surface plot
var shell = require("gl-now")({ clearColor: [0,0,0,0] })
var camera = require("game-shell-orbit-camera")(shell)
var createSurfacePlot = require("gl-surface-plot")
var ndarray = require("ndarray")
var fill = require("ndarray-fill")
var diric = require("dirichlet")
var glm = require("gl-matrix")
var mat4 = glm.mat4
var surface
shell.on("gl-init", function() {
var gl = shell.gl
gl.enable(gl.DEPTH_TEST)
//Set up camera
camera.lookAt(
[0, 0, 2], //Eye position
[256, 256, 64], //Eye target
[0, 0, 1]) //Up direction
//Create field
var field = ndarray(new Float32Array(512*512), [512,512])
fill(field, function(x,y) {
return 128 * diric(10, 10.0*(x-256)/512) * diric(10, 10.0*(y-256)/512)
})
surface = createSurface(gl, field)
})
shell.on("gl-render", function() {
surface.draw({
view: camera.view(),
projection: mat4.perspective(new Array(16), Math.PI/4.0, shell.width/shell.height, 0.1, 10000.0)
})
})
Here is what this should look like:
Test it in your browser (requires WebGL)
npm install gl-surface-plot
var createSurfacePlot = require("gl-surface-plot")
var surface = createSurfacePlot(gl, field[, params])Creates a surface plot object
gl is a WebGL context
field is a 2D ndarray
params is an optional collection of arguments that contains any of the following:
colormap - the name of the color map to use for the surface (default "jet")pickId is the picking id for the surfaceReturns A surface object
surface.update(params)Updates the surface. The parameter object may contain any of the following properties:
field a new 2D field encoded as an ndarraycolormap the name of the new color map for the surfacepickId is the picking id for the surfaceticks is a pair of arrays of ticks representing the spacing of the points for the axes of the surfacesurface.draw([params])Draws the surface. Accepts the following parameters
model the 4x4 model matrix (in gl-matrix format)view the 4x4 view matrixprojection the 4x4 projection matrixsurface.dispose()Destroys the surface, releases all associated WebGL resources
surface.drawPick(camera)Draws the surface for point picking mode
surface.pick(selection)Test if the given selection is contained in the surface. If true, returns an object encoding the selected point.
Returns An object encoding the selected point on the surface with the following properties:
position which is the position of the selected point on the surfaceindex a vector encoding the [x,y] index of the closest data pointsurface.boundsA pair of 3D arrays representing the lower/upper bounding box for the surface plot.
surface.clipBoundsA pair of arrays which bound the coordinates of the surface plot in 3D.
MIT License.
FAQs
Renders 2D surfaces
The npm package gl-surface-plot receives a total of 7 weekly downloads. As such, gl-surface-plot popularity was classified as not popular.
We found that gl-surface-plot demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
Node.js patched a crash bug where AsyncLocalStorage could cause stack overflows to bypass error handlers and terminate production servers.

Research
/Security News
A malicious Chrome extension steals newly created MEXC API keys, exfiltrates them to Telegram, and enables full account takeover with trading and withdrawal rights.

Security News
CVE disclosures hit a record 48,185 in 2025, driven largely by vulnerabilities in third-party WordPress plugins.