<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Uku Täht</title>
    <description>The latest articles on DEV Community by Uku Täht (@ukutaht).</description>
    <link>https://dev.to/ukutaht</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F163456%2F6195c57d-56a7-4ccf-8838-82b865ddd5bc.jpeg</url>
      <title>DEV Community: Uku Täht</title>
      <link>https://dev.to/ukutaht</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ukutaht"/>
    <language>en</language>
    <item>
      <title>Google Analytics &amp; Privacy: Why it matters</title>
      <dc:creator>Uku Täht</dc:creator>
      <pubDate>Tue, 08 Oct 2019 00:00:00 +0000</pubDate>
      <link>https://dev.to/ukutaht/google-analytics-privacy-why-it-matters-271a</link>
      <guid>https://dev.to/ukutaht/google-analytics-privacy-why-it-matters-271a</guid>
      <description>&lt;p&gt;If you’re running a website with Google Analytics installed, you may be wondering how it affects the privacy of your website’s visitors. There’s a growing distrust towards the digital advertising sector but what are the actual issues besides calling out ‘creepy’ ads?Let’s discuss the wider ethical questions around personal data collection and digital targeting.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why is Google in the analytics business?
&lt;/h3&gt;

&lt;p&gt;The biggest problem with online tracking is not that it’s ‘creepy’. The problem is moving the whole advertising model from mass-broadcasting to individual targeting.&lt;/p&gt;

&lt;p&gt;Let’s be honest, the executives at Google don’t care what websites I visit. They care about making more money from advertising so their quarterly report looks good. Google has found that tracking and targeting individuals (or ‘serving relevant ads’ in corporate speak)results in more clicks which results in more revenue. As their ultimate goal is to increase shareholder value, it follows that they need to track as much data about web visitors as possible to be able to serve the most ‘relevant ads’.&lt;/p&gt;

&lt;p&gt;Targeted advertising creates a massive global demand for personal information that can be used for such targeting.This means collecting your browsing history, measuring your engagement with content, tracking yourlocation at all times, inferring demographic information about you, etc.&lt;/p&gt;

&lt;p&gt;This is why Google Analytics exists. It’s also why Chrome, Gmail, Google Maps, and pretty much every other free product by Google exists. The goal is to embed their free services in the basic infrastructure of the web. This infrastructure can be used to collect as much personal data as possible to drive advertising profits.&lt;/p&gt;

&lt;h3&gt;
  
  
  Targeted advertisement is unethical
&lt;/h3&gt;

&lt;p&gt;Google’s track record of handling personal data has been&lt;a href="https://en.wikipedia.org/wiki/Privacy_concerns_regarding_Google"&gt;absolutely dismal&lt;/a&gt;. Facebook is even worse. Their online trackers are incredibly intrusive, making us feel like we’re under corporate surveillance at all times. Although we can use their useful software for free, we end up paying with our personal privacy. This is well documented.&lt;/p&gt;

&lt;p&gt;Besides the costs to our personal privacy, I’d say the much bigger scandal lies in how targeted advertising affects civil society. Political campaigns are now able to discern with amazing accuracy which voters to target with their advertising. Instead of debating issues in the public and broadcasting ads to everybody, campaigns can target voters on an individual basis. This contributes to filter bubbles, disinformation, radicalization, and a general breakdown of democracy.&lt;/p&gt;

&lt;p&gt;This is what the Cambridge Analytica scandal was about. The company was built to use online tracking and targeting to win political campaigns for the highest bidder. They’ve been incredibly successful:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;It’s all about understanding the motivations of the target audience and trying to understand at a very granular level why people might undertake a certain behavior, whether that’s joining a terrorist organization or smoking cigarettes or eating fast food.&lt;/p&gt;

&lt;p&gt;[on Cambridge Analytica’s services for the Trump campaign] We did all the research, all the data, all the analytics, all the targeting, we ran all the digital campaign, the television campaign and our data informed all the strategy.&lt;/p&gt;

&lt;p&gt;It has to happen without anyone thinking it’s propaganda, because the moment you think ‘that’s propaganda’ the next question is: ‘Who’s put that out?’&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Alexander Nix, Former CEO of Cambridge Analytica&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Regardless of whether you support Trump or not, it’s hard to deny that propaganda is on the rise.Trump’s marketing team, was spending $70 million a month during it’s peak in October 2016.The details are not known, but it’s fair to assume that most of it was spent on digital advertising.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We are thrilled that our revolutionary approach to data-driven communication has played such an integral part in President-elect Trump’s extraordinary win&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Alexander Nix, Former CEO of Cambridge Analytica&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you have 10 minutes, I’d recommend watching Alexander Nix himself &lt;a href="https://www.youtube.com/watch?v=n8Dd5aVXLCc"&gt;explain how they use personal targeting&lt;/a&gt; to push propaganda and undermine democracy. If you have 2 hours, I’d recommend watching &lt;a href="https://www.thegreathack.com/"&gt;The Great Hack&lt;/a&gt;. Orwellian stuff.&lt;/p&gt;

&lt;h3&gt;
  
  
  What does Google Analytics have to do with this?
&lt;/h3&gt;

&lt;p&gt;Individual targeting is only as effective as the data collected on individuals.With GA used on more than 60% of all websites, Google can track your journey through &lt;em&gt;most&lt;/em&gt; websites you visit. Based on this browsing history and many other variables, they can build a profile on who you are and what your interests are.This helps political and corporate campaigns to target you more effectively.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Some say data is the new oil, but what if it's the new CO2?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;As developers, marketers, technologists, we shouldn’t be complicit in this. Yes, most of us block ourselves from being tracked individually, but what about the websites we run?&lt;/p&gt;

&lt;p&gt;If we keep using Google Analytics on them, we’re effectively handing over our visitors’ browsing habits to Google for free. Same goes for any other third-party scripts and pixels that advertising companies want you to include on your website.&lt;/p&gt;

&lt;h3&gt;
  
  
  How to control your analytics data
&lt;/h3&gt;

&lt;p&gt;First of all, don’t include any scripts or pixels by advertising companies like Google and Facebook.That’s the starting point.&lt;/p&gt;

&lt;p&gt;If you care about measuring traffic to your website, use an open-source analytics tool that you trust.Open-source projects are subject to public scrutiny, and they embody a more ethical culture oriented towards the public good rather than private profits.&lt;/p&gt;

&lt;p&gt;It’s also important to consider data ownership. The Google and Facebook model says that the analytics data from your website is to be monetized through advertisering. After all, they must get something in return for offering a free service. If you want to truly own your data, you have to be ready to pay for your analytics.&lt;/p&gt;

&lt;p&gt;You can either install a self-hosted analytics platform, or choose a cloud-based service whose business model is to charge directly for their service instead of making money from advertisers. I like convenience so I leantowards cloud services as long as they are open source and promise 100% data ownership.&lt;/p&gt;

&lt;p&gt;There are many projects in this space catering for different needs. Last year I started building an &lt;a href="https://plausible.io"&gt;analytics tool for my own needs&lt;/a&gt;, which are simplicity and performance.I think most analytics platforms are over-complicated to the point of being more confusing than helpful.Meanwhile, websites are getting more bloated due to heavy front-end scripts that degrade the user experience.&lt;/p&gt;

&lt;p&gt;Plausible is a stripped-down, lightweight version of what big analytics suites offer. My aim is to build a tool that tracks overall trends in traffic, not personal data on individual visitors. If Plausible is too simplistic for your needs, I’d recommend checking out &lt;a href="https://ethical.net/resources/?resource-category=analytics"&gt;this list&lt;/a&gt;of alternatives to Google Analytics.&lt;/p&gt;

</description>
      <category>privacy</category>
      <category>opensource</category>
      <category>news</category>
    </item>
    <item>
      <title>Plausible is going open-source</title>
      <dc:creator>Uku Täht</dc:creator>
      <pubDate>Mon, 02 Sep 2019 00:00:00 +0000</pubDate>
      <link>https://dev.to/ukutaht/plausible-is-going-open-source-4e5d</link>
      <guid>https://dev.to/ukutaht/plausible-is-going-open-source-4e5d</guid>
      <description>&lt;p&gt;One of the main reasons I started Plausible was to provide a more transparent alternative to Google Analytics. I believe that people should be able to control and know about their data, instead of having it sold to advertisers behind their back.&lt;/p&gt;

&lt;p&gt;Today I’m happy to announce that Plausible is open source with the code being &lt;a href="https://github.com/plausible-insights/plausible"&gt;available on Github&lt;/a&gt;.This repository includes all of the code powering &lt;a href="https://plausible.io"&gt;plausible.io&lt;/a&gt; with nothing hidden.&lt;/p&gt;

&lt;p&gt;Making the source open to the public is a crucial step to building a more transparent analytics platform. It proves that Plausible does not store any personal information or IP addresses, and that it doesn’t track people across multiple websites like Google Analytics does.&lt;/p&gt;

&lt;h3&gt;
  
  
  How open?
&lt;/h3&gt;

&lt;p&gt;There’s a lot of debate around what constitutes open-source vs free vs source-available software. My aim with Plausible is for the code to be as open as possible but I still want to charge for it and build a business around it. One option to achieve this is to license your product under the Apache 2.0 license with a Commons Clause. The Commons Clause just stops people from selling the software as-is to compete with the author.&lt;/p&gt;

&lt;p&gt;This seems like a really obvious restriction if you’re trying to build a sustainable business. On the other hand if you look at companies like Ghost, they have open-sourced their product completely under the MIT license with no restrictions whatsoever. I suppose the argument is that they own the brand and the distribution network, so it would be futile to compete with them selling the same product.&lt;/p&gt;

&lt;p&gt;I chose to follow the example of Ghost here. Plausible is open-sourced under the most permissible MIT license, which basically states that you can do whatever you want with the code. I’m not really worried about the possibility of someone stealing business from me by just getting the code and selling it.&lt;/p&gt;

&lt;p&gt;It’s worth noting that for now, there’s no explicit support for self-hosting Plausible. The project is still evolving quickly and maintaining a self-hosted solution would slow product development down considerably. I would love to offer a self-hosted solution in the future once the product and the business are more stable.&lt;/p&gt;

&lt;h3&gt;
  
  
  What’s next?
&lt;/h3&gt;

&lt;p&gt;Please check out the &lt;a href="https://feedback.plausible.io/roadmap"&gt;public roadmap and feedback board&lt;/a&gt; to see which features are planned in the near future.&lt;/p&gt;

&lt;p&gt;I think it’s also worth talking about ways to raise the standard of trust and transparency even more. No matter how open we are or how much effort we put into making the data anonymous,there are still no guarantees that analytics companies don’t turn around and sell their data to advertisers.&lt;/p&gt;

&lt;p&gt;To fix that, I would like for Plausible users to completely own their data in a way that makes it illegal for the company to use it for any purposes other than providing the analytics service. Our role would essentially be renting the processors and disk to you to run open-source software and to safely store datat hat you own.&lt;/p&gt;

&lt;p&gt;Do you know of any examples of this? What’s the best way to enforce it? Would adding it to terms of service be enough? If you have knowledge or opinions on this topic, please reach out to me on &lt;a href="https://twitter.com/ukutaht"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

</description>
      <category>elixir</category>
      <category>showdev</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Plain emails are a win-win</title>
      <dc:creator>Uku Täht</dc:creator>
      <pubDate>Sat, 10 Aug 2019 00:00:00 +0000</pubDate>
      <link>https://dev.to/ukutaht/plain-emails-are-a-win-win-3bj6</link>
      <guid>https://dev.to/ukutaht/plain-emails-are-a-win-win-3bj6</guid>
      <description>&lt;p&gt;If you’ve ever had to develop transactional HTML emails with slick designs, you’llknow that it’s a complete mess. The incompatibilities between email clients are way worsethan what you see with different browsers. Testing emails is extremely difficult, andthere’s a seemingly endless number of problems with various clients.&lt;/p&gt;

&lt;p&gt;Luckily there’s a really simple solution to this problem: just send plaintransactional emails instead with minimal/no design. Email clients were never designedfor complex layouts and graphics. Instead of abusing the format for something its notintended for, let’s respect it and use it to our advantage instead.&lt;/p&gt;

&lt;p&gt;Before we go on, of course there are cases where it makes sense to design complex HTML emails forbetter readability. For example, I’m planning to add a regular email reportto &lt;a href="https://plausible.io"&gt;Plausible&lt;/a&gt; in the future. Such a report needs to fit a lot ofdata in a scannable format, so I will probably lean towards a designed email template.&lt;/p&gt;

&lt;p&gt;However, most transactional emails don’t require design. Here’s the emailyou receive when you reset your password on Plausible:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TdHNktZ0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://plausible.io/blog/assets/images/plausible_password_reset.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TdHNktZ0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://plausible.io/blog/assets/images/plausible_password_reset.png" alt="Plausible password reset"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No fuss, straight to the point without any distracting elements. It’s hard to see howadding colours, logos and buttons to the email would improve it.&lt;/p&gt;

&lt;h3&gt;
  
  
  More than just time savings
&lt;/h3&gt;

&lt;p&gt;Avoiding the complexity of HTML templates can save a lot of time in design and development.An even greater win is that plain emails also have&lt;a href="https://blog.hubspot.com/marketing/plain-text-vs-html-emails-data"&gt;better deliverability and response rates&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;HMTL elements and images have a negative effect on deliverability because they tend to trigger spamfilters. Over-designed emails can definitely feel spammy to the reader as well, not just the AI.I’m guessing it’s due to the ridiculous amount of unsolicited marketing emailsthat we all receive on a daily basis. They are almost exclusively complex HTML templates withloads of images.&lt;/p&gt;

&lt;p&gt;Plain emails get more responses because they feel much more personal than HTML emails. Peopleassociate designed emails with marketing and one-way mass communication. On the other hand, plainemails look like the emails you get from a coworker or a friend. It feels more natural to hit‘reply’ on them.&lt;/p&gt;

&lt;p&gt;This is why plain emails are a win-win: not only do they simplify the development process but theyalso reach more people. My takeaway is that we should only get into complex HTML templates if they are completelynecessary to enhance the user experience. We should accept that using them sacrifices deliverability,open rates, and development time. The upside of using email designs must be huge to outweightoutweigh the negative consequences of using them.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Building Plausible: June 2019 recap</title>
      <dc:creator>Uku Täht</dc:creator>
      <pubDate>Wed, 03 Jul 2019 00:00:00 +0000</pubDate>
      <link>https://dev.to/ukutaht/building-plausible-june-2019-recap-245b</link>
      <guid>https://dev.to/ukutaht/building-plausible-june-2019-recap-245b</guid>
      <description>&lt;p&gt;I spent the second half of June back home in Estonia to recharge my batteries and reconnect with family+friends. Summer solstice is a huge celebration in Estonian culture so everyone seems to be on holiday at the moment, enjoying nature, good food and drinks. I haven’t had as much time for Plausible as I normally do, but I’m totally OK with that.&lt;/p&gt;

&lt;p&gt;Still, some cool things happened with Plausible this month:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🚀 &lt;strong&gt;Shipped public stats pages:&lt;/strong&gt; You can now show off all the hard-earned traffic to your site&lt;/li&gt;
&lt;li&gt;🚀 &lt;strong&gt;Added support for ?ref= query param:&lt;/strong&gt; Link tagging is a common practice to get accurate referrer information. This feature allows you to manually control the referrer.&lt;/li&gt;
&lt;li&gt;💵 &lt;strong&gt;MRR growth: 43.5%:&lt;/strong&gt; Monthly revenue is at $67.91, up from $47.34 in May.&lt;/li&gt;
&lt;li&gt;👩 &lt;strong&gt;1347 unique visitors:&lt;/strong&gt; Up from 1178 visitors in May. A lot of this traffic is organic from Google, Twitter, and the (now abandoned) &lt;a href="https://journal.plausible.io"&gt;journal.plausible.io&lt;/a&gt; blog. I also do my best to participate in communities like IndieHackers which drives a lot of traffic.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’ve also been working on &lt;a href="https://docs.plausible.io"&gt;docs.plausible.io&lt;/a&gt; to make sure the product and features are crystal clear to everyone. I believe that good documentation is a competitive advantage, and I plan to spend more time improving the docs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Looking forward
&lt;/h3&gt;

&lt;p&gt;My main project in July is taking part in the &lt;a href="https://www.indiehackers.com/post/871a026ac6"&gt;IndieHackers 30 days of growth challenge&lt;/a&gt;. This will be a good test of my persistence and growth skills. The goal I’ve set for July is to get 40 new trial signups.&lt;/p&gt;

&lt;p&gt;In terms of feature work, you can check the public roadmap at &lt;a href="https://feedback.plausible.io/roadmap"&gt;feedback.plausible.io/roadmap&lt;/a&gt;. The features not necessarily in the order I’m going to tackle them because I’m always trying to prioritise the easiest and biggest wins first.&lt;/p&gt;

&lt;p&gt;Hope everyone has an amazing July. Stay tuned for the next update!&lt;/p&gt;

</description>
      <category>productivity</category>
    </item>
    <item>
      <title>Replacing Google products with more ethical alternatives</title>
      <dc:creator>Uku Täht</dc:creator>
      <pubDate>Tue, 07 May 2019 00:00:00 +0000</pubDate>
      <link>https://dev.to/ukutaht/replacing-google-products-with-more-ethical-alternatives-51ph</link>
      <guid>https://dev.to/ukutaht/replacing-google-products-with-more-ethical-alternatives-51ph</guid>
      <description>&lt;p&gt;It has become clear how much data is collected on regular people around the world by large corporations and governments. The biggest offenders in this space are government agencies like the NSA and GCHQ, along with large internet companies like Facebook and Google.&lt;/p&gt;

&lt;p&gt;I’m not a big Facebook user, but I’ve used Google products daily for more than a decade. Their products are reliable, intuitive, and free to use.&lt;/p&gt;

&lt;p&gt;Instead of collecting cash, Google collects data about your identity, behaviour, habits, and preferences. This data is aggregated and analysed on a global scale, sold to advertisers and shared it with intelligence services. The more data Google accumulates, the more powerful they become.&lt;/p&gt;

&lt;p&gt;A few years ago I started removing Google products from my life because I don’t want to feed this corporate surveillance machine. There are many great alternatives out there by smaller players. The alternatives are more likely to be paid, but we need to start paying for software if we don’t want to pay with our privacy.&lt;/p&gt;

&lt;p&gt;Here’s a list of great replacements that I’ve found in my own use so far:&lt;/p&gt;

&lt;h4&gt;
  
  
  Google Chrome -&amp;gt; Mozilla Firefox
&lt;/h4&gt;

&lt;p&gt;In my mind, &lt;a href="https://www.mozilla.org/en-US/firefox/new/"&gt;Firefox&lt;/a&gt; is the best alternative to Chrome. I love supporting open-source software and Mozilla is doing a great job with both Firefox and Rust.&lt;/p&gt;

&lt;h4&gt;
  
  
  Google Search -&amp;gt; DuckDuckGo
&lt;/h4&gt;

&lt;p&gt;I started using &lt;a href="https://duckduckgo.com/"&gt;DuckDuckGo&lt;/a&gt; as my default search engine last year. I like their activism for online privacy and the movement they’ve created. The search results are a bit slower and not quite as relevant as Google’s, but it’s a price I’m willing to pay for privacy.&lt;/p&gt;

&lt;h4&gt;
  
  
  Google Hangouts -&amp;gt; Slack calls
&lt;/h4&gt;

&lt;p&gt;I’ve been forced to use Hangouts in the past, but I’ve always preferred &lt;a href="https://slack.com/intl/en-gb/"&gt;Slack&lt;/a&gt; calls and &lt;a href="https://appear.in"&gt;appear.in&lt;/a&gt;. I’m eagerly waiting for &lt;a href="//tuple.app"&gt;Tuple&lt;/a&gt; to launch so I can get my hands on it as well. It’s a video calling tool built specifically for pair programming. Seems awesome :)&lt;/p&gt;

&lt;h4&gt;
  
  
  Google Docs -&amp;gt; Notion
&lt;/h4&gt;

&lt;p&gt;I like &lt;a href="https://notion.so"&gt;Notion&lt;/a&gt; as a replacement for Google Docs. Notion is markdown-based and seems to fit my brain a lot better than Google Docs. It has way better navigation so it makes a good internal knowledge base where people can actually find stuff.&lt;/p&gt;

&lt;h4&gt;
  
  
  Google Analytics -&amp;gt; Plausible
&lt;/h4&gt;

&lt;p&gt;When I looked for alternatives for Google Analytics, I didn’t find any that I really liked. Being interested in web analytics, I decided to build my own solution, &lt;a href="https://plausible.io"&gt;Plausible&lt;/a&gt;. It provides simple, privacy-focused analytics without collecting website visitors’ personal data. I’ve switched all my current projects over from Google Analytics to Plausible.&lt;/p&gt;

&lt;h4&gt;
  
  
  Google Maps -&amp;gt; Citymapper
&lt;/h4&gt;

&lt;p&gt;I haven’t replaced my Google Maps usage completely yet. For public transport routes, I do use an alternative called &lt;a href="https://citymapper.com/"&gt;Citymapper&lt;/a&gt;. However, it’s only available in some cities and it doesn’t replace business discovery. Whenever I’m looking for a restaurant in a new city, I still look for ‘restaurants’ on Google Maps. What’s a good alternative for that?&lt;/p&gt;

&lt;h4&gt;
  
  
  What I couldn’t replace
&lt;/h4&gt;

&lt;p&gt;The two services I haven’t managed to replace yet are Gmail and Youtube.&lt;/p&gt;

&lt;p&gt;I’m sure there are amazing email clients out there that outperform Gmail in every way, so please do shoot recommendations my way.&lt;/p&gt;

&lt;p&gt;As for Youtube, I spend a lot of time there watching tutorials, recipes, news, etc. It’s a fantastic knowledge sharing tool that will be very hard to replace. Vimeo has the technology, but they definitely don’t have the community and the content.&lt;/p&gt;

&lt;h4&gt;
  
  
  Results
&lt;/h4&gt;

&lt;p&gt;I’ve slowly been replacing my tools and habits over the last couple of years. Overall, I feel like this process has been a great success. I’m much less reliant on Google in my everyday life and feel much more in control of my data. I still have some distance to go with Gmail and Google Maps, but I will continue to look for replacements so I can be completely Google-free.&lt;/p&gt;

&lt;p&gt;Looking for alternatives has led me to find amazing indie makers and teams building awesome software. Smaller companies tend to be a lot more fun and innovative, so using their products is often a better experience. I hope you check out some of these alternatives and make the switch as well.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>I’m launching Plausible</title>
      <dc:creator>Uku Täht</dc:creator>
      <pubDate>Mon, 29 Apr 2019 00:00:00 +0000</pubDate>
      <link>https://dev.to/ukutaht/i-m-launching-plausible-17f8</link>
      <guid>https://dev.to/ukutaht/i-m-launching-plausible-17f8</guid>
      <description>&lt;p&gt;It’s been 4 months since I wrote about &lt;a href="https://dev.to/ukutaht/the-analytics-tool-i-want-1mhf-temp-slug-6505055"&gt;the analytics tool I want&lt;/a&gt;. My idea was to create an alternative for Google Analytics that simplifies the UI and enhances the privacy of online tracking.&lt;/p&gt;

&lt;p&gt;After writing that initial post, I spent 2 months creating a prototype and launched the public beta for &lt;a href="https://plausible.io"&gt;Plausible&lt;/a&gt; in February.&lt;/p&gt;

&lt;p&gt;By now, more than 60 people have signed up used Plausible successfully. I’ve received encouraging feedback and many feature requests over the last two months. I appreciate everyone’s feedback as it has helped me form the roadmap for the next few months of development.&lt;/p&gt;

&lt;p&gt;I could easily hide in my cave for more months to tackle that roadmap. But to see if Plausible has real potential, I have to introduce it to the marketplace and see if people are actually willing to pay for it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pricing
&lt;/h3&gt;

&lt;p&gt;Coming up with the price tag for Plausible was a surprisingly difficult process. I started by asking myself: _Should Plausible have a freemium model?_After doing some research, I decided that the support and maintenance costs of running a free tier would be far too high for one person to handle. As a solo founder, I need to keep overhead low so I can keep up with both support and product development.&lt;/p&gt;

&lt;p&gt;I’m not going to rule out a free tier or even a self-hosted version of Plausible in the future. However, I want to protect my time for now and get the product working well in the market before scaling up.&lt;/p&gt;

&lt;p&gt;As a customer I appreciate products with very simple pricing schemes, so I wanted to keep it as straightforward as possible. There will be no premium features, accounts will be billed purely for the amount of traffic they get.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;up to 10k pageviews - &lt;strong&gt;$6 / mo&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;up to 100k pageviews - &lt;strong&gt;$12 / mo&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;up to 1m pageviews - &lt;strong&gt;$36 / mo&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It was important for me to include a small (&amp;lt;10k) tier to suit personal websites and blogs that don’t get much traffic. I will definitely be experimenting with these plans going forward to see what works best.&lt;/p&gt;

&lt;p&gt;Existing beta users also get a third off on all of these plans. This is my way of thanking the beta community for providing feedback and engaging with the product from an early stage.&lt;/p&gt;

&lt;h3&gt;
  
  
  Going forward
&lt;/h3&gt;

&lt;p&gt;Plausible is still under heavy development. With the introduction of paid plans, I will be investing more into customer support and documentation as well.&lt;/p&gt;

&lt;p&gt;The goal for the next month or so is to get payments, invoicing, and VAT handling all working smoothly. Once I have all the tools set up to run the business, I can shift focus back to product improvements.&lt;/p&gt;

&lt;p&gt;I’m really excited about making Plausible the best web analytics tool out there. There’s a long way to go on this mission but today marks a big milestone on this journey. Check back on this blog for updates on the product and the business.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>news</category>
      <category>analytics</category>
    </item>
    <item>
      <title>You probably don’t need a single-page application</title>
      <dc:creator>Uku Täht</dc:creator>
      <pubDate>Sun, 17 Feb 2019 00:00:00 +0000</pubDate>
      <link>https://dev.to/ukutaht/you-probably-don-t-need-a-single-page-application-10n2</link>
      <guid>https://dev.to/ukutaht/you-probably-don-t-need-a-single-page-application-10n2</guid>
      <description>&lt;p&gt;The meteoric rise of front-end frameworks like React, Angular, Vue.js, Elm, etc. has made single-page applications ubiquitous on the web. For many developers, these have become part of their ‘default’ toolset. When they start a new project, they grab the tools they know already: a REST API on the backend, and a React/Angular/Vue/Elm frontend.&lt;/p&gt;

&lt;p&gt;Is there something wrong with these tools? Absolutely not. In fact, I love working with them. However, I would only choose this architecture when an actual requirement is pushing me in that direction. If there are no specific reasons to build a single-page application, I will go with a traditional server-rendered architecture every day of the week. It is simpler and allows you to move faster:&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Stateless requests
&lt;/h4&gt;

&lt;p&gt;Traditional web servers are built to be stateless. This means that each endpoint can be reasoned about and tested in isolation. SPAs, by contrast, have to explicitly define how all state is loaded, refreshed, and discarded by the frontend during the whole session. This introduces new caching/synchronization problems that just don’t exist in the server-rendered world.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. The browser knows how to deal with a traditional architecture
&lt;/h4&gt;

&lt;p&gt;If you go with the SPA route, you’ll always need extra code to emulate trivial browser features. I’ve spent many hours making sure that browser history is managed just right, that the loading animation looks smooth, restoring the scroll position when the user navigates through history, etc. It’s a mess.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Fewer, more mature tools
&lt;/h4&gt;

&lt;p&gt;Frameworks like Rails, Phoenix, Lavarel, etc. have been around for a while and they are very stable. I learned Rails about 5 years ago and my knowledge is still completely relevant. Around the same time, I also learned Gulp, CoffeeScript, BackboneJS, and SASS, all of which have been superseded by newer tools. Avoid the &lt;a href="https://medium.com/@ericclemmons/javascript-fatigue-48d4011b6fc4"&gt;Javascript fatigue&lt;/a&gt; by not relying so much on Javascript!&lt;/p&gt;

&lt;h4&gt;
  
  
  4. SEO for free
&lt;/h4&gt;

&lt;p&gt;Single-page apps have to add extra infrastructure and code to make sure they can be indexed by crawlers. If you need SEO on your dynamic pages, it’s much easier to accomplish with a server-rendered architecture.&lt;/p&gt;

&lt;p&gt;All of this means that single-page applications impose more complexity and cognitive load on the developers. In my experience as a developer, complexity and cognitive load are the single biggest factors in software bugs and development slowdown.&lt;/p&gt;

&lt;h3&gt;
  
  
  When to go for the single page app
&lt;/h3&gt;

&lt;p&gt;As I said, the default choice in most cases should be the traditional server-rendered application. However, there are some requirements that might &lt;em&gt;force&lt;/em&gt; you to opt for the single-page application architecture:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Core functionality is real-time (e.g Slack)&lt;/li&gt;
&lt;li&gt;Rich UI interactions are core to the product (e.g Trello)&lt;/li&gt;
&lt;li&gt;Lots of state shared between screens (e.g. Spotify)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These products absolutely have to use a single-page architecture to work properly. This is why it’s the right choice for these companies. However, many web-based products do not have these requirements and this complexity can be avoided.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hybrid solutions
&lt;/h3&gt;

&lt;p&gt;Even if your app needs some real-time capabilities or rich interactions, you don’t need to use the SPA paradigm for your whole app. A great approach is to embed small frontend applications into a traditional architecture.&lt;/p&gt;

&lt;p&gt;Github uses this hybrid approach. The backbone of their website is a traditional rails app but some areas, like the projects tab, are built as embedded frontend applications. It’s a beautiful solution that combines the best of both worlds. The great thing is that you can start simple and gradually add more complex UI interactions with this approach.&lt;/p&gt;

&lt;p&gt;I believe that my current project, &lt;a href="https://plausible.io/"&gt;Plausible&lt;/a&gt;, will evolve in this direction. The main UI of the app will need rich interactions in the future, but the rest of the app can stay with the server-rendered architecture.&lt;/p&gt;

&lt;h3&gt;
  
  
  It all comes down to tradeoffs
&lt;/h3&gt;

&lt;p&gt;As with everything in programming, there isn’t a single answer in the SPA vs traditional architecture dilemma. There are cases where it makes sense to go with a SPA because you need a snappy, real-time UI. However, we should recognize that this comes at a cost to the development speed. And if a single-page app is not a requirement, we can avoid the additional complexity and move much quicker by going the traditional route.&lt;/p&gt;

&lt;p&gt;Picking the right architecture for the job makes a huge difference in productivity, and ultimately, success. We should aim to have both architectures in our toolbox, so we can use the optimal solution in each case.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
    <item>
      <title>How to store ‘last seen’ for users in Phoenix</title>
      <dc:creator>Uku Täht</dc:creator>
      <pubDate>Wed, 06 Feb 2019 00:00:00 +0000</pubDate>
      <link>https://dev.to/ukutaht/how-to-store-last-seen-for-users-in-phoenix-41jd</link>
      <guid>https://dev.to/ukutaht/how-to-store-last-seen-for-users-in-phoenix-41jd</guid>
      <description>&lt;p&gt;This week, I worked on some under-the-hood improvements to &lt;a href="https://plausible.io/"&gt;Plausible&lt;/a&gt; to give me better insights into my userbase. One of these was to store a &lt;code&gt;last_seen&lt;/code&gt; timestamp for all users. This is a private piece of data that I use to determine:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How many users are actively logging on and checking their analytics&lt;/li&gt;
&lt;li&gt;What is the average usage frequency of Plausible?&lt;/li&gt;
&lt;li&gt;When should I consider an account as ‘rotting’? Meaning I’m about to lose them as a user/customer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let’s see how this can be achieved in Phoenix. First, we’ll start with the schema.&lt;/p&gt;

&lt;h3&gt;
  
  
  Schema
&lt;/h3&gt;

&lt;p&gt;We’ll need to generate a migration for the &lt;code&gt;last_seen&lt;/code&gt; column:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ mix ecto.gen.migration add_last_seen_to_users
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;and the migration itself:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;defmodule Plausible.Repo.Migrations.AddLastSeenToUsers do
  use Ecto.Migration

  def change do
    alter table(:users) do
      add :last_seen, :naive_datetime, default: fragment("now()")
    end
  end
end
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;At this point, you’ll want to add the field to your &lt;code&gt;User&lt;/code&gt; Ecto schema as well.&lt;/p&gt;

&lt;h3&gt;
  
  
  Plug
&lt;/h3&gt;

&lt;p&gt;Now I want to update this field every time use uses the website. A natural solution here is to add a Plug that intercepts every request. However, updating the database on every request seems fairly wasteful. Besides, for my purposes, the timestamp doesn’t need to be accurate to the millisecond. This is a perfect case for throttling, which can be achieved by using the browser session.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;defmodule PlausibleWeb.LastSeenPlug do
  import Plug.Conn
  use Plausible.Repo

  @one_hour 60 * 60

  def init(opts) do
    opts
  end

  def call(conn, _opts) do
    last_seen = get_session(conn, :last_seen)
    user = conn.assigns[:current_user]

    cond do
      user &amp;amp;&amp;amp; last_seen &amp;amp;&amp;amp; last_seen &amp;lt; (unix_now() - @one_hour) -&amp;gt;
        persist_last_seen(user)
        put_session(conn, :last_seen, unix_now())
      user &amp;amp;&amp;amp; !last_seen -&amp;gt;
        put_session(conn, :last_seen, unix_now())
      true -&amp;gt;
        conn
    end
  end

  defp persist_last_seen(user) do
    q = from(u in Plausible.Auth.User, where: u.id == ^user.id)

    Repo.update_all(q, [set: [last_seen: DateTime.utc_now()]])
  end

  defp unix_now do
    DateTime.utc_now() |&amp;gt; DateTime.to_unix
  end
end
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;I added this plug to my &lt;code&gt;browser&lt;/code&gt; pipeline in my router. Note that I have another plug running before this one which looks up the current user and makes &lt;code&gt;conn.assigns[:current_user]&lt;/code&gt; available.&lt;/p&gt;

&lt;p&gt;This approach satisfies every requirement I had for this feature:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Persist the &lt;code&gt;last_seen&lt;/code&gt; with an hour precision&lt;/li&gt;
&lt;li&gt;Runs a database update at most once per hour per user&lt;/li&gt;
&lt;li&gt;I specifically use &lt;code&gt;Repo.update_all&lt;/code&gt; so the &lt;code&gt;updated_at&lt;/code&gt; field on &lt;code&gt;users&lt;/code&gt; is untouched.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>elixir</category>
      <category>sql</category>
      <category>postgres</category>
      <category>ecto</category>
    </item>
    <item>
      <title>Technology choices</title>
      <dc:creator>Uku Täht</dc:creator>
      <pubDate>Tue, 29 Jan 2019 00:00:00 +0000</pubDate>
      <link>https://dev.to/ukutaht/technology-choices-506h</link>
      <guid>https://dev.to/ukutaht/technology-choices-506h</guid>
      <description>&lt;p&gt;In general I don’t think that the tech stack matters too much for software projects. Especially if you’re a solo maker, almost all of the risk is on the sales and marketing side as opposed to the tech side. The best approach is normally to just pick some boring tools and start solving your customers’ problems.&lt;/p&gt;

&lt;p&gt;However I’m also very passionate about developer tooling and I thoroughly enjoy nerding out about programming languages and different databases. In this post I’ll go over the main technology choices I’ve had to make so far for &lt;a href="https://plausible.io"&gt;Plausible&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Elixir + Phoenix
&lt;/h3&gt;

&lt;p&gt;I think most programmers have a default language or ecosystem they like and are used to. For me that would be Elixir. The first time I tried it was when I saw Dave Thomas speak about it in 2013. Since then I started the &lt;a href="https://github.com/elixirkoans/elixir-koans"&gt;Elixir Koans&lt;/a&gt; project and used Elixir on a number of commercial projects.&lt;/p&gt;

&lt;p&gt;It is a fantastic language designed with so much care and attention to the details. Some might think of it as new and exiting language but for me this is a proven technology that one can rely on. After all, the Erlang VM has been around since 1986 and it’s as mature as it gets.&lt;/p&gt;

&lt;p&gt;My only concern with picking Elixir is that it’s not a super high performance data processing language. If Plausible is a success it will have to ingest a lot of traffic. I mean a lot. All the traffic also needs to be analysed to pull out useful information like browser version and referrer source. I don’t know how well Elixir will deal with this but we’ll see. I might have to write a proper ingest pipeline at some point in a lower level language but that would be a great problem to have because it means the product is a success!&lt;/p&gt;

&lt;h3&gt;
  
  
  PostgreSQL
&lt;/h3&gt;

&lt;p&gt;Again, this is pretty much a default choice for me when it comes to persistence. Postgres is very mature, deeply researched and extensively battle-tested. It’s a beautiful open-source project and they’re making it better every year!&lt;/p&gt;

&lt;p&gt;I might have to switch to &lt;a href="https://www.influxdata.com/"&gt;InfluxDB&lt;/a&gt; if Plausible really takes off and it has to ingest tons of traffic. Influx is time-scale database built specifically for high write speed and time-based aggregation queries. It’s perfect for an analytics application. On the other hand there’s a Postgres extension called &lt;a href="https://www.timescale.com/"&gt;Timescale&lt;/a&gt; that does the same thing and seems just as strong. Plus it’s Postgres!&lt;/p&gt;

&lt;h3&gt;
  
  
  Tailwind CSS
&lt;/h3&gt;

&lt;p&gt;Instead of the classic, boring way of writing css I decided to go with something new here. Tailwind is a pretty unique way of writing HTML+CSS. Check out &lt;a href="https://tailwindcss.com/docs/what-is-tailwind/"&gt;their website&lt;/a&gt; to learn more about their utility-first approach.&lt;/p&gt;

&lt;p&gt;It took me a couple of days to reach the Aha moment but once I did, there was no looking back. It definitely feels like I can achieve better looking designs with less time than any other approach I’ve tried. I’m definitely using it again on future projects.&lt;/p&gt;

&lt;h3&gt;
  
  
  Server-rendered HTML + sprinkling JS
&lt;/h3&gt;

&lt;p&gt;Seems like every new project nowadays is a single-page app by default. I suppose developers are getting so used to tools like React and Angular that they forget how to &lt;strong&gt;not&lt;/strong&gt; use them.&lt;/p&gt;

&lt;p&gt;I went with the classic infrastructure: serve HTML on the server, sprinkle javascript on the frontend for interactivity. I even ditched jQuery because with modern web standards it’s pretty easy get away with vanilla Javascript. You can always include a couple of polyfills if the standards are not well supported yet. The only javascript library I have pulled in so far is Chart.js&lt;/p&gt;

&lt;p&gt;I’m very happy with this approach, it keeps things simple and the website loads &lt;em&gt;fast&lt;/em&gt;. There are just fewer moving parts in a traditional server-rendered app than modern SPAs which makes them easier to reason about.&lt;/p&gt;

&lt;h3&gt;
  
  
  External tools
&lt;/h3&gt;

&lt;p&gt;So far I’ve integrated with the following external tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.heroku.com/"&gt;Heroku&lt;/a&gt; for hosting&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://sentry.io/"&gt;Sentry&lt;/a&gt; for error tracking&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.mailgun.com/"&gt;Mailgun&lt;/a&gt; for email delivery&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.cloudflare.com/"&gt;Cloudflare&lt;/a&gt; for DNS, SSL, and CDN&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The only one I’m paying for currently is Heroku, just to make sure the dyno doesn’t go to sleep.&lt;/p&gt;

</description>
      <category>elixir</category>
      <category>webdev</category>
      <category>programming</category>
      <category>tailwindcss</category>
    </item>
    <item>
      <title>Learning design as a developer</title>
      <dc:creator>Uku Täht</dc:creator>
      <pubDate>Wed, 23 Jan 2019 00:00:00 +0000</pubDate>
      <link>https://dev.to/ukutaht/learning-design-as-a-developer-155h</link>
      <guid>https://dev.to/ukutaht/learning-design-as-a-developer-155h</guid>
      <description>&lt;p&gt;Working on &lt;a href="https://plausible.io"&gt;plausible.io&lt;/a&gt; I often find myself doing things I have no clue how to do. I struggle massively with marketing, copywriting, and most of all, UX/UI design. Here are some tips I’ve found helpful when trying to design for the web as an unimaginative developer who hasn’t designed a single thing in his life.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Read &lt;a href="https://www.amazon.co.uk/Dont-Make-Think-Revisited-Usability/dp/0321965515"&gt;Don’t make me think&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This book basically lays out the common sense foundations for web design. It’s not a new book but it’s a classic for a reason. The principles laid out here are immediately applicable to anything you might be designing for the web. Recommended for any developer who is looking to get into design.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Copy designs you like
&lt;/h3&gt;

&lt;p&gt;The secret to creativity is knowing how to hide your sources. Let’s say I need to add a pricing section to my landing page. I &lt;em&gt;could&lt;/em&gt; stare at a blank canvas for a whole afternoon, waiting for creativity to hit me, or I can just search ‘&lt;em&gt;pricing page&lt;/em&gt;’ on &lt;a href="https://dribbble.com/"&gt;Dribble&lt;/a&gt; and instantly see hundreds of pricing pages. This works for almost anything, unless whatever you’re designing is legitimately unique which is very rare.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Start without code
&lt;/h3&gt;

&lt;p&gt;Once you have a couple of examples you like, get to the drawing board. I prefer starting either on paper on in Sketch. Some people like to dive into code right away but I find that this approach tends to lock me into the first thing I come up with. Since code is hard to change, I don’t play around with it as much as I would in Sketch or physical paper. On paper you can very quickly come up with 5 different options, show it to someone and start the process of elimination. This is hard to do with code.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Lose your ego and get some feedback
&lt;/h3&gt;

&lt;p&gt;I find it really hard to share my design work with others. I feel like my work will be judged and my lack of skill will be exposed. I believe most makers have experienced these feelings and unfortunately, as you might already know, there is no cure for them. I manage these feelings by telling myself that I’m just a beginner and I’m &lt;em&gt;supposed&lt;/em&gt; to have no skill. That’s why I’m asking for feedback: to get better. Feedback will expose your flaws but these flaws are there whether they’re pointed out or not.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Read &lt;a href="https://refactoringui.com/book/"&gt;Refactoring UI&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;I’m only halfway through the book and I’ve learned so much! What an amazing resource for developers who want to improve their design skills. This book includes countless of specific tips on UI principles. It will help you start creating design systems and speed you up massively. I would read it after you have already had some practice with design. After all, it’s about refactoring UI not creating a UI from scratch.&lt;/p&gt;

&lt;h3&gt;
  
  
  Start designing!
&lt;/h3&gt;

&lt;p&gt;My final tip is to just do it. You will probably suck at it to begin with, but so does everyone as a beginner. When a developer says they suck at design they often think that they’re lacking an innate ability or talent to design. That’s like saying you can’t play the piano because you weren’t born with that skill. It’s absurd. Everyone cannot be Mozart but anyone can learn to play easier songs on the piano and have it sound relatively good. That’s where I’m trying to get to with my design skills. I won’t be winning design awards. I won’t be earning a living with design. I just want to be good enough to get by.&lt;/p&gt;

</description>
      <category>ux</category>
      <category>design</category>
      <category>ui</category>
    </item>
    <item>
      <title>The analytics tool I want</title>
      <dc:creator>Uku Täht</dc:creator>
      <pubDate>Thu, 20 Dec 2018 00:00:00 +0000</pubDate>
      <link>https://dev.to/ukutaht/the-analytics-tool-i-want-5f8j</link>
      <guid>https://dev.to/ukutaht/the-analytics-tool-i-want-5f8j</guid>
      <description>&lt;p&gt;While working on &lt;a href="http://gigride.live"&gt;Gigride&lt;/a&gt;, our marketing head asked me to integrate Google Analytics for our landing page. My first thought was:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Ugh. Can we just use something other than Google Analytics?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Of course this turned into a half-hour discussion about the merits and problems with Google Analytics. There can be no doubt that GA is a powerful tool that has served countless web developers and marketers over a decade. Still, it manages to make hair stand up on the back of my neck every time I use it. My objections boiled down to the following points:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Complexity&lt;/strong&gt; : I find GA overwhelming and difficult to learn. The UX could be a lot better, especially for new users.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy&lt;/strong&gt; : I don’t want Google, or anyone, to track my end users. Have you thought about why GA can be free to use? Because Google is happy to sell their analytics data to advertisers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accuracy&lt;/strong&gt; : You kind of have to learn to ignore some reports on GA because they are widely known to be inaccurate. Two most egregious examples are &lt;a href="https://help.analyticsedge.com/article/misunderstood-metrics-time-on-page-session-duration/"&gt;session length&lt;/a&gt; and the &lt;a href="https://neilpatel.com/blog/what-is-dark-traffic/"&gt;direct traffic source&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Weight&lt;/strong&gt; : Google tag manager + Google analytics weigh 73kb in total. That’s more than my &lt;code&gt;app.js&lt;/code&gt; on Gigride. Their snippet is jam-packed with features that few people use – better to keep it simple and small.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These problems seem pretty fixable don’t they? When I looked around I was fully ready to pick up another tool and install it on Gigride immediately.&lt;/p&gt;

&lt;p&gt;Turns out there are some &lt;a href="https://nomoregoogle.com/"&gt;alternatives for Google Analytics&lt;/a&gt; but I didn’t find any of them compelling. &lt;a href="https://simpleanalytics.io/"&gt;Simple Analytics&lt;/a&gt; and &lt;a href="https://usefathom.com/"&gt;Fathom&lt;/a&gt; are the closest to my ideal but they are a bit too barebones to be useful for my use-case. For example, it’s quite important to me what browsers versions my users are on – if I use a css rule that isn’t supported in IE7, how many users does it affect? Neither Fathom or Simple Analytics provide that answer currently.&lt;/p&gt;

&lt;p&gt;This seems like an opportunity to build the tool that I really want. I’m assuming that there are others out there who would also be interested in ditching Google Analytics for a better, more ethical alternative. So what do I have in mind for this new platform?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Track the standard stuff automatically: page views, unique visitors, bounce rate, session lengths, time per page, top referrers, screen sizes, top pages, device type, OS version, browser version, etc.&lt;/li&gt;
&lt;li&gt;It should look beautiful and be easy to use. This is hard because my design chops are crap. I’ll just try to keep it super simple for now and maybe involve a designer once product market fit is established.&lt;/li&gt;
&lt;li&gt;Never store IP addresses or anything identifiable to an individual. Never sell any data. Side note: can I somehow prove that? Is open-sourcing the only way to verify these claims?&lt;/li&gt;
&lt;li&gt;Optimise signal-to-noise ratio. The user should only see data that is accurate, useful and actionable. For example, when showing month-on-month change in unique visitors, it’s really important to know whether this is a statistically significant change or just normal fluctuation. No-one else does this as far as I know.&lt;/li&gt;
&lt;li&gt;Javascript snippet that end users download must be lightweight.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Basically it boils down to the &lt;a href="https://en.wikipedia.org/wiki/Pareto_principle"&gt;Pareto principle&lt;/a&gt;: I believe we can get 80% of the benefit on GA with 20% of the complexity and cruft around it.&lt;/p&gt;

&lt;p&gt;I’ve been building this tool for about a month now in my free time. I can’t tell you what it’s called because I haven’t settled on a name yet :) A very stripped-down version of this description is close to being usable and I believe I can launch a private beta in January.&lt;/p&gt;

&lt;p&gt;If you’re interested in the beta, please write to me on &lt;a href="https://twitter.com/ukutaht"&gt;twitter&lt;/a&gt; or &lt;a href="mailto:uku.taht@gmail.com"&gt;uku.taht@gmail.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;EDIT:&lt;/strong&gt; I’ve launched the beta version at &lt;a href="https://plausible.io"&gt;https://plausible.io&lt;/a&gt;&lt;/p&gt;

</description>
      <category>googleanalytics</category>
      <category>privacy</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
