Massimiliano Bedana
The Banco: a console in burgundy anodized aluminium on a walnut base. Under smoked glass, a dial with three settings, Projects, Companies and Lab; the needle points to Projects. The lamp is lit, the 13-pixel rabbit engraved on the front.

The essential.

Software and design: desktop applications, developer tools, business systems.

NiceDB

Many databases, one place.

Wood 2026Rust, Tauri, SvelteGPL nicedb.app GitHub

Render: a block of graphite anodized aluminium with a key lock. Two engraved positions, read only and write, the key turned to write; on the front a red plate that says PRODUCTION and a cyan lamp that is on.

Support for the most used engines and ODBC, with the tools you need right at hand.

Confirmation steps to avoid unwanted writes. The execution plan is drawn as a track, and when an index is missing NiceDB suggests it.

A write in production: unlock, edit, confirm with the connection name.
Monitor: who is blocking whom, and for how long.
The plan as a track, with the index that is missing.

NiceDB

Many databases, one place.

Engines
Relational, document, key-value, wide-column, search and analytical, plus ODBC.
Production
Production connections stay read only until you unlock them. To apply a write you type the connection name, and every change is logged.
How it is built
Rust and Tauri, with a Svelte interface. Every write goes through a single point in the code.
Monitor
Connections, open transactions and locks in one view.
Styles
Four styles taken from real objects: a price list, a ledger, a technical drawing, a signal box. Each has three palettes, light and dark.
Animated render: a burgundy aluminium USB stick resting on a burgundy leather passport, with the rabbit crest and the word NICEVAULT pressed into it.

NiceVault

An encrypted archive in a single file, to carry around on a USB stick.

Wood 2026Rust, Tauri, SQLCipherGPL GitHub

NiceVault keeps files and passwords in a single encrypted .nvault file. You open it with the file manager inside it, which decrypts in memory, or you mount it as a disk. A wizard turns a USB stick into a device that opens on any system without installing anything.

Inside there is also a password manager with TOTP codes, and an emergency password that destroys the keys. If the power goes out halfway, the file holds, because every write is a transaction.

NiceVault

An encrypted archive in a single file, to carry around on a USB stick.

Encryption
Two copies of the header, then an SQLCipher database. The master key is protected with Argon2id and XChaCha20-Poly1305; the database key is derived with HKDF-SHA256.
The USB stick
The prepared stick has two partitions and opens on Linux, macOS and Windows.
The stick becomes a device: two partitions, nothing to install.

Latente

Develops a whole series of photos with one look, like a real darkroom.

Wood 2026Rust (wgpu), Tauri, Svelte

When you shoot a series you want the same look on every photo, and to be able to make it again a year later. In Latente the look is a recipe saved in a readable file.

The GPU does the heavy work: HDR merge, film recipes, noise reduction. The app and the command line produce byte-identical files.

Render: a strip of negatives on a light table, every frame the same, and an aluminium magnifier.
The darkroom: the series on the left, the photo in the negative carrier, light meter and colour head.
The series sheet: thirteen out of thirteen, and the density of each photo in a chart.

Latente

Develops a whole series of photos with one look, like a real darkroom.

Development
It reads the raw sensor data already white-balanced, so neutral edges stay clean. Capture sharpening also runs on the GPU.
Recipes
Defaults live in one place, in the backend, and the app and the command line both read them from there.
The colour tab, eight families one by one.
Render: five aluminium tags joined by rings, each with a sequence number and a hash; each tag also carries the hash of the one before. The middle one is burgundy.

Trueris

Quality management for certified factories.

Aluminium 2025.NET, PostgreSQL, SvelteKit, Tauri

Trueris brings certifications, equipment, procedures, audits and maintenance together in one place, for several companies and several sites. It is made for people who work with standards like IATF 16949 and ISO 9001, where every record has to stand up to an audit.

Every change goes into a chained log: writes forced outside the application are flagged right away.

Quality templates have their own versions, so you can always see what changed and when.

Trueris

Quality management for certified factories.

The log
Each entry carries the hash of the one before, as in a Merkle chain. An EF Core interceptor writes it on every save.
Checks
A Roslyn analyzer turns any write that skips the log into a compile error. A bulk write that would put the chain out of sync locks the tenant.
Architecture
CQRS on .NET, multi-tenant, with a Tauri client.

Bussola

An integrated management system: lots, delivery notes and invoices, with traceability at its core.

Aluminium 2026.NET, PostgreSQLclient/server, multi-tenant

With IATF 16949 every part has to be able to say which lot it came from and where it ended up. In Bussola the lot that came in first goes out first, lots go through the quality check before they are available, and delivery notes, invoices and labels come from the same data, across several sites.

A client in the terminal, a .NET server with PostgreSQL.

Animated render: an aluminium pocket compass with a teal dial and a burgundy needle, next to a tag: lot 2026-0412, FIFO 3/7.
The stock of an item, by site, location and lot.
The story of a lot: arrival, moves, picking, consumption.
Render: a graphite thermal printer with a receipt coming out of it.

ThisOrder

A restaurant's orders, over the local network, from the floor to the right printer.

Aluminium 2025Tauri, Svelte, .NETlocal network

ThisOrder is a restaurant management system that runs on the local network, with a server and clients on the floor. Every order goes to the right printer in ESC/POS, the language of thermal printers, and whatever arrives as a PDF becomes a bitmap, which thermal printers can print.

ThisOrder

A restaurant's orders, over the local network, from the floor to the right printer.

Routing
The server takes the orders from the clients on the floor and sends them to the kitchen and bar printers.
No internet needed
Everything runs on the local network, so service does not depend on the connection.
Render: three rack units in anodized aluminium, with vents, handles and status lamps.

For companies

Custom software to get a company's systems talking to each other and to take away repetitive work.

  • Understanding the contextBefore any code, I learn how the company works and what it really needs.
  • System architectureHow services are split, where data lives, what happens when something breaks.
  • Interface and web designClear interfaces, carefully made websites, consistent from the first screen to the last.
  • Integration between management systemsGetting different systems to talk, with consistent data from one to the other.
  • Legacy software migrationMoving dated applications onto modern foundations, without stopping the people who use them.
  • Databases and performanceFaster queries, the right indexes, tidy data.
  • Data securityEncryption, access control and backups done right.
  • Payment systemsCollections and payment flows inside everyday processes.
  • BlockchainTamper-evident records for data that must never change.
  • AutomationRepetitive processes run on their own.
  • AIModels and agents inside the workflows, with clear controls.

Lab

Personal projects.

VirtuMix

A soundboard for the computer, designed like a real mixer.

Glass 2026Tauri, SvelteKit, Rustin progress

Animated render: a graphite aluminium mixer strip with three channels, knurled knobs, faders in their slots, a VU meter with its needle and an amber lamp.

VirtuMix is a soundboard and mixer for the desktop. The interface is designed like hardware: knurled knobs, faders, and VU meters that rise and fall with the inertia of real ones.

The audio engine mixes sounds, the microphone and app audio and sends them to a virtual cable, with a separate monitor output and an effects chain such as EQ, compressor, gate and reverb.

Velvet

The Velvet desktop wallpaper: the rabbit in burgundy pixels, rendered in 3D.
Velvet render: the glowing rabbit at the bottom of the abyss, among creatures that light themselves up.
Render: a wall of small cubes, the ones on the left already remade in aluminium, the ones on the right still raw.

sh2re

Silent Hill 2 for PC, rewritten in C++ one function at a time.

Glass 2026C++, SDL3 GPU, FFmpegprivate

The 2001 PC version is no longer sold and runs on Windows XP and Direct3D 8. I rewrote every function in readable C++ and slotted them one by one into the original game while it was running, so each one was tested in the real game as soon as it was written.

Then came the native 64-bit ports for Linux, Windows, iOS and Android, with rendering on SDL3.

sh2re

Silent Hill 2 for PC, rewritten in C++ one function at a time.

Method
A small DLL loaded into the original game swapped in one rewritten C++ function at a time. The game ran with any mix of old and new code, and each function was tried in play as soon as it was written.
Verification
A function went in only after it passed the checks. Some read the original machine code directly, others replay real inputs.
Ports
Native 64-bit builds for Linux, Windows, iPhone and Android from the same source. The game's Direct3D 8 is rewritten on SDL3 GPU (Vulkan, Metal, Direct3D 12), audio runs on SDL3 and movies go through FFmpeg. Saves stay in the original format.
Tools
Everything builds on Linux, including the Windows, iPhone and Android packages. For the comparisons there is an x86 emulator that runs each function next to the original. Playing needs your own copy of the game: sh2re contains no original code or data.
Render: a glass bell jar on a walnut base, with the rabbit of grey cubes under it.

Method

A few rules, always applied.

  1. PlanningEvery job starts from a clear goal and a plan, before any code.

  2. DesignBefore the code I study the interface: who uses it, what they need to find first, hierarchy and details. Software has to be clear before it is beautiful.

  3. SimplicityThe solution is as complex as the problem needs, no more.

  4. VerificationUnit and integration tests with the connected systems: a change goes in only when it passes them and has been reviewed.

  5. CautionBefore touching an existing system I study it read-only, so deploys and fixes are faster and safer.

Render: a camera, an open notebook with a pencil and a keycap with the rabbit, on a burgundy surface.

About

My name is Massimiliano. I build software and automate processes; in my spare time I take photographs and experiment with whatever makes me curious. I studied graphic design and photography: that's where the care for interfaces comes from.

For four years I've been building software for companies: internal systems, integrations, migrations. For myself, I build the tools I need, like NiceDB, NiceVault and Latente.

Render: a white paper plane with the red rabbit printed on its wing, gliding over the dark background.

Contact

For a project or a question.

I use your details only to reply to you. Privacy

Render: the rabbit made of white cubes next to its burrow, a round hole in the floor.

Massimiliano Bedana · EN / IT

No cookies here.

“Simplicity is the ultimate sophistication.”

Leonardo da Vinci

Sections