1<!DOCTYPE html> 2<html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=390, initial-scale=1" /> 6 <title>Klaas-Tido Rühl - CV</title> 7 <link rel="icon" href="/favicon.ico" sizes="any"> 8 <link rel="icon" href="/favicon.svg" type="image/svg+xml"> 9 <link rel="manifest" href="/manifest.json"> 10 11 <style> 12 body { 13 display: none; 14 } 15 </style> 16 17 18<link rel="stylesheet" href="/assets/vendor/modern-normalize/modern-normalize-c021585b624d9badf5a98ac2be61c8b9.css"> 19<link rel="stylesheet" href="/assets/vendor/@fontsource/poppins/400-815e2956b07074f6bb197e11438fe241.css"> 20<link rel="stylesheet" href="/assets/vendor/@fontsource/poppins/500-8836bb404ff6cbc2d7fe63fdbc8c381e.css"> 21<link rel="stylesheet" href="/assets/vendor/@fontsource/poppins/600-8a44bd915108cee74dd5b2ff89d3476b.css"> 22<link rel="stylesheet" href="/assets/vendor/@fortawesome/fontawesome-free/css/all-87015dd784d2c950b4f19f40a945b48f.css"> 23<link rel="stylesheet" href="/assets/styles/app-3e124b8dbbaf0a41e420be3aba2270b4.css">
24<script type="importmap" data-turbo-track="reload"> 25{ 26 "imports": { 27 "app": "/assets/app-29e757f9e8f1c7eef95b5653ed00f592.js", 28 "/assets/bootstrap.js": "/assets/bootstrap-c423b8bbc1f9cae218c105ca8ca9f767.js", 29 "modern-normalize/modern-normalize.css": "data:application/javascript,", 30 "@fontsource/poppins/400.css": "data:application/javascript,", 31 "@fontsource/poppins/500.css": "data:application/javascript,", 32 "@fontsource/poppins/600.css": "data:application/javascript,", 33 "@fortawesome/fontawesome-free/css/all.css": "data:application/javascript,", 34 "/assets/styles/app.css": "data:application/javascript,", 35 "@symfony/stimulus-bundle": "/assets/@symfony/stimulus-bundle/loader-870999a02e9fc147c034d522826ea70d.js", 36 "@hotwired/stimulus": "/assets/vendor/@hotwired/stimulus/stimulus.index-b5b1d00e42695b8959b4a1e94e3bc92a.js", 37 "/assets/@symfony/stimulus-bundle/controllers.js": "/assets/@symfony/stimulus-bundle/controllers-b930e8b12b542d9c62953fa582f32a1f.js", 38 "/assets/@symfony/ux-turbo/turbo_controller.js": "/assets/@symfony/ux-turbo/turbo_controller-ce5e32dafdec0b7752f02e3e2cb25751.js", 39 "@hotwired/turbo": "/assets/vendor/@hotwired/turbo/turbo.index-810f44ef1a202a441e4866b7a4c72d11.js" 40 } 41} 42</script>
42 43<!-- ES Module Shims: Import maps polyfill for modules browsers without import maps support -->
44<script async src="https://ga.jspm.io/npm:[email protected]/dist/es-module-shims.js" crossorigin="anonymous" integrity="sha384-ie1x72Xck445i0j4SlNJ5W5iGeL3Dpa0zD48MZopgWsjNB/lt60SuG1iduZGNnJn" data-turbo-track="reload"></script>
44 45<link rel="modulepreload" href="/assets/app-29e757f9e8f1c7eef95b5653ed00f592.js"> 46<link rel="modulepreload" href="/assets/bootstrap-c423b8bbc1f9cae218c105ca8ca9f767.js"> 47<link rel="modulepreload" href="/assets/@symfony/stimulus-bundle/loader-870999a02e9fc147c034d522826ea70d.js"> 48<link rel="modulepreload" href="/assets/vendor/@hotwired/stimulus/stimulus.index-b5b1d00e42695b8959b4a1e94e3bc92a.js"> 49<link rel="modulepreload" href="/assets/@symfony/stimulus-bundle/controllers-b930e8b12b542d9c62953fa582f32a1f.js"> 50<link rel="modulepreload" href="/assets/@symfony/ux-turbo/turbo_controller-ce5e32dafdec0b7752f02e3e2cb25751.js"> 51<link rel="modulepreload" href="/assets/vendor/@hotwired/turbo/turbo.index-810f44ef1a202a441e4866b7a4c72d11.js">
52<script type="module" data-turbo-track="reload">import 'app';</script>
52 53 <link href="/assets/styles/cv-acc4e2cd1ac486aa5259a1456ee63ea8.css" rel="stylesheet"/> 54 </head> 55 <body class="cv"> 56 <div class="container header"> 57 <div class="contents"> 58 <div class="brand">Klaas-Tido Rühl</div> 59 <div class="menu"> 60 <div class="item "><a href=/>About me</a></div> 61 <div class="item active"><a href=/cv/>CV</a></div> 62 <div class="item "><a href=/publications/>Publications</a></div> 63 <div class="item "><a href=/contact/>Contact</a></div> 64 </div> 65 </div> 66 </div> 67 68 <div class="page"> 69 <div class="hero"></div> 70 71 <div class="container top"> 72 <div class="contents"> 73 <div class="portrait"> 74 <img src="/assets/images/portrait-adba8b0644fb1e631549c43931fa0cbe.jpg" alt="Klaas-Tido Rühl" /> 75 </div> 76 <div class="name"> 77 <h2>Klaas-Tido Rühl</h2> 78 <h3>Software Ingenieur & Consultant</h3> 79 </div> 80 </div> 81 </div> 82 83 <div class="container main"> 84 <div class="contents"> 85 <div class="connect"> 86 <div class="card"> 87 <h2>Contact Information</h2> 88 89 <div class="columns"> 90 <p class="item"><a href="/cdn-cgi/l/email-protection#224b4c444d6249565057474a4e0c4c4756"><i class="fa-solid fa-envelope"></i> <span class="__cf_email__" data-cfemail="20494e464f604b54525545484c0e4e4554">[email protected]</span></a></p> 91 <p class="item"><a href="https://www.linkedin.com/in/klaas-tido-ruehl/" target="_blank"><i class="fa-brands fa-linkedin"></i> klaas-tido-ruehl</a></p> 92 <p class="item"><a href="https://maps.app.goo.gl/wRJzmkDxqux1AtA56" target="_blank"><i class="fa-solid fa-map-location-dot"></i> Vevey, Switzerland</a></p> 93 </div> 94 </div> 95 </div> 96 97 <div class="skills"> 98 <h2 id="skill-ratings">Skill Ratings</h2> 99 100 <div class="columns"> 101 <div class="item"> 102 <h3>Programming Languages</h3> 103 <div class="rating"> 104 <div class="name"><i class="fa-solid fa-code"></i> TypeScript</div> 105 <div class="bar-5"></div> 106 <div class="level">expert</div> 107 </div> 108 <div class="rating"> 109 <div class="name"><i class="fa-brands fa-js"></i> JavaScript</div> 110 <div class="bar-5"></div> 111 <div class="level">expert</div> 112 </div> 113 <div class="rating"> 114 <div class="name"><i class="fa-brands fa-php"></i> PHP</div> 115 <div class="bar-5"></div> 116 <div class="level">expert</div> 117 </div> 118 <div class="rating"> 119 <div class="name"><i class="fa-solid fa-code"></i> Elixir</div> 120 <div class="bar-4"></div> 121 <div class="level">proficient</div> 122 </div> 123 <div class="rating"> 124 <div class="name"><i class="fa-solid fa-code"></i> Ruby</div> 125 <div class="bar-3"></div> 126 <div class="level">intermediate</div> 127 </div> 128 <div class="rating"> 129 <div class="name"><i class="fa-brands fa-python"></i> Python</div> 130 <div class="bar-2"></div> 131 <div class="level">basic</div> 132 </div> 133 <div class="rating"> 134 <div class="name"><i class="fa-solid fa-code"></i> SQL</div> 135 <div class="bar-5"></div> 136 <div class="level">expert</div> 137 </div> 138 <div class="rating"> 139 <div class="name"><i class="fa-brands fa-html5"></i> HTML</div> 140 <div class="bar-5"></div> 141 <div class="level">expert</div> 142 </div> 143 <div class="rating"> 144 <div class="name"><i class="fa-brands fa-css3"></i> CSS</div> 145 <div class="bar-5"></div> 146 <div class="level">expert</div> 147 </div> 148 </div> 149 150 <div class="item"> 151 <h3>Technologies/Frameworks</h3> 152 <div class="rating"> 153 <div class="name"><i class="fa-solid fa-database"></i> PostgreSQL</div> 154 <div class="bar-5"></div> 155 <div class="level">expert</div> 156 </div> 157 <div class="rating"> 158 <div class="name"><i class="fa-solid fa-database"></i> Cassandra</div> 159 <div class="bar-4"></div> 160 <div class="level">proficient</div> 161 </div> 162 <div class="rating"> 163 <div class="name"><i class="fa-solid fa-database"></i> MySQL</div> 164 <div class="bar-4"></div> 165 <div class="level">proficient</div> 166 </div> 167 <div class="rating"> 168 <div class="name"><i class="fa-solid fa-database"></i> SQLite</div> 169 <div class="bar-3"></div> 170 <div class="level">intermediate</div> 171 </div> 172 <div class="rating"> 173 <div class="name"><i class="fa-brands fa-node-js"></i> Node.js</div> 174 <div class="bar-5"></div> 175 <div class="level">expert</div> 176 </div> 177 <div class="rating"> 178 <div class="name"><i class="fa-brands fa-magento"></i> Magento</div> 179 <div class="bar-4"></div> 180 <div class="level">proficient</div> 181 </div> 182 <div class="rating"> 183 <div class="name"><i class="fa-brands fa-phoenix-framework"></i> Phoenix</div> 184 <div class="bar-4"></div> 185 <div class="level">proficient</div> 186 </div> 187 <div class="rating"> 188 <div class="name"><i class="fa-brands fa-react"></i> React</div> 189 <div class="bar-3"></div> 190 <div class="level">intermediate</div> 191 </div> 192 </div> 193 </div> 194 </div> 195 196 <div class="title"> 197 <h1>Curriculum Vitae</h1> 198 <p>14+ years of experience</p> 199 </div> 200 201 <div class="curriculum upper"> 202 <div class="menu"> 203 <div class="item"> 204 <a href="#profile">Profile</a> 205 </div> 206 <div> 207 <a href="#core-skills">Core Skills</a> 208 </div> 209 <div> 210 <a href="#experience">Experience</a> 211 </div> 212 <div> 213 <a href="#education">Education</a> 214 </div> 215 <div class="skill-ratings"> 216 <a href="#skill-ratings">Skill Ratings</a> 217 </div> 218 <div> 219 <a href="#tech-skills">Tech Skills</a> 220 </div> 221 <div> 222 <a href="#languages">Languages</a> 223 </div> 224 </div> 225 226 <h2 id="profile">Professional Profile</h2> 227 228 <div class="section"> 229 <div class="details"> 230 <p>Studying pure mathematics, I learned to abstract a given problem, to reduce it to its 231 relevant parameters, and to understand and model complex systems. Together with my studies 232 in theoretical computer science, this has given me an excellent basis for the design of 233 sophisticated and performant software systems and for understanding and analyzing 234 multi-layered processes and requirements. Having extensive experience in application and 235 web development as well as B2C and B2B e-commerce, I can work with many of the most common 236 programming languages and technologies. I quickly find my way around very large codebase
236s 237 and new technologies, have broad experience in identifying leverage points for performance 238 optimizations, and can usually find even the most obscure bug. Being a sociable person and 239 having teaching experience, I can competently coordinate collaborations, manage contact 240 with clients and supervise teams.</p> 241 </div> 242 </div> 243 244 <h2 id="core-skills">Core Skills</h2> 245 246 <div class="section"> 247 <div class="details columns"> 248 <div class="item"> 249 <ul> 250 <li>application & web development</li> 251 <li>performance analysis & optimization</li> 252 <li>B2C & B2B e-commerce</li> 253 <li>agile development</li> 254 <li>server and database administration</li> 255 <li>tech audits & consulting</li> 256 <li>project management</li> 257 </ul> 258 </div> 259 <div class="item"> 260 <ul> 261 <li>goal-oriented perfectionist</li> 262 <li>perceptive and empathic</li> 263 <li>direct but careful communicator</li> 264 <li>understanding and modeling complex processes</li> 265 <li>trained and intuitive capacity of extrapolation and projection</li> 266 <li>ample sense of humor</li> 267 </ul> 268 </div> 269 </div> 270 </div> 271 272 <h2 id="experience">Professional Experience (selection)</h2> 273 274 <div class="section job"> 275 <div class="name"> 276 <h3>Pistor AG â digital development & architecture</h3> 277 <p class="location">Rothenburg, Switzerland</p> 278 </div> 279 <div class="dates"> 280 <span>03/2022 -</span> <span>present</span> 281 </div> 282 <div class="details"> 283 <p>Pistor, the leading trading company for the bakery and gastronomy industries in Switzerland, 284 is developing the B2B marketplace Mercanto. My responsibilities lie with the development of 285 the applications responsible for managing the vast amount of data flowing between the 286 merchants and the web shop.</p> 287 288 <h4>Key responsibilities:</h4> 289 290 <div class="columns"> 291 <div class="item"> 292 <ul> 293 <li>design of data structures and algorithms</li> 294 <li>design, development and maintenance of frameworks and features</li> 295 <li>data and code consistency and refactoring</li> 296 <li>performance optimizations</li> 297 </ul> 298 </div> 299 <div class="item"> 300 <ul> 301 <li>technical supervision of cooperations with our partner companies</li> 302 <li>training and supervision of developers in our team</li> 303 <li>bug fixing and troubleshooting</li> 304 <li>project management</li> 305 </ul> 306 </div> 307 </div> 308 309 <h4>Key achievements (selection):</h4> 310 311 <ul> 312 <li>design and development of a generic and extensible validation, import and export
313 workflow that allows efficiently handling multiple import formats</li> 314 <li>design, development and optimization of extremely performant import and delivery 315 functionalities for per-merchant and per-customer catalogs</li> 316 <li>supervising the gradual transition from prototype to product of our principal data flow 317 application</li> 318 </ul> 319 </div> 320 </div> 321 322 <div class="section job"> 323 <div class="name"> 324 <h3>REFUSiON GmbH â senior developer & project manager</h3> 325 <p class="location">Zürich, Switzerland</p> 326 </div> 327 <div class="dates"> 328 <span>07/2011 -</span> <span>11/2020</span> 329 </div> 330 <div class="details"> 331 <p>As a co-owner of this company, I was mainly responsible for participating in and supervising 332 the development and maintenance of features and performing project management for our 333 Magento e-commerce clients. We prided ourselves in our close collaboration with our clients 334 and our deep understanding of their logistic processes.</p> 335 336 <h4>Key responsibilities:</h4> 337 338 <div class="columns"> 339 <div class="item"> 340 <ul> 341 <li>conception and development of new features</li> 342 <li>maintenance and optimization of our clientsâ server infrastructure</li> 343 <li>performance, UX and SEO optimizations</li> 344 <li>bug fixing and troubleshooting</li> 345 </ul> 346 </div> 347 <div class="item"> 348 <ul> 349 <li>project management</li> 350 <li>coordinating the cooperation with our partner companies</li> 351 <li>training and supervision of developers in our team</li> 352 <li>consulting and tech audits</li> 353 </ul> 354 </div> 355 </div> 356 357 <h4>Key achievements (selection):</h4> 358 359 <ul> 360 <li>early and successful migrations from Magento 1 to Magento 2 for two major Swiss online stores</li> 361 <li>implementation of an extremely fast catalog import (products and categories) for tens 362 of thousands of products</li> 363 </ul> 364 </div> 365 </div> 366 367 <div class="section job"> 368 <div class="name"> 369 <h3>routeRANK Ltd â lead developer</h3> 370 <p class="location">Lausanne, Switzerland</p> 371 </div> 372 <div class="dates"> 373 <span>04/2010 -</span> <span>05/2011</span> 374 </div> 375 <div class="details"> 376 <p>In this startup I helped developing, maintaining, and optimizing a multi-modal travel 377 planning tool.</p> 378 379 <h4>Key responsibilities:</h4> 380 381 <div class="columns"> 382 <div class="item"> 383 <ul> 384 <li>development of new features</li> 385 <li>server and database administration</li> 386 <li>optimization of the routing engine</li> 387 </ul> 388 </div> 389 <div class="item"> 390 <ul> 391 <li>research concerning multimodal routing algorithms</li> 392 <li>project management</li> 393 </ul> 394 </div> 395 </div> 396 397 <h4>Key achievements (selection):</h4> 398 399 <ul> 400 <li>conception and implementation of a multimodal routing algorithm for the joint travel 401 of multiple travelers with different departure points</li> 402 </ul> 403 </div> 404 </div> 405 406 <h2 id="education">University Education</h2> 407 408 <div class="section university"> 409 <div class="name"> 410 <h3>Ecole Polytechnique Fédérale de Lausanne</h3> 411 <p class="location">Lausanne, Switzerland</p> 412 </div> 413 <div class="dates">
414 <span>09/2006 -</span> <span>04/2010</span> 415 </div> 416 <div class="details"> 417 <p>Ph.D. studies in mathematics, Marie Curie Fellowship of the European Commission</p> 418 <p>degree received: Doctor of Science</p> 419 </div> 420 </div> 421 422 <div class="section university"> 423 <div class="name"> 424 <h3>University of California Berkeley</h3> 425 <p class="location">Berkeley, USA</p> 426 </div> 427 <div class="dates"> 428 <span>08/2005 -</span> <span>05/2006</span> 429 </div> 430 <div class="details"> 431 <p>graduate studies in mathematics, UC Education Abroad Program</p> 432 </div> 433 </div> 434 435 <div class="section university"> 436 <div class="name"> 437 <h3>Georg-August Universität Göttingen</h3> 438 <p class="location">Göttingen, Germany</p> 439 </div> 440 <div class="dates"> 441 <span>10/1999 -</span> <span>02/2005</span> 442 </div> 443 <div class="details"> 444 <p>studies in mathematics (minor: computer studies)</p> 445 <p>degree received: Diploma in Mathematics (Diplommathematiker)</p> 446 </div> 447 </div> 448 </div> 449 450 <div class="curriculum lower"> 451 <h2 id="tech-skills">Technical Skills</h2> 452 453 <div class="section"> 454 <div class="details"> 455 <dl> 456 <dt>mathematics</dt> 457 <dd>algebra, category theory, number theory, â¦</dd> 458 459 <dt>computer science</dt> 460 <dd>complexity theory, data structures, algorithms, â¦</dd> 461 462 <dt>development</dt> 463 <dd>TypeScript, JavaScript, Elixir, PHP, Ruby, Python, SQL, HTML, CSS, â¦</dd> 464 465 <dt>frameworks</dt> 466 <dd>Node.js, Magento, Phoenix, Symfony, ReactJS, â¦</dd> 467 468 <dt>databases</dt> 469 <dd>PostgreSQL, Cassandra, MySQL, SQLite, â¦</dd> 470 471 <dt>server administration</dt> 472 <dd>Linux, CI/CD, Docker, Kubernetes, shell programming, â¦</dd> 473 </dl> 474 </div> 475 </div> 476 477 <h2 id="languages">Languages</h2> 478 479 <div class="section"> 480 <div class="details"> 481 <dl> 482 <dt>German</dt> 483 <dd>Mother tongue</dd> 484 485 <dt>English</dt> 486 <dd>Excellent speaking and writing skills</dd> 487 488 <dt>French</dt> 489 <dd>Fluent speaking and good writing skills</dd> 490 </dl> 491 </div> 492 </div> 493 </div> 494 </div> 495 </div> 496 </div> 497 498 <div class="container footer"> 499 <div class="contents"> 500 <div class="brand"> 501 <h3>Klaas-Tido Rühl</h3> 502 <p>Software-Ingenieur & Consultant</p> 503 </div> 504 <div class="connect"> 505 <h3>Connect</h3> 506 <div class="menu"> 507 <!-- @TODO[ktr]: use config variables for e-mail and LinkedIn --> 508 <p class="item"><a href="/cdn-cgi/l/email-protection#8ce5e2eae3cce7f8fef9e9e4e0a2e2e9f8"><i class="fa-solid fa-envelope"></i> E-mail</a></p> 509 <p class="item"><a href="https://www.linkedin.com/in/klaas-tido-ruehl/" target="_blank"><i class="fa-brands fa-linkedin"></i> LinkedIn</a></p> 510 <p class="item"><a href=/contact/><i class="fa-solid fa-address-card"></i> Contact page</a></p> 511 </div> 512 </div> 513 <div class="copyright"> 514 <p>© 2024 Klaas-Tido Rühl</p> 515 </div> 516 </div> 517 </div>
vendor: 113 bytes, lines 517-518
517 518 <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
518<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a46111d3fa7a7232',t:'MTc5MTI1MTk5Ng=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
518<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"e8c598e60914410db88db9c8fdf37e98","r":1,"spa":2}' crossorigin="anonymous"></script>
518 519</body> 520</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.