Website profiles · Technology insights · Alternatives

petersalomonsen.com

Peter Salomonsen builds tools where code meets music: WebAssembly synthesis, live-coding music in the browser, git in WebAssembly (wasm-git), and NEAR blockchain smart contracts. Author of 'Building and Deploying WebAssembly Apps'.

No paid content found
Visit website
Profile views 0 Outbound visits 0 Normal
Peter Salomonsen Full homepage screenshot

At a glance

Category
Development
Language
English
Paid-content signal
No paid content foundObserved
Registered
2003
Hosting
FastlyInferred
HTTPS certificate trusted
PassedObserved
Last updated

Website review

This review may include AI-generated content and is not individually verified. Domain, certificate and other facts come from the observed data on this page.

What is Peter Salomonsen?

Peter Salomonsen is a developer and musician who builds tools where code and music meet. His work centers on WebAssembly: using it to run synthesizers, live-coding music environments and version-control tooling directly in the browser. He is the author of Building and Deploying WebAssembly Apps and publishes new WebAssembly Music tracks and videos regularly on his YouTube channel, with songs playable at webassemblymusic.pages.dev.

What he actually works on

  • WebAssembly music and synthesis — composing and performing tracks where the notes, instruments and visuals are code compiled to WebAssembly and run live in the browser.
  • Faust DSP to AssemblyScript — a project (faust2as) that compiles Faust audio DSP code to AssemblyScript so it can run as WebAssembly inside his music environment. He presented this at the International Faust Conference 2026 in Cannes.
  • wasm-git — Git compiled to WebAssembly, used to bring version control into web apps. Recent demos run entirely in the browser using OPFS, with repositories syncable to the NEAR blockchain.
  • NEAR smart contracts — storing and loading git repositories on-chain, which is how his conference demos pull their sources.
  • Agentic composition — using an in-browser AI agent to write and edit notes, synth instruments, sequences and reactive visuals on instruction, while he retains the composer role: directing the arrangement, playing patterns on a MIDI keyboard and editing code where it matters.

Who it is for

This is most useful to people at the intersection of audio programming and web development: DSP and Faust developers who want their code running in a browser without a plugin, live coders, and developers curious about decentralized or user-custodied application data. A producer looking for an off-the-shelf DAW will not find one here — the value is in the tooling and the demonstration that these things can run client-side.

A useful next step

If you want to understand the approach rather than just hear the output, start with a playable track and open its source: the point of the work is that the song, the instruments and the visuals are all inspectable code you can edit live. From there, the wasm-git and Faust-to-AssemblyScript projects are the two threads worth following depending on whether your interest is data ownership or audio DSP.

How does WebAssembly Music let me live-code music in the browser?

WebAssembly Music lets you edit and play music as code that runs directly in the browser: you change the source, it compiles to WebAssembly, and the result is audible immediately — no install, no build step you have to babysit.

What the workflow looks like

  • Code is the score. Notes, sequences, synth instruments and reactive visuals are all code compiled to WebAssembly and executed live in the browser.
  • Instruments are code too. Peter Salomonsen's Faust DSP work compiles Faust synth code to AssemblyScript so it can run as WebAssembly inside the music environment (his faust2as tooling).
  • You can drive it by editing, by playing, or by prompting. He describes directing an in-browser AI agent that writes and edits the code on instruction, while he still plays patterns in on a MIDI keyboard and edits the code where it matters — his framing is "still the composer," not a prompt-and-pray generator.
  • Songs double as examples. Tracks such as Prompted are published next to their sources, so you can read the code, play the song live, or edit it yourself.

A concrete starting scenario

Open a published track, change a few note values or a synth parameter, and listen. That single loop — edit code, hear the change — is the whole point of live-coding in this environment, and it is the fastest way to understand how the pieces fit together.

Where it fits, and where it doesn't

If you are… This suits you because… Watch out for…
A programmer curious about music You already think in code; the score is the source file You still need musical judgement — the tool does not compose for you
A live performer Changes take effect while the piece runs Live coding rewards preparation; unrehearsed edits can break a set
A Faust/DSP developer Synth definitions compile into the same WebAssembly runtime You are working within this environment's conventions, not a general DAW
A non-coder wanting a DAW — A conventional DAW will be far more direct

The trade-off is consistent: maximum control and transparency (everything is inspectable code, and songs can even be stored in git repositories synced via the NEAR blockchain using wasm-git) in exchange for a steeper entry point than drag-and-drop music software.

Next step: listen to a track, then open its source alongside it and make one small edit. If you want to go deeper into the underlying technology, Peter Salomonsen's site Peter Salomonsen links his book on building and deploying WebAssembly apps and the playable WebAssembly Music collection. For background on the synthesis language used for the instruments, the official project is Faust.

What is wasm-git used for in web apps?

wasm-git is a WebAssembly build of Git that runs inside the browser, letting a web app keep a real Git repository — commits, branches and full change history — on the user's own device. Peter Salomonsen uses it to give users custody of their application data: the repo lives client-side, optionally encrypted, and can be synced to remote storage such as the NEAR blockchain.

What it enables in practice

  • Local-first storage with history. Instead of overwriting records in a server database, each change becomes a commit, so users can inspect, diff and roll back.
  • Client-side encryption. Data can be encrypted before it leaves the browser, so the storage host never sees plaintext.
  • Sync without a proprietary backend. The same repo can be pushed to a remote Git target or a blockchain-backed store.
  • Browser-only operation. The demo runs entirely in the browser using OPFS, the Origin Private File System, so no native Git install is needed.

Who benefits

A note-taking or CAD app where users want an auditable trail of edits; a regulated workflow where the user, not the vendor, must hold the keys; or a tool that must work offline and reconcile later.

Trade-offs

Git's model is powerful but heavier than a simple key-value store: merges and conflicts become user-visible concepts, and browser storage quotas limit repo size. Client-side encryption also means lost keys mean lost data — a real support burden.

If you are evaluating this approach, start by deciding who should hold the encryption keys and whether your users can cope with merge conflicts. A concrete test: build a small prototype that commits one edited document, closes the tab, reopens it, and syncs to a remote — if that loop is smooth, the pattern is worth extending.

Related projects in the same space include GitHub for hosting, and Peter Salomonsen's own site Peter Salomonsen documents wasm-git alongside his WebAssembly music work.

How do I run Faust DSP code as WebAssembly with faust2as?

Faust DSP code can be compiled to AssemblyScript and then to WebAssembly using faust2as, the tool Peter Salomonsen demonstrated at the International Faust Conference 2026. The compiled module runs inside the WebAssembly Music environment in the browser, so a Faust synth or effect becomes a live, editable instrument rather than a plugin you install.

What the workflow looks like

  1. Write your DSP in Faust as usual.
  2. Run it through faust2as, which targets AssemblyScript instead of C++.
  3. Compile the AssemblyScript output to a WebAssembly module.
  4. Load that module in a WebAssembly host — in Salomonsen's demos, the WebAssembly Music environment, where the instrument is played and edited live.

The payoff is portability: the same DSP source ends up as a browser-native module with no native build step, and because it is code, it can be versioned and shipped like any other source file. In his IFC 2026 demo, the concert and the Faust-to-AssemblyScript example load directly from git repositories stored on the NEAR blockchain via wasm-git, which shows how far you can push the "everything is code in a repo" approach.

Who this suits

  • Faust users who want web deployment without maintaining a separate C++/Emscripten toolchain.
  • Live coders who want synth instruments as editable source in the browser.
  • Developers building browser instruments who prefer AssemblyScript's TypeScript-like syntax over hand-written C.

The trade-off is maturity and ecosystem: AssemblyScript is a smaller target than C++, so not every Faust feature or external library will map cleanly, and you take on debugging at the AssemblyScript/Wasm boundary. If you need maximum compatibility with existing Faust C++ backends, the conventional route is still safer.

A concrete next step

Start with one small, self-contained DSP — a single oscillator or a simple filter — and take it end to end through faust2as before attempting a full instrument. Confirm the module instantiates and produces audio in the host, then add parameters and UI controls. For the broader context of running code like this in the browser, see Peter Salomonsen and the playable WebAssembly Music environment at webassemblymusic.pages.dev.

How can I store git repositories on the NEAR blockchain?

Use wasm-git as the bridge: it is a Git implementation compiled to WebAssembly that runs in the browser, and the site shows it loading repositories stored on NEAR. The practical pattern is to keep the Git object store local in the browser and use NEAR for persistence and sharing, rather than writing every Git object to the chain yourself.

What the pieces do

  • wasm-git — Git compiled to WebAssembly. It gives you normal Git operations (clone, commit, branch, history) inside a web app without a server-side Git host.
  • OPFS (Origin Private File System) — fast local browser storage. The site's latest demo runs entirely in the browser using OPFS, which is where the working files and repository data live while you work.
  • NEAR — the durable, shared layer. Repositories loaded from NEAR can be pulled into the browser environment, and changes can be synced back. Because NEAR accounts are key-based, your repository identity can be tied to an account you control.

A concrete workflow

  1. Create or use a NEAR account that will own the repository.
  2. In a browser app built on wasm-git, clone or load the repository from NEAR into OPFS.
  3. Edit files and commit locally as you normally would.
  4. Sync the updated repository back to NEAR so the history is available to other devices or collaborators.
  5. Optionally encrypt client-side before syncing, so the chain stores ciphertext and only key holders can read the content.

Trade-offs to decide on

Choice Good for Cost
Store full Git objects on NEAR Maximum portability, verifiable history Storage cost and latency per commit
Store a packed/compressed repository Fewer transactions, cheaper syncs Less granular on-chain history
Encrypt before upload Full user custody of data Key management becomes your problem
Keep OPFS as the working copy Fast editing, offline-ish use Browser storage can be cleared; sync matters

The site's own framing is that this gives users full custody of their own application data, with complete change history — and the accompanying responsibility of holding their own keys. That is the real design decision: NEAR provides durable, account-owned storage, but you are trading away the convenience of a managed Git host.

If you want to see the moving parts before building, start with the wasm-git demo on Peter Salomonsen and the playable WebAssembly Music environment, then read the article on bringing Git to web apps. For the NEAR side, the official developer documentation at NEAR covers accounts, storage and contract calls.

What is covered in the book Building and Deploying WebAssembly Apps?

The site identifies Peter Salomonsen as the author of Building and Deploying WebAssembly Apps, but its own pages describe the book only by title — they don't list its chapters, page count or edition. So what follows separates what the site actually shows from what a book with that title would normally cover.

What the site does show

The author's working projects give a fair picture of the ground the book is likely to stand on:

  • WebAssembly music and synthesis — notes, sequences and Faust synth instruments compiled to WebAssembly and running live in the browser, with playable and editable songs.
  • Faust DSP to AssemblyScript — demonstrated at the International Faust Conference 2026, compiling Faust DSP code to AssemblyScript for WebAssembly.
  • wasm-git — Git running in WebAssembly, including a demo using OPFS for browser storage and sync backed by the NEAR blockchain.
  • Client-side encryption and data custody — an article on giving users full custody of their own application data, with complete change history.
  • NEAR smart contracts — blockchain work alongside the WebAssembly and music projects.
  • Agentic composition — an in-browser AI agent writing and editing notes, instruments and visuals as code, with the full agent session published next to the sources.

What a book with this title typically covers

Treat this as general expectation, not a description of this book's contents:

Area Typical material
WebAssembly fundamentals Binary format, modules, memory model, how Wasm differs from JavaScript
Toolchains Compiling from C, C++, Rust or AssemblyScript; language runtimes and bindings
Browser integration Loading modules, calling between JavaScript and Wasm, debugging and profiling
Performance work Where Wasm helps, where it doesn't, and how to measure rather than assume
Deployment Serving modules, caching, instantiation strategy, and shipping to production

How to decide whether it fits you

If you already write JavaScript and want to move compute-heavy work — audio, image processing, parsing, simulation — into the browser, a build-and-deploy framing is the practical starting point. If you mainly want language-level theory, a specification-oriented reference will serve you better. The author's own projects lean toward audio, browser tooling and blockchain, so expect the examples to sit closer to those domains than to, say, serverless edge functions.

For a concrete next step, open one of the live WebAssembly Music songs and edit it in the browser; that is the closest thing on the site to seeing the author's deployment approach in action before committing to a book. Related work by other authors is available from WebAssembly and Rust and WebAssembly.

Related questions

More questions →
What is wasm-git and how does it work on petersalomonsen.com?

wasm-git is a project by Peter Salomonsen that brings Git into web applications by compiling it to WebAssembly, so version control runs inside the browser instead of on a server. According to the site, it is used together with client-side encryption to give users full custody of their own application data, with complete change history — and, as the site notes, the responsibility that comes with holding your own keys. The latest demo runs entirely in the browser using OPFS (the Origin Private File System) and can sync through the NEAR blockchain.

The problem wasm-git addresses

Normally, when you use a web app, your data and its history live on someone else's server. You get whatever history the app chooses to show you, and the operator holds the keys. wasm-git moves that model: Git itself runs in the browser, so the repository and its change history belong to the user.

The site frames this as "Who really controls your data?" — an article about bringing Git to web apps so users get full custody of their application data, complete change history, and the responsibility that comes with holding their own keys.

How it works

Three pieces combine:

  • Git compiled to WebAssembly — the version control operations execute client-side, in the browser, rather than on a remote host.
  • Client-side encryption — data is encrypted before it leaves the user's control, so the storage layer does not see plaintext.
  • A storage and sync layer — the latest demo uses OPFS for in-browser storage, with sync backed by the NEAR blockchain.

The result is a repository whose history the user holds, not the application operator.

Where it shows up in practice

wasm-git is not only a standalone demo — it is the delivery mechanism for other projects on the site:

  • At the International Faust Conference 2026 in Cannes, the concert and the Faust-to-AssemblyScript demo loaded directly from git repositories stored on the NEAR blockchain via wasm-git.
  • The WebAssembly Music environment uses the same approach: songs, Faust synth instruments, sequences and reactive visuals are code compiled to WebAssembly and running live in the browser.

What to keep in mind

Full custody cuts both ways. If you hold your own keys and your own history, no operator can restore access for you or quietly recover lost data. The site states this directly: holding your own keys comes with responsibility. Before adopting this model for a real application, decide who is accountable when a key is lost and how users will be expected to manage that.

Where to start

  • Read the article "Who really controls your data?" on petersalomonsen.com for the reasoning behind wasm-git and client-side encryption.
  • Try the latest wasm-git demo, which runs in the browser with OPFS and NEAR-backed sync.
  • Explore webassemblymusic.pages.dev to see the same Git-in-WebAssembly approach applied to live-coded music.
What Does a Postal Code API Return? Fields, Formats, and Common Use Cases

A postal code API returns structured location data for a given ZIP Code or Canadian postal code. A typical response includes the code itself, city, state or province, county, latitude/longitude, and — where available — ZIP+4 detail. More complete services add time zone, area codes, boundary geometry, and demographic fields. You send a code (or an address), and the API sends back a machine-readable record you can store, validate, or display.

This article explains what those responses contain, how requests are usually shaped, and where postal code data fits into real applications.

First, clear up the word "code"

The keyword "code" is overloaded, and that causes real confusion for developers:

  • Postal code — the ZIP Code (U.S.) or postal code (Canada) that identifies a delivery area.
  • API key — the credential you use to authenticate your requests. It is not postal data.
  • Source code — the program you write to call the API.

When someone searches for "postal code API code," they usually want example request/response code for a postal code service. The rest of this article treats it that way.

What a postal code API actually returns

Response fields vary by provider and endpoint, but the core set is fairly consistent. A single-code lookup commonly returns:

Field Example Notes
Postal code 90210 The code you queried
City Beverly Hills May be one of several acceptable place names
State / Province CA Two-letter abbreviation
County Los Angeles Useful for tax, territory, and reporting logic
Latitude / Longitude 34.0901, -118.4065 Usually the centroid of the area
ZIP+4 90210-1234 Present only when a specific delivery segment is known
Time zone America/Los_Angeles Helps with scheduling and display
Area codes 310, 424 Regional phone context

Richer datasets add 90+ fields: boundaries, population, income, elevation, and more. You rarely need all of them — request only what your application uses.

A representative JSON response

{
  "postal_code": "90210",
  "city": "Beverly Hills",
  "state": "CA",
  "county": "Los Angeles",
  "latitude": 34.0901,
  "longitude": -118.4065,
  "timezone": "America/Los_Angeles",
  "area_codes": ["310", "424"]
}

XML responses carry the same information in tag form. Choose based on what your stack parses most easily; JSON is the common default.

Common request patterns

Most postal code APIs support four patterns. Knowing which one you need prevents wasted calls.

1. Lookup by code

You have a code and want its details. This is the simplest and fastest call.

GET /lookup?code=90210

2. Reverse lookup by address

You have a street address and want to confirm or complete the code. This is the pattern behind checkout address validation.

GET /validate?street=...&city=...&state=...

3. Radius search

You have a center point and want all codes within a distance. Useful for store locators and delivery zones.

GET /radius?code=90210&miles=10

4. Batch validation

You have a file of addresses and want them cleaned in bulk. Batch endpoints trade latency for throughput and usually have their own limits.

Handling missing and ambiguous matches

Real data is messy. Plan for these cases:

  • No match — the code doesn't exist or the address is malformed. Return a clear error rather than a silent empty object.
  • Multiple matches — a city name may map to several codes, or a code may span several acceptable city names. Decide whether to pick the primary or return a list.
  • Partial match — the street is valid but the ZIP+4 isn't. Fall back to the 5-digit code.
  • Stale data — codes are added, retired, and reassigned. Refresh your dataset on a regular schedule.

A practical rule: validate at the point of entry, store the normalized result, and never re-derive it later from raw user input.

Practical use cases

  • Checkout address validation — catch typos before shipping, reduce failed deliveries.
  • Shipping zone lookup — map a code to a zone, carrier route, or rate table.
  • Data enrichment — append county, coordinates, or demographics to existing records.
  • Store and service locators — radius search to find nearby branches or coverage areas.
  • Territory and tax logic — county and boundary data drive jurisdiction rules.

Licensing and data-source considerations

Postal code data originates with national authorities — USPS in the United States and Canada Post in Canada. Providers license and repackage it, which is why accuracy, update frequency, and field coverage differ between services. Before committing:

  • Confirm the data source and how often it refreshes.
  • Check whether ZIP+4 and boundary data are included or sold separately.
  • Review usage limits and whether batch processing is allowed.
  • Read the license terms for redistribution and storage.

Pricing and plan details change, so check the provider's current documentation rather than relying on secondhand figures.

Getting started

  1. Decide which request pattern you need (lookup, reverse, radius, or batch).
  2. Pick the fields you'll actually store.
  3. Write a small test call and inspect the raw response.
  4. Add error handling for no-match and ambiguous cases.
  5. Cache results where the same codes repeat.

A postal code API is ultimately a translation layer: you give it a code or an address, and it gives back structured location facts. Understand the fields, match them to your use case, and handle the messy edges — that's most of the work.

How does agentic composition work on petersalomonsen.com?

Agentic composition on petersalomonsen.com is a workflow where you direct an in-browser AI agent inside the WebAssembly Music environment, and the agent writes and edits code — notes, Faust synth instruments, the sequence, and reactive visuals — which is then compiled to WebAssembly and runs live in the browser. The key condition is that you stay the composer: you direct the arrangement, play patterns in on a MIDI keyboard, and edit the code where it matters. It is not a "prompt-and-pray" generator.

What the agent actually produces

Everything in a track is code, not rendered audio files:

  • Notes — the musical material itself
  • Faust synth instruments — DSP definitions for the sounds
  • The sequence — how the parts are ordered and triggered
  • Reactive visuals — visuals that respond to the music

All of it is compiled to WebAssembly and runs live in the browser, so the song can be played and edited in place rather than exported and re-imported.

The composer's role

Peter Salomonsen describes the split explicitly: the agent writes and edits code on instruction, but he remains the composer. In practice that means:

  • Directing the arrangement
  • Playing patterns in on a MIDI keyboard
  • Editing the code where it matters

This is the dividing line between agentic composition and prompt-only generation. The agent is a fast code editor inside a musical environment you control, not the source of the musical decisions.

A worked example: "Prompted"

The September 2026 track Prompted is an italo-disco instrumental in D minor where the notes, the Faust synth instruments, and the dancers themselves are all code compiled to WebAssembly.

The instructive part is the choreography. The agent knew the name of the dance move but not the move itself, so the instruction had to be specified foot by foot against the drum pattern. That is a useful illustration of where agentic composition breaks down: the agent can act on precise, decomposed instructions, but a label alone does not carry the physical or musical detail behind it.

The full agent session for this track was kept — 131 instructions — and published next to the sources in wasm-music-prompted. If you want to see what the process looks like in practice rather than in summary, that record is the place to look.

Where to see it running

  • Play and edit live — tracks are playable and editable at webassemblymusic.pages.dev
  • Watch — new WebAssembly Music tunes and videos appear regularly on the YouTube channel
  • Source and session logs — published alongside the tracks, e.g. wasm-music-prompted

Related work on the same site

The agentic composition work sits alongside other projects that share the same browser-and-WebAssembly foundation:

  • wasm-git — Git in WebAssembly, used to bring version control to web apps; the latest demo runs entirely in the browser using OPFS, with sync backed by NEAR
  • faust2as — compiling Faust DSP code to AssemblyScript so it runs as WebAssembly inside the WebAssembly Music environment, demonstrated at the International Faust Conference 2026
  • NEAR smart contracts — the blockchain side, including loading concert and demo content directly from git repositories stored on NEAR via wasm-git

Choosing whether this approach fits you

If you want to… This workflow suits you when…
Generate a finished track from a short prompt Not a fit — the composer directs arrangement and edits code
Keep authorship while using an agent for speed A fit — you stay the composer and the agent handles code edits
Work in the browser without a separate DAW export step A fit — everything compiles to WebAssembly and runs live
Have the agent infer physical or performance detail from a name Not a fit — details like the dance move had to be specified foot by foot

The practical takeaway: agentic composition here is a code-editing collaboration inside a live WebAssembly music environment. It rewards precise, decomposed instructions and a composer willing to keep making the musical calls.

How Faust DSP Connects to WebAssembly and NEAR on petersalomonsen.com

Faust DSP code is turned into WebAssembly on this site through a tool called faust2as, which compiles Faust DSP to AssemblyScript so it can run as WebAssembly inside the WebAssembly Music environment. The demos and concert material that use this pipeline load directly from git repositories stored on the NEAR blockchain via wasm-git. That combination — Faust for the audio DSP, AssemblyScript/WebAssembly for execution in the browser, and NEAR-backed git for storage and distribution — is the core of how these pieces connect.

The three layers and what each one does

The setup separates cleanly into a language/compiler layer, a runtime layer, and a storage/distribution layer.

Layer Technology Role
DSP source Faust Describes the synthesizer and audio processing logic
Compilation target AssemblyScript → WebAssembly (via faust2as) Makes the DSP runnable in the browser
Runtime environment WebAssembly Music Hosts synthesis, sequencing, and live performance
Storage / distribution wasm-git on NEAR Serves the demo and concert code from on-chain git repos

faust2as: Faust to AssemblyScript to WebAssembly

Faust is normally a DSP language with its own backends. Here the path is different: faust2as compiles Faust DSP code to AssemblyScript, which then compiles to WebAssembly. The practical result is that a Faust-described instrument becomes a WebAssembly module that can be instantiated and run inside the WebAssembly Music environment, rather than only in a native or standalone Faust context.

WebAssembly Music as the runtime

WebAssembly Music is the environment where the compiled instruments actually play. It hosts synthesis and sequencing, and it is where live coding and performance happen. So the Faust-derived WebAssembly modules are not standalone apps — they are components loaded into this browser-based music environment.

NEAR-backed git via wasm-git

The demos and the concert material do not load from a conventional server path. They load directly from git repositories stored on the NEAR blockchain via wasm-git. wasm-git is the project that brings git into WebAssembly, and here it is paired with NEAR so that the repository content lives on-chain and is fetched into the browser.

Where this was demonstrated

At the International Faust Conference 2026 (IFC 2026) in Cannes, the author showed how Faust DSP code can be compiled to AssemblyScript and run as WebAssembly inside the WebAssembly Music environment. The concert and the Faust-to-AssemblyScript demo both load from git repositories stored on the NEAR blockchain via wasm-git. The concert recording is online, with the author's own set starting at 1:27:30.

Why the combination matters

Each piece solves a different problem:

  • Faust gives a concise, high-level way to describe DSP.
  • AssemblyScript/WebAssembly makes that DSP run efficiently in a browser without native installs.
  • wasm-git on NEAR gives the code a decentralized home with full history, so a performance or demo can be reproduced from the repository itself.

For anyone exploring this stack, the useful takeaway is the pipeline shape: write DSP in Faust, compile it toward WebAssembly through AssemblyScript, run it in a WebAssembly music runtime, and distribute the source through git stored on NEAR.

What is petersalomonsen.com?

petersalomonsen.com is the personal project site of Peter Salomonsen, a developer who works at the intersection of code and music. It is not a product or a service you sign up for — it is a portfolio and writing hub where he publishes articles, live demos, and videos about WebAssembly music and synthesis, browser-based live coding, wasm-git, and NEAR blockchain smart contracts. He is also the author of Building and Deploying WebAssembly Apps. If you want to see what WebAssembly can do for audio and creative tooling, or follow along with the code behind the demos, this is the place to look.

The core themes

The site's tagline — "WebAssembly music, synthesis and NEAR smart contracts" — maps directly onto four recurring topics:

  • WebAssembly music and synthesis. Tracks where the notes, the synth instruments, and even the visuals are code compiled to WebAssembly and running live in the browser.
  • Live coding in the browser. An environment called WebAssembly Music where songs can be played and edited live, with Faust DSP code compiled to AssemblyScript (a project he calls faust2as).
  • wasm-git. Git running inside WebAssembly, used to give web apps version history and to sync repositories stored on the NEAR blockchain.
  • NEAR smart contracts. Blockchain-backed storage and sync, including loading demo content directly from git repositories on NEAR.

What you'll actually find there

The site is organized as a running log of projects, each with links to sources, live demos, and video:

Item What it is
WebAssembly Music tunes New tracks and videos posted regularly, playable at webassemblymusic.pages.dev
"Prompted" (Sept 2026) An italo-disco instrumental in D minor where notes, Faust synth instruments, and dancers are all WebAssembly code; the full 131-instruction agent session is published alongside the sources
"Who really controls your data?" (July 2026) An article on bringing Git to web apps with wasm-git and client-side encryption, giving users custody of their own data
Agentic composition (July 2026) A full track made by directing an in-browser AI agent — the agent writes and edits code on instruction, but Salomonsen still directs the arrangement and plays patterns on a MIDI keyboard
IFC 2026 (June 2026) A talk at the International Faust Conference in Cannes on compiling Faust DSP to AssemblyScript/WebAssembly; the concert demo loads from git repos on NEAR via wasm-git
wasm-git with OPFS (April 2026) A demo running entirely in the browser using OPFS for storage with NEAR-backed sync

How to use the site

There is no account, download, or pricing to worry about — it is a reading and demo site. A practical path:

  1. Start with the live demos. Open webassemblymusic.pages.dev to play and edit songs directly in the browser; this shows the concept faster than any description.
  2. Read the write-ups for the parts that interest you. The "Who really controls your data?" article is the entry point for the wasm-git and data-custody thread; the "Prompted" and agentic composition posts cover the AI-assisted music workflow.
  3. Follow the source links. Each project links to its repository (for example, wasm-music-prompted), so you can read the actual code rather than just the summary.
  4. Watch the videos if you prefer seeing the tools in action, including the IFC 2026 concert recording (his set starts at 1:27:30).

Who it's for

This site is most useful if you are a developer interested in WebAssembly as an audio platform, in live-coding music in the browser, or in running Git and blockchain-backed storage client-side. It is less relevant if you are looking for a commercial product, a library with documentation and support, or a general music site — the content is one person's experiments and writing, presented as articles, demos, and videos rather than as a maintained product.

Website Overview

An established domain and managed infrastructure suggest continuity of operations and may support dependable delivery, although neither guarantees service quality. Several search or sharing settings need attention. Together they may make snippets, preview images or preferred URLs less consistent across platforms.

Domain and Registration

Registered in 2003, this domain has about 23 years of history. That suggests continuity, although ownership and purpose may have changed. Transfer-protection status is present, helping reduce the risk of unauthorized domain transfers. The domain uses the common .com extension, which is not an independent safety signal.

DNS and Email

MX records exist, but SPF, DKIM and DMARC were not detected. Protection against domain impersonation may be incomplete. Nameservers are provided by one.com, indicating managed DNS hosting. MX records point to the uniweb.no email service. DNSSEC is enabled, allowing validating resolvers to authenticate signed DNS data. No CNAME was found; the observed records resolve directly to addresses.

TLS and Certificates

The certificate uses an RSA 2048-bit public key, offering broad client compatibility. The server supplied a complete certificate chain. No organization name is present in the certificate; the available fields are consistent with domain validation. The certificate was issued within the Google Trust Services cloud or CDN ecosystem. The certificate's total validity is about 90 days, consistent with a short renewal cycle.

HTTP and Browser Security

The response lacks these common security headers: CSP, X-Content-Type-Options, Referrer-Policy, Permissions-Policy, clickjacking protection. No X-Powered-By header was found, reducing one common source of backend fingerprinting information. The x-cache, x-served-by response header indicates a CDN or caching proxy in the delivery path. No obvious internal addresses or debug information were found in the headers. No CORS permission header was found, so browsers normally restrict cross-origin script access.

Technology Stack Analysis

The public page identifies Fastly without precise versions, leaving fewer clues for version-specific scanning.

Search and Social Sharing

The title has 70 characters and may be truncated in search results. The meta description has 231 characters and may be shortened in search results. Twitter Card metadata is configured. The observed directives allow indexing and link following. No Generator meta tag is publicly exposed.

Hosting and Email

DNSone.com
HostingFastly
Emailuniweb.no
Approximate IP geolocation (inferred; a CDN or proxy may differ from the origin server) United States flagUnited States Inferred 151.101.1.195

Registration details

RDAP / WHOIS

RegistrarKey-Systems GmbH
Registered2003-07-22
Expires2027-07-22
Domain statusclient transfer prohibited
Nameserversns01.no.brand.one.com、ns02.no.brand.one.com
DNSSECsigned

DNS records

DNS

TypeNameValueTTLPriority
Apetersalomonsen.com151.101.1.19510800—
Apetersalomonsen.com151.101.65.19510800—
MXpetersalomonsen.commx1.mailpod1-osl1.g1i.uniweb.no1080010
MXpetersalomonsen.commx2.mailpod1-osl1.g1i.uniweb.no1080010
MXpetersalomonsen.commx3.mailpod1-osl1.g1i.uniweb.no1080010
NSpetersalomonsen.comns01.no.brand.one.com14400—
NSpetersalomonsen.comns02.no.brand.one.com14400—
TXTpetersalomonsen.comKUBESAIL_VERIFY=a6922c02-c110-4322-b173-31af5b528c1210800—
TXTpetersalomonsen.comgoogle-site-verification=AJVqEsf5GkG9RxSbO-d8N3J4MqnijH35ArL8gCALWAM10800—
DSpetersalomonsen.com61896 7 1 3e5352a4147439ad8dfa973da3708dbf0441ee1586400—
DSpetersalomonsen.com61896 7 2 7683cb007c8592cc37a22539a99c82cf78793af54580949562bd5f72e5cdf92d86400—

TLS and certificates

TLS / SSL

AssessmentNormal configuration
Supported protocolsTLSv1.2、TLSv1.3
Negotiated protocolTLSv1.3
Certificate subjectweb-employeur-demo.stayopen.io
IssuerGoogle Trust Services
Valid until2026-12-19T04:28 · Remaining when checked: 67 days
Verification detailsCertificate trust: Passed · Hostname match: Passed

HTTP response headers

HTTP

HeaderValue
content-typetext/html; charset=utf-8
cache-controlmax-age=3600
strict-transport-securitymax-age=31556926

Identified technologies

Fastly

Pages, Search and Sharing

Meta descriptionPeter Salomonsen builds tools where code meets music: WebAssembly synthesis, live-coding music in the browser, git in WebAssembly (wasm-git), and NEAR blockchain smart contracts. Author of 'Building and Deploying WebAssembly Apps'.
Canonical URLhttps://petersalomonsen.com/
LanguageEnglish (default)
Twitter Cardsummary_large_image
All bots 1 allowed · 0 disallowed
  • Allow/

User reviews (0)

  • No reviews yet.