<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <title></title>
  <subtitle>UX-Driven Frontend Engineering</subtitle>
  <link href="https://www.swjh.de/feed.xml" rel="self" />
  <link href="https://www.swjh.de/" />
  <updated>2025-08-01T00:00:00Z</updated>
  <id>https://www.swjh.de/</id>
  <author>
    <name>Simon Hermann</name>
  </author>
  <entry>
    <title>Skyline Big Band</title>
    <link href="https://www.swjh.de/projects/skyline-big-band/" />
    <updated>2025-08-01T00:00:00Z</updated>
    <id>https://www.swjh.de/projects/skyline-big-band/</id>
    <content type="html">&lt;p&gt;Members of a local Big Band approached me if I could update some small things on their website. It ended up in a complete rebuild, and I am glad about that.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>BVG.de – Berlin&#39;s heart of public transportation</title>
    <link href="https://www.swjh.de/projects/bvg-de/" />
    <updated>2021-11-19T00:00:00Z</updated>
    <id>https://www.swjh.de/projects/bvg-de/</id>
    <content type="html">&lt;p&gt;I am currently the main Frontend Developer building the BVG Website at IBM iX.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://ibmix.de/en/project/die-neue-bvg-de/&quot;&gt;Read the case study at IBM iX&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://gewinner2022.deutscherdigitalaward.de/gewinner/website-user-experience-usability-bronze/die-neue-bvg-de&quot;&gt;Awarded &amp;quot;Bronze&amp;quot;&lt;/a&gt; for User Experience / Usability by German Digital Award.&lt;/li&gt;
&lt;/ul&gt;
&lt;img alt=&quot;The BVG sound mixer in action, users can freely mix sounds from BVG soundscape audio branding, voices, typical Berlin public transportation ambience and announcements by the new voice of BVG, Philippa.&quot; src=&quot;https://www.swjh.de/assets/W3zd1PDKZA-600.avif&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1920&quot; height=&quot;1080&quot; srcset=&quot;https://www.swjh.de/assets/W3zd1PDKZA-600.avif 600w, https://www.swjh.de/assets/W3zd1PDKZA-1000.avif 1000w, https://www.swjh.de/assets/W3zd1PDKZA-1400.avif 1400w, https://www.swjh.de/assets/W3zd1PDKZA-1920.avif 1920w&quot; sizes=&quot;auto&quot;&gt;
&lt;img alt=&quot;Mockup of the Website on different devices.&quot; src=&quot;https://www.swjh.de/assets/ervY-n2TbT-600.avif&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1920&quot; height=&quot;1080&quot; srcset=&quot;https://www.swjh.de/assets/ervY-n2TbT-600.avif 600w, https://www.swjh.de/assets/ervY-n2TbT-1000.avif 1000w, https://www.swjh.de/assets/ervY-n2TbT-1400.avif 1400w, https://www.swjh.de/assets/ervY-n2TbT-1920.avif 1920w&quot; sizes=&quot;auto&quot;&gt;
&lt;lite-youtube videoid=&quot;DeEXJ205Slg&quot; style=&quot;background-image: url(&#39;https://i.ytimg.com/vi/DeEXJ205Slg/hqdefault.jpg&#39;)&quot; class=&quot;grid-feature&quot;&gt;
	&lt;a href=&quot;https://youtube-nocookie.com/watch?v=DeEXJ205Slg&quot; title=&quot;`Play Video: ${videotitle}`&quot; aria-label=&quot;Play Video: Die neue BVG.de&quot; class=&quot;lyt-playbtn&quot;&gt;
&lt;p&gt;&lt;/p&gt;&lt;/a&gt;
&lt;/lite-youtube&gt;&lt;p&gt;&lt;/p&gt;
&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://www.swjh.de/assets/V6H6DrJoH--600.avif 600w, https://www.swjh.de/assets/V6H6DrJoH--1000.avif 1000w, https://www.swjh.de/assets/V6H6DrJoH--1400.avif 1400w, https://www.swjh.de/assets/V6H6DrJoH--1920.avif 1920w&quot; sizes=&quot;auto&quot;&gt;&lt;img loading=&quot;lazy&quot; decoding=&quot;async&quot; alt=&quot;BVG logo; a yellow heart.&quot; class=&quot;grid-full-limited&quot; src=&quot;https://www.swjh.de/assets/V6H6DrJoH--220.svg&quot; width=&quot;220&quot; height=&quot;200&quot;&gt;&lt;/picture&gt;
</content>
  </entry>
  <entry>
    <title>Kunst- &amp; Kultur-Rat Ludwigslust-Parchim</title>
    <link href="https://www.swjh.de/projects/kunst-kultur-rat-ludwigslust-parchim/" />
    <updated>2021-11-18T00:00:00Z</updated>
    <id>https://www.swjh.de/projects/kunst-kultur-rat-ludwigslust-parchim/</id>
    <content type="html"></content>
  </entry>
  <entry>
    <title>Appy SVG filters to any HTML Element</title>
    <link href="https://www.swjh.de/blog/appy-svg-filters-to-any-html-element/" />
    <updated>2020-08-06T00:00:00Z</updated>
    <id>https://www.swjh.de/blog/appy-svg-filters-to-any-html-element/</id>
    <content type="html">&lt;p&gt;I just learned from the &lt;a href=&quot;https://viewbox.club/&quot;&gt;viewBox Newsletter&lt;/a&gt;: you can apply SVG filters to anly HTML Elements outside the SVG via CSS.
Just define the filter in a (hidden) &lt;code&gt;&amp;lt;svg&amp;gt;&lt;/code&gt; tag, give the filter an &lt;code&gt;id&lt;/code&gt; and reference it anywhere in the document.&lt;/p&gt;
&lt;p&gt;From the &lt;a href=&quot;https://viewbox.club/tips/02.CSS_Filters.html&quot;&gt;Example by viewBox&lt;/a&gt;:&lt;/p&gt;
&lt;pre class=&quot;html codeblock grid-popout&quot; data-language=&quot;html&quot;&gt;&lt;code class=&quot;language-html styled-scrollbar&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;svg&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;hidden&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
	&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;filter&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;squiggly&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
		&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;feTurbulence&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;turbulence&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;baseFrequency&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0.02&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;numOctaves&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;3&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;result&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;noise&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;seed&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
			&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;animate&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;attributeName&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;seed&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;1&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;10&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;dur&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;1s&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;repeatCount&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;indefinite&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;animate&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
		&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;feTurbulence&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
		&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;feDisplacementMap&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;displacement&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;in&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;SourceGraphic&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;in2&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;noise&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;scale&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;6&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;feDisplacementMap&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
	&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;filter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;svg&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;svg&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;p&lt;/span&gt; &lt;span class=&quot;token special-attr&quot;&gt;&lt;span class=&quot;token attr-name&quot;&gt;style&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token value css language-css&quot;&gt;&lt;span class=&quot;token property&quot;&gt;filter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token url&quot;&gt;&lt;span class=&quot;token function&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;#squiggly&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;squiggly-text&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
	Lorem ipsum dolor sit amet, consectetur adipisicing elit. Non ab, placeat iste
	temporibus soluta, mollitia quisquam. Esse, tempore dignissimos minima,
	voluptatem facere perspiciatis laborum suscipit.
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;p&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;svg hidden=&quot;&quot;&gt;
  &lt;filter id=&quot;squiggly&quot;&gt;
    &lt;feTurbulence id=&quot;turbulence&quot; baseFrequency=&quot;0.02&quot; numOctaves=&quot;3&quot; result=&quot;noise&quot; seed=&quot;0&quot;&gt;
      &lt;animate attributeName=&quot;seed&quot; from=&quot;1&quot; to=&quot;10&quot; dur=&quot;1s&quot; repeatCount=&quot;indefinite&quot;&gt;&lt;/animate&gt;
    &lt;/feTurbulence&gt;
	&lt;feDisplacementMap id=&quot;displacement&quot; in=&quot;SourceGraphic&quot; in2=&quot;noise&quot; scale=&quot;6&quot;&gt;&lt;/feDisplacementMap&gt;
  &lt;/filter&gt;
&lt;/svg&gt;
&lt;p ;=&quot;&quot; style=&quot;filter: url(#squiggly); font-family: &#39;Comic Sans&#39;, &#39;Comic Sans MS&#39;&quot;&gt;
  Lorem ipsum dolor sit amet, consectetur adipisicing elit. Non ab, placeat iste temporibus soluta, mollitia quisquam. Esse, tempore dignissimos minima, voluptatem facere perspiciatis laborum suscipit.
&lt;/p&gt;
&lt;p&gt;There&#39;s also another technique, used in &lt;a href=&quot;https://codepen.io/yuanchuan/pen/NLRxvN?editors=1100&quot;&gt;this awesome codepen&lt;/a&gt; by &lt;a href=&quot;https://yuanchuan.dev/&quot;&gt;yuanchuan&lt;/a&gt;.
And &lt;a href=&quot;https://yoksel.github.io/svg-filters/#/&quot;&gt;here&#39;s a tool to play around with SVG filters&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Want to learn more about the magical world of SVG? Subscribe to the &lt;a href=&quot;https://buttondown.email/viewBox&quot;&gt;viewBox Newsletter here&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>ScrollOut.js - a tiny js library for scroll-based interactions</title>
    <link href="https://www.swjh.de/blog/scrollout-js/" />
    <updated>2020-04-26T00:00:00Z</updated>
    <id>https://www.swjh.de/blog/scrollout-js/</id>
    <content type="html">&lt;p&gt;Since I recently discovered &lt;a href=&quot;https://scroll-out.github.io/&quot;&gt;ScrollOut.js&lt;/a&gt;, it quickly became one my favourite micro library.&lt;/p&gt;
&lt;p&gt;&amp;gt; ScrollOut detects changes in scroll for reveal, parallax, and CSS Variable effects! Use JavaScript callbacks, CSS selectors, or CSS Variables to animate elements in and out. You can even create sticky headers. &lt;br&gt; The ScrollOut library does not handle any animation, but it gives you the elements and tools needed to create animations &amp;amp; transitions with JavaScript animation libraries or only CSS!&lt;/p&gt;
&lt;p&gt;The tool itself does not provide any animations/transitions, but CSS Variables that you can hook into.&lt;/p&gt;
&lt;p&gt;It&#39;s really tiny (1kb minified and gzipped) and the does not make scrolling laggy at all (if used correctly). Oh and it also detects window resizes in case you need that.&lt;/p&gt;
&lt;p&gt;I just startet using ScrollOut and I can only imagine the endless possibilities 🤯.&lt;/p&gt;
&lt;h2&gt;Simple example how to create a auto-hiding header:&lt;/h2&gt;
&lt;p&gt;ScrollOut applies &lt;code&gt;data-scroll-dir&lt;/code&gt; to `` and changes the value based on scroll direction.&lt;/p&gt;
&lt;pre class=&quot;css codeblock grid-popout&quot; data-language=&quot;css&quot;&gt;&lt;code class=&quot;language-css styled-scrollbar&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;.navbar&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token property&quot;&gt;position&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; fixed&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token property&quot;&gt;transition&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 300ms transform ease-out&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token property&quot;&gt;will-change&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; transform&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token comment&quot;&gt;/*...*/&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;/* scrolling down */&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;html[data-scroll-dir-y=&#39;1&#39;] .navbar&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token property&quot;&gt;transform&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;translateY&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;100%&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;/* scrolling up */&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;html[data-scroll-dir-y=&#39;-1&#39;] .navbar&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token property&quot;&gt;transform&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;translateY&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
</content>
  </entry>
  <entry>
    <title>Flexbox Magic: Responsive Sign-Up Form</title>
    <link href="https://www.swjh.de/blog/responsive-sign-up-form-flexbox-magic/" />
    <updated>2020-04-04T00:00:00Z</updated>
    <id>https://www.swjh.de/blog/responsive-sign-up-form-flexbox-magic/</id>
    <content type="html">&lt;p&gt;A cool trick by Adam Argyle to create a responsive signup form with flexbox in very few lines of code:&lt;/p&gt;
&lt;pre class=&quot;css codeblock grid-popout&quot; data-language=&quot;css&quot;&gt;&lt;code class=&quot;language-css styled-scrollbar&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;form&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token property&quot;&gt;display&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; flex&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token property&quot;&gt;flex-wrap&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; wrap&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

	&amp;amp;amp&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &amp;amp;gt&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token selector&quot;&gt;input&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token property&quot;&gt;flex&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1 1 10ch&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		&lt;span class=&quot;token property&quot;&gt;margin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0.5rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

		&amp;amp;amp&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;[type=&lt;span class=&quot;token string&quot;&gt;&#39;email&#39;&lt;/span&gt;] &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			&lt;span class=&quot;token property&quot;&gt;flex&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 3 1 30ch&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;See also &lt;a href=&quot;https://codepen.io/argyleink/pen/LYEegOO&quot;&gt;Adams&#39; Codepen&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>How to preserve Aspect Ratio of Images with Tailwind CSS</title>
    <link href="https://www.swjh.de/blog/preserve-aspect-ratio-of-images-with-tailwind-css/" />
    <updated>2020-04-04T00:00:00Z</updated>
    <id>https://www.swjh.de/blog/preserve-aspect-ratio-of-images-with-tailwind-css/</id>
    <content type="html">&lt;p&gt;With these few tailwind classes you can lock the aspect ratio of an image. In this example the height will be 2/3rds of the height.&lt;/p&gt;
&lt;pre class=&quot;html codeblock grid-popout&quot; data-language=&quot;html&quot;&gt;&lt;code class=&quot;language-html styled-scrollbar&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;relative overflow-hidden pb-2/3&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
	&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;img&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;src&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;alt&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;absolute h-full w-full object-cover&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Since percentage values for spacing are not available per default you&#39;ll need to add it in &lt;code&gt;tailwind.config.js&lt;/code&gt; like so:&lt;/p&gt;
&lt;pre class=&quot;js codeblock grid-popout&quot; data-language=&quot;js&quot;&gt;&lt;code class=&quot;language-js styled-scrollbar&quot;&gt;module&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;exports &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token literal-property property&quot;&gt;theme&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token literal-property property&quot;&gt;extend&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			&lt;span class=&quot;token literal-property property&quot;&gt;spacing&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
				&lt;span class=&quot;token string-property property&quot;&gt;&#39;2/3&#39;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;66.666667%&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
			&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;More details in the &lt;a href=&quot;https://tailwindcss.com/course/locking-images-to-a-fixed-aspect-ratio/&quot;&gt;Tailwind Docs&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Service Innovation Labs</title>
    <link href="https://www.swjh.de/projects/si-labs-com/" />
    <updated>2020-01-24T00:00:00Z</updated>
    <id>https://www.swjh.de/projects/si-labs-com/</id>
    <content type="html">&lt;p&gt;When it came to the point that we needed a new Website at &lt;a href=&quot;https://www.si-labs.com/&quot;&gt;Service Innovation Labs&lt;/a&gt;, we had the requirement to make it extremely flexible, but still maintainable by non-technical users.
I&#39;ll sum up some tech choices I made, since I was mostly busy developing, while others took care of visual design and content.&lt;/p&gt;
&lt;p&gt;A conventional CMS like Wordpress or Kirby cannot fulfil this, because it mostly works page-based, what we needed was content editing on a component level. So I proposed &lt;a href=&quot;https://www.storyblok.com&quot;&gt;storyblok.com&lt;/a&gt;, a headless CMS with a visual editor, making the editing experience similar to page-builder tools like Wix or Sqarespace, but without being trapped in their front-end. My wish was to work with &lt;a href=&quot;https://nuxtjs.org/&quot;&gt;Nuxt.js&lt;/a&gt; and luckily storyblok turned out to be the perfect match. The killer feature for me was the built in image processing API of storyblok.&lt;/p&gt;
&lt;p&gt;For CSS I chose &lt;a href=&quot;https://tailwindcss.com/&quot;&gt;Tailwind&lt;/a&gt;. Before that I haven&#39;t used it extensively, but really wanted to try it in a bigger Project. Combined with PurgeCSS, that treeshakes your CSS tree (removes all unused code) there&#39;s really no drawback in working with hundreds of utility classes.
Now I can confirm: Tailwind allows for such a fast and joyful developer experience, I don&#39;t want to miss it ever again (coming from someone who actually likes CSS).&lt;/p&gt;
&lt;p&gt;The best option for hosting statically generated content is (IMHO by far) &lt;a href=&quot;https://www.netlify.com/&quot;&gt;netlify.com&lt;/a&gt;, it not only provides the best dev experience and speed I could wish for, but also has an extremely generous free plan as well as built-in &lt;a href=&quot;https://docs.netlify.com/forms/setup/#html-forms&quot;&gt;form handling&lt;/a&gt;, usable by just adding &lt;code&gt;data-netlify=&amp;quot;true&amp;quot;&lt;/code&gt; to any &lt;code&gt;&amp;lt;form&amp;gt;&lt;/code&gt; field.&lt;/p&gt;
&lt;p&gt;The only caveat I have is that the storyblok live preview does not work out of the box and requires a second build of the website on now.sh that took quite some time to setup before it worked (still slow and unreliable). In retrospect I&#39;d do a lot of things differently, but the overall set of tools and plugins Nuxt provides, combined with Storyblok, Tailwind and Netlify is incredibly pwerful and just a pleasure to work with.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/3dX1gC_Bej-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1000&quot; height=&quot;699&quot; srcset=&quot;https://www.swjh.de/assets/3dX1gC_Bej-600.avif 600w, https://www.swjh.de/assets/3dX1gC_Bej-1000.avif 1000w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/bcAsjVmCv6-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1872&quot; height=&quot;588&quot; srcset=&quot;https://www.swjh.de/assets/bcAsjVmCv6-600.avif 600w, https://www.swjh.de/assets/bcAsjVmCv6-1000.avif 1000w, https://www.swjh.de/assets/bcAsjVmCv6-1400.avif 1400w, https://www.swjh.de/assets/bcAsjVmCv6-1872.avif 1872w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/Iw-b8z2drg-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1800&quot; height=&quot;1800&quot; srcset=&quot;https://www.swjh.de/assets/Iw-b8z2drg-600.avif 600w, https://www.swjh.de/assets/Iw-b8z2drg-1000.avif 1000w, https://www.swjh.de/assets/Iw-b8z2drg-1400.avif 1400w, https://www.swjh.de/assets/Iw-b8z2drg-1800.avif 1800w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/lHzwKrpsJo-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1860&quot; height=&quot;914&quot; srcset=&quot;https://www.swjh.de/assets/lHzwKrpsJo-600.avif 600w, https://www.swjh.de/assets/lHzwKrpsJo-1000.avif 1000w, https://www.swjh.de/assets/lHzwKrpsJo-1400.avif 1400w, https://www.swjh.de/assets/lHzwKrpsJo-1860.avif 1860w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Roman Neumann</title>
    <link href="https://www.swjh.de/projects/roman-neumann-com/" />
    <updated>2020-01-16T00:00:00Z</updated>
    <id>https://www.swjh.de/projects/roman-neumann-com/</id>
    <content type="html">&lt;p&gt;In creative co-work with Roman, I conceived a Website for his profession as Coach, Trainer and Speaker. His focus lies in Entrepreneurship, Innovation Strategy and thinking through the effects, this digital world has on our minds and life.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/sBhMvsZDPe-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1400&quot; height=&quot;931&quot; srcset=&quot;https://www.swjh.de/assets/sBhMvsZDPe-600.avif 600w, https://www.swjh.de/assets/sBhMvsZDPe-1000.avif 1000w, https://www.swjh.de/assets/sBhMvsZDPe-1400.avif 1400w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Change the Playback Speed of any Online Video</title>
    <link href="https://www.swjh.de/blog/change-video-playback-speed/" />
    <updated>2020-01-07T00:00:00Z</updated>
    <id>https://www.swjh.de/blog/change-video-playback-speed/</id>
    <content type="html">&lt;p&gt;For every HTML Video element, you can change the playback speed, even if there are no control buttons for this funcionality.
This works for every modern website including Netflix or Youtube. Just open the browser console by hitting &lt;code&gt;f12&lt;/code&gt; on your keyboard, paste the following snippet and hit enter.&lt;/p&gt;
&lt;pre class=&quot;js codeblock grid-popout&quot; data-language=&quot;js&quot;&gt;&lt;code class=&quot;language-js styled-scrollbar&quot;&gt;document&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;querySelector&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;video&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;playbackRate &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1.3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Of course you can change the value to anything you want. More information on &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/Guide/Audio_and_video_manipulation&quot;&gt;video manipulation on MDN&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Highlights from 36c3</title>
    <link href="https://www.swjh.de/blog/36c3-highlights/" />
    <updated>2020-01-03T00:00:00Z</updated>
    <id>https://www.swjh.de/blog/36c3-highlights/</id>
    <content type="html">&lt;p&gt;36c3 had some awesome talks again. Find the full Playlist here: &lt;a href=&quot;https://media.ccc.de/c/36c3&quot;&gt;Original Version&lt;/a&gt; / &lt;a href=&quot;https://www.youtube.com/playlist?list=PL_IxoDz1Nq2YWdnWC4VFPk5ovr_xUZemX&quot;&gt;English version on YT&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;My personal highlight is (no surprise) &lt;a href=&quot;https://media.ccc.de/v/36c3-10652-bahnmining_-_punktlichkeit_ist_eine_zier&quot;&gt;David Kiresel&#39;s talk on Data mining Deutsche Bahn&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Also don&#39;t miss &lt;a href=&quot;https://youtu.be/Nj3YFprqAr8&quot;&gt;Moxie Marlinspike (inventor of Signal App) talking about (de)centralisation and privacy&lt;/a&gt; and Will Scott on &lt;a href=&quot;https://youtu.be/ezA01rs7n3s&quot;&gt;Private Messaging&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Every german citizen should watch &lt;a href=&quot;https://youtu.be/q6l_B2fgJjM&quot;&gt;&amp;quot;Hacker hin oder her&amp;quot;: Die elektronische Patientenakte kommt!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;It&#39;s suprisingly easy to &lt;a href=&quot;https://youtu.be/k8FIDGmmYvs&quot;&gt;break PDF securty features&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>CSS &#39;all:&#39; shorthand</title>
    <link href="https://www.swjh.de/blog/css-all-shorthand/" />
    <updated>2019-12-22T00:00:00Z</updated>
    <id>https://www.swjh.de/blog/css-all-shorthand/</id>
    <content type="html">&lt;p&gt;&amp;gt; The all shorthand CSS property resets all of an element&#39;s properties (except unicode-bidi and direction). It can set properties to their initial or inherited values, or to the values specified in another stylesheet origin. &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/all&quot;&gt;MDN: all&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I&#39;m not sure if I&#39;d ever want to use it, but this is how it works:&lt;/p&gt;
&lt;pre class=&quot;css codeblock grid-popout&quot; data-language=&quot;css&quot;&gt;&lt;code class=&quot;language-css styled-scrollbar&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;/* reset all css to default values */&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.foo&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token property&quot;&gt;all&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; initial&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
</content>
  </entry>
  <entry>
    <title>Base16 Leaf Tomorrow Theme for VSCode</title>
    <link href="https://www.swjh.de/projects/base16-leaf-tomorrow-theme-for-vscode/" />
    <updated>2019-11-14T00:00:00Z</updated>
    <id>https://www.swjh.de/projects/base16-leaf-tomorrow-theme-for-vscode/</id>
    <content type="html">&lt;p&gt;Since &amp;quot;Tomorrow&amp;quot; just felt too red to me, I replaced that color with a nice green. Out came a less red and more green version of Base16 Tomorrow Dark Theme with some modifications in secondary colors. Now also optimised for writing distraction-free in markdown. It displays bold bold and italic in italics.&lt;/p&gt;
&lt;p&gt;Install the theme from &lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=swjh.base16-leaf-tomorrow-vscode&quot;&gt;VSCode marketplace&lt;/a&gt; or checkout the &lt;a href=&quot;https://github.com/simonhermann/base16-leaf-tomorrow-vscode-theme&quot;&gt;Repository on Github&lt;/a&gt;.&lt;/p&gt;
&lt;img alt=&quot;Mockup of the Website on different devices.&quot; src=&quot;https://www.swjh.de/assets/3IZw-5ZqBA-600.gif&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1000&quot; height=&quot;445&quot; srcset=&quot;https://www.swjh.de/assets/3IZw-5ZqBA-600.gif 600w, https://www.swjh.de/assets/3IZw-5ZqBA-1000.gif 1000w&quot; sizes=&quot;auto&quot;&gt;
</content>
  </entry>
  <entry>
    <title>:focus-visible CSS pseudo-class</title>
    <link href="https://www.swjh.de/blog/focus-visible-css-pseudo-class/" />
    <updated>2019-05-25T00:00:00Z</updated>
    <id>https://www.swjh.de/blog/focus-visible-css-pseudo-class/</id>
    <content type="html">&lt;p&gt;&lt;strong&gt;Today I learned:&lt;/strong&gt;
There&#39;s an alternative to &lt;code&gt;:focus&lt;/code&gt;, that&#39;s only applied, when selecting the element via keyboard: &lt;code&gt;:focus-visible&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&amp;gt; The :focus-visible pseudo-class applies while an element matches the :focus pseudo-class, and the UA determines via heuristics that the focus should be specially indicated on the element (typically via a “focus ring”).
&amp;gt; &lt;a href=&quot;https://caniuse.com/#search=focus-visible&quot;&gt;Entry on caniuse.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Unfortunately &lt;a href=&quot;https://caniuse.com/#search=focus-visible&quot;&gt;support is not great yet&lt;/a&gt;. But there&#39;s a &lt;a href=&quot;https://github.com/WICG/focus-visible&quot;&gt;polyfil&lt;/a&gt; and a way to &lt;a href=&quot;https://vimeo.com/331530115&quot;&gt;enhance progressively (Video, about minute 41:00)&lt;/a&gt;:&lt;/p&gt;
&lt;pre class=&quot;css codeblock grid-popout&quot; data-language=&quot;css&quot;&gt;&lt;code class=&quot;language-css styled-scrollbar&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;:focus:not(:focus-visible)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token comment&quot;&gt;/* styles */&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
</content>
  </entry>
  <entry>
    <title>How to style Browser Scrollbars</title>
    <link href="https://www.swjh.de/blog/how-to-style-browser-scrollbars/" />
    <updated>2019-05-20T00:00:00Z</updated>
    <id>https://www.swjh.de/blog/how-to-style-browser-scrollbars/</id>
    <content type="html">&lt;p&gt;Scrollbars still look like 1995 on Windows, so here is an example how to style browser scrollbars (in use on this website). The CSS poperty &lt;a href=&quot;https://caniuse.com/#search=scrollbar&quot;&gt;only works in Firefox for now&lt;/a&gt;, but the other gibberish underneath also makes Chrome look great!&lt;/p&gt;
&lt;p&gt;Edit: Updated Snippet. In case you only want to change scrollbar style on windows an keep the original everywhere else, a bit of js is required. More details in the article by filamentgroup: &lt;a href=&quot;https://www.filamentgroup.com/lab/scrollbars/&quot;&gt;Two Browsers walked into a Scrollbar&lt;/a&gt;&lt;/p&gt;
&lt;pre class=&quot;css codeblock grid-popout&quot; data-language=&quot;css&quot;&gt;&lt;code class=&quot;language-css styled-scrollbar&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;:root&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token property&quot;&gt;--scrollbar-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0.75rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token property&quot;&gt;--scrollbar-minlength&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1.5rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;/* min length of scrollbar thumb (width of horizontal, height of vertical) */&lt;/span&gt;
	&lt;span class=&quot;token property&quot;&gt;--scrollbar-ff-width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; thin&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;/* FF-only accepts auto, thin, none */&lt;/span&gt;
	&lt;span class=&quot;token property&quot;&gt;--scrollbar-track-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; transparent&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token property&quot;&gt;--scrollbar-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;rgba&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;200&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 200&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 200&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 0.2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token property&quot;&gt;--scrollbar-color-hover&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;rgba&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;200&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 200&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 200&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 0.3&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token property&quot;&gt;--scrollbar-color-active&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;rgb&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;200&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 200&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 200&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 0.8&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.styled-scrollbar&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token comment&quot;&gt;/* firefox */&lt;/span&gt;
	&lt;span class=&quot;token property&quot;&gt;scrollbar-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--scrollbar-color&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--scrollbar-track-color&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token property&quot;&gt;scrollbar-width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; thin&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;/* webkit */&lt;/span&gt;
	&amp;amp;amp&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;-webkit-scrollbar &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token property&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--scrollbar-size&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		&lt;span class=&quot;token property&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--scrollbar-size&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&amp;amp;amp&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;-webkit-scrollbar-track &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--scrollbar-track-color&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&amp;amp;amp&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;-webkit-scrollbar-thumb &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token property&quot;&gt;border-radius&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 3px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		&lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--scrollbar-color&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&amp;amp;amp&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;-webkit-scrollbar-thumb&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;hover &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--scrollbar-color-hover&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&amp;amp;amp&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;-webkit-scrollbar-thumb&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;active &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--scrollbar-color-active&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&amp;amp;amp&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;-webkit-scrollbar-thumb&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;vertical &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token property&quot;&gt;min-height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--scrollbar-minlength&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&amp;amp;amp&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;-webkit-scrollbar-thumb&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;horizontal &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token property&quot;&gt;min-width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--scrollbar-minlength&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
</content>
  </entry>
  <entry>
    <title>How to inherit scoped styles in Vue to child components</title>
    <link href="https://www.swjh.de/blog/how-to-inherit-scoped-styles-in-vue-to-child-components/" />
    <updated>2019-05-13T00:00:00Z</updated>
    <id>https://www.swjh.de/blog/how-to-inherit-scoped-styles-in-vue-to-child-components/</id>
    <content type="html">&lt;p&gt;I just learned from &lt;a href=&quot;https://vuedose.tips/&quot;&gt;VueDoese Newsletter&lt;/a&gt; that elements in nested components are stylable from the parent while still having scoped css with the &lt;code&gt;/deep/&lt;/code&gt; selector:&lt;/p&gt;
&lt;pre class=&quot;css codeblock grid-popout&quot; data-language=&quot;css&quot;&gt;&lt;code class=&quot;language-css styled-scrollbar&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;.parent /deep/ .child&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; indigo&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;https://vuedose.tips/tips/style-inner-elements-in-scoped-css-using-deep-selector-in-vue-js/&quot;&gt;Read the full Post by VueDose&lt;/a&gt;. Or have a look at the &lt;a href=&quot;https://codesandbox.io/s/40y6v5w3w0&quot;&gt;example&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>How to define canonical URL in Nuxt.js</title>
    <link href="https://www.swjh.de/blog/how-to-define-canonical-url-in-nuxt-js/" />
    <updated>2019-05-09T00:00:00Z</updated>
    <id>https://www.swjh.de/blog/how-to-define-canonical-url-in-nuxt-js/</id>
    <content type="html">&lt;p&gt;How to set rel=canonical to primary domain in Nuxt.js (and let search engines know to ignore duplicate content on staging server).&lt;/p&gt;
&lt;pre class=&quot;js codeblock grid-popout&quot; data-language=&quot;js&quot;&gt;&lt;code class=&quot;language-js styled-scrollbar&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;// layouts/default.vue&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;default&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token function&quot;&gt;head&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			&lt;span class=&quot;token literal-property property&quot;&gt;link&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
				&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
					&lt;span class=&quot;token literal-property property&quot;&gt;rel&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;canonical&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
					&lt;span class=&quot;token literal-property property&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;https://www.my-primary-domain.com&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;$route&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;path&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
				&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
			&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
</content>
  </entry>
  <entry>
    <title>Business Innovation Cards</title>
    <link href="https://www.swjh.de/projects/business-innovation-cards/" />
    <updated>2019-01-08T00:00:00Z</updated>
    <id>https://www.swjh.de/projects/business-innovation-cards/</id>
    <content type="html">&lt;p&gt;A Serious Card Game I co-designed at SI Labs that lets you develop new directions for your business.&lt;/p&gt;
&lt;img alt=&quot;TODO:&quot; src=&quot;https://www.swjh.de/assets/QqRaTb18WK-600.avif&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1000&quot; height=&quot;666&quot; srcset=&quot;https://www.swjh.de/assets/QqRaTb18WK-600.avif 600w, https://www.swjh.de/assets/QqRaTb18WK-1000.avif 1000w&quot; sizes=&quot;auto&quot;&gt;
&lt;img alt=&quot;TODO:&quot; src=&quot;https://www.swjh.de/assets/kUXZOb4Kd5-600.avif&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;956&quot; height=&quot;637&quot; srcset=&quot;https://www.swjh.de/assets/kUXZOb4Kd5-600.avif 600w, https://www.swjh.de/assets/kUXZOb4Kd5-956.avif 956w&quot; sizes=&quot;auto&quot;&gt;
</content>
  </entry>
  <entry>
    <title>Bonitätsmanager.de</title>
    <link href="https://www.swjh.de/projects/bonitaetsmanager-de/" />
    <updated>2018-12-25T00:00:00Z</updated>
    <id>https://www.swjh.de/projects/bonitaetsmanager-de/</id>
    <content type="html">&lt;p&gt;Many small business owners feel overwhelmed when it comes to their own creditworthiness and are not very familiar with the subject. They do not know what their own creditworthiness is or how it is calculated. Creditworthiness is of great importance for business: it determines whether a company will get financing at all and how expensive it will be. To solve this we explored ways in which customers can view processes and actively participate in shaping their creditworthiness.&lt;/p&gt;
&lt;p&gt;With the service, entrepreneurs can check their creditworthiness online. They receive a current score and tips on how they can improve it quickly and easily. We developed a prototype and tested it in Berlin with potential customers. In the beta phase with early adopters, we refined the flows according to user feedback. Then we prepared the Germany-wide launch.&lt;/p&gt;
&lt;p&gt;Read more in the &lt;a href=&quot;https://www.si-labs.com/cases/transparente-bonitaet-fuer-unternehmen/&quot;&gt;case study at Service Innovation Labs (german)&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Microinteractions</title>
    <link href="https://www.swjh.de/projects/microinteractions/" />
    <updated>2018-06-06T00:00:00Z</updated>
    <id>https://www.swjh.de/projects/microinteractions/</id>
    <content type="html">&lt;p&gt;[German]&lt;/p&gt;
&lt;div lang=&quot;de&quot;&gt;
Warum können vermeintlich kleine Interaktionen so wichtig sein? Wodurch wird eine (Mikro-)Interaktion ausgelöst? Wie funktioniert sie und woher weiß ein Nutzer wie sie funktioniert? Welche Rolle spielen Zeit und Bewegung? Woher kommen die grundlegenden Muster und Regeln, denen digitale Knöpfe, Schalter oder Fenster entlehnt sind? Wie haben sie sich im Lauf der Zeit verändert und wie sieht deren Zukunft aus?
Die Webseite war Teil meiner Diplomarbeit und entstand im Rahmen meines Studiums Kommunikationsdesign &amp;amp; Medien an der Hochschule Wismar.
&lt;!-- TODO: Zum Projekt: [Microinteractions](https://microinteractions.swjh.de/) --&gt;
&lt;/div&gt;
</content>
  </entry>
  <entry>
    <title>Launching a DIY-Workshop Plattform with Audi</title>
    <link href="https://www.swjh.de/projects/launching-a-diy-workshop-plattform/" />
    <updated>2017-12-01T00:00:00Z</updated>
    <id>https://www.swjh.de/projects/launching-a-diy-workshop-plattform/</id>
    <content type="html">&lt;p&gt;Together with a big automotive brand we created an online plattform where users could explore and book craft workshops.&lt;/p&gt;
&lt;p&gt;Despite high usage numbers, satisfied hosts and a reliable, beautiful webplattform, the project was unfortunately discontiunued after a few moths. After all it was just an experiment for the client.&lt;/p&gt;
&lt;p&gt;1pLAczk_GmQ&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/xRBC6MpWgF-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1000&quot; height=&quot;667&quot; srcset=&quot;https://www.swjh.de/assets/xRBC6MpWgF-600.avif 600w, https://www.swjh.de/assets/xRBC6MpWgF-1000.avif 1000w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/xPiY091Lok-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1000&quot; height=&quot;666&quot; srcset=&quot;https://www.swjh.de/assets/xPiY091Lok-600.avif 600w, https://www.swjh.de/assets/xPiY091Lok-1000.avif 1000w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/5RPf4DuDQc-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1000&quot; height=&quot;666&quot; srcset=&quot;https://www.swjh.de/assets/5RPf4DuDQc-600.avif 600w, https://www.swjh.de/assets/5RPf4DuDQc-1000.avif 1000w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/sz3uGX7q-G-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1000&quot; height=&quot;666&quot; srcset=&quot;https://www.swjh.de/assets/sz3uGX7q-G-600.avif 600w, https://www.swjh.de/assets/sz3uGX7q-G-1000.avif 1000w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/KbEfr4Lyfu-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1000&quot; height=&quot;666&quot; srcset=&quot;https://www.swjh.de/assets/KbEfr4Lyfu-600.avif 600w, https://www.swjh.de/assets/KbEfr4Lyfu-1000.avif 1000w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/5FSgZWR5pm-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1920&quot; height=&quot;1279&quot; srcset=&quot;https://www.swjh.de/assets/5FSgZWR5pm-600.avif 600w, https://www.swjh.de/assets/5FSgZWR5pm-1000.avif 1000w, https://www.swjh.de/assets/5FSgZWR5pm-1400.avif 1400w, https://www.swjh.de/assets/5FSgZWR5pm-1920.avif 1920w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/R7zrZSgjai-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1920&quot; height=&quot;1279&quot; srcset=&quot;https://www.swjh.de/assets/R7zrZSgjai-600.avif 600w, https://www.swjh.de/assets/R7zrZSgjai-1000.avif 1000w, https://www.swjh.de/assets/R7zrZSgjai-1400.avif 1400w, https://www.swjh.de/assets/R7zrZSgjai-1920.avif 1920w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/KCBnl1T6ZP-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1000&quot; height=&quot;667&quot; srcset=&quot;https://www.swjh.de/assets/KCBnl1T6ZP-600.avif 600w, https://www.swjh.de/assets/KCBnl1T6ZP-1000.avif 1000w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/g9KfACvE-C-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;800&quot; height=&quot;1199&quot; srcset=&quot;https://www.swjh.de/assets/g9KfACvE-C-600.avif 600w, https://www.swjh.de/assets/g9KfACvE-C-800.avif 800w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
&lt;p&gt;SsfYZm9wpEg&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Launching a Parking Ticket App with Volkswagen</title>
    <link href="https://www.swjh.de/projects/launching-a-parking-ticket-app-with-vw/" />
    <updated>2017-06-30T00:00:00Z</updated>
    <id>https://www.swjh.de/projects/launching-a-parking-ticket-app-with-vw/</id>
    <content type="html">&lt;p&gt;During my time at &lt;a href=&quot;http://www.si-labs.com/&quot;&gt;Service Innovation Labs&lt;/a&gt;, I helped launching one of Volkswagen first digital services: A parking ticket app. In small team consisting of Project Lead, 2 Designers and 4 Developers, we built the first versions of VW &lt;a href=&quot;https://www.volkswagen-we.com/de/Park.html&quot;&gt;We Park&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Being one of the designers, my focus was creating UX and UI Designs for the &lt;a href=&quot;https://apps.apple.com/de/app/we-park-die-park-app/id1046484946&quot;&gt;iOS&lt;/a&gt; and &lt;a href=&quot;https://play.google.com/store/apps/details?id=de.volkswagen.wedrive.park&quot;&gt;Android&lt;/a&gt; Apps. We wireframed and developed prototypes, then testet them where our potential users are: on the street. It turned satisfying the &lt;em&gt;users&lt;/em&gt; was not the hardest task we had – Satisfying the client’s (backt then) uber-precautious legal department was.&lt;/p&gt;
&lt;p&gt;This was my first Project for a big client after university, and I had to learn so much in a short, very intense time. But it turned out pretty good (for a MVP) and after launch we handed the project over to a client-side team. We Park was the first service in the Volkswagen “We” universe and initiated their transformation from a &lt;em&gt;car manufacturer&lt;/em&gt; to &lt;em&gt;provider of digital mobility services&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Read more about the Project in the &lt;a href=&quot;https://www.si-labs.com/cases/parken-per-app-fuer-volkswagen/&quot;&gt;Case Study at si-labs.com (German)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/0-DY6OHVvu-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;600&quot; height=&quot;1066&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/Hfshue75lU-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;600&quot; height=&quot;1066&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/Y-AliSH__l-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;600&quot; height=&quot;1066&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/JbwS043J5N-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;600&quot; height=&quot;1065&quot;&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>AKR Tax Consultancy</title>
    <link href="https://www.swjh.de/projects/akr-tax-de/" />
    <updated>2016-04-13T00:00:00Z</updated>
    <id>https://www.swjh.de/projects/akr-tax-de/</id>
    <content type="html"></content>
  </entry>
  <entry>
    <title>Wismar University Website</title>
    <link href="https://www.swjh.de/projects/hs-wismar/" />
    <updated>2015-10-08T00:00:00Z</updated>
    <id>https://www.swjh.de/projects/hs-wismar/</id>
    <content type="html">&lt;p&gt;The website of university really &lt;em&gt;really&lt;/em&gt; needed a refresh. They still had a separate “jQery mobile” version instead of a responsive website. Plus approximately 30 additional sub-sites running on various systems. Short: it was a mess.&lt;/p&gt;
&lt;p&gt;While it was clear that I won’t have the time to fully support the project until launch, I still wanted create a basic concept they could show stakeholders, build upon and refine. Since my screen designs where pretty rough and untested I never expected to see much left of them in the final website. But: Now its online, pretty much exactly how I created it. Have a look: &lt;a href=&quot;https://www.hs-wismar.de/&quot;&gt;hs-wismar.de&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The main challenge here was coming up with a navigation concept that would be able to cover the hundreds of pages. My solution was a mega menu on large screens and some kind of accordion plus a lot of shortcuts on mobile sizes.&lt;br&gt;
Without fully understanding all the content, knowing if it needed an update or was not needed anymore at all, I tried to bring some order to what I found and layed out an information hirarchy that made sense in my eyes. Cleaning up all the legacy content happened to occupy several generations of working students after me.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/2ZTHUOedj4-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1920&quot; height=&quot;1098&quot; srcset=&quot;https://www.swjh.de/assets/2ZTHUOedj4-600.avif 600w, https://www.swjh.de/assets/2ZTHUOedj4-1000.avif 1000w, https://www.swjh.de/assets/2ZTHUOedj4-1400.avif 1400w, https://www.swjh.de/assets/2ZTHUOedj4-1920.avif 1920w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/fO8Q2SDlQK-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1400&quot; height=&quot;875&quot; srcset=&quot;https://www.swjh.de/assets/fO8Q2SDlQK-600.avif 600w, https://www.swjh.de/assets/fO8Q2SDlQK-1000.avif 1000w, https://www.swjh.de/assets/fO8Q2SDlQK-1400.avif 1400w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/lEuOjrRV0l-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1400&quot; height=&quot;875&quot; srcset=&quot;https://www.swjh.de/assets/lEuOjrRV0l-600.avif 600w, https://www.swjh.de/assets/lEuOjrRV0l-1000.avif 1000w, https://www.swjh.de/assets/lEuOjrRV0l-1400.avif 1400w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/u4x0kMC-5h-567.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;567&quot; height=&quot;1121&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/fZXTF0kjPF-568.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;568&quot; height=&quot;1121&quot;&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Zukunft Leben</title>
    <link href="https://www.swjh.de/projects/website-zukunft-leben/" />
    <updated>2015-04-19T00:00:00Z</updated>
    <id>https://www.swjh.de/projects/website-zukunft-leben/</id>
    <content type="html">&lt;p&gt;[German]&lt;/p&gt;
&lt;div lang=&quot;de&quot;&gt;
&lt;p&gt;Zukunft Leben lässt uns auf sinnliche Weise erfahren, was Nachhaltigkeit bedeutet. Ergänzend zum gleichnamigen Hörbuch des Silberfuchs-Verlags entsteht hier eine neue Form digitalen Magazins. Dem Besucher wird das Thema Nachhaltigkeit ansprechend und niedrigschwellig mit Hilfe formatfüllender Bilder, Animationsvideos und interaktiven Inhalten nahegebracht.&lt;/p&gt;
&lt;p&gt;In Zusammenarbeit mit &lt;a href=&quot;http://markusdittrich.de&quot; title=&quot;Website von Markus Dittrich&quot; target=&quot;_blank&quot;&gt;Markus Dittrich&lt;/a&gt; u. A.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/hfVYmRzdCu-600.avif&quot; alt=&quot;Eis!&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1400&quot; height=&quot;875&quot; srcset=&quot;https://www.swjh.de/assets/hfVYmRzdCu-600.avif 600w, https://www.swjh.de/assets/hfVYmRzdCu-1000.avif 1000w, https://www.swjh.de/assets/hfVYmRzdCu-1400.avif 1400w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
&lt;div&gt;
&lt;my-video filename=&quot;zl_eis.mp4&quot;&gt;
&lt;p&gt;&lt;video controls=&quot;&quot; src=&quot;http://files.swjh.de/videos/zl_eis.mp4&quot; controlslist=&quot;nodownload&quot; loading=&quot;lazy&quot; class=&quot;my-video&quot;&gt;&lt;/video&gt;&lt;/p&gt;
&lt;/my-video&gt;
&lt;my-video filename=&quot;zl_irrelevant.mp4&quot;&gt;
&lt;p&gt;&lt;video controls=&quot;&quot; src=&quot;http://files.swjh.de/videos/zl_irrelevant.mp4&quot; controlslist=&quot;nodownload&quot; loading=&quot;lazy&quot; class=&quot;my-video&quot;&gt;&lt;/video&gt;&lt;/p&gt;
&lt;/my-video&gt;
&lt;/div&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/MGD6qKlOgB-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1400&quot; height=&quot;875&quot; srcset=&quot;https://www.swjh.de/assets/MGD6qKlOgB-600.avif 600w, https://www.swjh.de/assets/MGD6qKlOgB-1000.avif 1000w, https://www.swjh.de/assets/MGD6qKlOgB-1400.avif 1400w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/c0PYjDI4AT-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1400&quot; height=&quot;875&quot; srcset=&quot;https://www.swjh.de/assets/c0PYjDI4AT-600.avif 600w, https://www.swjh.de/assets/c0PYjDI4AT-1000.avif 1000w, https://www.swjh.de/assets/c0PYjDI4AT-1400.avif 1400w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/LXGUAZ9NqZ-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1400&quot; height=&quot;875&quot; srcset=&quot;https://www.swjh.de/assets/LXGUAZ9NqZ-600.avif 600w, https://www.swjh.de/assets/LXGUAZ9NqZ-1000.avif 1000w, https://www.swjh.de/assets/LXGUAZ9NqZ-1400.avif 1400w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/JIMKqXRbyo-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1400&quot; height=&quot;875&quot; srcset=&quot;https://www.swjh.de/assets/JIMKqXRbyo-600.avif 600w, https://www.swjh.de/assets/JIMKqXRbyo-1000.avif 1000w, https://www.swjh.de/assets/JIMKqXRbyo-1400.avif 1400w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/BwxdmNH4Q2-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1400&quot; height=&quot;875&quot; srcset=&quot;https://www.swjh.de/assets/BwxdmNH4Q2-600.avif 600w, https://www.swjh.de/assets/BwxdmNH4Q2-1000.avif 1000w, https://www.swjh.de/assets/BwxdmNH4Q2-1400.avif 1400w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/aYg47yrYTx-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1400&quot; height=&quot;787&quot; srcset=&quot;https://www.swjh.de/assets/aYg47yrYTx-600.avif 600w, https://www.swjh.de/assets/aYg47yrYTx-1000.avif 1000w, https://www.swjh.de/assets/aYg47yrYTx-1400.avif 1400w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
&lt;/div&gt;
</content>
  </entry>
  <entry>
    <title>Gourmääh iPad Cookbook</title>
    <link href="https://www.swjh.de/projects/gourmaeaeh-ipad-cookbook/" />
    <updated>2014-06-11T00:00:00Z</updated>
    <id>https://www.swjh.de/projects/gourmaeaeh-ipad-cookbook/</id>
    <content type="html">&lt;p&gt;A prototype for a digital magazine that makes the joys of cooking tasty in a humorous way for all the young at heart.&lt;/p&gt;
&lt;p&gt;In collaboration with Max Friedrich and Annika Möller&lt;/p&gt;
&lt;my-video filename=&quot;gourmaah_1.mp4&quot;&gt;
&lt;p&gt;&lt;video controls=&quot;&quot; src=&quot;http://files.swjh.de/videos/gourmaah_1.mp4&quot; controlslist=&quot;nodownload&quot; loading=&quot;lazy&quot; class=&quot;my-video&quot;&gt;&lt;/video&gt;&lt;/p&gt;
&lt;/my-video&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/GnvW6-A7DL-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1000&quot; height=&quot;750&quot; srcset=&quot;https://www.swjh.de/assets/GnvW6-A7DL-600.avif 600w, https://www.swjh.de/assets/GnvW6-A7DL-1000.avif 1000w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/Lkf4GsifTE-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;900&quot; height=&quot;1200&quot; srcset=&quot;https://www.swjh.de/assets/Lkf4GsifTE-600.avif 600w, https://www.swjh.de/assets/Lkf4GsifTE-900.avif 900w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/gqm9YL_a6s-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;900&quot; height=&quot;1200&quot; srcset=&quot;https://www.swjh.de/assets/gqm9YL_a6s-600.avif 600w, https://www.swjh.de/assets/gqm9YL_a6s-900.avif 900w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/QNbcxkp-Ds-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1000&quot; height=&quot;750&quot; srcset=&quot;https://www.swjh.de/assets/QNbcxkp-Ds-600.avif 600w, https://www.swjh.de/assets/QNbcxkp-Ds-1000.avif 1000w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>How to Hochschulgremien</title>
    <link href="https://www.swjh.de/projects/film-how-to-hochschulgremien/" />
    <updated>2014-04-11T00:00:00Z</updated>
    <id>https://www.swjh.de/projects/film-how-to-hochschulgremien/</id>
    <content type="html">&lt;p&gt;[German]&lt;/p&gt;
&lt;div lang=&quot;de&quot;&gt;
&lt;p&gt;Ein politisch nicht ganz korrekter Erklärfilm, den jeder Studierende der HS Wismar gesehen haben sollte.
AStA, StuPa, FSR: Die wenigsten Studenten der Hochschule Wismar wussten, wofür diese Abkürzungen stehen, geschweige denn, welche Aufgaben die studentischen Gremien haben. Dieser Animationsfilm beantwortet auf unterhaltsame Weise all diese Fragen und gibt einen Überblick über das hochschulpolitische System der HS Wismar.&lt;/p&gt;
&lt;p&gt;In Zusammenarbeit mit &lt;a href=&quot;http://markusdittrich.de/&quot;&gt;Markus Dittrich&lt;/a&gt;, &lt;a href=&quot;https://www.xing.com/profile/Tobias_Aagard&quot;&gt;Tobias Aagard&lt;/a&gt; und &lt;a href=&quot;https://be.linkedin.com/in/julien-jardon-80b37b199&quot;&gt;Julien Jardon&lt;/a&gt;&lt;/p&gt;
&lt;lite-youtube videoid=&quot;0tgOjdD7Gx0&quot; style=&quot;background-image: url(&#39;https://i.ytimg.com/vi/0tgOjdD7Gx0/hqdefault.jpg&#39;)&quot; class=&quot;grid-feature&quot;&gt;
	&lt;a href=&quot;https://youtube-nocookie.com/watch?v=0tgOjdD7Gx0&quot; title=&quot;`Play Video: ${videotitle}`&quot; aria-label=&quot;Play Video: Video ansehen: How to Hochschulgremien&quot; class=&quot;lyt-playbtn&quot;&gt;
&lt;p&gt;&lt;/p&gt;&lt;/a&gt;
&lt;/lite-youtube&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/b6EQLxuSec-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1920&quot; height=&quot;1080&quot; srcset=&quot;https://www.swjh.de/assets/b6EQLxuSec-600.avif 600w, https://www.swjh.de/assets/b6EQLxuSec-1000.avif 1000w, https://www.swjh.de/assets/b6EQLxuSec-1400.avif 1400w, https://www.swjh.de/assets/b6EQLxuSec-1920.avif 1920w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/ZS4BW9V8E1-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1920&quot; height=&quot;1080&quot; srcset=&quot;https://www.swjh.de/assets/ZS4BW9V8E1-600.avif 600w, https://www.swjh.de/assets/ZS4BW9V8E1-1000.avif 1000w, https://www.swjh.de/assets/ZS4BW9V8E1-1400.avif 1400w, https://www.swjh.de/assets/ZS4BW9V8E1-1920.avif 1920w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/xUD3Kqo02R-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1920&quot; height=&quot;1080&quot; srcset=&quot;https://www.swjh.de/assets/xUD3Kqo02R-600.avif 600w, https://www.swjh.de/assets/xUD3Kqo02R-1000.avif 1000w, https://www.swjh.de/assets/xUD3Kqo02R-1400.avif 1400w, https://www.swjh.de/assets/xUD3Kqo02R-1920.avif 1920w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/LNJ2NT1R7d-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1920&quot; height=&quot;1080&quot; srcset=&quot;https://www.swjh.de/assets/LNJ2NT1R7d-600.avif 600w, https://www.swjh.de/assets/LNJ2NT1R7d-1000.avif 1000w, https://www.swjh.de/assets/LNJ2NT1R7d-1400.avif 1400w, https://www.swjh.de/assets/LNJ2NT1R7d-1920.avif 1920w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/MwWClzzMmy-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1920&quot; height=&quot;1080&quot; srcset=&quot;https://www.swjh.de/assets/MwWClzzMmy-600.avif 600w, https://www.swjh.de/assets/MwWClzzMmy-1000.avif 1000w, https://www.swjh.de/assets/MwWClzzMmy-1400.avif 1400w, https://www.swjh.de/assets/MwWClzzMmy-1920.avif 1920w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
&lt;/div&gt;
</content>
  </entry>
  <entry>
    <title>Je t’aime MV</title>
    <link href="https://www.swjh.de/projects/je-taime-mv/" />
    <updated>2014-04-10T00:00:00Z</updated>
    <id>https://www.swjh.de/projects/je-taime-mv/</id>
    <content type="html">&lt;p&gt;Die Fakultät Gestaltung der Hochschule Wismar präsentierte im Juni 2014 die besten studentischen Arbeiten mit regiolalem Bezug.
Eine vom Besucher per iPad steuerbare Fotogalerie, ein Augmeted-Reality-Kiosk und per Gyroskop kontrollierte iPads für die dreidimensionale Darstellung von Architekturmodellen ermöglichten eine individuelle Erfahrung von Ausstellungsinhalten.&lt;/p&gt;
&lt;p&gt;In Zusammenarbeit mit Markus Dittrich, Johann Mikkat, Richard Stickel, u. A.
&lt;my-video filename=&quot;jetaime_1.mp4&quot;&gt;&lt;/my-video&gt;&lt;/p&gt;
&lt;p&gt;&lt;video controls=&quot;&quot; src=&quot;http://files.swjh.de/videos/jetaime_1.mp4&quot; controlslist=&quot;nodownload&quot; loading=&quot;lazy&quot; class=&quot;my-video&quot;&gt;&lt;/video&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/80VxGlDPZ0-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1400&quot; height=&quot;875&quot; srcset=&quot;https://www.swjh.de/assets/80VxGlDPZ0-600.avif 600w, https://www.swjh.de/assets/80VxGlDPZ0-1000.avif 1000w, https://www.swjh.de/assets/80VxGlDPZ0-1400.avif 1400w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/Vm1UO_2YrF-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1400&quot; height=&quot;875&quot; srcset=&quot;https://www.swjh.de/assets/Vm1UO_2YrF-600.avif 600w, https://www.swjh.de/assets/Vm1UO_2YrF-1000.avif 1000w, https://www.swjh.de/assets/Vm1UO_2YrF-1400.avif 1400w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Virtual Campus Tours</title>
    <link href="https://www.swjh.de/projects/360-virtual-campus-tours/" />
    <updated>2014-03-11T00:00:00Z</updated>
    <id>https://www.swjh.de/projects/360-virtual-campus-tours/</id>
    <content type="html"></content>
  </entry>
  <entry>
    <title>Vasarely</title>
    <link href="https://www.swjh.de/projects/film-vasarely/" />
    <updated>2014-01-24T00:00:00Z</updated>
    <id>https://www.swjh.de/projects/film-vasarely/</id>
    <content type="html">&lt;p&gt;A typographic audio-visualisation inspired by the works of the Op-Art artist Victor Vasarely syncronized to the song &lt;em&gt;Disc Wars&lt;/em&gt; by Daft Punk.&lt;/p&gt;
&lt;my-video filename=&quot;vasarely_low.mp4&quot;&gt;
&lt;p&gt;&lt;video controls=&quot;&quot; src=&quot;http://files.swjh.de/videos/vasarely_low.mp4&quot; controlslist=&quot;nodownload&quot; loading=&quot;lazy&quot; class=&quot;my-video&quot;&gt;&lt;/video&gt;&lt;/p&gt;
&lt;/my-video&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/pGh-R3R2iX-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1920&quot; height=&quot;1080&quot; srcset=&quot;https://www.swjh.de/assets/pGh-R3R2iX-600.avif 600w, https://www.swjh.de/assets/pGh-R3R2iX-1000.avif 1000w, https://www.swjh.de/assets/pGh-R3R2iX-1400.avif 1400w, https://www.swjh.de/assets/pGh-R3R2iX-1920.avif 1920w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/jfsnR8KeUN-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1920&quot; height=&quot;1080&quot; srcset=&quot;https://www.swjh.de/assets/jfsnR8KeUN-600.avif 600w, https://www.swjh.de/assets/jfsnR8KeUN-1000.avif 1000w, https://www.swjh.de/assets/jfsnR8KeUN-1400.avif 1400w, https://www.swjh.de/assets/jfsnR8KeUN-1920.avif 1920w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/rGZIFhcXsE-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1920&quot; height=&quot;1080&quot; srcset=&quot;https://www.swjh.de/assets/rGZIFhcXsE-600.avif 600w, https://www.swjh.de/assets/rGZIFhcXsE-1000.avif 1000w, https://www.swjh.de/assets/rGZIFhcXsE-1400.avif 1400w, https://www.swjh.de/assets/rGZIFhcXsE-1920.avif 1920w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/EVmE4gjaFM-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1920&quot; height=&quot;1080&quot; srcset=&quot;https://www.swjh.de/assets/EVmE4gjaFM-600.avif 600w, https://www.swjh.de/assets/EVmE4gjaFM-1000.avif 1000w, https://www.swjh.de/assets/EVmE4gjaFM-1400.avif 1400w, https://www.swjh.de/assets/EVmE4gjaFM-1920.avif 1920w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/e6FapRjG_v-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1920&quot; height=&quot;1080&quot; srcset=&quot;https://www.swjh.de/assets/e6FapRjG_v-600.avif 600w, https://www.swjh.de/assets/e6FapRjG_v-1000.avif 1000w, https://www.swjh.de/assets/e6FapRjG_v-1400.avif 1400w, https://www.swjh.de/assets/e6FapRjG_v-1920.avif 1920w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/466-tRqrFa-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1920&quot; height=&quot;1080&quot; srcset=&quot;https://www.swjh.de/assets/466-tRqrFa-600.avif 600w, https://www.swjh.de/assets/466-tRqrFa-1000.avif 1000w, https://www.swjh.de/assets/466-tRqrFa-1400.avif 1400w, https://www.swjh.de/assets/466-tRqrFa-1920.avif 1920w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Photogrammetry Experiments</title>
    <link href="https://www.swjh.de/projects/photogrammetry-experiments/" />
    <updated>2013-12-31T00:00:00Z</updated>
    <id>https://www.swjh.de/projects/photogrammetry-experiments/</id>
    <content type="html">&lt;p&gt;Experimenting with Photogrammetry software, which was still in the fledgling stages back then and did not work as expected. In the end, producing cool texture files became became my goal rather than nice 3D models.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/39GoXEfa-7-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1920&quot; height=&quot;2715&quot; srcset=&quot;https://www.swjh.de/assets/39GoXEfa-7-600.avif 600w, https://www.swjh.de/assets/39GoXEfa-7-1000.avif 1000w, https://www.swjh.de/assets/39GoXEfa-7-1400.avif 1400w, https://www.swjh.de/assets/39GoXEfa-7-1920.avif 1920w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/-pt5m1xnhO-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1920&quot; height=&quot;2715&quot; srcset=&quot;https://www.swjh.de/assets/-pt5m1xnhO-600.avif 600w, https://www.swjh.de/assets/-pt5m1xnhO-1000.avif 1000w, https://www.swjh.de/assets/-pt5m1xnhO-1400.avif 1400w, https://www.swjh.de/assets/-pt5m1xnhO-1920.avif 1920w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/Y6fd71JQ-u-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1400&quot; height=&quot;1400&quot; srcset=&quot;https://www.swjh.de/assets/Y6fd71JQ-u-600.avif 600w, https://www.swjh.de/assets/Y6fd71JQ-u-1000.avif 1000w, https://www.swjh.de/assets/Y6fd71JQ-u-1400.avif 1400w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.swjh.de/assets/rbDfpp40eX-600.avif&quot; alt=&quot;TODO:alt&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; class=&quot;grid-full-limited&quot; width=&quot;1920&quot; height=&quot;1920&quot; srcset=&quot;https://www.swjh.de/assets/rbDfpp40eX-600.avif 600w, https://www.swjh.de/assets/rbDfpp40eX-1000.avif 1000w, https://www.swjh.de/assets/rbDfpp40eX-1400.avif 1400w, https://www.swjh.de/assets/rbDfpp40eX-1920.avif 1920w&quot; sizes=&quot;auto&quot;&gt;&lt;/p&gt;
</content>
  </entry>
</feed>