1 00:00:00,000 --> 00:00:03,920 Welcome back to The Deep Dive. We're here to take a whole stack of sources, docs, 2 00:00:03,920 --> 00:00:08,240 comparisons, technical papers, and, you know, just give you the shortcut to what 3 00:00:08,240 --> 00:00:09,200 actually matters. 4 00:00:09,200 --> 00:00:13,200 Right. And today we're dissecting a really interesting solution in web analytics. 5 00:00:13,200 --> 00:00:16,160 We are. For years, the default was always, 6 00:00:16,160 --> 00:00:19,470 if you wanted to know what users were doing on your site, you just went to the 7 00:00:19,470 --> 00:00:20,320 giants. 8 00:00:20,320 --> 00:00:25,600 Oh, absolutely. But those systems have become, frankly, a mess. 9 00:00:25,600 --> 00:00:30,080 It's information overload, confusing pricing, and the biggest one, a massive 10 00:00:30,080 --> 00:00:31,440 compliance headache. 11 00:00:31,440 --> 00:00:35,580 Exactly. The pressure now is all about getting good data without compromising 12 00:00:35,580 --> 00:00:36,240 privacy 13 00:00:36,240 --> 00:00:38,960 and without drowning your site in all those consent pop-ups. 14 00:00:38,960 --> 00:00:42,960 So our deep dive today is into a tool called Vince. 15 00:00:42,960 --> 00:00:47,040 It's a self-hosted platform that basically claims to solve this exact problem. 16 00:00:47,040 --> 00:00:49,440 And we've been through the GitHub docs, the landing pages, 17 00:00:49,440 --> 00:00:53,040 looking at the technical promises, how easy it is to operate, all of that. 18 00:00:53,040 --> 00:00:57,280 Right. And our mission here is to unpack how this single binary zero dependency 19 00:00:57,280 --> 00:00:57,920 tool 20 00:00:57,920 --> 00:01:03,040 makes compliance simple and gives you real insights, especially for you. 21 00:01:03,040 --> 00:01:07,040 If you're maybe a beginner to self-hosting or just tired of managing huge 22 00:01:07,040 --> 00:01:07,760 infrastructure, 23 00:01:07,760 --> 00:01:09,200 just to count clicks. 24 00:01:09,200 --> 00:01:14,880 And what we're seeing is a solution where simplicity, it's not just a feature, 25 00:01:14,880 --> 00:01:17,040 it's the core architectural principle. 26 00:01:17,040 --> 00:01:20,080 Okay. Before we get into the genius behind its lightweight design, 27 00:01:20,080 --> 00:01:23,120 we really need to thank the supporter of this deep dive. 28 00:01:23,120 --> 00:01:23,760 Of course. 29 00:01:23,760 --> 00:01:25,920 This is all made possible by Safe Server. 30 00:01:25,920 --> 00:01:29,600 Safe Server supports the hosting of innovative software, just like Vince, 31 00:01:29,600 --> 00:01:32,240 and they can help you with your digital transformation. 32 00:01:32,240 --> 00:01:36,320 You can learn more at www.safeserver.de. 33 00:01:36,320 --> 00:01:37,840 So let's set the goal for today. 34 00:01:37,840 --> 00:01:38,720 Let's do it. 35 00:01:38,720 --> 00:01:43,620 We want you to walk away understanding not just what Vince is, but why its design 36 00:01:43,620 --> 00:01:44,080 choices, 37 00:01:44,080 --> 00:01:46,880 you know, the zero dependency, the custom storage, 38 00:01:46,880 --> 00:01:50,880 why that represents a real strategic shift in how you can handle your own data. 39 00:01:50,880 --> 00:01:52,960 So let's start with a problem Vince is trying to fix. 40 00:01:52,960 --> 00:01:55,840 It's not just that Google Analytics is complex. 41 00:01:55,840 --> 00:01:58,480 The sources point out that it often gives you too much information. 42 00:01:58,480 --> 00:01:59,760 It's like data smog. 43 00:01:59,760 --> 00:02:00,480 Data smog. 44 00:02:00,480 --> 00:02:01,040 I like that. 45 00:02:01,040 --> 00:02:02,320 It paralyzes you. 46 00:02:02,320 --> 00:02:06,080 But for most people listening, I bet the biggest pain isn't even the complexity. 47 00:02:06,080 --> 00:02:07,280 It's the cost. 48 00:02:07,280 --> 00:02:09,360 Not money, but the regulatory cost. 49 00:02:09,360 --> 00:02:10,000 That's it. 50 00:02:10,000 --> 00:02:11,360 That's the real barrier. 51 00:02:11,360 --> 00:02:14,400 Compliance has gotten so complicated. 52 00:02:14,400 --> 00:02:17,840 If you're running a simple blog or a small shop, you don't want to have to hire a 53 00:02:17,840 --> 00:02:18,160 legal 54 00:02:18,160 --> 00:02:19,760 team just to manage your cookie banners. 55 00:02:19,760 --> 00:02:21,200 No, absolutely not. 56 00:02:21,200 --> 00:02:24,320 And this is where Vince makes its first big strategic move. 57 00:02:24,320 --> 00:02:27,280 So for the beginner, let's just define self-hosting. 58 00:02:27,280 --> 00:02:29,120 You control the server. 59 00:02:29,120 --> 00:02:30,480 You control the data. 60 00:02:30,480 --> 00:02:31,200 That's fundamental. 61 00:02:31,200 --> 00:02:31,520 Okay. 62 00:02:31,520 --> 00:02:36,480 But Vince has built from the ground up to be compliant with GDPR, CCPA, PCR, 63 00:02:36,480 --> 00:02:39,120 all the big ones, right out of the box. 64 00:02:39,120 --> 00:02:43,520 Wait, how can a tool just claim compliance without making the user spend months 65 00:02:43,520 --> 00:02:45,840 configuring legal notices and settings? 66 00:02:45,840 --> 00:02:47,600 That sounds a little too good to be true. 67 00:02:47,600 --> 00:02:50,000 It's a really elegant architectural decision. 68 00:02:50,000 --> 00:02:51,760 The documentation is very clear. 69 00:02:51,760 --> 00:02:53,840 Vince uses no cookies. 70 00:02:53,840 --> 00:02:54,960 No cookies at all. 71 00:02:54,960 --> 00:02:55,600 None. 72 00:02:55,600 --> 00:02:58,000 And it ensures 100% data ownership. 73 00:02:58,000 --> 00:03:01,920 By killing tracking cookies entirely and storing all the data on your server, 74 00:03:01,920 --> 00:03:04,960 it just sidesteps the need for most of those consent pop-ups. 75 00:03:04,960 --> 00:03:05,600 Ah, okay. 76 00:03:05,600 --> 00:03:09,760 So if you're not tracking individuals across different websites or sessions 77 00:03:09,760 --> 00:03:12,400 with those unique identifiers, 78 00:03:12,400 --> 00:03:17,040 the whole compliance burden just shrinks dramatically. 79 00:03:17,040 --> 00:03:18,000 It falls off a cliff. 80 00:03:18,000 --> 00:03:22,480 So instead of trying to manage consent for all this complex tracking, 81 00:03:22,480 --> 00:03:26,480 they just decided not to track in a way that requires that kind of consent. 82 00:03:26,480 --> 00:03:29,280 That is a massive operational shortcut. 83 00:03:29,280 --> 00:03:32,240 It means you can literally get rid of those annoying cookie pop-ups 84 00:03:32,240 --> 00:03:34,000 that just ruin the user experience. 85 00:03:34,000 --> 00:03:34,400 Exactly. 86 00:03:34,400 --> 00:03:35,760 It removes friction for everyone. 87 00:03:35,760 --> 00:03:36,240 Yeah. 88 00:03:36,240 --> 00:03:39,040 But there's another side to the operational equation, 89 00:03:39,040 --> 00:03:40,640 and that's just the ease of management. 90 00:03:40,640 --> 00:03:40,960 Right. 91 00:03:40,960 --> 00:03:44,000 For a beginner who's just dipping their toe into self-hosting, 92 00:03:44,000 --> 00:03:50,000 the idea of managing databases and external software, it's terrifying. 93 00:03:50,000 --> 00:03:52,720 And that's where Vince comes in with what they call painless deployment. 94 00:03:52,720 --> 00:03:56,240 The key technical detail here is that it ships as a single binary 95 00:03:56,240 --> 00:03:57,920 with no external dependencies. 96 00:03:57,920 --> 00:03:58,480 Yes. 97 00:03:58,480 --> 00:04:02,080 Let's make sure we really break down what single binary actually means for you, 98 00:04:02,080 --> 00:04:04,000 the person who has to manage this thing. 99 00:04:04,000 --> 00:04:06,080 It means simplicity, defined. 100 00:04:06,080 --> 00:04:07,920 A normal web app needs what? 101 00:04:07,920 --> 00:04:13,120 An operating system, a web server, a programming language like Elixir or Node, 102 00:04:13,120 --> 00:04:15,040 and a database like PostgreSQL. 103 00:04:15,040 --> 00:04:16,640 A whole stack of things to manage. 104 00:04:16,640 --> 00:04:17,680 A whole stack. 105 00:04:17,680 --> 00:04:23,200 A single binary means the entire application is just one file, one single executable. 106 00:04:23,200 --> 00:04:26,720 You run that one file and the whole analytics engine is live. 107 00:04:26,720 --> 00:04:30,000 So the setup and the maintenance effort just plummets. 108 00:04:30,000 --> 00:04:32,560 There's only one thing you ever need to patch or update. 109 00:04:32,560 --> 00:04:34,960 Fewer moving parts means fewer things can break. 110 00:04:34,960 --> 00:04:38,320 Okay, so if we're looking at this as a strategic choice, 111 00:04:38,320 --> 00:04:42,640 it sounds like Vince is sacrificing features or power for that simplicity. 112 00:04:42,640 --> 00:04:44,080 Is that the trade-off here? 113 00:04:44,080 --> 00:04:45,840 That is the critical question. 114 00:04:45,840 --> 00:04:48,560 If you get to zero dependency, what did you have to give up? 115 00:04:48,560 --> 00:04:51,360 And to answer that, we have to look at the competition 116 00:04:51,360 --> 00:04:54,080 because Vince was heavily inspired by other projects. 117 00:04:54,080 --> 00:04:55,360 So give us that contrast. 118 00:04:55,360 --> 00:04:58,320 I mean, anyone who's fought with setting up a database cluster 119 00:04:58,320 --> 00:05:01,920 just for a simple web counter knows how good one file sounds. 120 00:05:01,920 --> 00:05:05,360 OK, let's take Plausible Analytics, which Vince originally used as a model. 121 00:05:05,360 --> 00:05:10,080 Plausible is a fantastic privacy-focused tool, no question. 122 00:05:10,080 --> 00:05:14,560 However, to self-host it, you typically need to manage Elixir for the application, 123 00:05:14,560 --> 00:05:16,880 ClickHouse for the high-speed data storage, 124 00:05:16,880 --> 00:05:19,760 and PostgreSQL for the relational database parts. 125 00:05:19,760 --> 00:05:23,600 OK, that's three major separate pieces of software, 126 00:05:23,600 --> 00:05:26,960 each with its own configuration, its own updates, its own security patches. 127 00:05:26,960 --> 00:05:31,360 It's basically a full-time sysadmin job for a small analytics setup. 128 00:05:31,360 --> 00:05:32,400 Yeah, it can be. 129 00:05:32,400 --> 00:05:34,880 Vince, on the other hand, just says forget Elixir, 130 00:05:34,880 --> 00:05:36,960 forget ClickHouse, forget PostgreSQL. 131 00:05:36,960 --> 00:05:39,760 It handles everything, all the logic, 132 00:05:39,760 --> 00:05:43,280 all the data storage internally inside that one binary file. 133 00:05:43,280 --> 00:05:47,040 So for you, the listener, installation isn't some three-stage engineering project. 134 00:05:47,040 --> 00:05:50,960 It's literally just running a script or pulling a Docker container. 135 00:05:50,960 --> 00:05:54,000 Exactly. The sources confirm how easy it is. 136 00:05:54,000 --> 00:05:56,640 For Mac or Linux, it's a simple curl script. 137 00:05:56,640 --> 00:06:00,000 You're up and running. If you like containers, it's a Docker pull. 138 00:06:00,000 --> 00:06:02,880 It just simplifies that jump into self-hosting so much. 139 00:06:02,880 --> 00:06:05,120 And it seems pretty mature for being so simple. 140 00:06:05,120 --> 00:06:08,480 It has native support for automatic TLS through Let's Encrypt. 141 00:06:08,480 --> 00:06:12,640 It does, which means securing your data with HTTPS is built in and automated. 142 00:06:12,640 --> 00:06:15,360 That's another complex system you don't have to manage yourself. 143 00:06:15,360 --> 00:06:19,360 And since you're running it yourself, you're not hitting any commercial paywalls. 144 00:06:19,360 --> 00:06:24,640 The docs really emphasize this. Unlimited sites and unlimited events. 145 00:06:24,640 --> 00:06:28,790 Your only limit is the resources of your own server, not some vendor's subscription 146 00:06:28,790 --> 00:06:29,200 plan. 147 00:06:29,200 --> 00:06:33,360 So back to my question about sacrificing capability. It's lean, but what can it 148 00:06:33,360 --> 00:06:34,080 actually track? 149 00:06:34,080 --> 00:06:38,480 It tracks everything a modern website owner really needs. It's not just page views. 150 00:06:38,480 --> 00:06:42,080 It does goal conversion tracking so you know when users sign up or buy something. 151 00:06:42,080 --> 00:06:42,800 That is important. 152 00:06:42,800 --> 00:06:48,720 It handles custom events, outbound links, file downloads, and even 404 error pages, 153 00:06:48,720 --> 00:06:52,080 which is critical for site health and SEO. 154 00:06:52,080 --> 00:06:56,640 So the core functionality is all there, but the operational headache is just gone. 155 00:06:56,640 --> 00:06:57,120 Pretty much. 156 00:06:57,760 --> 00:06:59,680 This brings us to the architecture. 157 00:06:59,680 --> 00:07:02,640 We mentioned Vince started as a Go port of Plausible, 158 00:07:02,640 --> 00:07:05,360 aiming specifically for that self-hosting crowd. 159 00:07:05,360 --> 00:07:06,480 That lineage is key. 160 00:07:06,480 --> 00:07:11,600 They looked at a successful analytics tool and just rebuilt the engine in Go, 161 00:07:11,600 --> 00:07:14,720 which is a language that's perfect for creating single binaries. 162 00:07:14,720 --> 00:07:17,200 And the focus on self-hosting is so complete 163 00:07:17,200 --> 00:07:21,340 that the tracking script is actually designed as a drop-in replacement for Plausible 164 00:07:21,340 --> 00:07:21,840 script. 165 00:07:21,840 --> 00:07:24,880 Yes, which makes migration incredibly easy 166 00:07:24,880 --> 00:07:28,240 if you're already using Plausible's self-hosted version. 167 00:07:28,240 --> 00:07:31,040 Okay, now let's tackle that secret sauce you mentioned, 168 00:07:31,040 --> 00:07:34,720 the thing that allows it to be fast without a massive database. 169 00:07:34,720 --> 00:07:39,680 The sources mention compressed roaring bitmaps using columnar storage. 170 00:07:39,680 --> 00:07:41,840 Let's simplify that. 171 00:07:41,840 --> 00:07:46,000 Okay, think of a traditional database like a giant spreadsheet or a ledger. 172 00:07:46,000 --> 00:07:50,000 To count something, you have to read through every row line by line. 173 00:07:50,000 --> 00:07:52,480 It gets slow really fast with millions of events. 174 00:07:52,480 --> 00:07:53,200 Right. 175 00:07:53,200 --> 00:07:56,280 Columnar storage is like taking that spreadsheet and cutting it into vertical 176 00:07:56,280 --> 00:07:56,880 scripts. 177 00:07:56,880 --> 00:07:58,560 All the page views are stored together, 178 00:07:58,560 --> 00:08:00,720 all the timestamps are stored together, and so on. 179 00:08:00,720 --> 00:08:02,800 That already sounds way more efficient for a running report. 180 00:08:02,800 --> 00:08:03,440 It is. 181 00:08:03,440 --> 00:08:05,440 Now, you add the roaring bitmaps. 182 00:08:05,440 --> 00:08:08,720 Imagine you need to know which users visited a specific page. 183 00:08:08,720 --> 00:08:11,920 Instead of storing a huge list of every single user ID, 184 00:08:11,920 --> 00:08:15,440 a roaring bitmap is like a super compressed index card 185 00:08:15,440 --> 00:08:17,600 that just flags where the relevant data is. 186 00:08:17,600 --> 00:08:20,720 So it's not storing all the raw data in a traditional way, 187 00:08:20,720 --> 00:08:24,800 it's storing a highly efficient compressed map of the data. 188 00:08:24,800 --> 00:08:25,600 Exactly. 189 00:08:25,600 --> 00:08:29,120 A map that lets it pull reports and metrics almost instantly 190 00:08:29,120 --> 00:08:32,560 without needing a huge complex query engine like ClickHouse. 191 00:08:32,560 --> 00:08:36,240 That addresses the speed and the efficiency. 192 00:08:36,240 --> 00:08:36,720 It does. 193 00:08:36,720 --> 00:08:40,720 It gives you extreme query speeds and very efficient disk usage 194 00:08:40,720 --> 00:08:42,880 all managed inside that single file. 195 00:08:42,880 --> 00:08:46,320 And the tracking script you put on your website, less than one kilobyte. 196 00:08:46,320 --> 00:08:48,880 Which means your site performance won't take a hit 197 00:08:48,880 --> 00:08:50,240 just because you're running analytics. 198 00:08:50,240 --> 00:08:51,760 The zero impact, basically. 199 00:08:51,760 --> 00:08:54,960 So if we look at the feature comparison table and the sources, 200 00:08:54,960 --> 00:08:57,200 the different strategies become really clear. 201 00:08:57,200 --> 00:09:01,520 Plausible is built to potentially be a big hosted enterprise solution. 202 00:09:01,520 --> 00:09:04,560 Vince is laser focused on the single person, 203 00:09:04,560 --> 00:09:06,960 the single entity who wants to self-host. 204 00:09:06,960 --> 00:09:08,320 That's it, exactly. 205 00:09:08,320 --> 00:09:11,200 For the person who insists on owning their infrastructure, 206 00:09:11,200 --> 00:09:13,040 Vince gives them key advantages. 207 00:09:13,040 --> 00:09:16,960 Unlimited sites, unlimited events, zero dependency, automatic TLS. 208 00:09:17,520 --> 00:09:21,280 Plausible's architecture is excellent, but it requires that more complex setup 209 00:09:21,280 --> 00:09:23,120 because it's built for multi-tenancy. 210 00:09:23,120 --> 00:09:25,680 And we should be clear about what Vince doesn't do. 211 00:09:25,680 --> 00:09:27,200 The sources are upfront about it. 212 00:09:27,200 --> 00:09:30,800 No big enterprise features, no hosted offering, 213 00:09:30,800 --> 00:09:34,960 no multi-tenant capabilities, no advanced funnel analysis. 214 00:09:34,960 --> 00:09:36,880 And that just reinforces its mission. 215 00:09:36,880 --> 00:09:41,600 It is streamlined, high-speed, compliant analytics for one entity. 216 00:09:41,600 --> 00:09:46,000 It's built for autonomy, not for being a massive commercial service. 217 00:09:46,000 --> 00:09:48,160 It knows exactly who its audience is. 218 00:09:48,160 --> 00:09:50,720 But autonomy doesn't have to mean isolation, right? 219 00:09:50,720 --> 00:09:51,920 Even if you host it yourself, 220 00:09:51,920 --> 00:09:54,560 you still need to share data with your team or clients. 221 00:09:54,560 --> 00:09:55,760 And they thought of that. 222 00:09:55,760 --> 00:09:59,280 You can create public dashboards and unique shared access links. 223 00:09:59,280 --> 00:10:02,480 And importantly, these links can be password protected. 224 00:10:02,480 --> 00:10:05,680 Ah, so you keep total control over the data and security, 225 00:10:05,680 --> 00:10:07,600 but you can still share specific views 226 00:10:07,600 --> 00:10:09,360 without having to give people server access. 227 00:10:09,360 --> 00:10:12,160 Precisely. No need to even create user accounts for them. 228 00:10:12,160 --> 00:10:14,960 So what does this all mean for you, the listener? 229 00:10:14,960 --> 00:10:17,360 We dove into Vince looking for a self-hosted tool 230 00:10:17,360 --> 00:10:20,320 that balances speed, compliance, and ease of use. 231 00:10:20,320 --> 00:10:22,080 And what we found is an identity 232 00:10:22,080 --> 00:10:24,640 that's just defined by architectural minimalism. 233 00:10:24,640 --> 00:10:26,000 I think the takeaway is very clear. 234 00:10:26,000 --> 00:10:28,480 Vince is a cost-effective, easily deployed 235 00:10:28,480 --> 00:10:30,080 zero-dependency analytics tool. 236 00:10:30,080 --> 00:10:33,040 Its use of this compressed columnar storage 237 00:10:33,040 --> 00:10:34,560 makes it fast and efficient, 238 00:10:34,560 --> 00:10:36,320 while its core privacy stance, 239 00:10:36,320 --> 00:10:38,480 no cookies, 100% data ownership, 240 00:10:38,480 --> 00:10:41,040 gives you immediate compliance relief. 241 00:10:41,040 --> 00:10:44,000 For anyone tired of managing a bunch of dependencies 242 00:10:44,000 --> 00:10:45,440 or complex databases, 243 00:10:45,440 --> 00:10:48,080 this is just a very attractive package. 244 00:10:48,080 --> 00:10:48,640 It is. 245 00:10:48,640 --> 00:10:50,240 Which brings us to the final 246 00:10:50,240 --> 00:10:52,160 really important question for you to think about. 247 00:10:52,160 --> 00:10:54,240 If you have 100% data ownership, 248 00:10:54,240 --> 00:10:55,760 the data is local, it's private, 249 00:10:55,760 --> 00:10:57,440 it's governed only by your choices, 250 00:10:57,440 --> 00:10:59,680 how does that fundamentally change 251 00:10:59,680 --> 00:11:00,800 your analytics strategy 252 00:11:00,800 --> 00:11:02,640 compared to just relying on a third party? 253 00:11:02,640 --> 00:11:05,440 When you can treat your analytics data 254 00:11:05,440 --> 00:11:06,960 as a pure strategic asset 255 00:11:06,960 --> 00:11:08,800 that you completely control, 256 00:11:08,800 --> 00:11:11,280 what new insights or even new business models 257 00:11:11,280 --> 00:11:12,320 become possible? 258 00:11:12,320 --> 00:11:14,320 It shifts the entire conversation. 259 00:11:14,320 --> 00:11:17,360 You move away from vendor lock-in and regulatory fear 260 00:11:17,360 --> 00:11:19,120 and you move towards leveraging knowledge 261 00:11:19,120 --> 00:11:21,280 that you actually own for your own growth. 262 00:11:21,280 --> 00:11:22,720 A perfect place to leave it. 263 00:11:22,720 --> 00:11:24,480 As you think about 264 00:11:24,480 --> 00:11:27,200 where to host this kind of strategic asset 265 00:11:27,200 --> 00:11:30,080 and start on your own digital transformation journey, 266 00:11:30,080 --> 00:11:33,120 remember this deep dive was supported by SafeServer. 267 00:11:33,120 --> 00:11:35,360 They support hosting for software like Vents 268 00:11:35,360 --> 00:11:38,080 and can help with your broader digital transformation needs. 269 00:11:38,080 --> 00:11:42,560 You can learn more about them at www.safeserver.de. 270 00:11:42,560 --> 00:11:44,240 Thank you for joining us for this deep dive 271 00:11:44,240 --> 00:11:46,000 into Privacy First Web Analytics. 272 00:11:46,000 --> 00:11:47,040 We'll catch you next time.