PageSourceSearch

https://ktruehl.net/cv/

html ktruehl.net collected 2026-10-06 01:59:57 UTC 28,147 bytes, 520 lines download raw bytes

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&#160;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.