<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
    <title>niederb.ch</title>
    <subtitle>Abridge is a fast, lightweight, and modern Zola theme (class-light, semantic HTML). Perfect Lighthouse, YellowLabTools, and Observatory scores.</subtitle>
    <link rel="self" type="application/atom+xml" href="https://niederb.ch/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://niederb.ch"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-09-24T00:00:00+00:00</updated>
    <id>https://niederb.ch/atom.xml</id>
    <entry xml:lang="de">
        <title>Die Bank</title>
        <published>2026-09-24T00:00:00+00:00</published>
        <updated>2026-09-24T00:00:00+00:00</updated>
        
        <author>
          <name>Thomas Niederberger</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://niederb.ch/die-bank/"/>
        <id>https://niederb.ch/die-bank/</id>
        
        <content type="html" xml:base="https://niederb.ch/die-bank/">&lt;p&gt;Eine Kurzgeschichte, die ich im Frühling 2026 im Rahmen des Schreibwettbewerbs von Zürich liest, zum Thema &quot;Schwindel&quot; erstellt habe (leider ohne Erfolg):
&lt;a href=&quot;https://niederb.ch/die-bank/Die-Bank-Vorsatz.pdf&quot;&gt;Kurzgeschichte - Die Bank&lt;/a&gt;&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="de">
        <title>Support for IPv6</title>
        <published>2022-04-25T00:00:00+00:00</published>
        <updated>2022-04-25T00:00:00+00:00</updated>
        
        <author>
          <name>Thomas Niederberger</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://niederb.ch/support-for-ipv6/"/>
        <id>https://niederb.ch/support-for-ipv6/</id>
        
        <content type="html" xml:base="https://niederb.ch/support-for-ipv6/">&lt;p&gt;Good news everyone: As of today my website is reachable with IPv6 and all it took was a simple support mail to my hoster &lt;a href=&quot;https://niederb.ch/support-for-ipv6/metanet.ch&quot;&gt;metanet.ch&lt;/a&gt;. Within literally 5 minutes they added AAAA-Records to my DNS entries and that&#39;s it: Website can be reached with IPv6. Kudos to the support team of metanet.ch for reacting so quickly.&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="de">
        <title>line_diff</title>
        <published>2020-08-26T00:00:00+00:00</published>
        <updated>2020-08-26T00:00:00+00:00</updated>
        
        <author>
          <name>Thomas Niederberger</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://niederb.ch/line-diff/"/>
        <id>https://niederb.ch/line-diff/</id>
        
        <content type="html" xml:base="https://niederb.ch/line-diff/">&lt;p&gt;&lt;!-- wp:paragraph --&gt;&lt;/p&gt;
&lt;p&gt;line_diff is a small tool that I wrote to make comparing long text lines easier. Sometimes you want to compare a long PATH variable or a long command line call and all you get from the compare tool is that they are somehow different, but it&#39;s now easy to spot how or where.&lt;/p&gt;
&lt;p&gt;&lt;!-- /wp:paragraph --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- wp:paragraph --&gt;&lt;/p&gt;
&lt;p&gt;This is where line_diff comes in handy. It just splits the line into multiple chunks according to one or multiple separators and then compares the chunks. Furthermore you can first sort the chunks. This is handy when the two lines are not ordered the same way (for example PATH variables from different machines).&lt;/p&gt;
&lt;p&gt;&lt;!-- /wp:paragraph --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- wp:paragraph --&gt;&lt;/p&gt;
&lt;p&gt;line_diff is written in Rust and available on &lt;a href=&quot;https://crates.io/crates/line_diff&quot;&gt;crates.io&lt;/a&gt;. The source code is on &lt;a href=&quot;https://github.com/Niederb/line_diff&quot;&gt;Github&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;!-- /wp:paragraph --&gt;&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="de">
        <title>How long is the annual report of the Swiss National Bank?</title>
        <published>2019-09-10T00:00:00+00:00</published>
        <updated>2019-09-10T00:00:00+00:00</updated>
        
        <author>
          <name>Thomas Niederberger</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://niederb.ch/annual-report-swiss-national-bank/"/>
        <id>https://niederb.ch/annual-report-swiss-national-bank/</id>
        
        <content type="html" xml:base="https://niederb.ch/annual-report-swiss-national-bank/">&lt;p&gt;The &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Swiss_National_Bank&quot;&gt;Swiss National Bank&lt;/a&gt; was founded on the 16. January 1906 and on the website of the bank all annual reports since then are available for download. A 111 reports in total!&lt;/p&gt;
&lt;p&gt;So how did the reports change over time? I grabbed all the reports from the website and counted the pages. Here is a plot showing how they got longer over the years:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://niederb.ch/annual-report-swiss-national-bank/length-annual-report.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="de">
        <title>Book review: The Soul of a new Machine</title>
        <published>2019-09-08T00:00:00+00:00</published>
        <updated>2019-09-08T00:00:00+00:00</updated>
        
        <author>
          <name>Thomas Niederberger</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://niederb.ch/book-review-the-soul-of-a-new-machine/"/>
        <id>https://niederb.ch/book-review-the-soul-of-a-new-machine/</id>
        
        <content type="html" xml:base="https://niederb.ch/book-review-the-soul-of-a-new-machine/">&lt;p&gt;&lt;img src=&quot;https://upload.wikimedia.org/wikipedia/en/2/28/The_soul_of_a_new_machine_--_book_cover.jpg&quot; alt=&quot;The soul of a new machine -- book cover.jpg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The Soul of a new machine by Tracy Kidder is the story of the engineering team tasked with creating a new 32 bit processor. The goal is to build the &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Data_General_Eclipse_MV/8000&quot;&gt;Data General Eclipse MV/8000&lt;/a&gt;. Kidder follows the entire process of how the team build the machine in a short amount of time and with little resources.&lt;/p&gt;
&lt;p&gt;Even though the book is old it holds up quite well as the technology is not a major concern of the book. Instead it focuses on the team and how the engineers work together. The soul of the machine is the team that built it. This is great!&lt;/p&gt;
&lt;p&gt;The overall approach is understandable and as an engineer I can still follow what they are trying to achieve and the problems they struggle with. It shows how a bunch of people create a product by sheer will and against all odds. This is impressive and is what makes this book unique.&lt;/p&gt;
&lt;h2 id=&quot;the-management-philosophy&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#the-management-philosophy&quot; aria-label=&quot;Anchor link for: the-management-philosophy&quot;&gt;The management philosophy&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;What I really struggle with though is the management philosophy of Data General which is a major part of the book: &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Mushroom_management&quot;&gt;Mushroom management&lt;/a&gt;, keep the employees in the dark and feed them bullshit.&lt;/p&gt;
&lt;p&gt;The engineers struggle with impossible deadlines and are given very little resources. Management expects engineers to do huge amounts of overtime for free, while at the same time it is not even clear if the processor will ever see the light of day. Although it seems to have worked out in this case, I think this is a route to misery. More often than not you will find out at some point that the whole thing  just does not work. People will start to walk away and and the whole project collapses.&lt;/p&gt;
&lt;p&gt;Now it is not really the fault of Tracy Kidder as he just documents how Data General worked, but it annoyed me a lot while reading. Kidder does not directly endorse this philosophy, but still implies that it is a great achievement by management to get the project done. I personally rather think the project got done despite the all mismanagement.&lt;/p&gt;
&lt;p&gt;The real problem is that now, thirty years later managers still seem to think that the books provides valuable lessons about how to manage engineers. And this is very misguided. Reading some of the reviews for &quot;The Soul of a new Machine&quot; on Amazon where the reviewer advocates this kind of management style gives me shudders.&lt;/p&gt;
&lt;p&gt;This book is outdated not because of the technology that does not hold up, but because of the philosophy and ethics that do not hold up. It belongs to the pile of outdated books (it can join &quot;The mythical man month&quot;) that should only be read for their historical relevance. There is nothing to learn here.&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="de">
        <title>Book review: Steve Jobs - The Exclusive Biography</title>
        <published>2019-08-22T00:00:00+00:00</published>
        <updated>2019-08-22T00:00:00+00:00</updated>
        
        <author>
          <name>Thomas Niederberger</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://niederb.ch/book-review-steve-jobs-the-exclusive-biography/"/>
        <id>https://niederb.ch/book-review-steve-jobs-the-exclusive-biography/</id>
        
        <content type="html" xml:base="https://niederb.ch/book-review-steve-jobs-the-exclusive-biography/">&lt;p&gt;&lt;img src=&quot;https://upload.wikimedia.org/wikipedia/en/e/e4/Steve_Jobs_by_Walter_Isaacson.jpg&quot; alt=&quot;Steve Jobs by Walter Isaacson.jpg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I was never very interested in Apple or Steve Jobs. I had a Macbook once for some years, but never really warmed up to the whole ecosystem. Then a couple of weeks ago I watched the &quot;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=6iACK-LNnzM&quot;&gt;1997 WWDC Fireside Chat with Steve Jobs&lt;/a&gt;&quot; video and the video really impressed me. Steve Jobs is just talking his mind and answering questions by the audience which were quite critical due to the problems Apple was struggling with at the time. Steve Jobs speaks very openly of where he wants to go and what went wrong. He is very clear that they need to focus and kill multiple projects for this reason in order to play to their strengths.&lt;/p&gt;
&lt;p&gt;This triggered my interest and I wanted to learn more about Apple in general and Steve Jobs specifically. So I watched the Steve Jobs move from 2015 but was not very satisfied. So then I decided to read the biography by Walter Isaacson and I recently finished reading it.&lt;/p&gt;
&lt;h2 id=&quot;the-book&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#the-book&quot; aria-label=&quot;Anchor link for: the-book&quot;&gt;The book&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I was a bit worried about the length of the book as it is more than 600 pages thick. I was dreading long sections about early childhood, but I was pleasantly surprised by how quickly the book progresses. By page 80 the book is already starting to describe the beginnings of Apple and their first product: The apple I. The book keeps up a fast pace all the way until the end. The book strikes a good balance between too little and too many details.&lt;/p&gt;
&lt;p&gt;This fact shows that Jobs had an interesting life. Filling a 600 page book without going into too much detail is quite an achievement. For me the most interesting part was from when they founded Apple until he returned to Apple. I was not very familiar with this story, so it was mostly new for me.&lt;/p&gt;
&lt;p&gt;I have only two minor complaints about the book:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Some pictures of the products would have improved some sections. For example Isaacson goes to great length about describing the shape of an iPad. A picture could have shown that. I also would have enjoyed to see some early design sketches.&lt;/li&gt;
&lt;li&gt;Isaacson does give some space to critics of Jobs, but I would have appreciated some more details.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;steve-jobs-the-myth&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#steve-jobs-the-myth&quot; aria-label=&quot;Anchor link for: steve-jobs-the-myth&quot;&gt;Steve Jobs - The myth&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;By reading the book I wanted to find the answer to the question: what made Jobs so successful and convincing? The book makes it clear that he was difficult to deal with: manipulative, stubborn, emotional, .... So how did he get some of the most skilled people in the world to work for him? And how did he get them to do some of their best work? Jobs somehow had the skill to push people beyond their usual limits and making their best work. What was his secret?&lt;/p&gt;
&lt;p&gt;I think people worked for him because he had a clear vision and was consequential about pursuing it. Convince employees of your vision and give them the necessary resources. I think some honest criticism is also a valuable tool to push people into improving their work. Additionally he had a good intuition about what the customers need and what makes a product &quot;work&quot;.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#conclusion&quot; aria-label=&quot;Anchor link for: conclusion&quot;&gt;Conclusion&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Overall I really enjoyed reading the book. I&#39;m really impressed how much Jobs loved Apple. He wanted to build something lasting. A company for the next 100 years. Did he succeed? Only time will tell...&lt;/p&gt;
&lt;p&gt;While reading I also got interested in the story behind Pixar and therefore I want to read Creativity, Inc. by Ed Catmull. I will also check some of the other books that the Walter Isaacson wrote.&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="de">
        <title>Blues Brothers Cardboard Picture</title>
        <published>2019-08-10T00:00:00+00:00</published>
        <updated>2019-08-10T00:00:00+00:00</updated>
        
        <author>
          <name>Thomas Niederberger</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://niederb.ch/blues-brothers-cardboard-picture/"/>
        <id>https://niederb.ch/blues-brothers-cardboard-picture/</id>
        
        <content type="html" xml:base="https://niederb.ch/blues-brothers-cardboard-picture/">&lt;p&gt;&lt;em&gt;This is actually an older post, but it somehow got lost and I&#39;m reposting it.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;A few weeks ago I was in the mood to build another piece of art. After a few hours of thinking, I decided to handicraft a picture out of cardboard. Since &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/The_Blues_Brothers_%28film%29&quot;&gt;Blues Brothers&lt;/a&gt; is one of my favorite movies I chose picture with Jake and Elwood as original reference. I ripped some cardboard to small pieces and glued them on a paper. After that i copied the original on the paper and cut it out. Finally i sprayed the remaining pieces black and attached everything on our white wall.&lt;/p&gt;
&lt;p&gt;This is the original picture:&lt;br /&gt;
&lt;img src=&quot;https://niederb.ch/blues-brothers-cardboard-picture/blues-brothers.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;And here&#39;s the result:&lt;br /&gt;
&lt;img src=&quot;https://niederb.ch/blues-brothers-cardboard-picture/blues-brothers-cardboard.jpg&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
I&#39;m quite happy with the result and it looks really great:&lt;br /&gt;
&lt;img src=&quot;https://niederb.ch/blues-brothers-cardboard-picture/blues-brothers-sideways.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="de">
        <title>Book review: API design for C++</title>
        <published>2019-08-07T00:00:00+00:00</published>
        <updated>2019-08-07T00:00:00+00:00</updated>
        
        <author>
          <name>Thomas Niederberger</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://niederb.ch/book-review-api-design-for-c/"/>
        <id>https://niederb.ch/book-review-api-design-for-c/</id>
        
        <content type="html" xml:base="https://niederb.ch/book-review-api-design-for-c/">&lt;p&gt;&lt;img src=&quot;https://niederb.ch/book-review-api-design-for-c/image.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I just finished the book &quot;API design for C++&quot; by Martin Reddy and wrote this review while reading.&lt;/p&gt;
&lt;p&gt;I was mainly interested in the C++ part of the book, meaning how to design an API while considering the peculiarities of C++. As an experienced C++ programmer I wanted to know more about topics such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Application binary interface (ABI) and how to achieve binary compatibility&lt;/li&gt;
&lt;li&gt;How to design an API that is binary compatible or compiler independent&lt;/li&gt;
&lt;li&gt;Issues with memory allocations across dynamic libraries&lt;/li&gt;
&lt;li&gt;Issues with exceptions across libraries&lt;/li&gt;
&lt;li&gt;Trade offs are regarding recompilation, stability and compiler dependencies&lt;/li&gt;
&lt;li&gt;Dealing with changes in APIs and how to implement versioning for an API&lt;/li&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;contents&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#contents&quot; aria-label=&quot;Anchor link for: contents&quot;&gt;Contents&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The book starts off with some introduction and then explains what kind of features a good API should have (such as Robust, platform independent,, ...). No big surprises here.&lt;/p&gt;
&lt;p&gt;After that the book discusses some design patterns that play a role in API design (factory, observer, ...). Mostly standard GoF patterns with the exceptions of the pimpl idiom which is specific to C++. In this section it becomes clear that the books is a bit outdated regarding the C++ standard. Multiple suggestions by the book are not state of the art anymore. Not a big issue but an updated version would be nice. At least the book already uses smart pointers.&lt;/p&gt;
&lt;p&gt;I bought the book more or less for the next two chapters: &quot;Styles&quot; and &quot;C++ usage&quot;. The &quot;Styles&quot; chapter discusses different kinds of APIs such as flat C API, object oriented C++ design or template based design. The chapter is only 22 pages long, which I found quite disappointing as I consider this chapter the heart of the book. Consequently the book hardly scratches the surface. I would have liked the book to cover topics such as how to provide a C API as a thin wrapper but using C++ internally. Or how to deal with classes from the standard library when potentially using different compilers. The &quot;C++ usage&quot; chapter is only marginally connected to API design. It is more a best practice for C++. Most of the content is ok, but some of it is outdated and would expect that most readers already know most of it.&lt;/p&gt;
&lt;p&gt;The &quot;Performance&quot; chapter is again more a best practice and only slightly related to C++ API design.&lt;/p&gt;
&lt;p&gt;The next chapter was of interest for me: Versioning. The book starts a the very beginning and explains what version numbers are and what they me. I find this a bit too basic for such a book as I would expect most readers to be experienced developers. It also explains the basic ideas how to use version numbers in an API but does not offer much insight. I would have liked to see an example of how to write an API that is backward compatible. Mainly how to do it without checking the version number in dozens of places and creating a big mess.&lt;/p&gt;
&lt;p&gt;The chapters about Documentation and Testing are alright. They don&#39;t offer many surprises and if you ever read a book about these topics you won&#39;t learn much new from here.&lt;/p&gt;
&lt;p&gt;The two last chapters about &quot;Scripting&quot; and &quot;Extensiblity&quot; are more interesting again. In &quot;Scripting&quot; to book explains how to use an C++ API with Python or Ruby. This is something that interests me a lot, but the chapter is finished as soon as it gets interesting. The same goes for &quot;Extensibility&quot;: It is just not detailed enough.&lt;/p&gt;
&lt;h3 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#conclusion&quot; aria-label=&quot;Anchor link for: conclusion&quot;&gt;Conclusion&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The book is well written and quite easy to read. The concepts are well explained and the code examples are helpful. The book is well structures with relatively short chapters that are easy to digest. Content wise there is a chapter for all major aspects of an API, but most of the time it does not go deep enough for me.&lt;/p&gt;
&lt;p&gt;This puts the book into a somewhat weird spot: It is not detailed enough to write real C++ APIs as it does not go deep enough into topics such as ABI. On the other hand the book offers some good advice for beginners, but if you are a beginner then it is problematic that the book is not up to date with the newest C++ standard. Therefore I cannot really recommend the book: For experienced developers there is not much new to learn as the book does not go into the nitty gritty details. For beginners the book is too outdated.&lt;/p&gt;
&lt;p&gt;2 out of 5 stars from me.&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="de">
        <title>SIX - kotierte Unternehmen (Teil 3)</title>
        <published>2019-02-03T00:00:00+00:00</published>
        <updated>2019-02-03T00:00:00+00:00</updated>
        
        <author>
          <name>Thomas Niederberger</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://niederb.ch/six-kotierte-unternehmen-teil-3/"/>
        <id>https://niederb.ch/six-kotierte-unternehmen-teil-3/</id>
        
        <content type="html" xml:base="https://niederb.ch/six-kotierte-unternehmen-teil-3/">&lt;p&gt;&lt;!-- wp:paragraph --&gt;&lt;/p&gt;
&lt;p&gt; Dies ist der dritte Teil meiner kleinen Analyse der &lt;a href=&quot;https://de.wikipedia.org/wiki/SIX_Swiss_Exchange&quot; target=&quot;_blank&quot; rel=&quot;noreferrer noopener&quot; aria-label=&quot;SIX  (opens in a new tab)&quot;&gt;SIX &lt;/a&gt;kotierten Unternehmen. Wie beim &lt;a href=&quot;http://niederb.ch/?p=285&quot;&gt;ersten Teil&lt;/a&gt; und beim &lt;a href=&quot;http://niederb.ch/?p=293&quot;&gt;zweiten Teil &lt;/a&gt;ber&amp;uuml;ckichtige ich hier nur die prim&amp;auml;rkotierten Unternehmen. &lt;/p&gt;
&lt;p&gt;&lt;!-- /wp:paragraph --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- wp:heading {&quot;level&quot;:4} --&gt;&lt;/p&gt;
&lt;h4&gt;Jahresabschlussdatum &lt;/h4&gt;
&lt;p&gt;&lt;!-- /wp:heading --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- wp:paragraph --&gt;&lt;/p&gt;
&lt;p&gt;Wie erwartet schliessen die meisten Unternehmen das Gesch&amp;auml;ftsjahr am 31.12 ab. Interessant ist immerhin, dass das auf Rang zwei ein Abschluss am 31.03 ist.&lt;/p&gt;
&lt;p&gt;&lt;!-- /wp:paragraph --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- wp:table --&gt;&lt;/p&gt;
&lt;table class=&quot;wp-block-table&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Jahresabschlussdatum&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Anzahl Unternehmen&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;30.04.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;30.06.&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;30.09.&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;31.03.&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;31.07.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;31.08.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;31.10.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;31.12.&lt;/td&gt;
&lt;td&gt;212&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;!-- /wp:table --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- wp:heading {&quot;level&quot;:4} --&gt;&lt;/p&gt;
&lt;h4&gt;Rechnungslegungsnorm&lt;/h4&gt;
&lt;p&gt;&lt;!-- /wp:heading --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- wp:table --&gt;&lt;/p&gt;
&lt;table class=&quot;wp-block-table&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Rechnungslegungsnorm&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Anzahl Unternehmen&lt;/strong&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bankengesetz&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IFRS&lt;/td&gt;
&lt;td&gt;132&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Swiss GAAP FER&lt;/td&gt;
&lt;td&gt;75&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;US GAAP&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;!-- /wp:table --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- wp:heading {&quot;level&quot;:4} --&gt;&lt;/p&gt;
&lt;h4&gt;Revisor&lt;/h4&gt;
&lt;p&gt;&lt;!-- /wp:heading --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- wp:paragraph --&gt;&lt;/p&gt;
&lt;p&gt;Es dominieren mehrheitlich die f&amp;uuml;nf grossen Revisoren: BDO, Deloitte, Ernst &amp;amp; Young, KPMG und  PricewaterhouseCoopers .&lt;/p&gt;
&lt;p&gt;&lt;!-- /wp:paragraph --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- wp:paragraph --&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Anmerkung: Die Firmen werden teilweise unter verschiedenen Namen aufgef&amp;uuml;hrt (z.B. PRICE WATERHOUSE COOPERS AG, BASEL und PricewaterhouseCoopers AG) aufgef&amp;uuml;hrt. Die verschiedenen Varianten habe ich jeweils aufsummiert.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- /wp:paragraph --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- wp:table --&gt;&lt;/p&gt;
&lt;table class=&quot;wp-block-table&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Revisor&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Anzahl Unternehmen&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Prozentualer Anteil&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BDO&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;6.75&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deloitte&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;4.64&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ernst &amp;amp; Young&lt;/td&gt;
&lt;td&gt;53&lt;/td&gt;
&lt;td&gt;22.36&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KPMG&lt;/td&gt;
&lt;td&gt;57&lt;/td&gt;
&lt;td&gt;24.05&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PricewaterhouseCoopers&lt;/td&gt;
&lt;td&gt;94&lt;/td&gt;
&lt;td&gt;39.66&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Andere&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;2.53&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;!-- /wp:table --&gt;&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="de">
        <title>SIX - kotierte Unternehmen (Teil 2)</title>
        <published>2019-01-13T00:00:00+00:00</published>
        <updated>2019-01-13T00:00:00+00:00</updated>
        
        <author>
          <name>Thomas Niederberger</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://niederb.ch/six-kotierte-unternehmen-teil-2/"/>
        <id>https://niederb.ch/six-kotierte-unternehmen-teil-2/</id>
        
        <content type="html" xml:base="https://niederb.ch/six-kotierte-unternehmen-teil-2/">&lt;p&gt;&lt;!-- wp:paragraph --&gt;&lt;/p&gt;
&lt;p&gt;Dies ist der zweite Teil meiner kleinen Analyse der &lt;a href=&quot;https://de.wikipedia.org/wiki/SIX_Swiss_Exchange&quot; target=&quot;_blank&quot; rel=&quot;noreferrer noopener&quot; aria-label=&quot;SIX  (opens in a new tab)&quot;&gt;SIX &lt;/a&gt;kotierten Unternehmen. Wie beim &lt;a href=&quot;http://niederb.ch/?p=285&quot;&gt;ersten Teil &lt;/a&gt;ber&amp;uuml;ckichtige ich hier nur die prim&amp;auml;rkotierten Unternehmen (siehe auch &lt;a href=&quot;http://niederb.ch/six-kotierte-unternehmen-teil-3/&quot;&gt;Teil 3&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;!-- /wp:paragraph --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- wp:heading {&quot;level&quot;:4} --&gt;&lt;/p&gt;
&lt;h4&gt;Papierart&lt;/h4&gt;
&lt;p&gt;&lt;!-- /wp:heading --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- wp:paragraph --&gt;&lt;/p&gt;
&lt;p&gt;Bei den Papierarten dominieren die Namenaktien. Dazu gibt es noch ca. 10% Inhaberaktien:&lt;/p&gt;
&lt;p&gt;&lt;!-- /wp:paragraph --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- wp:table --&gt;&lt;/p&gt;
&lt;table class=&quot;wp-block-table&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Papierart&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Anzahl Unternehmen&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Inhaberaktie&lt;/td&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Genussschein&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Partizipationsschein&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Namenaktie&lt;/td&gt;
&lt;td&gt;201&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;!-- /wp:table --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- wp:heading {&quot;level&quot;:4} --&gt;&lt;/p&gt;
&lt;h4&gt;Jahresabschlussdatum&lt;/h4&gt;
&lt;p&gt;&lt;!-- /wp:heading --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- wp:paragraph --&gt;&lt;/p&gt;
&lt;p&gt;Die meisten Unternehmen haben den Jahresabschluss am 31.12:&lt;/p&gt;
&lt;p&gt;&lt;!-- /wp:paragraph --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- wp:table --&gt;&lt;/p&gt;
&lt;table class=&quot;wp-block-table&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Jahresabschlussdatum&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt; &lt;strong&gt;Anzahl Unternehmen&lt;/strong&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;30.04.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;30.06.&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;30.09.&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;31.03.&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;31.07.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;31.08.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;31.10.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;31.12.&lt;/td&gt;
&lt;td&gt;212&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;!-- /wp:table --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- wp:paragraph --&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(Von ASMALLWORLD AG ist kein Jahresabschlussdatum verf&amp;uuml;gbar)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- /wp:paragraph --&gt;&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="de">
        <title>SIX - kotierte Unternehmen</title>
        <published>2019-01-12T00:00:00+00:00</published>
        <updated>2019-01-12T00:00:00+00:00</updated>
        
        <author>
          <name>Thomas Niederberger</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://niederb.ch/six-kotierte-unternehmen/"/>
        <id>https://niederb.ch/six-kotierte-unternehmen/</id>
        
        <content type="html" xml:base="https://niederb.ch/six-kotierte-unternehmen/">&lt;p&gt;&lt;!-- wp:paragraph --&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Siehe auch &lt;/em&gt;&lt;a href=&quot;http://niederb.ch/six-kotierte-unternehmen-teil-2/&quot;&gt;&lt;em&gt;Teil 2&lt;/em&gt;&lt;/a&gt;&lt;em&gt; und &lt;/em&gt;&lt;a href=&quot;http://niederb.ch/six-kotierte-unternehmen-teil-3/&quot;&gt;&lt;em&gt;Teil 3&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- /wp:paragraph --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- wp:paragraph --&gt;&lt;/p&gt;
&lt;p&gt;In der letzten Zeit habe ich mich ein bisschen mit den Firmen an der &lt;a href=&quot;https://de.wikipedia.org/wiki/SIX_Swiss_Exchange&quot; target=&quot;_blank&quot; rel=&quot;noreferrer noopener&quot; aria-label=&quot;Schweizer B&amp;ouml;rse (opens in a new tab)&quot;&gt;Schweizer B&amp;ouml;rse&lt;/a&gt; besch&amp;auml;ftigt. In diesem Post habe ich ein paar Statistiken dazu dokumentiert. Bei der SIX kann man ein praktischerweise eine .csv Datei mit den ganzen &lt;a rel=&quot;noreferrer noopener&quot; aria-label=&quot;Unternehmensdaten herunterladen (opens in a new tab)&quot; href=&quot;https://www.six-group.com/exchanges/shares/companies/&quot; target=&quot;_blank&quot;&gt;Unternehmensdaten herunterladen&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;!-- /wp:paragraph --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- wp:paragraph --&gt;&lt;/p&gt;
&lt;p&gt;Zum Stichtag vom 9.1.2018 sind 261 Unternehmen bei der SIX kotiert. Die allermeisten davon mit SIX als prim&amp;auml;rer Kotierung:&lt;/p&gt;
&lt;p&gt;&lt;!-- /wp:paragraph --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- wp:table --&gt;&lt;/p&gt;
&lt;table class=&quot;wp-block-table&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Sekund&amp;auml;rkotiert&lt;/td&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Prim&amp;auml;rkotiert&lt;/td&gt;
&lt;td&gt;237&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;261&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;!-- /wp:table --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- wp:paragraph --&gt;&lt;/p&gt;
&lt;p&gt;Ab hier werde ich nur noch die prim&amp;auml;rkotierten Unternehmen ber&amp;uuml;cksichtigen.&lt;/p&gt;
&lt;p&gt;&lt;!-- /wp:paragraph --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- wp:paragraph --&gt;&lt;/p&gt;
&lt;p&gt;Die meisten der prim&amp;auml;rkotierten Firmen stammen aus der Schweiz (223) aber einige stammen aus anderen L&amp;auml;ndern:&lt;/p&gt;
&lt;p&gt;&lt;!-- /wp:paragraph --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- wp:table --&gt;&lt;/p&gt;
&lt;table class=&quot;wp-block-table&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&amp;Ouml;sterreich&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Grossbritannien&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Guernsey&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Israel&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Italien&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Liechtenstein&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Niederlande&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Britische Jungferninseln&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;!-- /wp:table --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- wp:paragraph --&gt;&lt;/p&gt;
&lt;p&gt;Die Firmen k&amp;ouml;nnen sich auch freiwillig bei SIX melden wenn sie einen Nachhaltigkeitsbericht nach anerkanntem Standard erstellen. Davon machen jedoch nur gerade 15 Unternehmen gebrauch. Die Liste aller Unternehmen mit Nachhaltigkeitsbericht gibt es bei &lt;a rel=&quot;noreferrer noopener&quot; aria-label=&quot;SIX zu sehen. (opens in a new tab)&quot; href=&quot;https://www.six-group.com/exchanges/shares/companies/sustainability_reporting_de.html&quot; target=&quot;_blank&quot;&gt;SIX zu sehen.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- /wp:paragraph --&gt;&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="de">
        <title>Half Random Forests</title>
        <published>2016-03-06T00:00:00+00:00</published>
        <updated>2016-03-06T00:00:00+00:00</updated>
        
        <author>
          <name>Thomas Niederberger</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://niederb.ch/half-random-forests/"/>
        <id>https://niederb.ch/half-random-forests/</id>
        
        <content type="html" xml:base="https://niederb.ch/half-random-forests/">&lt;p&gt;I used &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Random_forest&quot;&gt;random forests&lt;/a&gt; quite often for my research. Recently I have been thinking about a small change in random forests that I call &quot;Half Random Forest&quot;. Instead of choosing new variables at each split the variables are chosen only once for each tree. The main advantage I see for this approach is that each tree relies only on a few variables. This is advantageous when some of the variables are missing.&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#how-it-works&quot; aria-label=&quot;Anchor link for: how-it-works&quot;&gt;How it works&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;During training you pick N features for each tree. Then the training data elements are filtered such that all items have values for the selected features. The selected features are stored for each tree and then the trees are trained.&lt;/p&gt;
&lt;p&gt;For classifying a new item you would then only decide based on the trees that don&#39;t rely on any of the missing values.&lt;/p&gt;
&lt;p&gt;The procedure leads to more correlated trees and of course if too many values are missing the decision would be based on only a few trees (or even none) but for typical use cases enough trees should remain (plus you can always train more trees).&lt;/p&gt;
&lt;h2 id=&quot;results&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#results&quot; aria-label=&quot;Anchor link for: results&quot;&gt;Results&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The first results I got when I experimented with a simple implementation were quite promising. Sadly when I tested my approach against a normal Random Forest where I replaced the missing variables with the mean the Random Forest outperformed my approach. So it seems my approach does not that well. However when I find the time I would still like to perform tests with a second data set.&lt;/p&gt;
&lt;p&gt;The implementation is available on &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/Niederb/python_machine_learning/blob/master/half_random_forest/code/half_random_forest.py&quot;&gt;GitHub&lt;/a&gt; here if anyone wants to try it out himself&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="de">
        <title>Colored city maps</title>
        <published>2016-01-25T00:00:00+00:00</published>
        <updated>2016-01-25T00:00:00+00:00</updated>
        
        <author>
          <name>Thomas Niederberger</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://niederb.ch/colored-city-maps/"/>
        <id>https://niederb.ch/colored-city-maps/</id>
        
        <content type="html" xml:base="https://niederb.ch/colored-city-maps/">&lt;p&gt;My last art project was about generating for maps of cities and printing them on canvases. The plan was to use 4 cities and print each city onto a separate canvas.&lt;/p&gt;
&lt;p&gt;Three cities were obvious choices: Zurich, Barcelona and Chicago, but to decide on the fourth took me quite some time. In the end I settled on Osaka, Japan. It&#39;s the only one of the cities I haven&#39;t visited yet (hope this changes soon).&lt;/p&gt;
&lt;p&gt;Each city was supposed to have a different color and it took me a while to find a way how I can extract the maps from Google maps (I also considered OpenStreetMap). I used a simple HTML file that used the Google maps API to set the center of the image and the colors for buildings, streets, water and trains. &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;http://paletton.com/&quot;&gt;Paletton&lt;/a&gt; proved to be a great tool to experiment with different colors schemes. Finally I used the &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https://addons.mozilla.org/de/firefox/addon/screenshoter-fixed/?src=api&quot;&gt;Screenshoter&lt;/a&gt; add-on for Firefox to store a high resolution images of each map. Then I just sent the image to a photo service that printed it on a canvas.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://niederb.ch/colored-city-maps/cities-final.png&quot;&gt;This is how the final colors of the cities looked like when I ordered them:&lt;img src=&quot;https://niederb.ch/colored-city-maps/cities-final.png&quot; alt=&quot;cities-final&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I like that the maps look abstract but still have a very real interpretation.&lt;br /&gt;
This is how the canvases look mounted onto the wall in my linving room&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://niederb.ch/colored-city-maps/2016-01-17-16.42.39.jpg&quot;&gt;&lt;img src=&quot;https://niederb.ch/colored-city-maps/2016-01-17-16.42.39.jpg&quot; alt=&quot;2016-01-17 16.42.39&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here is the HTML script, each city used different colors (and of course a different center position):&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;html&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;!&lt;/span&gt;&lt;span class=&quot;z-9&quot;&gt;DOCTYPE&lt;/span&gt;&lt;span class=&quot;z-7&quot;&gt; html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;z-9&quot;&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  &amp;lt;&lt;/span&gt;&lt;span class=&quot;z-9&quot;&gt;head&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&lt;/span&gt;&lt;span class=&quot;z-9&quot;&gt;style&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-7 z-b&quot;&gt;      #map_canvas&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-6&quot;&gt;        width&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt; 4000&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt;px&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-6&quot;&gt;        height&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt; 4000&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt;px&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;/&lt;/span&gt;&lt;span class=&quot;z-9&quot;&gt;style&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&lt;/span&gt;&lt;span class=&quot;z-9&quot;&gt;script&lt;/span&gt;&lt;span class=&quot;z-7&quot;&gt; src&lt;/span&gt;&lt;span&gt;=&amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;https://maps.googleapis.com/maps/api/js&lt;/span&gt;&lt;span&gt;&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;z-9&quot;&gt;script&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&lt;/span&gt;&lt;span class=&quot;z-9&quot;&gt;script&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-3&quot;&gt;      function&lt;/span&gt;&lt;span class=&quot;z-5&quot;&gt; initialize&lt;/span&gt;&lt;span&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-3&quot;&gt;        var&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; map_canvas&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; document&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span class=&quot;z-5&quot;&gt;getElementById&lt;/span&gt;&lt;span&gt;(&amp;#39;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;map_canvas&lt;/span&gt;&lt;span&gt;&amp;#39;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-6&quot;&gt;    building&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt; =&lt;/span&gt;&lt;span&gt; &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;#C0C0C0&lt;/span&gt;&lt;span&gt;&amp;quot;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-6&quot;&gt;    nature&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; building&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;    //barca&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;    /*transit = &amp;quot;#FFBBCC&amp;quot;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;    road = &amp;quot;#C00108&amp;quot;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;    water = &amp;quot;#993300&amp;quot;;*/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;    //chicago&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;    /*transit = &amp;quot;#CCFFBB&amp;quot;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;    road = &amp;quot;#2C6700&amp;quot;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;    water = &amp;quot;#004040&amp;quot;;*/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;    //zurich&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;    /*transit = &amp;quot;#6600CC&amp;quot;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;    road = &amp;quot;#5E9DC8&amp;quot;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;    water = &amp;quot;#0C2C52&amp;quot;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;    nature = &amp;quot;#C0C0C0&amp;quot;;*/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;    //Osaka&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;    /*transit = &amp;quot;#CC9900&amp;quot;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;    road = &amp;quot;#663300&amp;quot;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;    water = &amp;quot;#CC6600&amp;quot;;*/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;    //barca&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-6&quot;&gt;    transit&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt; =&lt;/span&gt;&lt;span&gt; &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;#FFAAAA&lt;/span&gt;&lt;span&gt;&amp;quot;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-6&quot;&gt;    transit&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt; =&lt;/span&gt;&lt;span&gt; &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;#FF0606&lt;/span&gt;&lt;span&gt;&amp;quot;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-6&quot;&gt;    transit&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt; =&lt;/span&gt;&lt;span&gt; &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;#d09797&lt;/span&gt;&lt;span&gt;&amp;quot;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-6&quot;&gt;    road&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt; =&lt;/span&gt;&lt;span&gt; &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;#AA3939&lt;/span&gt;&lt;span&gt;&amp;quot;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-6&quot;&gt;    water&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt; =&lt;/span&gt;&lt;span&gt; &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;#550000&lt;/span&gt;&lt;span&gt;&amp;quot;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;    //Osaka&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-6&quot;&gt;    transit&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt; =&lt;/span&gt;&lt;span&gt; &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;#FFE4AA&lt;/span&gt;&lt;span&gt;&amp;quot;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-6&quot;&gt;    transit&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt; =&lt;/span&gt;&lt;span&gt; &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;#FFBB2D&lt;/span&gt;&lt;span&gt;&amp;quot;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-6&quot;&gt;    road&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt; =&lt;/span&gt;&lt;span&gt; &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;#AA8639&lt;/span&gt;&lt;span&gt;&amp;quot;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-6&quot;&gt;    water&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt; =&lt;/span&gt;&lt;span&gt; &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;#553A00&lt;/span&gt;&lt;span&gt;&amp;quot;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;    //zurich&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;    /*transit = &amp;quot;#7986AC&amp;quot;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;    transit = &amp;quot;#3257BB&amp;quot;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;    road = &amp;quot;#2F4172&amp;quot;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;    water = &amp;quot;#061439&amp;quot;;*/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;    //chicago&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;    /*transit = &amp;quot;#FF0000&amp;quot;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;    //transit = &amp;quot;#88CC88&amp;quot;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;    //transit = &amp;quot;#15B115&amp;quot;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;    //transit = &amp;quot;#a3dfa3&amp;quot;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;    transit = &amp;quot;#b9f1b9&amp;quot;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;    road = &amp;quot;#2D882D&amp;quot;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;    water = &amp;quot;#004400&amp;quot;;*/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-3&quot;&gt;        var&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; map_options&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt; =&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;  		  //Barca&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  		  center:&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; google&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt;maps&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span class=&quot;z-5&quot;&gt;LatLng&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt;41.386963&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt; 2.169908&lt;/span&gt;&lt;span&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;      //Osaka&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;      center:&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; google&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt;maps&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span class=&quot;z-5&quot;&gt;LatLng&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt;34.702470&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt; 135.500661&lt;/span&gt;&lt;span&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;      //Zurich&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;      //center: new google.maps.LatLng(47.371177, 8.540492),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;      //Chicago&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;          //center: new google.maps.LatLng(41.876115,-87.626142),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;      //St Petersburt&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;      //center: new google.maps.LatLng(59.929995, 30.310119),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;      //Stockholm&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;      //center: new google.maps.LatLng(59.329728, 18.067818),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;      //Teheran&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2 z-i&quot;&gt;      //center: new google.maps.LatLng(35.686039, 51.388174),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          zoom:&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt; 16&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          mapTypeId:&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; google&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt;maps&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt;MapTypeId&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt;ROADMAP&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-3&quot;&gt;        var&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; map&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt; = new&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; google&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt;maps&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span class=&quot;z-5&quot;&gt;Map&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt;map_canvas&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; map_options&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-6&quot;&gt;    map&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span class=&quot;z-5&quot;&gt;set&lt;/span&gt;&lt;span&gt;(&amp;#39;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;styles&lt;/span&gt;&lt;span&gt;&amp;#39;, [ { &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;stylers&lt;/span&gt;&lt;span&gt;&amp;quot;: [ { &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;visibility&lt;/span&gt;&lt;span&gt;&amp;quot;: &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;simplified&lt;/span&gt;&lt;span&gt;&amp;quot; } ] },{ &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;elementType&lt;/span&gt;&lt;span&gt;&amp;quot;: &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;labels&lt;/span&gt;&lt;span&gt;&amp;quot;, &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;stylers&lt;/span&gt;&lt;span&gt;&amp;quot;: [ { &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;visibility&lt;/span&gt;&lt;span&gt;&amp;quot;: &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;off&lt;/span&gt;&lt;span&gt;&amp;quot; } ] },{ &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;featureType&lt;/span&gt;&lt;span&gt;&amp;quot;: &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;poi&lt;/span&gt;&lt;span&gt;&amp;quot;, &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;stylers&lt;/span&gt;&lt;span&gt;&amp;quot;: [ { &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;visibility&lt;/span&gt;&lt;span&gt;&amp;quot;: &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;off&lt;/span&gt;&lt;span&gt;&amp;quot; } ] },{ &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;featureType&lt;/span&gt;&lt;span&gt;&amp;quot;: &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;landscape.man_made&lt;/span&gt;&lt;span&gt;&amp;quot;, &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;stylers&lt;/span&gt;&lt;span&gt;&amp;quot;: [ { &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;color&lt;/span&gt;&lt;span&gt;&amp;quot;:&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; building&lt;/span&gt;&lt;span&gt; } ] },{ &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;featureType&lt;/span&gt;&lt;span&gt;&amp;quot;: &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;road&lt;/span&gt;&lt;span&gt;&amp;quot;, &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;stylers&lt;/span&gt;&lt;span&gt;&amp;quot;: [ { &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;color&lt;/span&gt;&lt;span&gt;&amp;quot;:&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; road&lt;/span&gt;&lt;span&gt; } ] },{ &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;featureType&lt;/span&gt;&lt;span&gt;&amp;quot;: &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;landscape.natural&lt;/span&gt;&lt;span&gt;&amp;quot;, &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;stylers&lt;/span&gt;&lt;span&gt;&amp;quot;: [ { &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;color&lt;/span&gt;&lt;span&gt;&amp;quot;:&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; nature&lt;/span&gt;&lt;span&gt; } ] },{ &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;featureType&lt;/span&gt;&lt;span&gt;&amp;quot;: &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;transit&lt;/span&gt;&lt;span&gt;&amp;quot;, &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;elementType&lt;/span&gt;&lt;span&gt;&amp;quot;: &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;geometry&lt;/span&gt;&lt;span&gt;&amp;quot;, &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;stylers&lt;/span&gt;&lt;span&gt;&amp;quot;: [ { &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;visibility&lt;/span&gt;&lt;span&gt;&amp;quot;: &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;simplified&lt;/span&gt;&lt;span&gt;&amp;quot; }, { &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;color&lt;/span&gt;&lt;span&gt;&amp;quot;:&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; transit&lt;/span&gt;&lt;span&gt; }, { &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;weight&lt;/span&gt;&lt;span&gt;&amp;quot;:&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt; 6&lt;/span&gt;&lt;span&gt; } ] },{ &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;featureType&lt;/span&gt;&lt;span&gt;&amp;quot;: &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;water&lt;/span&gt;&lt;span&gt;&amp;quot;, &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;stylers&lt;/span&gt;&lt;span&gt;&amp;quot;: [ { &amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;color&lt;/span&gt;&lt;span&gt;&amp;quot;:&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; water&lt;/span&gt;&lt;span&gt; } ] } ]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-6&quot;&gt;      google&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt;maps&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt;event&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span class=&quot;z-5&quot;&gt;addDomListener&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt;window&lt;/span&gt;&lt;span&gt;, &amp;#39;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;load&lt;/span&gt;&lt;span&gt;&amp;#39;,&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; initialize&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;/&lt;/span&gt;&lt;span class=&quot;z-9&quot;&gt;script&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  &amp;lt;/&lt;/span&gt;&lt;span class=&quot;z-9&quot;&gt;head&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  &amp;lt;&lt;/span&gt;&lt;span class=&quot;z-9&quot;&gt;body&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;&lt;/span&gt;&lt;span class=&quot;z-9&quot;&gt;div&lt;/span&gt;&lt;span class=&quot;z-7&quot;&gt; id&lt;/span&gt;&lt;span&gt;=&amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;map_canvas&lt;/span&gt;&lt;span&gt;&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;z-9&quot;&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  &amp;lt;/&lt;/span&gt;&lt;span class=&quot;z-9&quot;&gt;body&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;z-9&quot;&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Also available on &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/Niederb/art_project/blob/master/city-maps/city-maps.html&quot;&gt;Github&lt;/a&gt;&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="de">
        <title>Minimal Compressive Sensing example</title>
        <published>2016-01-23T00:00:00+00:00</published>
        <updated>2016-01-23T00:00:00+00:00</updated>
        
        <author>
          <name>Thomas Niederberger</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://niederb.ch/minimal-compressive-sensing/"/>
        <id>https://niederb.ch/minimal-compressive-sensing/</id>
        
        <content type="html" xml:base="https://niederb.ch/minimal-compressive-sensing/">&lt;p&gt;During my master thesis is was working on &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Compressed_sensing&quot;&gt;Compressive Sensing&lt;/a&gt; algorithms. Compressive Sensing (or Compressed Sampling) is about reconstructing a signal from fewer samples than the signal actually has. This only works when the signal is sparse in some domain.&lt;/p&gt;
&lt;p&gt;Now I want to get back into the topic and for this reason I wrote the smallest example for Compressive Sensing that came to my mind. A random sequence of sparse spikes is generated and then I reconstruct the sequence with fewer samples than the original sequence. The signal is sampled by using a normal distributed sampling matrix and the implementation uses the Lasso function of scikit learn.&lt;/p&gt;
&lt;p&gt;In the following plot you can see the reconstruction of a signal of length 1000 with only 200 samples. An undersampling factor of 200&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://niederb.ch/minimal-compressive-sensing/compressive_sensing_results.png&quot;&gt;&lt;img src=&quot;https://niederb.ch/minimal-compressive-sensing/compressive_sensing_results.png&quot; alt=&quot;compressive_sensing_results&quot; /&gt;&lt;/a&gt;And here is the short script written in Python&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;python&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-8&quot;&gt;import&lt;/span&gt;&lt;span&gt; numpy&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt; as&lt;/span&gt;&lt;span&gt; np&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-8&quot;&gt;from&lt;/span&gt;&lt;span&gt; sklearn&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt; import&lt;/span&gt;&lt;span&gt; linear_model&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-8&quot;&gt;import&lt;/span&gt;&lt;span&gt; matplotlib.pyplot&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt; as&lt;/span&gt;&lt;span&gt; plt&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;n&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt;1000&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;m&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt;200&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;percent_zero&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt;0.98&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;signal&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt; 1.0&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt;*&lt;/span&gt;&lt;span&gt;(np.random.rand(&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt;1&lt;/span&gt;&lt;span&gt;, n)&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt; &amp;gt;&lt;/span&gt;&lt;span&gt; percent_zero)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;sampling_scheme&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt; 1.0&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt;*&lt;/span&gt;&lt;span&gt;(np.random.randn(m, n))&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;samples&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt; =&lt;/span&gt;&lt;span&gt; np.dot(sampling_scheme, signal.T)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;clf&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt; =&lt;/span&gt;&lt;span&gt; linear_model.Lasso(&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt;alpha&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt;0.001&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; fit_intercept&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt;False&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; positive&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt;True&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;clf.fit(sampling_scheme, samples)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-5&quot;&gt;print&lt;/span&gt;&lt;span&gt;(&amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;Non zeros original signal: &lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt;%i&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt; %&lt;/span&gt;&lt;span class=&quot;z-5&quot;&gt; sum&lt;/span&gt;&lt;span&gt;(signal.T&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt; &amp;gt;&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt; 0&lt;/span&gt;&lt;span&gt;))&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-5&quot;&gt;print&lt;/span&gt;&lt;span&gt;(&amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;Non zeros reconstructed signal: &lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt;%i&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt; %&lt;/span&gt;&lt;span class=&quot;z-5&quot;&gt; sum&lt;/span&gt;&lt;span&gt;(clf.coef_&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt; &amp;gt;&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt; 0&lt;/span&gt;&lt;span&gt;))&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;plt.subplot(&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt;311&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;plt.plot(signal.T)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;plt.xlabel(&amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;Original signal&lt;/span&gt;&lt;span&gt;&amp;quot;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;plt.subplot(&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt;312&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;plt.plot(clf.coef_)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;plt.xlabel(&amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;Reconstructed signal&lt;/span&gt;&lt;span&gt;&amp;quot;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;plt.subplot(&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt;313&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;plt.plot((signal&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt;-&lt;/span&gt;&lt;span&gt;clf.coef_).T)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;plt.xlabel(&amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;Reconstructed error&lt;/span&gt;&lt;span&gt;&amp;quot;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-5&quot;&gt;print&lt;/span&gt;&lt;span&gt;(&amp;quot;&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;Reconstrudtion RMSE: &lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt;%f&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt; %&lt;/span&gt;&lt;span&gt; np.sqrt(np.mean(delta&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt; *&lt;/span&gt;&lt;span&gt; delta)))&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Code is also available on &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/Niederb/python_machine_learning/blob/master/compressive_sensing/simple_test.py&quot;&gt;GitHub&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Also check out my &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;http://niederb.ch/compressive-sensing-reconstruction-error/&quot;&gt;second post&lt;/a&gt; about compressive sensing.&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="de">
        <title>Wanduhr</title>
        <published>2016-01-21T00:00:00+00:00</published>
        <updated>2016-01-21T00:00:00+00:00</updated>
        
        <author>
          <name>Thomas Niederberger</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://niederb.ch/wanduhr/"/>
        <id>https://niederb.ch/wanduhr/</id>
        
        <content type="html" xml:base="https://niederb.ch/wanduhr/">&lt;p&gt;Als ich vor einiger Zeit das Buch &quot;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https://www.orellfuessli.ch/shop/home/artikeldetails/ID18858969.html&quot;&gt;Tour de Suisse: Eine nostalgische Reise zu den schönsten Plätzen der Schweiz&lt;/a&gt;&quot; für eine anderes Bild (leider noch nicht fertig) in seine Einzelteile zerlegte meinte mein Mitbewohner, dass sich eines der Poster auch gut für eine Uhr eignen würde. Gesagt getan!&lt;br /&gt;
Das Poster wurde einfach auf ein Holzbrett geklebt und anschliessend mit einem Uhrwerk aus dem Baumarkt bestückt.&lt;br /&gt;
Jetzt haben wir eine sehenswerte Wanduhr &quot;Monte Brè&quot;, die sich in unserem Wohnzimmer sehr gut macht.&lt;br /&gt;
&lt;a href=&quot;https://niederb.ch/wanduhr/wanduhr-monte-bre.jpg&quot;&gt;&lt;img src=&quot;https://niederb.ch/wanduhr/wanduhr-monte-bre.jpg&quot; alt=&quot;Wanduhr Monte Brè&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="de">
        <title>Life Magazine Table</title>
        <published>2016-01-18T00:00:00+00:00</published>
        <updated>2016-01-18T00:00:00+00:00</updated>
        
        <author>
          <name>Thomas Niederberger</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://niederb.ch/life-magazine-table/"/>
        <id>https://niederb.ch/life-magazine-table/</id>
        
        <content type="html" xml:base="https://niederb.ch/life-magazine-table/">&lt;p&gt;A few weeks ago I found a used copy of the book &quot;The Best of Life&quot;. The book contains the best photographs of life magazine. I bought the book and decided to use it to improve our living room table. I fragmented the book into single pages and cut out my favorite pictures. Then I arranged the pictures to a collage which fitted onto our table. After I glued the collage to the table I added a Plexiglas in order to protect the pictures from scratches, water and humidity. I&#39;m quite happy with the result and I thinks it looks really cool.&lt;br /&gt;
Here are some pictures of the finished table:&lt;br /&gt;
&lt;a href=&quot;https://niederb.ch/life-magazine-table/life-magazine-table.jpg&quot;&gt;&lt;img src=&quot;https://niederb.ch/life-magazine-table/life-magazine-table.jpg&quot; alt=&quot;life-magazine-table&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://niederb.ch/life-magazine-table/time-magazine-table-2.jpg&quot;&gt;&lt;img src=&quot;https://niederb.ch/life-magazine-table/time-magazine-table-2.jpg&quot; alt=&quot;time-magazine-table-2&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="de">
        <title>Metropolis Redesign</title>
        <published>2016-01-17T00:00:00+00:00</published>
        <updated>2016-01-17T00:00:00+00:00</updated>
        
        <author>
          <name>Thomas Niederberger</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://niederb.ch/metropolis-redesign/"/>
        <id>https://niederb.ch/metropolis-redesign/</id>
        
        <content type="html" xml:base="https://niederb.ch/metropolis-redesign/">&lt;p&gt;Months ago I saw an episode of the TV-series &quot;How I met your mother&quot; and in that episode Ted had a movie poster of Metropolis in his room. This reminded me how much I liked the movie and the poster. But I found the original poster a little too crowded and I especially disliked the golden robot. Because of that I decided to redesign the poster. After finishing the design, I painted a canvas with the background color. Then I cut the foreground objects out of cardboard, painted them black and glued them onto the canvas. The final result looks like this:&lt;br /&gt;
&lt;a href=&quot;https://niederb.ch/metropolis-redesign/metropolis_final.jpg&quot;&gt;&lt;img src=&quot;https://niederb.ch/metropolis-redesign/metropolis_final.jpg&quot; alt=&quot;metropolis_final&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The first design was the one on the left side, but in the end I decided for the much more reduced version on the right side:&lt;br /&gt;
&lt;a href=&quot;https://niederb.ch/metropolis-redesign/metropolis_first_design.png&quot;&gt;&lt;img src=&quot;https://niederb.ch/metropolis-redesign/metropolis_first_design.png&quot; alt=&quot;metropolis_first_design&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://niederb.ch/metropolis-redesign/metropolis_second_design.png&quot;&gt;&lt;img src=&quot;https://niederb.ch/metropolis-redesign/metropolis_second_design.png&quot; alt=&quot;metropolis_second_design&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="de">
        <title>Audrey Hepburn Portrait aus Lego</title>
        <published>2016-01-09T00:00:00+00:00</published>
        <updated>2016-01-09T00:00:00+00:00</updated>
        
        <author>
          <name>Thomas Niederberger</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://niederb.ch/lego-audrey-hepburn/"/>
        <id>https://niederb.ch/lego-audrey-hepburn/</id>
        
        <content type="html" xml:base="https://niederb.ch/lego-audrey-hepburn/">&lt;p&gt;Ich hatte vor einiger Zeit die Idee mit Hilfe von Legosteinen ein Wandbild zu kreieren. Für das Bild habe ich 6 grosse Legoplatten auf ein Holzbrett geklebt um nachher mit Legosteinen das Bild zu &quot;malen&quot;. Leider sind die Legoplatten sehr teuer, aber das war mir die Idee wert.&lt;br /&gt;
Das eigentliche Hauptproblem waren jedoch die vielen schwarzen Legosteine. Schlussendlich habe ich die Steine von einem Gebrauchtladen in Deutschland schicken lassen. Eine andere Variante wären ebay oder ricardo gewesen.&lt;br /&gt;
Das Bild habe ich am Schluss mit Hilfe eines Beamers auf die Legoplatten projeziert und die Steine dann angebracht.&lt;br /&gt;
Das Resultat ist ziemlich cool! Ausserdem lässt sich das Bild jederzeit wieder verändern.&lt;br /&gt;
&lt;a href=&quot;https://niederb.ch/lego-audrey-hepburn/audrey-hepburn-lego.jpg&quot;&gt;&lt;img src=&quot;https://niederb.ch/lego-audrey-hepburn/audrey-hepburn-lego.jpg&quot; alt=&quot;Audrey Hepburn aus Lego&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="de">
        <title>A bookshelf made of chopsticks</title>
        <published>2016-01-08T00:00:00+00:00</published>
        <updated>2016-01-08T00:00:00+00:00</updated>
        
        <author>
          <name>Thomas Niederberger</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://niederb.ch/chopstick-bookshelf/"/>
        <id>https://niederb.ch/chopstick-bookshelf/</id>
        
        <content type="html" xml:base="https://niederb.ch/chopstick-bookshelf/">&lt;p&gt;We order food from a Chinese restaurant on an almost weekly basis. With every order we receive some chopsticks, which we won&#39;t use. For some reason I collected them for a while and thought about what I could do with them.&lt;br /&gt;
A few weeks ago I had the idea to build a bookshelf with the chopsticks.&lt;br /&gt;
The idea I had was to place every book on two sticks, then pile the sticks on top of each other in an rectangular way and then hang the shelf into a corner of my room. I&#39;m very happy with the results even tough it is not quite finished yet. (More sticks necessary...)&lt;br /&gt;
Chopsticks and structure of the shelf without books:&lt;br /&gt;
&lt;a href=&quot;https://niederb.ch/chopstick-bookshelf/chopsticks.jpg&quot;&gt;&lt;img src=&quot;https://niederb.ch/chopstick-bookshelf/chopsticks.jpg&quot; alt=&quot;chopsticks&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://niederb.ch/chopstick-bookshelf/chopstick-bookshelf-structure.jpg&quot;&gt;&lt;img src=&quot;https://niederb.ch/chopstick-bookshelf/chopstick-bookshelf-structure.jpg&quot; alt=&quot;chopstick-bookshelf-structure&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
I will need more sticks to finish. Right now the shelf looks like this with books:&lt;br /&gt;
&lt;a href=&quot;https://niederb.ch/chopstick-bookshelf/chopstick-bookshelf.jpg&quot;&gt;&lt;img src=&quot;https://niederb.ch/chopstick-bookshelf/chopstick-bookshelf.jpg&quot; alt=&quot;chopstick-bookshelf&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="de">
        <title>Chicago Bridge</title>
        <published>2016-01-04T00:00:00+00:00</published>
        <updated>2016-01-04T00:00:00+00:00</updated>
        
        <author>
          <name>Thomas Niederberger</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://niederb.ch/chicago-bridge/"/>
        <id>https://niederb.ch/chicago-bridge/</id>
        
        <content type="html" xml:base="https://niederb.ch/chicago-bridge/">&lt;p&gt;After finishing my Chicago lighthouse project I started a new one. This one is also featuring a part of the Chicago skyline. This time it is featuring one of the famous Chicago bridges in the foreground and the &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Willis_Tower&quot;&gt;Willis Tower&lt;/a&gt; (although I prefer the old name Sears Tower) in the background. This time the many details of the bridge took me a long time to get right and almost drove me crazy. However I&#39;m very happy with the result and think it is time well spent.&lt;br /&gt;
What it looks like after hours of work:&lt;br /&gt;
&lt;a href=&quot;https://niederb.ch/chicago-bridge/bridge-willis-2.png&quot;&gt;&lt;img src=&quot;https://niederb.ch/chicago-bridge/bridge-willis-2.png&quot; alt=&quot;bridge-willis-2&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
And this is how the original picture looked:&lt;br /&gt;
&lt;a href=&quot;https://niederb.ch/chicago-bridge/dsc06617.jpg&quot;&gt;&lt;img src=&quot;https://niederb.ch/chicago-bridge/dsc06617.jpg&quot; alt=&quot;dsc06617&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="de">
        <title>Chicago Lighthouse Artwork</title>
        <published>2016-01-04T00:00:00+00:00</published>
        <updated>2016-01-04T00:00:00+00:00</updated>
        
        <author>
          <name>Thomas Niederberger</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://niederb.ch/chicago-lighthouse/"/>
        <id>https://niederb.ch/chicago-lighthouse/</id>
        
        <content type="html" xml:base="https://niederb.ch/chicago-lighthouse/">&lt;p&gt;When I was living in Chicago I could take a lot of awesome pictures. Back home I decided to transform some of them into artwork. The first one is a picture showing the skyline of Chicago as seen from Lincoln Park. I like this picture a lot and I think the lighthouse in the foreground and the man sitting on a chair give it a very special feeling.&lt;br /&gt;
The original picture looked like this:&lt;br /&gt;
&lt;a href=&quot;https://niederb.ch/chicago-lighthouse/dsc06756.jpg&quot;&gt;&lt;img src=&quot;https://niederb.ch/chicago-lighthouse/dsc06756.jpg&quot; alt=&quot;dsc06756&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
And after some hours of work it looks now like this&lt;br /&gt;
&lt;a href=&quot;https://niederb.ch/chicago-lighthouse/chicago-lincoln-park-rescaled.png&quot;&gt;&lt;img src=&quot;https://niederb.ch/chicago-lighthouse/chicago-lincoln-park-rescaled.png&quot; alt=&quot;chicago-lincoln-park-rescaled&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="de">
        <title>Collage Switzerland</title>
        <published>2016-01-04T00:00:00+00:00</published>
        <updated>2016-01-04T00:00:00+00:00</updated>
        
        <author>
          <name>Thomas Niederberger</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://niederb.ch/collage-switzerland/"/>
        <id>https://niederb.ch/collage-switzerland/</id>
        
        <content type="html" xml:base="https://niederb.ch/collage-switzerland/">&lt;p&gt;Das Buch &quot;Tour de Suisse: Eine nostalgische Reise zu den schönsten Plätzen der Schweiz&quot; beinhaltet zahlreiche alte Schweizer Werbeplakate für Tourismusdestinationen. Als ich das Buch sah, kam mir die Idee aus den Plakaten eine grosse Collage zu machen und diese dann an die Wand zu hängen.&lt;br /&gt;
Also kaufte ich das Buch und zerlegte es in seine einzelnen Seiten. Die Seiten schnitt ich dann zurecht und versuchte alle Seiten passend anzuordnen.&lt;br /&gt;
Das Anordnen der ganzen Bilder dauerte ziemlich lange, weil ich die Bilder immer wieder neu arrangieren musste:&lt;br /&gt;
&lt;a href=&quot;https://niederb.ch/collage-switzerland/collage-ausgelegt.jpg&quot;&gt;&lt;img src=&quot;https://niederb.ch/collage-switzerland/collage-ausgelegt.jpg&quot; alt=&quot;Collage Schweiz ausgelegt&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
Die Collage besteht aus 50 Einzelbildern und misst ca. 2.2 x 1.6 Meter. Leider war das Brett, welches ich gekauft hatte doch etwas zu gross. Da muss ich mir noch etwas überlegen. Auf jeden Fall hängt das Bild jetzt bereits in unserem Wohnzimmer:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://niederb.ch/collage-switzerland/collage-schweiz-seite.jpg&quot;&gt;&lt;img src=&quot;https://niederb.ch/collage-switzerland/collage-schweiz-seite.jpg&quot; alt=&quot;collage-schweiz-seite&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://niederb.ch/collage-switzerland/collage-schweiz-frontal.jpg&quot;&gt;&lt;img src=&quot;https://niederb.ch/collage-switzerland/collage-schweiz-frontal.jpg&quot; alt=&quot;collage-schweiz-frontal&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
        
    </entry>
</feed>
