panthema.net - Timo Bingmann's Weblog2020-11-02T10:00:00ZTimo Bingmanntbrss@panthema.netpanthema.net XML Feedhttps://panthema.net/Started working for eBay Inc in San José, CA, USA.tag:panthema.net,2013:/2020/1102-Working-for-eBay/index.html2020-11-02T10:00:00Z2020-11-02T10:00:00Z<article><header><div style="float: right; clear: right; margin: 12pt 0pt 12pt 12pt; font-size: smaller; text-align: center" class="aimg"><a href="/2020/1102-Working-for-eBay/"><img src="/2020/1102-Working-for-eBay/ebay_logo.jpg" width="300" height="175" alt="eBay Logo" title="eBay Logo" /></a></div><h1>Started working for eBay Inc in San José, CA, USA.</h1><p class="info">Posted on 2020-11-02 10:00 by <a href="/about/">Timo Bingmann</a><a href="http://plus.google.com/+TimoBingmann?rel=author"></a> at <a href="/2020/1102-Working-for-eBay/">Permlink</a> with <a href="/2020/1102-Working-for-eBay/#notes">0 Comments</a>. Tags: <a href="/tags/ebay.html">#ebay</a></p></header><div class="textcontent"><p>This is a very much delayed blog entry stating that I join eBay's Search Engine team in San José, California.</p><p><b>eBay needs no introduction.</b> <b>It is one of the biggest e-commerce marketplaces in the world, connecting buyers and sellers from around the world.</b> Depending on the metric and time frame, it is the fifth largest marketplace in the world by gross merchandise volume (GMV), behind Alibaba (Taobao and Tmall), Amazon, and JD.com. According to other statistics, it the second most visited global e-commerce and shopping website, again after Amazon.com (see <a href="https://www.statista.com/statistics/1198949/most-visited-websites-in-the-retail-sector-worldwide/">Statista</a> statistic). At the same time, its market cap is much smaller than that of those competitors, because it does not have inventory and only facilitates the transactions. It is an exciting company with lots of potential.</p><p>The search engine which powers eBay handles <b>80 billion queries</b> on <b>3 billion documents</b> every day. The index is distributed on <b>tens of thousands geographically distributed servers</b>. My job will be to improve the <b>custom C++ search engine</b> enabling customers to locate items to buy. There is an academic publication titled "<a href="http://sigir-ecom.weebly.com/uploads/1/0/2/9/102947274/ebay_search_architecture.pdf">The Architecture of eBay Search</a>" presented at <a href="http://sigir-ecom.weebly.com/accepted-papers.html">SIGIR eCom 2017</a> which contains more publicly available information about the search engine.</p><p>I am excited to have joined eBay's technical team in San José, California, USA.</p><p>Moving during the Covid-19 pandemic from Germany to California was challenge. But more about that in a future blog post.</p></div></article>Thrill YouTube Tutorial: High-Performance Algorithmic Distributed Computing with C++tag:panthema.net,2013:/2020/0601-thrill-tutorial/index.html2020-06-01T12:13:00Z2020-06-01T12:13:00Z<article><header><div style="float: right; clear: right; margin: 12pt 0pt 12pt 12pt; font-size: smaller; text-align: center" class="aimg"><a href="/2020/0601-thrill-tutorial/"><img src="/2020/0601-thrill-tutorial/thumb.jpg" width="375" height="563" alt="Thrill Tutorial Title Slide" title="Thrill Tutorial Title Slide" /></a></div><h1>Thrill YouTube Tutorial: High-Performance Algorithmic Distributed Computing with C++</h1><p class="info">Posted on 2020-06-01 11:13 by <a href="/about/">Timo Bingmann</a><a href="http://plus.google.com/+TimoBingmann?rel=author"></a> at <a href="/2020/0601-thrill-tutorial/">Permlink</a> with <a href="/2020/0601-thrill-tutorial/#notes">0 Comments</a>. Tags: <a href="/tags/talk.html">#talk</a> <a href="/tags/university.html">#university</a> <a href="/tags/thrill.html">#thrill</a></p></header><div class="textcontent"><p>This post announces the completion of my new tutorial presentation and YouTube video: "<b>Thrill Tutorial: High-Performance Algorithmic Distributed Computing with C++</b>".</p><p class="center" style="text-align:center"><a style="display: block; padding: 1ex 0" href="https://youtu.be/UxW5YyETLXo"><span style="border: 1px solid blue; padding: 1ex 4ex"><b>YouTube video link: https://youtu.be/UxW5YyETLXo</b> (2h 41min)</span></a></p><p class="center" style="text-align:center">Slide Deck: <a title="Download slides-20200601-thrill-tutorial.pdf (21.3 MiB)" href="slides-20200601-thrill-tutorial.pdf">slides-20200601-thrill-tutorial.pdf <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAARCAYAAAAG/yacAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALCQAACwkBEvpHPgAAAAd0SU1FB9wMCgcxLPKvBkUAAAHtSURBVCjPhZLNSiNBEMd/1TOZfCwaPAUE8bYnA543xLyCN08efQJPPoBvYMAn8OLVo0dhIeBBEBEkhyjLZP0AQ4Jmeqa79pCd3njaPzTV3dSvqquqZTAY6OrqKgIgglfFO4dzjvl8ztHR0Y/Ly8ufIkLQ/f29Bp2eqs8yVVW11urt7a2maao7OzsdVQ2MKSOo9/D2hhwe4p2jUqlQr9cxxnB2dnbV6/UCaAI+ncLNDdrphCsRwXtPkiScn59f7e7udlSVOHisrKAbG+j7O3JygrbbNKtVRo0G1lpGoxHdbvdKRJoB0qcn5OIC2dtD7+4wDw+sNZt8Oz7m9+MjjUaD2WwG8H0BpSnS78PWFrq/D/U6/vmZXITP11eq1SpJklCr1QA0RgT6fWQ0wvf7mFZrkXl9HclzYmuZz2YkSUIcL3LEAHpwgHx8YFot0jRlOBzinKMoCqy1bG9vs6wYVdjcZDwe8+v6GuccxhhUFWMMURRRFAXLc4oBBFBVoigKzqU1xoTf8WVO3ntUFRFBRDDGBGuMwVq7qLOEnHNYa/HeB2gZFBHyPCfP83/fyHv/BVp2Ls9lQ8pMcdmlWq1GFEU450LkoigCsPy8+OXlhel0irWWLMvIsow8z1HVUGu5JpMJZeMqQPvv/r+KoujzD0w6NaOXWgCIAAAAAElFTkSuQmCC" alt="slides-20200601-thrill-tutorial.pdf" style="margin-bottom: -2px" width="13" height="17"/></a> (21.3 MiB) (114 slides)</p><p>In this tutorial we present our new distributed Big Data processing framework called <b>Thrill</b> (<a href="https://project-thrill.org">https://project-thrill.org</a>). It is a C++ framework consisting of a set of basic scalable algorithmic primitives like mapping, reducing, sorting, merging, joining, and additional MPI-like collectives. This set of primitives can be combined into larger more complex algorithms, such as WordCount, PageRank, and suffix sorting. Such compounded algorithms can then be run on very large inputs using a distributed computing cluster with external memory.</p><p>After introducing the audience to Thrill we guide participants through the initial steps of downloading and compiling the software package. The tutorial then continues to give an overview of the challenges of programming real distributed machines and models and frameworks for achieving this goal. With these foundations, Thrill's DIA programming model is introduced with an extensive listing of DIA operations and how to actually use them. The participants are then given a set of small example tasks to gain hands-on experience with DIAs.</p><p>After the hands-on session, the tutorial continues with more details on how to run Thrill programs on clusters and how to generate execution profiles. Then, deeper details of Thrill's internal software layers are discussed to advance the participants' mental model of how Thrill executes DIA operations. The final hands-on tutorial is designed as a concerted group effort to implement K-means clustering for 2D points.</p><p>The video on YouTube (<a href="https://youtu.be/UxW5YyETLXo">https://youtu.be/UxW5YyETLXo</a>) contains both presentation and live-coding sessions. It has a high information density and covers many topics.</p><h2>Table of Contents</h2><ul><li>Thrill Motivation Pitch<ul><li>0:04:08 <a href="https://youtu.be/UxW5YyETLXo?t=248s">Benchmarks and Introduction</a></li><li>0:15:08 <a href="https://youtu.be/UxW5YyETLXo?t=908s">Tutorial: Clone, Compile, and Run Hello World</a></li></ul></li><li>Introduction to Parallel Machines<ul><li>0:20:20 <a href="https://youtu.be/UxW5YyETLXo?t=1220s">The Real Deal: Examples of Machines</a></li><li>0:24:50 <a href="https://youtu.be/UxW5YyETLXo?t=1490s">Networks: Types and Measurements</a><ul><li>0:27:02 <a href="https://youtu.be/UxW5YyETLXo?t=1622s">Round Trip Time (RTT) and Bandwidth</a></li><li>0:29:19 <a href="https://youtu.be/UxW5YyETLXo?t=1759s">MPI Random Async Block Benchmark</a></li></ul></li><li>0:31:47 <a href="https://youtu.be/UxW5YyETLXo?t=1907s">Models</a></li><li>0:35:58 <a href="https://youtu.be/UxW5YyETLXo?t=2158s">Implementations and Frameworks</a></li></ul></li><li>The Thrill Framework<ul><li>0:39:28 <a href="https://youtu.be/UxW5YyETLXo?t=2368s">Thrill's DIA Abstraction and List of Operations</a><ul><li>0:44:00 <a href="https://youtu.be/UxW5YyETLXo?t=2640s">Illustrations of DIA Operations</a></li></ul></li><li>0:55:32 <a href="https://youtu.be/UxW5YyETLXo?t=3332s">Tutorial: Playing with DIA Operations</a></li><li>1:08:21 <a href="https://youtu.be/UxW5YyETLXo?t=4101s">Execution of Collective Operations in Thrill</a></li><li>1:21:10 <a href="https://youtu.be/UxW5YyETLXo?t=4870s">Tutorial: Running Thrill on a Cluster</a></li><li>1:27:02 <a href="https://youtu.be/UxW5YyETLXo?t=5222s">Tutorial: Logging and Profiling</a></li><li>1:32:14 <a href="https://youtu.be/UxW5YyETLXo?t=5534s">Going Deeper into Thrill</a><ul><li>1:32:49 <a href="https://youtu.be/UxW5YyETLXo?t=5569s">Layers of Thrill</a></li><li>1:37:59 <a href="https://youtu.be/UxW5YyETLXo?t=5879s">File - Variable-Length C++ Item Store</a></li><li>1:43:54 <a href="https://youtu.be/UxW5YyETLXo?t=6234s">Readers and Writers</a></li><li>1:46:43 <a href="https://youtu.be/UxW5YyETLXo?t=6403s">Thrill's Communication Abstraction</a></li><li>1:48:07 <a href="https://youtu.be/UxW5YyETLXo?t=6487s">Stream - Async Big Data All-to-All</a></li><li>1:49:46 <a href="https://youtu.be/UxW5YyETLXo?t=6586s">Thrill's Data Processing Pipelines</a></li><li>1:51:29 <a href="https://youtu.be/UxW5YyETLXo?t=6689s">Thrill's Current Sample Sort</a></li><li>1:54:14 <a href="https://youtu.be/UxW5YyETLXo?t=6854s">Optimization: Consume and Keep</a></li><li>1:59:34 <a href="https://youtu.be/UxW5YyETLXo?t=7174s">Memory Allocation Areas in Thrill</a></li><li>2:01:17 <a href="https://youtu.be/UxW5YyETLXo?t=7277s">Memory Distribution in Stages</a></li><li>2:02:22 <a href="https://youtu.be/UxW5YyETLXo?t=7342s">Pipelined Data Flow Processing</a></li><li>2:08:48 <a href="https://youtu.be/UxW5YyETLXo?t=7728s">ReduceByKey Implementation</a></li></ul></li><li>2:12:06 <a href="https://youtu.be/UxW5YyETLXo?t=7926s">Tutorial: First Steps towards k-Means</a></li><li>2:35:56 <a href="https://youtu.be/UxW5YyETLXo?t=9356s">Conclusion</a></li></ul></li></ul><div style="text-align: center"><a href="/2020/0601-thrill-tutorial/">This article continues on the next page ...</a></div></div></article>IPDPS Paper "Communication-Efficient String Sorting" and Talk Recordingtag:panthema.net,2013:/2020/0518-distributed-string-sorting/index.html2020-05-18T16:30:00Z2020-05-18T16:30:00Z<article><header><div style="float: right; clear: right; margin: 12pt 0pt 12pt 12pt; font-size: smaller; text-align: center" class="aimg"><a href="/2020/0518-distributed-string-sorting/"><img src="/2020/0518-distributed-string-sorting/thumb.png" width="375" height="281" alt="Distributed Merge String Sort" title="Distributed Merge String Sort" /></a></div><h1>IPDPS Paper "Communication-Efficient String Sorting" and Talk Recording</h1><p class="info">Posted on 2020-05-18 15:30 by <a href="/about/">Timo Bingmann</a><a href="http://plus.google.com/+TimoBingmann?rel=author"></a> at <a href="/2020/0518-distributed-string-sorting/">Permlink</a> with <a href="/2020/0518-distributed-string-sorting/#notes">0 Comments</a>. Tags: <a href="/tags/talk.html">#talk</a> <a href="/tags/university.html">#university</a></p></header><div class="textcontent"><p>Due to the coronavirus this year's <a href="http://www.ipdps.org">IPDPS conference</a> is held in a virtual fashion, and we sadly missed a chance to visit New Orleans. Instead, <b>I recorded a YouTube video of our conference talk</b>, because the slides usually are illustrations requiring more explanation.</p><p>The paper "<b>Communication-Efficient String Sorting</b>", which I coauthored with Peter Sanders and Matthias Schimek, will still be published in the IEEE proceedings. A preprint of <b>the full paper</b> is available on <a href="https://arxiv.org/abs/2001.08516">arXiv:2001.08516</a> and also from this webpage:</p><p><b><a title="Download 2001.08516v1-Communication-Efficient-String-Sorting.pdf (264 KiB)" href="2001.08516v1-Communication-Efficient-String-Sorting.pdf">2001.08516v1-Communication-Efficient-String-Sorting.pdf <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAARCAYAAAAG/yacAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALCQAACwkBEvpHPgAAAAd0SU1FB9wMCgcxLPKvBkUAAAHtSURBVCjPhZLNSiNBEMd/1TOZfCwaPAUE8bYnA543xLyCN08efQJPPoBvYMAn8OLVo0dhIeBBEBEkhyjLZP0AQ4Jmeqa79pCd3njaPzTV3dSvqquqZTAY6OrqKgIgglfFO4dzjvl8ztHR0Y/Ly8ufIkLQ/f29Bp2eqs8yVVW11urt7a2maao7OzsdVQ2MKSOo9/D2hhwe4p2jUqlQr9cxxnB2dnbV6/UCaAI+ncLNDdrphCsRwXtPkiScn59f7e7udlSVOHisrKAbG+j7O3JygrbbNKtVRo0G1lpGoxHdbvdKRJoB0qcn5OIC2dtD7+4wDw+sNZt8Oz7m9+MjjUaD2WwG8H0BpSnS78PWFrq/D/U6/vmZXITP11eq1SpJklCr1QA0RgT6fWQ0wvf7mFZrkXl9HclzYmuZz2YkSUIcL3LEAHpwgHx8YFot0jRlOBzinKMoCqy1bG9vs6wYVdjcZDwe8+v6GuccxhhUFWMMURRRFAXLc4oBBFBVoigKzqU1xoTf8WVO3ntUFRFBRDDGBGuMwVq7qLOEnHNYa/HeB2gZFBHyPCfP83/fyHv/BVp2Ls9lQ8pMcdmlWq1GFEU450LkoigCsPy8+OXlhel0irWWLMvIsow8z1HVUGu5JpMJZeMqQPvv/r+KoujzD0w6NaOXWgCIAAAAAElFTkSuQmCC" alt="2001.08516v1-Communication-Efficient-String-Sorting.pdf" style="margin-bottom: -2px" width="13" height="17"/></a></b>,</p><p>There are two versions of the slides: the <b><a title="Download slides-20200518-distributed-string-sorting-ipdps.pdf (254 KiB)" href="slides-20200518-distributed-string-sorting-ipdps.pdf">longer presentation version <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAARCAYAAAAG/yacAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALCQAACwkBEvpHPgAAAAd0SU1FB9wMCgcxLPKvBkUAAAHtSURBVCjPhZLNSiNBEMd/1TOZfCwaPAUE8bYnA543xLyCN08efQJPPoBvYMAn8OLVo0dhIeBBEBEkhyjLZP0AQ4Jmeqa79pCd3njaPzTV3dSvqquqZTAY6OrqKgIgglfFO4dzjvl8ztHR0Y/Ly8ufIkLQ/f29Bp2eqs8yVVW11urt7a2maao7OzsdVQ2MKSOo9/D2hhwe4p2jUqlQr9cxxnB2dnbV6/UCaAI+ncLNDdrphCsRwXtPkiScn59f7e7udlSVOHisrKAbG+j7O3JygrbbNKtVRo0G1lpGoxHdbvdKRJoB0qcn5OIC2dtD7+4wDw+sNZt8Oz7m9+MjjUaD2WwG8H0BpSnS78PWFrq/D/U6/vmZXITP11eq1SpJklCr1QA0RgT6fWQ0wvf7mFZrkXl9HclzYmuZz2YkSUIcL3LEAHpwgHx8YFot0jRlOBzinKMoCqy1bG9vs6wYVdjcZDwe8+v6GuccxhhUFWMMURRRFAXLc4oBBFBVoigKzqU1xoTf8WVO3ntUFRFBRDDGBGuMwVq7qLOEnHNYa/HeB2gZFBHyPCfP83/fyHv/BVp2Ls9lQ8pMcdmlWq1GFEU450LkoigCsPy8+OXlhel0irWWLMvIsow8z1HVUGu5JpMJZeMqQPvv/r+KoujzD0w6NaOXWgCIAAAAAElFTkSuQmCC" alt="slides-20200518-distributed-string-sorting-ipdps.pdf" style="margin-bottom: -2px" width="13" height="17"/></a></b> below used for the YouTube recording and a <a title="Download slides-20200518-distributed-string-sorting-ipdps-short.pdf (163 KiB)" href="slides-20200518-distributed-string-sorting-ipdps-short.pdf">short ten page teaser version <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAARCAYAAAAG/yacAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALCQAACwkBEvpHPgAAAAd0SU1FB9wMCgcxLPKvBkUAAAHtSURBVCjPhZLNSiNBEMd/1TOZfCwaPAUE8bYnA543xLyCN08efQJPPoBvYMAn8OLVo0dhIeBBEBEkhyjLZP0AQ4Jmeqa79pCd3njaPzTV3dSvqquqZTAY6OrqKgIgglfFO4dzjvl8ztHR0Y/Ly8ufIkLQ/f29Bp2eqs8yVVW11urt7a2maao7OzsdVQ2MKSOo9/D2hhwe4p2jUqlQr9cxxnB2dnbV6/UCaAI+ncLNDdrphCsRwXtPkiScn59f7e7udlSVOHisrKAbG+j7O3JygrbbNKtVRo0G1lpGoxHdbvdKRJoB0qcn5OIC2dtD7+4wDw+sNZt8Oz7m9+MjjUaD2WwG8H0BpSnS78PWFrq/D/U6/vmZXITP11eq1SpJklCr1QA0RgT6fWQ0wvf7mFZrkXl9HclzYmuZz2YkSUIcL3LEAHpwgHx8YFot0jRlOBzinKMoCqy1bG9vs6wYVdjcZDwe8+v6GuccxhhUFWMMURRRFAXLc4oBBFBVoigKzqU1xoTf8WVO3ntUFRFBRDDGBGuMwVq7qLOEnHNYa/HeB2gZFBHyPCfP83/fyHv/BVp2Ls9lQ8pMcdmlWq1GFEU450LkoigCsPy8+OXlhel0irWWLMvIsow8z1HVUGu5JpMJZeMqQPvv/r+KoujzD0w6NaOXWgCIAAAAAElFTkSuQmCC" alt="slides-20200518-distributed-string-sorting-ipdps-short.pdf" style="margin-bottom: -2px" width="13" height="17"/></a> for the virtual conference.</p><div id="jSslides_20200518_distributed_string_sorting_ipdps_scroll_png" class="jThumbnailScroller" style="height:120px"><div class="jTscrollerContainer"><div class="jTscroller"><a title="Download slides-20200518-distributed-string-sorting-ipdps.pdf" href="slides-20200518-distributed-string-sorting-ipdps.pdf"><img src="slides-20200518-distributed-string-sorting-ipdps-scroll.png" alt="Download slides-20200518-distributed-string-sorting-ipdps.pdf" title="Download slides-20200518-distributed-string-sorting-ipdps.pdf" width="3840" height="120"/></a></div></div></div><script type="text/javascript" src="/js/jquery-3.6.1.min.js"></script><script type="text/javascript" src="/js/jquery.thumbnailScroller.js"></script><script type="text/javascript">/* <![CDATA[ */ $(document).ready(function() { $("#jSslides_20200518_distributed_string_sorting_ipdps_scroll_png").thumbnailScroller(); }); /* ]]> */</script><p>The <b>source code and more documentation</b> about the implementations of our communication-efficient distributed string sorting algorithms can be found on my <b>GitHub repository</b> <a href="https://github.com/bingmann/distributed-string-sorting">https://github.com/bingmann/distributed-string-sorting</a>.</p><p>Matthias Schimek's master thesis, on which this paper and presentation are based on, <a title="Download 2019_Schimek_Distributed_String_Sorting_Algorithms.pdf (1.04 MiB)" href="/2019/publications/2019_Schimek_Distributed_String_Sorting_Algorithms.pdf">can be downloaded from this website <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAARCAYAAAAG/yacAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALCQAACwkBEvpHPgAAAAd0SU1FB9wMCgcxLPKvBkUAAAHtSURBVCjPhZLNSiNBEMd/1TOZfCwaPAUE8bYnA543xLyCN08efQJPPoBvYMAn8OLVo0dhIeBBEBEkhyjLZP0AQ4Jmeqa79pCd3njaPzTV3dSvqquqZTAY6OrqKgIgglfFO4dzjvl8ztHR0Y/Ly8ufIkLQ/f29Bp2eqs8yVVW11urt7a2maao7OzsdVQ2MKSOo9/D2hhwe4p2jUqlQr9cxxnB2dnbV6/UCaAI+ncLNDdrphCsRwXtPkiScn59f7e7udlSVOHisrKAbG+j7O3JygrbbNKtVRo0G1lpGoxHdbvdKRJoB0qcn5OIC2dtD7+4wDw+sNZt8Oz7m9+MjjUaD2WwG8H0BpSnS78PWFrq/D/U6/vmZXITP11eq1SpJklCr1QA0RgT6fWQ0wvf7mFZrkXl9HclzYmuZz2YkSUIcL3LEAHpwgHx8YFot0jRlOBzinKMoCqy1bG9vs6wYVdjcZDwe8+v6GuccxhhUFWMMURRRFAXLc4oBBFBVoigKzqU1xoTf8WVO3ntUFRFBRDDGBGuMwVq7qLOEnHNYa/HeB2gZFBHyPCfP83/fyHv/BVp2Ls9lQ8pMcdmlWq1GFEU450LkoigCsPy8+OXlhel0irWWLMvIsow8z1HVUGu5JpMJZeMqQPvv/r+KoujzD0w6NaOXWgCIAAAAAElFTkSuQmCC" alt="2019_Schimek_Distributed_String_Sorting_Algorithms.pdf" style="margin-bottom: -2px" width="13" height="17"/></a> as well.</p><p>Below you can watch the <b>video recording of my presentation</b>, or head over to YouTube: <a href="https://youtu.be/uWro8fsfs5I">https://youtu.be/uWro8fsfs5I</a>.</p><div style="text-align: center"><a href="/2020/0518-distributed-string-sorting/">This article continues on the next page ...</a></div></div></article>List of Recordings of Lectures and Exercises on YouTubetag:panthema.net,2013:/2020/0128-Youtube-Lecture-Recordings/index.html2020-01-28T01:05:00Z2020-01-28T01:05:00Z<article><header><div style="float: right; clear: right; margin: 12pt 0pt 12pt 12pt; font-size: smaller; text-align: center" class="aimg"><a href="/2020/0128-Youtube-Lecture-Recordings/"><img src="/2020/0128-Youtube-Lecture-Recordings/thumb.jpg" width="400" height="225" alt="Cover images of Youtube lecture series" title="Cover images of Youtube lecture series" /></a></div><h1>List of Recordings of Lectures and Exercises on YouTube</h1><p class="info">Posted on 2020-01-28 01:05 by <a href="/about/">Timo Bingmann</a><a href="http://plus.google.com/+TimoBingmann?rel=author"></a> at <a href="/2020/0128-Youtube-Lecture-Recordings/">Permlink</a> with <a href="/2020/0128-Youtube-Lecture-Recordings/#notes">0 Comments</a>. Tags: <a href="/tags/university.html">#university</a></p></header><div class="textcontent"><p>This post features a list of videos on Youtube of lectures and exercises which I have given at the KIT. The recordings are all in German and were produced semi-automatically by the <a href="https://www.zml.kit.edu/vorlesungsaufzeichnung.php">Center for Media-Learning (Zentrum für Mediales Lernen) at the KIT</a>.</p><p>I have listed various entry time points for topics in the lectures for an easier overview. These entry points are <b>only to those parts</b> of the lectures or exercises which <b>I personally presented</b>. The lecture series are mainly presented by Prof Peter Sanders and exercises were jointly given with colleagues.</p><p>The main purpose of this article is that I can never seem to find the lectures on Youtube when I am looking for them. And I can now point people to this post if I want to reference some video explanation on a topic I previously gave.</p><div style="text-align: center"><a href="/2020/0128-Youtube-Lecture-Recordings/">This article continues on the next page ...</a></div></div></article>Lines of Code Plotted over Time of Some Large and Some Small Projectstag:panthema.net,2013:/2019/1122-Lines-of-Code-Plotted-over-Time/index.html2019-11-22T10:30:00Z2019-11-22T10:30:00Z<article><header><div style="float: right; clear: right; margin: 12pt 0pt 12pt 12pt; font-size: smaller; text-align: center" class="aimg"><a href="/2019/1122-Lines-of-Code-Plotted-over-Time/"><img src="/2019/1122-Lines-of-Code-Plotted-over-Time/thumb.png" width="375" height="208" alt="Plot of Lines of Code" title="Plot of Lines of Code" style="border: 1px solid #AAAAAA" /></a></div><h1>Lines of Code Plotted over Time of Some Large and Some Small Projects</h1><p class="info">Posted on 2019-11-22 10:30 by <a href="/about/">Timo Bingmann</a><a href="http://plus.google.com/+TimoBingmann?rel=author"></a> at <a href="/2019/1122-Lines-of-Code-Plotted-over-Time/">Permlink</a> with <a href="/2019/1122-Lines-of-Code-Plotted-over-Time/#notes">0 Comments</a>. Tags: <a href="/tags/utilities.html">#utilities</a></p></header><div class="textcontent"><p>This article contains a chart of code line statistics over time extracted from a set of popular and less known git repositories. The git repositories are read with a script and each tag (release/version) is checked out and analyzed. If there are too few tags or versions (< 20), then for each beginning of a month the current commit is checked out analyzed. For each of these commit trees, the number of lines of code is determined with <a href="https://github.com/AlDanial/cloc">cloc</a> (version 1.85).</p><p>Of course one can argue about whether lines of code is a useful metric at all. Depending on programming language and style the density of code will vary a lot. Furthermore, many projects over time have accidentally or purposefully included external library code (e.g. boost or similar packages) which greatly inflates their metric. And of course long source code may not actually accomplish much compared to a small algorithmic code. Nevertheless I believe the lines of code still somewhat valuable to compare the amount of developer time spent on the open-source projects.</p><div style="text-align: center"><a href="/2019/1122-Lines-of-Code-Plotted-over-Time/">This article continues on the next page ...</a></div></div></article>Presentation "COBS: A Compact Bit-Sliced Signature Index" at SPIRE 2019 (Best Paper Award)tag:panthema.net,2013:/2019/1008-COBS-A-Compact-Bit-Sliced-Signature-Index/index.html2019-10-08T16:30:00Z2019-10-08T16:30:00Z<article><header><div style="float: right; clear: right; margin: 12pt 0pt 12pt 12pt; font-size: smaller; text-align: center" class="aimg"><a href="/2019/1008-COBS-A-Compact-Bit-Sliced-Signature-Index/"><img src="/2019/1008-COBS-A-Compact-Bit-Sliced-Signature-Index/thumb.png" width="375" height="240" alt="COBS data structure" title="COBS data structure" /></a><br/><a href="/2019/1008-COBS-A-Compact-Bit-Sliced-Signature-Index/photo1_o.jpg"><img src="/2019/1008-COBS-A-Compact-Bit-Sliced-Signature-Index/photo1.jpg" width="624" height="471" class="zoom" style="width:375px; height: auto" /></a></div><h1>Presentation "COBS: A Compact Bit-Sliced Signature Index" at SPIRE 2019 (Best Paper Award)</h1><p class="info">Posted on 2019-10-08 15:30 by <a href="/about/">Timo Bingmann</a><a href="http://plus.google.com/+TimoBingmann?rel=author"></a> at <a href="/2019/1008-COBS-A-Compact-Bit-Sliced-Signature-Index/">Permlink</a> with <a href="/2019/1008-COBS-A-Compact-Bit-Sliced-Signature-Index/#notes">0 Comments</a>. Tags: <a href="/tags/talk.html">#talk</a> <a href="/tags/university.html">#university</a></p></header><div class="textcontent"><p>Today, I presented our paper "COBS: A Compact Bit-Sliced Signature Index" at the <a href="https://spire19.lbd.org.es">26th International Symposium on String Processing and Information Retrieval (SPIRE) 2019</a> in Segovia, Spain. The full paper is available from this webpage:</p><p class="center" style="text-align:center"><b><a title="Download paper-COBS-A-Compact-Bit-Sliced-Signature-Index.pdf (469 KiB)" href="paper-COBS-A-Compact-Bit-Sliced-Signature-Index.pdf">paper-COBS-A-Compact-Bit-Sliced-Signature-Index.pdf <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAARCAYAAAAG/yacAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALCQAACwkBEvpHPgAAAAd0SU1FB9wMCgcxLPKvBkUAAAHtSURBVCjPhZLNSiNBEMd/1TOZfCwaPAUE8bYnA543xLyCN08efQJPPoBvYMAn8OLVo0dhIeBBEBEkhyjLZP0AQ4Jmeqa79pCd3njaPzTV3dSvqquqZTAY6OrqKgIgglfFO4dzjvl8ztHR0Y/Ly8ufIkLQ/f29Bp2eqs8yVVW11urt7a2maao7OzsdVQ2MKSOo9/D2hhwe4p2jUqlQr9cxxnB2dnbV6/UCaAI+ncLNDdrphCsRwXtPkiScn59f7e7udlSVOHisrKAbG+j7O3JygrbbNKtVRo0G1lpGoxHdbvdKRJoB0qcn5OIC2dtD7+4wDw+sNZt8Oz7m9+MjjUaD2WwG8H0BpSnS78PWFrq/D/U6/vmZXITP11eq1SpJklCr1QA0RgT6fWQ0wvf7mFZrkXl9HclzYmuZz2YkSUIcL3LEAHpwgHx8YFot0jRlOBzinKMoCqy1bG9vs6wYVdjcZDwe8+v6GuccxhhUFWMMURRRFAXLc4oBBFBVoigKzqU1xoTf8WVO3ntUFRFBRDDGBGuMwVq7qLOEnHNYa/HeB2gZFBHyPCfP83/fyHv/BVp2Ls9lQ8pMcdmlWq1GFEU450LkoigCsPy8+OXlhel0irWWLMvIsow8z1HVUGu5JpMJZeMqQPvv/r+KoujzD0w6NaOXWgCIAAAAAElFTkSuQmCC" alt="paper-COBS-A-Compact-Bit-Sliced-Signature-Index.pdf" style="margin-bottom: -2px" width="13" height="17"/></a></b>, </p><p>from the <a href="https://link.springer.com/chapter/10.1007/978-3-030-32686-9_21">Springer proceedings in LNCS</a> (same content, somewhat differently typeset), and also from <a href="https://arxiv.org/abs/1905.09624">arXiv:1905.09624</a>.</p><p>I am honored that <a href="https://spire19.lbd.org.es/best-paper-award/"><b>our paper won the best paper award at SPIRE'19</b></a>: <a title="Download bestPaperAward.pdf (142 KiB)" href="bestPaperAward.pdf">bestPaperAward.pdf <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAARCAYAAAAG/yacAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALCQAACwkBEvpHPgAAAAd0SU1FB9wMCgcxLPKvBkUAAAHtSURBVCjPhZLNSiNBEMd/1TOZfCwaPAUE8bYnA543xLyCN08efQJPPoBvYMAn8OLVo0dhIeBBEBEkhyjLZP0AQ4Jmeqa79pCd3njaPzTV3dSvqquqZTAY6OrqKgIgglfFO4dzjvl8ztHR0Y/Ly8ufIkLQ/f29Bp2eqs8yVVW11urt7a2maao7OzsdVQ2MKSOo9/D2hhwe4p2jUqlQr9cxxnB2dnbV6/UCaAI+ncLNDdrphCsRwXtPkiScn59f7e7udlSVOHisrKAbG+j7O3JygrbbNKtVRo0G1lpGoxHdbvdKRJoB0qcn5OIC2dtD7+4wDw+sNZt8Oz7m9+MjjUaD2WwG8H0BpSnS78PWFrq/D/U6/vmZXITP11eq1SpJklCr1QA0RgT6fWQ0wvf7mFZrkXl9HclzYmuZz2YkSUIcL3LEAHpwgHx8YFot0jRlOBzinKMoCqy1bG9vs6wYVdjcZDwe8+v6GuccxhhUFWMMURRRFAXLc4oBBFBVoigKzqU1xoTf8WVO3ntUFRFBRDDGBGuMwVq7qLOEnHNYa/HeB2gZFBHyPCfP83/fyHv/BVp2Ls9lQ8pMcdmlWq1GFEU450LkoigCsPy8+OXlhel0irWWLMvIsow8z1HVUGu5JpMJZeMqQPvv/r+KoujzD0w6NaOXWgCIAAAAAElFTkSuQmCC" alt="bestPaperAward.pdf" style="margin-bottom: -2px" width="13" height="17"/></a> </p><p>The slides of my presentation at the SPIRE conference are available here: <a title="Download slides-20191008-cobs-spire.pdf (2.13 MiB)" href="slides-20191008-cobs-spire.pdf">slides-20191008-cobs-spire.pdf <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAARCAYAAAAG/yacAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALCQAACwkBEvpHPgAAAAd0SU1FB9wMCgcxLPKvBkUAAAHtSURBVCjPhZLNSiNBEMd/1TOZfCwaPAUE8bYnA543xLyCN08efQJPPoBvYMAn8OLVo0dhIeBBEBEkhyjLZP0AQ4Jmeqa79pCd3njaPzTV3dSvqquqZTAY6OrqKgIgglfFO4dzjvl8ztHR0Y/Ly8ufIkLQ/f29Bp2eqs8yVVW11urt7a2maao7OzsdVQ2MKSOo9/D2hhwe4p2jUqlQr9cxxnB2dnbV6/UCaAI+ncLNDdrphCsRwXtPkiScn59f7e7udlSVOHisrKAbG+j7O3JygrbbNKtVRo0G1lpGoxHdbvdKRJoB0qcn5OIC2dtD7+4wDw+sNZt8Oz7m9+MjjUaD2WwG8H0BpSnS78PWFrq/D/U6/vmZXITP11eq1SpJklCr1QA0RgT6fWQ0wvf7mFZrkXl9HclzYmuZz2YkSUIcL3LEAHpwgHx8YFot0jRlOBzinKMoCqy1bG9vs6wYVdjcZDwe8+v6GuccxhhUFWMMURRRFAXLc4oBBFBVoigKzqU1xoTf8WVO3ntUFRFBRDDGBGuMwVq7qLOEnHNYa/HeB2gZFBHyPCfP83/fyHv/BVp2Ls9lQ8pMcdmlWq1GFEU450LkoigCsPy8+OXlhel0irWWLMvIsow8z1HVUGu5JpMJZeMqQPvv/r+KoujzD0w6NaOXWgCIAAAAAElFTkSuQmCC" alt="slides-20191008-cobs-spire.pdf" style="margin-bottom: -2px" width="13" height="17"/></a>.</p><p>The <b>source code and more documentation</b> about COBS can be found on GitHub: <p class="center" style="text-align:center"><b><a href="https://github.com/bingmann/cobs">https://github.com/bingmann/cobs</a></b>. </p>Update 2019-11-06: COBS now has a <a href="https://pypi.org/project/cobs-index">Python interface and can be downloaded from PyPI</a>.</p><div id="jSslides_20191008_cobs_spire_scroll_png" class="jThumbnailScroller" style="height:120px"><div class="jTscrollerContainer"><div class="jTscroller"><a title="Download slides-20191008-cobs-spire.pdf" href="slides-20191008-cobs-spire.pdf"><img src="slides-20191008-cobs-spire-scroll.png" alt="Download slides-20191008-cobs-spire.pdf" title="Download slides-20191008-cobs-spire.pdf" width="4000" height="120"/></a></div></div></div><script type="text/javascript" src="/js/jquery-3.6.1.min.js"></script><script type="text/javascript" src="/js/jquery.thumbnailScroller.js"></script><script type="text/javascript">/* <![CDATA[ */ $(document).ready(function() { $("#jSslides_20191008_cobs_spire_scroll_png").thumbnailScroller(); }); /* ]]> */</script><h2>Abstract</h2><div class="textcontent"><p>We present COBS, a COmpact Bit-sliced Signature index, which is a cross-over between an inverted index and Bloom filters. Our target application is to index <i>k</i>-mers of DNA samples or <i>q</i>-grams from text documents and process approximate pattern matching queries on the corpus with a user-chosen coverage threshold. Query results may contain a number of false positives which decreases exponentially with the query length. We compare COBS to seven other index software packages on 100000 microbial DNA samples. COBS' compact but simple data structure outperforms the other indexes in construction time and query performance with Mantis by Pandey et al. in second place. However, unlike Mantis and other previous work, COBS does not need the complete index in RAM and is thus designed to scale to larger document sets.</p></div></div></article>BlinkenSort with Sound - The Sound of LED Sorting Algorithms with Raspberry Pi 3 and APA102 or SK9822 LEDstag:panthema.net,2013:/2019/0802-BlinkenSort-The-Sound-of-LED-Sorting-Algorithms-with-RaspberryPi3-and-APA102-or-SK9822/index.html2019-08-02T20:00:00Z2019-08-02T20:00:00Z<article><header><div style="float: right; clear: right; margin: 12pt 0pt 12pt 12pt; font-size: smaller; text-align: center" class="aimg"><a href="/2019/0802-BlinkenSort-The-Sound-of-LED-Sorting-Algorithms-with-RaspberryPi3-and-APA102-or-SK9822/"><img src="/2019/0802-BlinkenSort-The-Sound-of-LED-Sorting-Algorithms-with-RaspberryPi3-and-APA102-or-SK9822/thumb.jpg" width="375" height="250" alt="BlinkenSort with Sound on Raspberry Pi 3 with APA102 or SK9822 LEDs" title="BlinkenSort with Sound on Raspberry Pi 3 with APA102 or SK9822 LEDs" /></a></div><h1>BlinkenSort with Sound - The Sound of LED Sorting Algorithms with Raspberry Pi 3 and APA102 or SK9822 LEDs</h1><p class="info">Posted on 2019-08-02 19:00 by <a href="/about/">Timo Bingmann</a><a href="http://plus.google.com/+TimoBingmann?rel=author"></a> at <a href="/2019/0802-BlinkenSort-The-Sound-of-LED-Sorting-Algorithms-with-RaspberryPi3-and-APA102-or-SK9822/">Permlink</a> with <a href="/2019/0802-BlinkenSort-The-Sound-of-LED-Sorting-Algorithms-with-RaspberryPi3-and-APA102-or-SK9822/#notes">0 Comments</a>. Tags: <a href="/tags/sorting.html">#sorting</a> <a href="/tags/electronics.html">#electronics</a> <a href="/tags/LEDs.html">#LEDs</a> <a href="/tags/sound_of_sorting.html">#sound of sorting</a> <a href="/tags/frontpage.html">#frontpage</a> <a href="/tags/blinken-algorithms.html">#blinken-algorithms</a></p></header><div class="textcontent"><p>Once <b>BlinkenSort</b> successfully showed fascinatingly complex <a href="/2019/0801-BlinkenSort-Sorting-Algorithms-on-LEDs-with-ESP8266-and-SK6812-or-WS2812B/">sorting algorithms on an LED strip using an ESP8266 (see other article)</a>, I naturally ventured to <b>add the sound output</b> from the <a href="/2013/sound-of-sorting/"><b>Sound of Sorting</b></a> program. This turned out much harder than initially thought, because the sound generation software required more processing power than available in the cheap standard microcontrollers. After much trail and error, I found out that a sufficiently new <b>Raspberry Pi</b> (I happened to have a Pi 3 model B) has the rare combination of <b>enough compute power</b>, can <b>drive an LED strip</b> directly via SPI, and has an <b>audio line-out</b>.</p><p>The Raspberry Pi, however, cannot drive the same type of LED strip reliably as the ESP8266 can, because the Raspberry Pi runs a time-shared Linux system instead of a real-time program. But it can drive the more expensive APA102 or SK9822 LEDs which have a separate clock line. These are 4-pin LED strips with clock and data, which can easily be attached to the Pi's SPI output pins. Furthermore, the <b>APA102 LEDs</b> can be driven at a <b>much higher refresh rate</b> than the WS2812B and SK6812, due to the extra clock signal. This ultimately makes the sorting animations <b>even smoother</b> than with the ESP8266 (where the frame rate is already unnoticeable). I could not find any off-the-shelf library to drive the APA102 with a C++ program on the Pi, but it was trivial to write a frame buffer class and access the <code>/dev/spi0.0</code> devices directly.</p><p>Then there was the question of adding a display. And after more experimentation, I found the <b>MAX7219 dot LED matrix modules</b> work well. These can also be driven by SPI from the Pi, which actually has two SPI outputs on the models with 40 pins. And as a bonus these dot LED matrix models can pull off an amazing frame rate. That means that besides showing the algorithm name, the super-fast refresh rate enables displaying of (nearly) <b>every comparison counter increment</b>, despite the human viewer only being able to see around 25 changes per second. Simply adding a HDMI display to the Pi would have also worked, but the LED matrix is cooler and has a retro feeling to it.</p><p>As you can see in the following YouTube video, each algorithm does something quite different which makes this a <b>very interesting art installation with deep connections to informatics</b>. BlinkenSort currently contains the following <b>eighteen sorting algorithms</b> (listed in the same order as in the video): MergeSort, Insertion Sort, QuickSort (LR) Hoare, QuickSort (LL) Lomoto, QuickSort Dual Pivot, ShellSort, HeapSort, CycleSort, RadixSort-MSD (High First), RadixSort-LSD (Low First), <code>std::sort</code>, <code>std::stable_sort</code>, WikiSort, TimSort, Selection Sort, Bubble Sort, Cocktail-Shaker Sort, and BozoSort. Besides sorting algorithms the collection also contains <b>four hash table implementations</b>: Linear Probing Hash Table, Quadratic Probing Hash Table, Cuckoo-Hashing with two places, and Cuckoo-Hashing with three places.</p><div class="center" style="text-align:center"><iframe width="640" height="360" src="https://www.youtube.com/embed/kAjQ8shElP8" frameborder="0" allowfullscreen="yes" id="yt_kAjQ8shElP8"></iframe></div><p>The video above (<a href="https://youtu.be/kAjQ8shElP8">https://youtu.be/kAjQ8shElP8</a>) shows the LED strip with sound in action and I added a voice-over commentary about the algorithms. There is also a <a href="https://www.youtube.com/watch?v=fkUZCRgX8yk">second YouTube video available</a>, without my commentary.</p><p>All source code for the sorting algorithms and other Neopixel animations is available from Github:<br /><a href="https://github.com/bingmann/BlinkenAlgorithms.git">https://github.com/bingmann/BlinkenAlgorithms.git</a></p><div style="text-align: center"><a href="/2019/0802-BlinkenSort-The-Sound-of-LED-Sorting-Algorithms-with-RaspberryPi3-and-APA102-or-SK9822/">This article continues on the next page ...</a></div></div></article>BlinkenSort - Sorting Algorithms on LEDs with ESP8266 and SK6812 or WS2812Btag:panthema.net,2013:/2019/0801-BlinkenSort-Sorting-Algorithms-on-LEDs-with-ESP8266-and-SK6812-or-WS2812B/index.html2019-08-01T20:00:00Z2019-08-01T20:00:00Z<article><header><div style="float: right; clear: right; margin: 12pt 0pt 12pt 12pt; font-size: smaller; text-align: center" class="aimg"><a href="/2019/0801-BlinkenSort-Sorting-Algorithms-on-LEDs-with-ESP8266-and-SK6812-or-WS2812B/"><img src="/2019/0801-BlinkenSort-Sorting-Algorithms-on-LEDs-with-ESP8266-and-SK6812-or-WS2812B/thumb.webp" width="375" height="250" alt="BlinkenSort with ESP8266 and SK6812 LEDs" title="BlinkenSort with ESP8266 and SK6812 LEDs" /></a></div><h1>BlinkenSort - Sorting Algorithms on LEDs with ESP8266 and SK6812 or WS2812B</h1><p class="info">Posted on 2019-08-01 19:00 by <a href="/about/">Timo Bingmann</a><a href="http://plus.google.com/+TimoBingmann?rel=author"></a> at <a href="/2019/0801-BlinkenSort-Sorting-Algorithms-on-LEDs-with-ESP8266-and-SK6812-or-WS2812B/">Permlink</a> with <a href="/2019/0801-BlinkenSort-Sorting-Algorithms-on-LEDs-with-ESP8266-and-SK6812-or-WS2812B/#notes">2 Comments</a>. Tags: <a href="/tags/sorting.html">#sorting</a> <a href="/tags/electronics.html">#electronics</a> <a href="/tags/LEDs.html">#LEDs</a> <a href="/tags/sound_of_sorting.html">#sound of sorting</a> <a href="/tags/frontpage.html">#frontpage</a> <a href="/tags/blinken-algorithms.html">#blinken-algorithms</a></p></header><div class="textcontent"><p>About two years ago I first got my hands on one of the fancy <b>addressable "Neopixel" LED strips</b>, which can be programmed to show colorful animations. I quickly saw there was one project I just had to do with these strips: use them to <b>display sorting algorithms</b> as animations. Since my <a href="/2013/sound-of-sorting/"><b>Sound of Sorting</b></a> project already contained the source code for many algorithms, the step to using an addressable LED strip as a "display" was not a large one. The strips can be animated <b>using microcontrollers</b> such as the Arduino or Espressif ESP chips, which have way enough compute power for running sorting algorithms on a few hundred items. Since all sorting algorithms run on random input data and may make random decisions themselves, the shown animations are near <b>infinitely varying</b> and <b>fascinatingly complex</b>.</p><p>The outcome of my project of displaying sorting algorithms on LED strips are two pieces of art:</p><ul><li>"<b>BlinkenSort</b>", which are sorting algorithms animated on SK6812 RGBW LEDs using an ESP8266 microcontroller, is described in this article.</li><li>"<a href="/2019/0802-BlinkenSort-The-Sound-of-LED-Sorting-Algorithms-with-RaspberryPi3-and-APA102-or-SK9822/"><b>BlinkenSort with Sound</b></a>", which are sorting algorithms animated using APA102 RGB LEDs and a Raspberry Pi 3 <b>with real-time sound</b>, is detailed in <a href="/2019/0802-BlinkenSort-The-Sound-of-LED-Sorting-Algorithms-with-RaspberryPi3-and-APA102-or-SK9822/">a second blog article</a>!</li></ul><p>For both projects I created a <b>YouTube video</b> and provide a <b>construction manual</b> on this website if you are interested in the internals or want to build something similar.</p><div style="text-align: center"><a href="/2019/0801-BlinkenSort-Sorting-Algorithms-on-LEDs-with-ESP8266-and-SK6812-or-WS2812B/">This article continues on the next page ...</a></div></div></article>Uniserv Research-Prize "Algorithms for Efficient Data-Processing" for my Dissertationtag:panthema.net,2013:/2019/0619-Uniserv-Research-Prize-for-Dissertation/index.html2019-06-19T20:00:00Z2019-06-19T20:00:00Z<article><header><div style="float: right; clear: right; margin: 12pt 0pt 12pt 12pt; font-size: smaller; text-align: center" class="aimg"><a href="/2019/0619-Uniserv-Research-Prize-for-Dissertation/"><img src="/2019/0619-Uniserv-Research-Prize-for-Dissertation/thumb.jpg" width="375" height="250" alt="Photo of the Uniserv prize and my dissertation" title="Photo of the Uniserv prize and my dissertation" /></a><br/><a href="/2019/0619-Uniserv-Research-Prize-for-Dissertation/photo1.jpg"><img src="/2019/0619-Uniserv-Research-Prize-for-Dissertation/photo1.jpg" width="1200" height="801" class="zoom" style="width:375px; height: auto" /></a><br/><div style="font:8pt;text-align:right">(Foto: Andreas Drollinger, KIT)</div></div><h1>Uniserv Research-Prize "Algorithms for Efficient Data-Processing" for my Dissertation</h1><p class="info">Posted on 2019-06-19 19:00 by <a href="/about/">Timo Bingmann</a><a href="http://plus.google.com/+TimoBingmann?rel=author"></a> at <a href="/2019/0619-Uniserv-Research-Prize-for-Dissertation/">Permlink</a> with <a href="/2019/0619-Uniserv-Research-Prize-for-Dissertation/#notes">1 Comments</a>. Tags: <a href="/tags/dissertation.html">#dissertation</a> <a href="/tags/university.html">#university</a> <a href="/tags/frontpage.html">#frontpage</a></p></header><div class="textcontent"><p>Today was the <b>ceremonial graduation day</b> on which new bachelors, masters, and also Dr.s (PhDs in the Anglo-Saxon world) were celebrated who received their degrees from the department of informatics at the Karlsruhe Institute of Technology (KIT) within the last year. This year's graduation day coincided with the <b><a href="https://www.informatik.kit.edu/309_10377.php">50th anniversary</a> of the introduction of computer science</b> as a field of study and as a diploma degree.</p><p>I was among those honoured for completing the Dr. last year, (see <a href="/2018/0703-dissertation-defense/">my dissertation page</a>). In total 44 freshly minted Dr.s, 292 masters, and 261 bachelors where celebrated today.</p><p>Furthermore, I was awarded the <b>Uniserv Research-Prize "Algorithms for Efficient Data-Processing"</b> for the <b>best dissertation in the field of fast algorithms</b> in the academic year 2017/2018 at the KIT department of informatics by the talent committee of the department.</p><p>I would like to <b>thank Uniserv</b> for endowing the department and my dissertation with this prize and <b>especially the talent committee for selecting my work</b>. It was a great and pleasant surprise to receive such a notification in the morning email inbox, which as usual contained many "prize and distant inheritance" emails. But on that day one of them was real, and I nearly overlooked it.</p><p>My dissertation was the central purpose in my life for many years, and receiving the prize helps me feel the time was well spent and consider it as confirmation of having furthered the field of informatics a tiny bit. It is rare to receive such honours and I am truly grateful.</p><p>Uniserv wrote a <a href="https://www.uniserv.com/unternehmen/blog/detail/article/uniserv-verleiht-den-forschungspreis-2019-am-kit-an-dr-timo-bingmann/">much longer <b>honorific press release</b></a> in German.</p></div></article>YouTube Video: "Animation of the US Treasury Yield Curve with Inversions from 1962-01-01 to 2019-04-01"tag:panthema.net,2013:/2019/0403-US-Treasury-Yield-Curve-Inversions-Animation/index.html2019-04-04T00:30:00Z2019-04-04T00:30:00Z<article><header><h1>YouTube Video: "Animation of the US Treasury Yield Curve with Inversions from 1962-01-01 to 2019-04-01"</h1><p class="info">Posted on 2019-04-03 23:30 by <a href="/about/">Timo Bingmann</a><a href="http://plus.google.com/+TimoBingmann?rel=author"></a> at <a href="/2019/0403-US-Treasury-Yield-Curve-Inversions-Animation/">Permlink</a> with <a href="/2019/0403-US-Treasury-Yield-Curve-Inversions-Animation/#notes">0 Comments</a>. Tags: <a href="/tags/market.html">#market</a> <a href="/tags/fun.html">#fun</a></p></header><div class="textcontent"><p>Today I published the <b>first animation of market data</b> by my new charting tool on Youtube. In light of recent events this was an video of inversions of the US Treasury Yield Curve. The video is created with QCustomPlot and a large Qt program to process data.</p><div class="center" style="text-align:center"><iframe width="640" height="360" src="https://www.youtube.com/embed/GY6tJykKQjE" frameborder="0" allowfullscreen="yes" id="yt_GY6tJykKQjE"></iframe></div><p>The dancing green line plots the yields of all constant maturity treasury notes. The trailing blue line shows the efficient 30 day Federal Funds rate. The orange line is the broad stock market SPX index. The background of each day is painted red if an inversion of the 1y/5y, 1y/10y, or 2y/10y yields occurs. The darker the red color, the greater the inversion.</p><p>Watch the yield curve and the stock market index change over the decades, notice their behaviour in times of crisis. The video ends with the current inversion around April 2019. More about the yield curve and inversions: <a href="https://en.wikipedia.org/wiki/Yield_curve#Inverted_yield_curve">https://en.wikipedia.org/wiki/Yield_curve#Inverted_yield_curve</a></p><p>The Federal Funds rate data was taken from FRED (Federal Reserve Bank of St. Louis), series DFF: <a href="https://fred.stlouisfed.org/series/DFF">https://fred.stlouisfed.org/series/DFF</a>. The US Treasury yields data was also taken from FRED, series DGS1MO, DGS3MO, DGS1, DGS2, DGS5, DGS7, DGS10, DGS20, DGS30, e.g. <a href="https://fred.stlouisfed.org/series/DGS30">https://fred.stlouisfed.org/series/DGS30</a>. Across the decades the various durations were sometimes not emitted, which is visible by points being added or removed from the green curve. SPX data was taken from Stooq.com, series ^SPX.</p></div></article>