1<!DOCTYPE html> 2<html lang=" en-US" data-theme="dark"> 3 4<head> 5
5<script> 6 (function () { 7 var saved = localStorage.getItem('theme') || 'dark'; 8 document.documentElement.setAttribute('data-theme', saved); 9 })(); 10 </script>
10 11 <meta charset="UTF-8"> 12 <!-- Begin Jekyll SEO tag v2.8.0 --> 13<title>About | Daniel Opitz - Blog</title> 14<meta name="generator" content="Jekyll v3.10.0" /> 15<meta property="og:title" content="About" /> 16<meta property="og:locale" content="en_US" /> 17<meta name="description" content="Solution Architect, Software Architect, Developer, Web developer" /> 18<meta property="og:description" content="Solution Architect, Software Architect, Developer, Web developer" /> 19<link rel="canonical" href="https://odan.github.io/about.html" /> 20<meta property="og:url" content="https://odan.github.io/about.html" /> 21<meta property="og:site_name" content="Daniel Opitz - Blog" /> 22<meta property="og:type" content="website" /> 23<meta name="twitter:card" content="summary" /> 24<meta property="twitter:title" content="About" />
25<script type="application/ld+json"> 26{"@context":"https://schema.org","@type":"WebPage","description":"Solution Architect, Software Architect, Developer, Web developer","headline":"About","url":"https://odan.github.io/about.html"}</script>
26 27<!-- End Jekyll SEO tag --> 28 29 <meta name="viewport" content="width=device-width, initial-scale=1"> 30 <meta name="theme-color" content="#1e293b"> 31 <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> 32 33 <meta name="keywords" content="php, mysql, css, html, bootstrap, slim, framework, c#, csharp, dotnet" /> 34 35 <link rel="alternate" type="application/rss+xml" title="Subscribe to What's New" 36 href="https://odan.github.io/feed.xml" /> 37 <link rel="preconnect" href="https://fonts.bunny.net"> 38 <link rel="stylesheet" href="/assets/css/style.css?v=e9a526afe686618291ddcbf01fc2dc3799c141f8"> 39 <link href="https://fonts.bunny.net/css?family=inter:400,500,600,700,800|jetbrains-mono:400,500" rel="stylesheet" /> 40 <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico?"> 41
41<script type="module" 42 src="https://cdn.jsdelivr.net/npm/@hotwired/turbo@latest/dist/turbo.es2017-esm.min.js"></script>
42 43 <meta name="view-transition" content="same-origin"> 44 <meta name="turbo-prefetch" content="false"> 45 <meta name="turbo-refresh-method" content="morph"> 46 <meta name="turbo-refresh-scroll" content="preserve"> 47</head> 48 49<body> 50 <nav> 51 <div class="nav-inner"> 52 <a href="/" class="nav-logo">odan/blog</a> 53 <div class="nav-links" id="nav-links"> 54 <a href="/">Blog</a> 55 <a href="/about.html">About</a> 56 <a href="/donate.html">Donate</a> 57 <a href="/search.html">Search</a> 58 </div> 59 <button class="theme-btn" id="toggle-mode" aria-label="Toggle dark/light mode">☾</button> 60 <button class="hamburger" id="hamburger" aria-label="Menu">☰</button> 61 </div> 62 <div class="nav-overlay" id="nav-overlay"></div> 63 </nav> 64 65 <header class="hero" role="banner"> 66 <div class="hero-bg"></div> 67 <div class="hero-content"> 68 <h1>Daniel Opitz - Blog</h1> 69 <p>Developer, Trainer, Open Source Contributor</p> 70 </div> 71 </header> 72 73 <main id="content" class="container-wide" role="main"> 74 <h1 id="about-me">About me</h1> 75 76<p>Hello, my name is Daniel Opitz.</p> 77 78<p>I live in Switzerland and I create scalable web and IoT solutions with a strong focus on software architecture, 79clean code, and long-term maintainability.</p> 80 81<p>In my spare time, I contribute to open-source projects and write blog posts about 82software development, architecture, and modern programming practices.</p> 83 84<h2 id="skills">Skills</h2> 85 86<ul> 87 <li>C#, Java, PHP, JavaScript</li> 88 <li>PostgreSQL, MySQL, MariaDB, MS SQL, Oracle, SQLite, InterSystems Caché, Memcached, Redis, RabbitMQ</li> 89 <li>HTML, CSS, Bootstrap</li> 90 <li>.NET, Javalin, Slim Framework, CakePHP, Symfony</li> 91 <li>RESTful, SOAP, XML, JSON</li> 92 <li>SOLID, DDD, Clean Code, Clean Architecture</li> 93 <li>Windows, Linux, Cloud, Network, Web Security</li> 94</ul> 95 96<h2 id="videos">Videos</h2> 97 98<ul> 99 <li><a href="https://www.youtube.com/@DanielOpitz">YouTube Channel</a></li> 100</ul> 101 102<h2 id="publications">Publications</h2> 103 104<ul> 105 <li><a href="https://ko-fi.com/s/5f182b4b22">Slim 4 eBook Vol. 1</a></li> 106 <li><a href="https://ko-fi.com/s/e592c10b5f">Slim 4 eBook Vol. 2</a></li> 107 <li><a href="https://ko-fi.com/s/3698cf30f3">Slim 4 eBook Vol. 3</a></li> 108 <li><a href="https://odan.github.io/2020/05/20/slim4-php-magazin-420.html">Das PHP Micro-Framework Slim 4</a> (PHP Magazin Ausgabe 4.20)</li> 109 <li><a href="https://www.programmez.com/magazine/article/la-decouverte-de-slim-4">à la découverte de Slim 4</a> (Programmez!)</li> 110</ul> 111 112<h2 id="interviews">Interviews</h2> 113 114<ul> 115 <li><a href="https://entwickler.de/online/php/php-microframework-slim-579928772.html">PHP Microframework Slim auch für gröÃere Anwendungen geeignet</a></li> 116</ul> 117 118<h2 id="my-projects">My projects</h2> 119 120<ul> 121 <li><a href="https://github.com/odan/slim4-skeleton">odan/slim4-skeleton</a> A Slim 4 skeleton for apache</li> 122 <li><a href="https://github.com/selective-php">Selective PHP</a> A collection of awesome PHP packages</li> 123 <li><a href="https://odan.github.io/learn-php/">Learn modern PHP</a> A curated list of resources for PHP</li> 124 <li><a href="https://github.com/odan?tab=repositories">All projects</a></li> 125</ul> 126 127<h2 id="open-source-contributions">Open Source Contributions</h2> 128 129<ul> 130 <li><a href="https://www.slimframework.com/">Slim Framework</a> A PHP micro framework</li> 131 <li><a href="https://cakephp.org/">CakePHP</a> A rapid development framework for PHP</li> 132 <li><a href="https://github.com/cakephp/chronos">Chronos</a> A standalone DateTime library</li> 133</ul> 134 135<h2 id="conferences">Conferences</h2> 136 137<ul> 138 <li><a href="https://phpconference.com/">International PHP Conference</a> (2015-2023)</li> 139 <li><a href="https://basta.net/mainz/">BASTA! .NET, Windows & Web Development - Online</a> (2021)</li> 140 <li><a href="https://phpconference.com/">International PHP Conference - Munich</a> (2013)</li> 141</ul> 142 143<p><a id="contact"></a></p> 144 145<h2 id="contact">Contact</h2> 146 147<ul> 148 <li><a href="mailto:[email protected]">E-Mail</a></li> 149 <li><a href="https://x.com/dopitz">X</a></li> 150 <li><a href="https://github.com/odan">GitHub</a></li> 151 <li><a href="https://www.linkedin.com/in/daniel-opitz-493816111">LinkedIn</a></li> 152 <li><a href="https://www.xing.com/profile/Daniel_Opitz9">Xing</a></li> 153</ul> 154 155 156 <footer> 157 © 2026 Daniel Opitz 158 | <a href="https://x.com/dopitz" target="_blank">X</a> 159 | <a href="https://github.com/odan" target="_blank">GitHub</a> 160 | <a href="https://www.linkedin.com/in/daniel-opitz-493816111" target="_blank">LinkedIn</a> 161 | <a href="https://odan.github.io/feed.xml" target="_blank">RSS</a> 162 </footer> 163 </main> 164 165
165<script> 166 (function () { 167 document.getElementById('toggle-mode').addEventListener('click', function (e) { 168 var cur = document.documentElement.getAttribute('data-theme'); 169 var next = cur === 'dark' ? 'light' : 'dark'; 170 document.documentElement.setAttribute('data-theme', next); 171 localStorage.setItem('theme', next); 172 }); 173 174 var hamburger = document.getElementById('hamburger'); 175 var navLinks = document.getElementById('nav-links'); 176 var overlay = document.getElementById('nav-overlay'); 177 if (hamburger && navLinks) { 178 function closeMenu() { 179 navLinks.classList.remove('open'); 180 overlay.classList.remove('open'); 181 document.body.classList.remove('nav-open'); 182 } 183 hamburger.addEventListener('click', function () { 184 navLinks.classList.toggle('open'); 185 overlay.classList.toggle('open'); 186 document.body.classList.toggle('nav-open'); 187 }); 188 overlay.addEventListener('click', closeMenu); 189 navLinks.querySelectorAll('a').forEach(function (link) { 190 link.addEventListener('click', closeMenu); 191 }); 192 } 193 })(); 194 </script>
194 195</body> 196 197</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.