• Automate everything that is not part of the problem you're solving

    When faced with the decision if something is worth automating or not, the default reaction for most developers and product managers will be simple: estimating the time spent on a manual task, and comparing it with the time it would take to automate the task away. Whatever takes the least time wins. When building Offen, the decision of what to automate came up quite a few times as well, and I have realized that only looking at time spent might be a bit short-sighted.

    Read on →

  • Why Offen doesn't have a public dashboard

    There seems to be a trend among this current wave of privacy friendly analytics providers like Fathom, Simple Analytics, Goatcounter, Plausible and others (my project Offen is probably a fringe part of this wave as well to be transparent) and also affiliated websites to make the stats for their websites publicly accessible. It serves as a nice instant demo for the product, and it is supposed to show off their approach towards “privacy friendliness”. Offen does not have such an easily accessible demo. If you want to have a look at how it works, you will need to download the binaries and run a local version that is populated with random data. This might seem overly complicated, but there’s a good reason why it works that way. In the following, I will explain this to you from my perspective as a user of the internet.

    Read on →

  • Building Offen

    With browser vendors adding more and more tracking protection with every release, a plethora of privacy enhancing browser extensions and AdTech companies getting better every day at fingerprinting and circumventing tracking restrictions (think using DNT headers in order to fingerprint and track users) it feels like the year 2019 is finding the internet in some sort of privacy arms race.

    What if instead of arming further, we tried doing the following: we accept the need for a limited set of user data to be analyzed, but handle this data respectfully and with the utmost care?

    Read on →

  • Run automated MongoDB backups to S3 using AWS Lambda and Zappa

    MongoDB comes with a backup tool called mongodump which is what you should be using when you have the resources to set up a dedicated backup job that is able to install / run the CLI tools that are needed.

    If you’re running an application that is limited in scope, scarce on resources and money or just want to set up your backup without too much hassle, you can use a Python script running on AWS Lambda and Zappa to set up automated backups to AWS S3 using the setup described in this article.

    Read on →

  • Compile to JS like it's 2010 again: A sneak peek into ClojureScript, Elm and ReasonML

    Recently, we’ve been seeing some kind of a renaissance of Compile-to-JS languages. When Babel and ES6 made the first wave of languages like CoffeScript obsolete, the toolchain that evolved around Babel (and TypeScript) made transpiling your code mainstream and probably even the de-facto standard for writing largish applications that run in the browser.

    While the first wave of languages were dealing with syntactic improvements to JavaScript, the next one seems to be about types, state and immutable data. Over the last few months I took a look at a few of these languages, so this article is trying to share a few of the insights I had while doing so.

    Read on →