Loading...
Loading...
Hi, my name is Marco. Working as a Senior Software Architect at Philips. I'm an Open Source Maintainer and Contributor.
If you like my work, consider to sponsor my work.
I wrote my first blog March 2011. Mostly I'm writing on software development. In total I wrote 75 articles in 8 categories. Use search below to filter by title or click a category or tag to filter by category or tag.
Hi, my name is Marco. Working as a Senior Software Architect at Philips. I'm an Open Source Maintainer and Contributor.
If you like my work, consider to sponsor my work.
I wrote my first blog March 2011. Mostly I'm writing on software development. In total I wrote 75 articles in 8 categories. Use search below to filter by title or click a category or tag to filter by category or tag.
Marco Franssen
Explore spiffe-vault for secretless Vault authentication, using SPIFFE workload identities and Vault-managed signing keys to sign container images with Cosign.
Marco Franssen
Explore a 2022 approach to storing, signing, and discovering package SBOMs and build provenance in an OCI registry with cosign, fatt, and sget.
Marco Franssen
Sign Docker images and attest SBOMs and build provenance with Sigstore in GitHub Actions, applying SLSA requirements to your release workflow.
Marco Franssen
Automatically choose work or personal Git commit email addresses with conditional includes in your global Git configuration and a folder-based setup.
Marco Franssen
Use Helmsman to manage Helm charts as code, organize Kubernetes environments, preview deployment plans, and apply releases in a GitOps workflow.
Marco Franssen
Deploy a highly available HashiCorp Vault cluster on AWS EKS with Helm, use Consul for storage, and configure AWS KMS for automatic unsealing.
Marco Franssen
Deploy HashiCorp Vault locally on Kubernetes with Helm, initialize and unseal it, then explore secrets through the Vault CLI and web UI.
Marco Franssen
Compare SSH key algorithms, generate RSA and Ed25519 keys with passphrases, and configure your SSH client while migrating away from older keys.
Marco Franssen
Build enum-like types in Go with iota, generate String methods with stringer, and marshal and unmarshal named values as JSON strings.
Marco Franssen
Why I'm moving my blog from Hexo to Next.js, how I'm migrating Markdown posts and React components, and what's ready in the new blog preview.
Marco Franssen
Remove unwanted files from Git history with git-filter-repo, find previously deleted files, and push rewritten history using this practical walkthrough.
Marco Franssen
Configure a React app in the Nginx 1.19 Docker image with environment variables and templates, including API proxy settings for different deployments.
Marco Franssen
Build a two-node Elasticsearch cluster with Docker Compose, load-balance requests through Traefik, and add Cerebro as a web-based admin interface.
Marco Franssen
Use Lego and the ACME DNS-01 challenge to request a Let's Encrypt TLS certificate for local development without exposing your web server to the internet.
Marco Franssen
Build a Go HTTP/2 web server with TLS, self-signed certificates for offline development, and Let's Encrypt certificates managed by the autocert package.
Marco Franssen
Fix React Router refresh errors with Nginx in Docker, then explore TLS and HTTP/2 server push in this historical 2020 React deployment tutorial.
Marco Franssen
Sign Docker image tags with Docker Content Trust, manage signing keys and repository signers, inspect signatures, and enable trust verification.
Marco Franssen
Explore Krypton's phone-based SSH and PGP setup, pairing a laptop with a mobile device to approve server logins and sign Git commits.
Marco Franssen
Set up SSH keys, an SSH agent, host aliases, and Bash autocompletion to connect to servers and use Git from macOS or Git Bash on Windows.
Marco Franssen
Manage Go development tools with Go modules using a tools.go file, build constraints, and a Makefile to keep local and CI tool versions aligned.
Marco Franssen
Set up Git, Vim, and Bash on Raspbian, mount NFS shares from a Synology NAS, and configure Kodi to start automatically on your Raspberry Pi.
Marco Franssen
Flash a Raspbian image with Etcher, enable SSH, update packages, and configure Wi-Fi with a static IP in this Raspberry Pi Stretch setup walkthrough.
Marco Franssen
Follow my Raspberry Pi upgrade from Raspbian Stretch to Buster: update packages, change APT sources, resolve broken packages, clean up, and verify the release.
Marco Franssen
Create reusable Go web server boilerplate with chi routing, structured zap request logs, and graceful shutdown that lets active requests finish.
Marco Franssen
Build a Go API with the Elasticsearch 7 client, run a local cluster with Docker Compose, and add index creation and search to a practical demo.
Marco Franssen
Build a small Go Docker image with a multi-stage build, run it with Docker Compose, and use Traefik 1.7 to route requests and scale your local web service.
Marco Franssen
Build a Go HTTP server that handles interrupt signals, gives active requests time to finish, and coordinates graceful shutdown with goroutines and channels.
Marco Franssen
Explore implicit interfaces and type assertions in Go, with practical examples of custom error types, cleaner tests and type switches.
Marco Franssen
Learn Go test and benchmark conventions with a JSON example, then explore code coverage, Testify assertions and options for comparing performance.
Marco Franssen
Explore Go concurrency with practical goroutine and channel examples, including buffered channels, GOMAXPROCS, and the difference between concurrency and parallelism.
Marco Franssen
Explore Go's defer with practical examples of execution order, panic and recover, recursive calls, and closing a file after reading its contents.
Marco Franssen
Set up your first Go project on Windows, learn basic syntax, write and run tests, and cross-compile a simple application for Linux and Raspberry Pi.
Marco Franssen
Find your Ethernet driver, add it to a Windows 10 PE image with DISM, and start Windows setup from a network share on a laptop without an optical drive.
Marco Franssen
Combine separate Git repositories into a multi-module Gradle project while preserving commit history, then consolidate build and CI configuration.
Marco Franssen
Explore responsive and adaptive web design, progressive web apps and how I improved my blog with a static site, caching, manifests and service workers.
Marco Franssen
Follow my Raspberry Pi upgrade from Raspbian Jessie to Stretch, including backups, firmware updates, APT sources, Bluetooth audio changes, and cleanup.
Marco Franssen
Learn how to use Docker Compose to build and run a multi-container application, connect services, and organize development with Git submodules.
Marco Franssen
Package a static Angular app in an Nginx Docker image, build it, and run it with port and log volume mappings in this historical 2016 walkthrough.
Marco Franssen
Set up a Docker development environment on Windows or Mac using Docker Machine and VirtualBox, then configure your shell and run a test container.
Marco Franssen
Learn how to replace Node.js error-first callbacks with Promises, flatten nested asynchronous code, and wrap callback APIs with practical examples.
Marco Franssen
Use the original Let's Encrypt client in a Vagrant VM to request an Azure website certificate through a reverse proxy, then export and upload a PFX.
Marco Franssen
Set up separate Windows 10 boot profiles with bcdedit to switch between Hyper-V for the Windows Phone emulator and VirtualBox for Linux development.
Marco Franssen
Compare Jasmine 2.4 and Mocha 2.3, including test structure, Chai assertions, Sinon spies and asynchronous testing with callbacks and promises.
Marco Franssen
Configure SSH keys, Pageant, agent forwarding, and Git Bash on Windows to work with Linux VMs and Git without repeatedly entering key passphrases.
Marco Franssen
Use Gulp.js to automate PHP linting, PHPUnit tests, coding standards, documentation, and static analysis, with watch tasks for immediate feedback.
Marco Franssen
Customize a Debian VirtualBox VM with Packer user variables, file uploads, and shell provisioners in this 2014 tutorial covering MySQL and Apache setup.
Marco Franssen
Build a reproducible Debian Wheezy VM with Packer and VirtualBox in this 2014 tutorial, using a JSON template and preseed file for unattended installation.
Marco Franssen
Write synchronous and asynchronous Node.js tests with Mocha, Chai assertions and Sinon spies, stubs and fake timers, then run them with Grunt.
Marco Franssen
Automate development and CI tasks with Grunt: configure a Gruntfile, run task targets, combine tasks, and watch files to rerun jobs when they change.
Marco Franssen
Learn how to initialize, install, update, and publish Node.js packages with npm in this 2013 walkthrough, including development dependencies and private packages.
Marco Franssen
Build a simple Node.js web server with Express, use npm packages and nodemon during development, and serve an HTML page from a static public folder.
Marco Franssen
Connect a .NET MSBuild CI script to Jenkins, trigger builds from GitHub, configure repository access, and publish MSpec and code coverage reports.
Marco Franssen
Extend a .NET MSBuild CI script with MSpec tests, OpenCover code coverage, and ReportGenerator reports that you can later publish through Jenkins.
Marco Franssen
Add Clean and LoadNuGetPackages targets to a .NET MSBuild script so your CI build clears previous output and restores missing NuGet packages before compiling.
Marco Franssen
Start a .NET continuous integration build with an MSBuild script and a Windows batch file, then choose Debug or Release builds from the command line.
Marco Franssen
A personal look back at my 2012 blog posts, favorite technical articles and starred GitHub projects, covering JavaScript, .NET, CQRS and Windows.
Marco Franssen
Explore the Knockout.js mapping plugin to turn JSON into observable view models, customize property mappings, and build nested employee models.
Marco Franssen
Use Windows Phone 8 accent colors in your apps with a C# helper for hexadecimal color values and a SolidColorBrush property for MVVM binding.
Marco Franssen
Unblock downloaded files in Windows with PowerShell, preview changes with WhatIf, and use Recurse to include files in subfolders.
Marco Franssen
Use an old 256 MB USB stick to boot Windows PE, connect to a network share, and install Windows 8 without storing the full ISO on the USB drive.
Marco Franssen
Configure and test ASP.NET MVC 3 authorization with FluentSecurity, including role policies, Castle Windsor integration, and policy violation handlers.
Marco Franssen
Reduce repetitive C# equality comparer classes with a delegate-based IEqualityComparer and LINQ Distinct extension methods for property comparisons.
Marco Franssen
Install Windows 8 Consumer Preview on a virtual hard disk alongside Windows 7, from creating a bootable USB drive to configuring the first boot.
Marco Franssen
Write a personal elevator pitch that highlights your strengths, builds credibility, and invites a conversation with practical tips on persuasion.
Marco Franssen
Write modular JavaScript with the module pattern, private functions, and a shared namespace to avoid global name collisions and organize dependencies.
Marco Franssen
See how I wrapped the Ncqrs command service to retry commands after concurrency exceptions, with results from a simple asynchronous JavaScript test.
Marco Franssen
Install Windows 8 Developer Preview on a virtual hard disk and boot it alongside Windows 7, using a bootable USB drive and diskpart.
Marco Franssen
Use jQuery events and a mediator to connect independent JavaScript modules, keeping a product dialog and grid separate while they communicate.
Marco Franssen
Try Windows 8 Developer Preview in VirtualBox with this walkthrough of hardware requirements, virtual machine settings, and the installation wizard.
Marco Franssen
Build country, state, and city dropdowns with Knockout.js observables and jQuery JSON requests, with an ASP.NET MVC 3 server-side example.
Marco Franssen
How the order of FakeItEasy call configurations affected my CQRS domain tests when aggregate roots prepared the event store before an edit.
Marco Franssen
Lessons from applying DDD and CQRS in a Scrum project: bounded contexts, aggregate roots, domain services, guard methods, and command-based tests.
Marco Franssen
Configure Castle Windsor dependency injection in ASP.NET MVC 3 with an installer, controller factory, constructor injection, and repository disposal.
Marco Franssen
My notes from Greg Young's DDD/CQRS course on aggregates, entities, value objects, command-query separation, and consistency through event merging.
Marco Franssen
My 2011 guide to installing Microsoft Kinect on a Windows PC using OpenNI, PrimeSense NITE and sensor drivers in the required installation order.