Harbor map · Featured projects · Project arcade · Side quest · Activity · Off duty
A self-taught builder from Bruges → Knokke-Heist, Belgium. I like turning vague things into working things: a port operations desk, an offline mobile workflow, a tiny Mac utility, a data pipeline, or a business case with an actual next step.
Half business brain, half terminal window. I enjoy the space where software meets operations: understanding the problem, shaping the workflow, building a useful first version, and finding out what breaks.
philippe:
home_base: Belgian coast
building_since: "~2010"
interests: [logistics, data, AI, native apps, business analysis]
default_mode: "understand → prototype → test → improve"
side_quests: enabled
scope_creep: investigating| If you're here for… | Take this route |
|---|---|
| 🍎 Apps, product decisions and indie development | The indie workshop |
| 🧠 Requirements, processes and business cases | Business analysis portfolio |
| 🛠 Engineering, experience and collaboration | Professional profile |
| 🌊 The human behind the repositories | Off-duty Philippe |
| 🗂 Everything I've put on the public shelf | Full project catalog |
Four districts, one slightly overcommitted builder. Click a district to enter.
App Dock · Data Warehouse · AI Lab · Operations Tower
Six projects, each with a different job to do. Open the screenshots and build notes for a closer look.
A central hub for terminal simulations, yard capacity, shipment visibility, empty-mileage tools and operational intelligence.
Portfolio hub · Prototypes and research. Explore the hub →
Investigate RoRo readiness, conflicting evidence and booking exceptions. Prepare an action draft for human review.
Working local prototype · C# / .NET. Explore the prototype →
Behind the build: an answer needs a source
Problem: an operational record can look complete while pickup readiness, loading readiness and the latest observations disagree.
Design choice: separate readiness rules, keep source IDs and timestamps visible, and make proposed actions reviewable. A confident sentence should never erase conflicting evidence.
Next iteration: real-model validation, production identity and integration. The current implementation uses synthetic scenarios and simulated delivery.
Local analytics for clicks, keystroke counts, scrolls and focus rhythm. Data stays on your Mac.
macOS app · Direct download. Downloads → · Project →
Behind the build: the release is its own product
Problem: source code and the version a user downloads can move at different speeds.
Design choice: make the public notarized v1.0.2 legacy Pro build distinguishable from the newer license-key workstream.
Next iteration: a fresh signed and notarized archive for the license-key flow before it replaces the public download. Packaging belongs on the roadmap alongside features.
A floating Mac camera mirror with keyboard shortcuts and appearance controls.
macOS app · SwiftUI / AVFoundation. App Store → · Showcase →
A staged Microsoft Fabric learning build: synthetic events, Bronze/Silver/Gold layers, PySpark, SQL and dbt.
Early scaffold · Data engineering learning lab. Architecture and build plan →
Capture evidence offline, keep it in a durable SQLite queue, then sync to an ASP.NET Core processing workflow.
Working portfolio demo · .NET MAUI / SQLite. Project → · Existing walkthrough →
Behind the build: offline is a workflow, not an error message
Problem: a field worker must be able to retain evidence when connectivity disappears.
Design choice: durable SQLite state, an explicit upload queue and visible retry/processing status. Android runtime testing also exposed a query translation issue that needed a real fix.
Next iteration: physical-device checks and iOS validation. The recorded Android emulator flow is the evidence for the current milestone.
| Focus | What I'm exploring |
|---|---|
| PortOps AI | Operational evidence, bounded agent tools and approval workflows |
| Fabric Data Platform | Data modelling, Medallion architecture and a staged engineering build |
| DocuRelay Field | Offline mobile state, reliable processing and Azure architecture |
Pick a lane. There are operational tools, native apps, enterprise workflows and a few ideas that escaped the notebook.
| Lane | Good places to start |
|---|---|
| 🚢 Ports & logistics | Logistics Master · PortOps AI · PortPulse · TOS simulator |
| 📊 Data engineering & analytics | Fabric platform · Sensor data platform · Belgium mobility/weather ETL · Sales analytics |
| 🏢 Enterprise & .NET | Shipment tracking · Business Central operations · DocuRelay · Workwear ERP lab |
| 🍎 Apps & utilities | ClickTrack · MirrorMate · Health intake case study |
| 🤖 AI & developer experiments | LocalMind · Foundry lab · Git Personality Profiler · Stack rules |
| 🧠 Business analysis | Breakfast delivery · Customer churn · GymLabb specification |
Browse the complete catalog, including labs and archived work →
| Work | Tools in context |
|---|---|
| Native apps | SwiftUI, AVFoundation and StoreKit in MirrorMate |
| APIs & mobile workflows | ASP.NET Core, MAUI and SQLite in DocuRelay |
| Data & reporting | Python, pandas, SQL and Plotly in Sales Analytics |
| Operational interfaces | TypeScript dashboards and KPI design in PortPulse |
| Business analysis | Process maps, requirements, user stories and prioritisation in the BA portfolio |
More tools, frameworks and things I've experimented with
Web: Next.js, Tailwind CSS, Angular, Node.js, FastAPI, REST APIs and webhooks.
Data: PostgreSQL, Supabase, Firebase, NumPy, Jupyter, Power BI, Excel and Power Query.
AI: Ollama, retrieval, tool calling, model APIs, evaluation and scraping workflows.
Delivery: GitHub Actions, Docker, Vercel, Bicep, Xcode and TestFlight.
Product: BPMN, BRDs, acceptance criteria, MoSCoW, Figma, Jira, Confluence and Miro.
Open the full badge wall → · These are tools used or explored; repositories show their actual scope.
Understand the operation → define the smallest useful workflow → build it → exercise the awkward cases → improve it.
I'm interested in the details that make a tool usable: what happens offline, where an answer came from, who approves an action, what a KPI actually means, and what a user should do when something fails.
Shipping software: now with a literal shipping department.
September 2026 · Git Personality Profiler 🧬
What happens when commit history gets a cyberpunk identity crisis? A Python tool that explores commit patterns, vocabulary and playful developer archetypes.
Try this: run it against one of your own repositories and inspect the report. The archetypes are entertainment, not a scientific personality assessment.
git clone https://github.com/phlppgdfry/git-personality-profiler.git
cd git-personality-profiler
python3 profiler.py /path/to/your/repositoryExplore the side quest → · Installation notes →
- An ORM expression still has to become valid SQL. DocuRelay's enum
ToString()translation needed to become a query parameter. - A feature in source is not a feature in the download. ClickTrack's release status must follow the actual distributed artifact.
- “Ready” needs a definition. PortOps separates pickup readiness, loading readiness and conflicting observations.
- A demo needs an honest data story. The Fabric build starts with explicitly synthetic events and a visible implementation plan.
Read the engineering notes and their evidence →
🐛 Exhibit 01 — “Surely SQLite speaks ToString.”
It did not. A DocuRelay query translated an enum conversion into a SQLite function that did not exist. The fix passed the enum value as a parameter, followed by a fresh Android runtime check.
Souvenir: inspect the generated query before questioning reality.
📦 Exhibit 02 — “It works in the source code.”
A useful sentence for developers. Less useful to the person downloading a ZIP. ClickTrack's public release and newer license-key implementation need distinct status labels until the new archive is ready.
Souvenir: the ZIP gets the final vote.
🧭 Exhibit 03 — “Let's just add one ready flag.”
Pickup-ready and loading-ready are different questions. Add stale observations and conflicting records, and a single green badge starts doing a suspicious amount of work.
Souvenir: a small Boolean can conceal a large business process.
Playful captions around documented engineering issues and design trade-offs. Animations are illustrations, not recordings.
🍿 Bonus exhibits — scope creep & the production gremlin
Developer comedy. These are original illustrations, not incident reports.
A few concrete checkpoints from the public build log:
- 7 June 2026: ClickTrack v1.0.2 published as the notarized legacy Pro download. Release
- 28–29 July 2026: DocuRelay Android emulator workflow documented, then rechecked after the SQLite fix. Runtime evidence
- 8 September 2026: PortOps gains procedure retrieval and durable, human-reviewed action proposals. Commit
Try the featured work: ClickTrack · MirrorMate · Terminal Operations Simulator · DocuRelay Android walkthrough
Recently pushed repositories
| Repository | Latest push (UTC) |
|---|---|
| portops-ai | 2026-09-12 |
| github-foundations-lab | 2026-09-12 |
| devdna | 2026-09-11 |
| fabric-lottery-data-platform | 2026-09-04 |
| shipment-tracking-platform | 2026-09-04 |
Latest stable releases from the featured release watchlist
- ClickTrack · v1.0.2 — 2026-06-07
Snapshot: 2026-09-12 UTC · Public, owned, non-fork repositories; profile repository excluded. Release watchlist: ClickTrack, MirrorMate, DocuRelay, PortOps, Logistics Master and Shipment Tracking.
Generated from public GitHub data. Repository activity reflects code pushes; releases link to their original notes.
Golf, kitesurfing, chess, and a healthy respect for the North Sea wind forecast. Originally from Bruges, now based in Knokke-Heist. Dutch, French and English.
Meanwhile, the wind forecast has opened another tab.
Bonus: the unofficial operating manual
A small idea → a note
An interesting bug → a late evening
A messy workflow → a prototype
A windy day → check the forecast
One more feature → famous last words
Interested in operational software, data products, native apps or turning a business problem into a working prototype? I'd enjoy comparing notes.
Built on the Belgian coast. Usually with a terminal open.














