<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Franz Laage: Writing</title>
  <link href="https://franz.hamburg/writing.html" />
  <link href="https://franz.hamburg/writing/atom.xml" rel="self" type="application/rss+xml" />
  <id>tag:franz.hamburg,2020:writing</id>
  <subtitle>Software, projects &amp; software projects. Providing helpful technical posts and a
    broad collection of reading material.</subtitle>
  <author>
    <name>Franz Laage</name>
  </author>
  <updated>2021-01-12T19:01:18.892626Z</updated>

  <entry>
    <title>My mail-driven reading list</title>
    <link href="https://franz.hamburg/writing/my-mail-driven-reading-list.html" />
    <id>tag:franz.hamburg,2020-05-05:my-mail-driven-reading-list</id>
    <updated>2020-05-05T12:00:00Z</updated>
    <summary>For my first blog post I want to talk about the reading list I built using AWS SES.</summary>
  </entry>

  <entry>
    <title>Syncing Redux Stores across Browser Tabs</title>
    <link href="https://franz.hamburg/writing/syncing-redux-stores-across-browser-tabs.html" />
    <id>tag:franz.hamburg,2020-05-06:syncing-redux-stores-across-browser-tabs</id>
    <updated>2020-05-06T12:00:00Z</updated>
    <summary>I'm currently working on an web application which runs in two Chrome tabs/windows. The
      tabs have a leader-follower-relationship: So basically the leader tab is allowed to trigger
      state changes, where on the other hand the follower tab can only receive the changes and react
      to them e.g. displaying the changed data.</summary>
  </entry>

  <entry>
    <title>The Moving City - Visualizing Public Transport</title>
    <link href="https://franz.hamburg/writing/the-moving-city.html" />
    <id>tag:franz.hamburg,2020-05-09:the-moving-city---visualizing-public-transport</id>
    <updated>2020-05-09T12:00:00Z</updated>
    <summary>This is a technical write-up on how https://hvv.live came to be, how the basic
      visualization is implemented and what nifty optimization we used to accomplish a satisfying
      user experience.</summary>
  </entry>

  <entry>
    <title>Analytics: Calculate Visits From Page Views</title>
    <link href="https://franz.hamburg/writing/visits-from-page-views.html" />
    <id>tag:franz.hamburg,2020-05-10:analytics:-calculate-visits-from-page-views</id>
    <updated>2020-05-10T12:00:00Z</updated>
    <summary>Disliking the current state of web analytics solutions, I've set up my own little
      thing.</summary>
  </entry>

  <entry>
    <title>Make it local</title>
    <link href="https://franz.hamburg/writing/make-it-local.html" />
    <id>tag:franz.hamburg,2020-05-19:make-it-local</id>
    <updated>2020-05-19T12:00:00Z</updated>
    <summary>So you have a service which does some data processing. It receives some input messages,
      maybe via HTTP, maybe from something like Kafka.</summary>
  </entry>

  <entry>
    <title>Shared storage for lambda functions</title>
    <link href="https://franz.hamburg/writing/shared-storage-for-lambda-functions.html" />
    <id>tag:franz.hamburg,2020-06-28:shared-storage-for-lambda-functions</id>
    <updated>2020-06-28T12:00:00Z</updated>
    <summary>A recent announcement from AWS sparked some joy: You are now able to mount an actual
      file system on lambda functions.</summary>
  </entry>

  <entry>
    <title>Performance Improvements</title>
    <link href="https://franz.hamburg/writing/performance-improvements.html" />
    <id>tag:franz.hamburg,2020-10-31:performance-improvements</id>
    <updated>2020-10-31T12:00:00Z</updated>
    <summary>This post will describe a performance guide I presented to my team last week.</summary>
  </entry>

  <entry>
    <title>A Boring Website</title>
    <link href="https://franz.hamburg/writing/boring-website.html" />
    <id>tag:franz.hamburg,2021-01-12:a-boring-website</id>
    <updated>2021-01-12T12:00:00Z</updated>
    <summary>Programmers enjoy talking and reading about tech stacks. Here is mine</summary>
  </entry>

  <entry>
    <title>Remote Monitoring the JMV</title>
    <link href="https://franz.hamburg/writing/remote-monitoring-the-jvm.html" />
    <id>tag:franz.hamburg,2021-11-13:remote-monitoring-the-jvm</id>
    <updated>2021-11-13T12:00:00Z</updated>
    <summary>Getting a close look into a running system can sometimes be pivotal for resolving an
      issue. There exists a class of problems only occurring on your production system. Logs and
      metrics go a long way surfacing those, but sometimes you have to go deeper.</summary>
  </entry>

  <entry>
    <title>A CloudWatch Bill Adventure</title>
    <link href="https://franz.hamburg/writing/cloudwatch-bill-adventure.html" />
    <id>tag:franz.hamburg,2022-01-13:cloudwatch-bill-adventure</id>
    <updated>2023-04-29T12:00:00Z</updated>
    <summary>AWS bills are hard to dig through. My team stumbled upon another weird artefact we
      can't make sense of. For the first five days of a month we have twice the CloudWatch costs
      compared to the rest of the month.</summary>
  </entry>

  <entry>
    <title>Clojure - First Impressions</title>
    <link href="https://franz.hamburg/writing/clojure-first-impressions.html" />
    <id>tag:franz.hamburg,2022-03-01:clojure-first-impressions</id>
    <updated>2022-03-01T21:00:00Z</updated>
    <summary>
      I'm currently sitting in on another team for a few months. This gives me the chance to take a
      look at a tech
      stack different from ours. Switching from Scala to Clojure as my primary programming language.
      One month in, I'm
      impressed with the productivity and simplicity of the language. With next to no previous
      exposure to Clojure
      I've got a good handle on things.
    </summary>
  </entry>

  <entry>
    <title>Clojure Makes Happy</title>
    <link href="https://franz.hamburg/writing/clojure-makes-happy.html" />
    <id>tag:franz.hamburg,2022-03-16:clojure-makes-happy</id>
    <updated>2022-03-16T21:00:00Z</updated>
    <summary>
      I'm still sitting in on another team. After commenting on
      the very good mood of the team, someone said “Clojure makes happy”. I agreed, but it also got
      me thinking. How do other languages make me unhappy?
      How does this reflect on the team using a given language?
    </summary>
  </entry>

  <entry>
    <title>Job Search</title>
    <link href="https://franz.hamburg/writing/job-search.html" />
    <id>tag:franz.hamburg,2022-09-21:job-search</id>
    <updated>2022-09-21T12:00:00Z</updated>
    <summary>
      I spent the first half of the year exploring the job market for new opportunities. (With
      success). Below I will share a few helpful resources.
    </summary>
  </entry>

  <entry>
    <title>Functional Programming Course</title>
    <link href="https://franz.hamburg/writing/fp-course.html" />
    <id>tag:franz.hamburg,2022-10-05:fp-course</id>
    <updated>2022-10-05T20:00:00Z</updated>
    <summary>
      At Otto two colleagues and me are teaching a course on functional programming. The course
      targets students and programming examples and exercises. This year we reworked all our
      materials to use Clojure instead.
    </summary>
  </entry>

  <entry>
    <title>Atoms - My microblog</title>
    <link href="https://atoms.franz.hamburg" />
    <id>tag:franz.hamburg,2023-01-23:atoms</id>
    <updated>2023-01-23T20:00:00Z</updated>
    <content><![CDATA["If you want to hear from me more frequently, checkout <a href="https://atoms.franz.hamburg">my microblog</a> thing I've got going on."]]></content>
  </entry>

  <entry>
    <title>Refactoring: Boundaries</title>
    <link href="https://franz.hamburg/writing/refactoring-boundaries.html" />
    <id>tag:franz.hamburg,2024-01-02:refactoring-boundaries</id>
    <updated>2024-01-02T12:00:00Z</updated>
    <summary>
      I enjoy clarifying program boundaries through refactoring. Making sure the program has an
      “outside” and an “inside”. The outside handles the constraints imposed on the program. The
      format in which it
      receives its inputs and how it should produce its outputs. Does it get data via a web form?
      Does it write data
      in a specific Avro schema to a queue? These things matter, yet they shouldn’t pollute the
      business logic, the
      “inside”, of your program. They're in flux; today it’s JSON, tomorrow it’s protobuf. But your
      software, at its
      core, still solves the same problem. Working out a clear separation between this “outside” and
      your “inside”
      comes with plenty of advantages...
    </summary>
  </entry>

  <entry>
    <title>My Read It Later App</title>
    <link href="https://franz.hamburg/writing/read-later-app.html" />
    <id>tag:franz.hamburg,2025-01-25:read-later-app</id>
    <updated>2025-01-25T12:00:00Z</updated>
    <summary>
      A year ago, to this day, I started building a read it later app for my own. I’ve been actually
      using it almost daily in that period. This post will provide my motivations and some technical
      background.
    </summary>
  </entry>

    <entry>
    <title>Kindling: E-Ink Dashboard</title>
    <link href="https://franz.hamburg/writing/kindling-e-ink-dashboard.html" />
    <id>tag:franz.hamburg,2025-12-07:kindling-dashboard</id>
    <updated>2025-12-07T12:00:00Z</updated>
    <summary>
      Ever missed pulling the laundry out of the washing machine in time? We did that a lot. Finally, the itch was big enough to build a little helper.
    </summary>
  </entry>
</feed>
