<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Strata Business Intelligence]]></title><description><![CDATA[Follow us as we build the next generation Semantically enabled Business Intelligence platform for the AI enterprise]]></description><link>https://blog.strata.do</link><image><url>https://substackcdn.com/image/fetch/$s_!iZ0Z!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ce29f09-5703-4e07-8dcc-d36e2b4894d3_256x256.png</url><title>Strata Business Intelligence</title><link>https://blog.strata.do</link></image><generator>Substack</generator><lastBuildDate>Sat, 04 Apr 2026 05:54:24 GMT</lastBuildDate><atom:link href="https://blog.strata.do/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Ajo Abraham]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[ajoabraham@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[ajoabraham@substack.com]]></itunes:email><itunes:name><![CDATA[ajo]]></itunes:name></itunes:owner><itunes:author><![CDATA[ajo]]></itunes:author><googleplay:owner><![CDATA[ajoabraham@substack.com]]></googleplay:owner><googleplay:email><![CDATA[ajoabraham@substack.com]]></googleplay:email><googleplay:author><![CDATA[ajo]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Okay, I'm Vibing]]></title><description><![CDATA[From net neutral to net positive ROI with LLMs]]></description><link>https://blog.strata.do/p/okay-im-vibing</link><guid isPermaLink="false">https://blog.strata.do/p/okay-im-vibing</guid><dc:creator><![CDATA[ajo]]></dc:creator><pubDate>Mon, 09 Mar 2026 22:55:36 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!TesU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb45d1914-25cd-4a7e-bc96-2998a13c4e7e_784x1151.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TesU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb45d1914-25cd-4a7e-bc96-2998a13c4e7e_784x1151.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TesU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb45d1914-25cd-4a7e-bc96-2998a13c4e7e_784x1151.jpeg 424w, https://substackcdn.com/image/fetch/$s_!TesU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb45d1914-25cd-4a7e-bc96-2998a13c4e7e_784x1151.jpeg 848w, https://substackcdn.com/image/fetch/$s_!TesU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb45d1914-25cd-4a7e-bc96-2998a13c4e7e_784x1151.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!TesU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb45d1914-25cd-4a7e-bc96-2998a13c4e7e_784x1151.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TesU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb45d1914-25cd-4a7e-bc96-2998a13c4e7e_784x1151.jpeg" width="784" height="1151" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b45d1914-25cd-4a7e-bc96-2998a13c4e7e_784x1151.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1151,&quot;width&quot;:784,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:228115,&quot;alt&quot;:&quot;A cat floats in space with headphones, surrounded by stars in a serene, lofi digital illustration.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A cat floats in space with headphones, surrounded by stars in a serene, lofi digital illustration." title="A cat floats in space with headphones, surrounded by stars in a serene, lofi digital illustration." srcset="https://substackcdn.com/image/fetch/$s_!TesU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb45d1914-25cd-4a7e-bc96-2998a13c4e7e_784x1151.jpeg 424w, https://substackcdn.com/image/fetch/$s_!TesU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb45d1914-25cd-4a7e-bc96-2998a13c4e7e_784x1151.jpeg 848w, https://substackcdn.com/image/fetch/$s_!TesU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb45d1914-25cd-4a7e-bc96-2998a13c4e7e_784x1151.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!TesU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb45d1914-25cd-4a7e-bc96-2998a13c4e7e_784x1151.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This post from my friend Aaron prompted (who is the LLM now?) me to take a beat on where I am personally with LLMs.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.linkedin.com/posts/aboutaaron_this-past-weekend-i-ran-a-52-hour-hack-activity-7434618242922520576-TQW1?utm_source=share&amp;utm_medium=member_desktop&amp;rcm=ACoAAABJBOMB7-Bu-D62ZaAikcxShMiWbSJRnaY" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WLkA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c4677fa-7a9d-4444-b724-37a9cb8c1bc5_568x286.png 424w, https://substackcdn.com/image/fetch/$s_!WLkA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c4677fa-7a9d-4444-b724-37a9cb8c1bc5_568x286.png 848w, https://substackcdn.com/image/fetch/$s_!WLkA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c4677fa-7a9d-4444-b724-37a9cb8c1bc5_568x286.png 1272w, https://substackcdn.com/image/fetch/$s_!WLkA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c4677fa-7a9d-4444-b724-37a9cb8c1bc5_568x286.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WLkA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c4677fa-7a9d-4444-b724-37a9cb8c1bc5_568x286.png" width="568" height="286" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3c4677fa-7a9d-4444-b724-37a9cb8c1bc5_568x286.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:286,&quot;width&quot;:568,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:54787,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://www.linkedin.com/posts/aboutaaron_this-past-weekend-i-ran-a-52-hour-hack-activity-7434618242922520576-TQW1?utm_source=share&amp;utm_medium=member_desktop&amp;rcm=ACoAAABJBOMB7-Bu-D62ZaAikcxShMiWbSJRnaY&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.strata.do/i/190441695?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbae3b5c0-6762-40e7-84d1-0e015a03ad5d_568x286.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!WLkA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c4677fa-7a9d-4444-b724-37a9cb8c1bc5_568x286.png 424w, https://substackcdn.com/image/fetch/$s_!WLkA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c4677fa-7a9d-4444-b724-37a9cb8c1bc5_568x286.png 848w, https://substackcdn.com/image/fetch/$s_!WLkA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c4677fa-7a9d-4444-b724-37a9cb8c1bc5_568x286.png 1272w, https://substackcdn.com/image/fetch/$s_!WLkA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c4677fa-7a9d-4444-b724-37a9cb8c1bc5_568x286.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In a<a href="https://substack.com/home/post/p-182955635"> previous post</a> I shared how I couldn&#8217;t tell if i&#8217;m more productive. I even made the case that productivity was an illusion, but things have changed. I have in the last three weeks checked in more code written primarily by Claude than in the previous 10 months combined.</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:182955635,&quot;url&quot;:&quot;https://blog.strata.do/p/the-illusion-of-productivity-with&quot;,&quot;publication_id&quot;:5834575,&quot;publication_name&quot;:&quot;Strata Business Intelligence&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!iZ0Z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ce29f09-5703-4e07-8dcc-d36e2b4894d3_256x256.png&quot;,&quot;title&quot;:&quot;The Illusion of Productivity with LLMs&quot;,&quot;truncated_body_text&quot;:&quot;Every couple of months I attempt to prompt a subsystem for Strata into existence. This is different from having it do small tasks, api lookups, project planning, and other pointed code development (single methods or classes). It&#8217;s been a game changer for these tasks. A subsystem, on the other hand, is an entire featureset from the ground up. I&#8217;ve bee&#8230;&quot;,&quot;date&quot;:&quot;2025-12-30T17:13:34.243Z&quot;,&quot;like_count&quot;:0,&quot;comment_count&quot;:0,&quot;bylines&quot;:[{&quot;id&quot;:370445786,&quot;name&quot;:&quot;ajo&quot;,&quot;handle&quot;:&quot;ajoabraham&quot;,&quot;previous_name&quot;:&quot;Ajo Abraham&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/08188ab9-3c15-4660-8a1b-2bcf3a67dba8_1176x1177.jpeg&quot;,&quot;bio&quot;:&quot;We are building the next generation Business Intelligence platform powered by a world class Semantic Layer and AI. Follow us as we build a new startup without VC funding. Can we do it? Subscribe to find out. We'll be sharing the good, bad, and ugly.&quot;,&quot;profile_set_up_at&quot;:&quot;2025-07-30T14:43:00.289Z&quot;,&quot;reader_installed_at&quot;:&quot;2025-08-16T11:33:17.881Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:5951417,&quot;user_id&quot;:370445786,&quot;publication_id&quot;:5834575,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:false,&quot;publication&quot;:{&quot;id&quot;:5834575,&quot;name&quot;:&quot;Strata Business Intelligence&quot;,&quot;subdomain&quot;:&quot;ajoabraham&quot;,&quot;custom_domain&quot;:&quot;blog.strata.do&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Follow us as we build the next generation Semantically enabled Business Intelligence platform for the AI enterprise&quot;,&quot;logo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1ce29f09-5703-4e07-8dcc-d36e2b4894d3_256x256.png&quot;,&quot;author_id&quot;:370445786,&quot;primary_user_id&quot;:370445786,&quot;theme_var_background_pop&quot;:&quot;#FF6719&quot;,&quot;created_at&quot;:&quot;2025-07-30T14:45:27.762Z&quot;,&quot;email_from_name&quot;:&quot; Strata Business Intelligence&quot;,&quot;copyright&quot;:&quot;Ajo Abraham&quot;,&quot;founding_plan_name&quot;:&quot;Founding Member&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;enabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false}}],&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null,&quot;status&quot;:{&quot;bestsellerTier&quot;:null,&quot;subscriberTier&quot;:null,&quot;leaderboard&quot;:null,&quot;vip&quot;:false,&quot;badge&quot;:null,&quot;paidPublicationIds&quot;:[],&quot;subscriber&quot;:null}}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:false,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://blog.strata.do/p/the-illusion-of-productivity-with?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><img class="embedded-post-publication-logo" src="https://substackcdn.com/image/fetch/$s_!iZ0Z!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ce29f09-5703-4e07-8dcc-d36e2b4894d3_256x256.png"><span class="embedded-post-publication-name">Strata Business Intelligence</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">The Illusion of Productivity with LLMs</div></div><div class="embedded-post-body">Every couple of months I attempt to prompt a subsystem for Strata into existence. This is different from having it do small tasks, api lookups, project planning, and other pointed code development (single methods or classes). It&#8217;s been a game changer for these tasks. A subsystem, on the other hand, is an entire featureset from the ground up. I&#8217;ve bee&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">3 months ago &#183; ajo</div></a></div><p>Claude Opus has been a game changer for us and things are moving faster than expected.  The change is not entirely due to the model alone.  We are getting really good at leveraging it appropriately. Our team was able to produce a stunning CLI for Semantic layer management in record time. And, I was able to finish boring parts of the app (ie System settings and monitoring UI) faster than my most aggressive estimates.  Another explanation of the speed here could be that both creating CLI&#8217;s and standard CRUD interfaces is pretty simple.  But that is exactly the point. We are able to off load common app parts easily to the LLM.  More complex features need more care and management but this definitely accelerates our pace.</p><p><strong>What took me 2 years to build at Netflix is nearly feature parity in under a year with even more capability.</strong></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.strata.do/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Strata Business Intelligence is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><h1>Greenfield Projects and LLMs</h1><p>We are building a completely new app in fresh repo&#8217;s. I&#8217;m acting as a PM, UI Designer, Frontend Engineer, Backend Engineer, and architect all at once. This means context muddling for me and the agents.  The temptation is to one shot entire features and call it done. The problem here is that one shotted code is high entropy. I&#8217;ve thrown away tons of one shotted features and handwritten them from scratch. The better approach for me is to segment usage of LLM by the role I&#8217;m performing rather than the feature I&#8217;m building.</p><p>What does this mean in practice?</p><p>First, I take a feature I want and spec it out completely from the end User experience POV. This is the Product Management role.  I&#8217;ll take this spec and one shot it. Here I blindly accept all the code and don&#8217;t bother reviewing it. The goal is to figure out if the product spec is right. Does the UX make sense? Do we need sub features to better describe the main objective here? Or, is the feature completely wrong for our target use case. This is a game changer! You can protype features before even considering them for the final product.  Throw away work like this could only be done with large teams and big money in the past.</p><p>From here, I&#8217;ll either iterate to test different experiences or start working on the architecture.  To do that I&#8217;ll review how the LLM thought about it then re-architect it from first principles as it relates to the long term vision of our product.  The routing paths, main files, code structure, and models will be outlined by me. Then I walk the LLM through implementing each in groups that make sense. For example, for precaching data lists, we have a model called Elemental and background job called ElementalJob. That whole implementation can be done together.  Once the backend is done we move to the frontend and follow the same process.</p><p>This approach is easier for me and the agents to understand. Its step by step but 10x faster than what I alone could have done in the past.</p><p>Some will argue that I&#8217;m wasting time and I should just accept the one shotted code. <strong>I&#8217;m sorry I just can&#8217;t. </strong>I really care about the aesthetics of the entire app. From the frontend to the backend. I care what the URL looks like, what the class names are, and how the code is organized. <strong>I want it all to be aesthetically pleasing. </strong> And guess what? I can have it all now with the help of LLMs. This sort of thing would make me slower in the past but I can get it for free now.</p><p>Lastly, being focused on end to end aesthetics will pay dividends in the future. My code will be easier for agents and humans to understand and it will become faster and faster to add capability.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blog.strata.do/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://blog.strata.do/subscribe?"><span>Subscribe now</span></a></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[The Illusion of Productivity with LLMs]]></title><description><![CDATA[LLMs are great for narrow tasks, but struggle with systems]]></description><link>https://blog.strata.do/p/the-illusion-of-productivity-with</link><guid isPermaLink="false">https://blog.strata.do/p/the-illusion-of-productivity-with</guid><dc:creator><![CDATA[ajo]]></dc:creator><pubDate>Tue, 30 Dec 2025 17:13:34 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!3KSW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c2e519d-57bb-4606-96da-5a2c4c5e2cfe_3200x1800.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3KSW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c2e519d-57bb-4606-96da-5a2c4c5e2cfe_3200x1800.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3KSW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c2e519d-57bb-4606-96da-5a2c4c5e2cfe_3200x1800.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3KSW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c2e519d-57bb-4606-96da-5a2c4c5e2cfe_3200x1800.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3KSW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c2e519d-57bb-4606-96da-5a2c4c5e2cfe_3200x1800.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3KSW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c2e519d-57bb-4606-96da-5a2c4c5e2cfe_3200x1800.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3KSW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c2e519d-57bb-4606-96da-5a2c4c5e2cfe_3200x1800.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5c2e519d-57bb-4606-96da-5a2c4c5e2cfe_3200x1800.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;3 types of optical illusions are a union of science and art - Big Think&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="3 types of optical illusions are a union of science and art - Big Think" title="3 types of optical illusions are a union of science and art - Big Think" srcset="https://substackcdn.com/image/fetch/$s_!3KSW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c2e519d-57bb-4606-96da-5a2c4c5e2cfe_3200x1800.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3KSW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c2e519d-57bb-4606-96da-5a2c4c5e2cfe_3200x1800.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3KSW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c2e519d-57bb-4606-96da-5a2c4c5e2cfe_3200x1800.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3KSW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c2e519d-57bb-4606-96da-5a2c4c5e2cfe_3200x1800.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Every couple of months I attempt to prompt a subsystem for <a href="https://www.strata.do">Strata</a> into existence.  This is different from having it do small tasks, api lookups, project planning, and other pointed code development (single methods or classes).  It&#8217;s been a game changer for these tasks. A subsystem, on the other hand, is an entire featureset from the ground up.  I&#8217;ve been running this experiment since April 2025.  Now, a full eight months later I was finally able to merge code from Claude for a somewhat substantial module.  With that revelation, over the next two days I attempted a slightly more complex module. And like every previous attempt this was a fail. All of that work discarded.  Instant regret! For startups, time is critical and wasting two days of work feels awful.</p><p>This has been an ongoing challenge for me. Two steps forward and two or more steps backward.  I was able to build the same complex module with more feature completeness, less lines of code, and better performance in less than a day.</p><div class="pullquote"><p>All of the productivity gains <strong>feel like</strong> like an illusion.  I can&#8217;t tell if I&#8217;m more productive, neutral, or negative.  I&#8217;m leaning towards neutral to negative.  </p></div><p>Maybe I&#8217;m wrong. I&#8217;m having a perception issue. I could be subconsciously biased against AI&#8217;s coming to take our jobs or whatever.  You be the judge.</p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.strata.do/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Strata Business Intelligence. Follow our journey.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h1>Background</h1><p>We are building a semantically enabled Business Intelligence application.  Our primary focus is on enabling non-technical domain experts (think business analysts, operations folks, finance analysts etc) to maximally self serve data.  I first built it at Netflix where it was unbelievably successful for this use case.  In fact, over my decades in the industry that was my third attempt at solving this specific problem.</p><p>At Strata, we are taking the learnings from that experience and building an even more amazing BI platform.  Our tech stack is Ruby on Rails for both frontend and backend.</p><p>This being the fourth time I&#8217;m building such an application and having recently built it at Netflix, means I have a significant advantage.  In fact, in terms of building semantic engines I might be one of a handful of experts in the world.</p><p>Now you know what we are building, my advantage, and our tech stack. Let&#8217;s take a look at how I&#8217;m using AI.</p><h1>Day to Day with LLMs</h1><p>Everyday while working on <a href="https://www.strata.do">Strata</a>, I&#8217;m using both Grok and Claude.  I find Claude more capable for coding tasks in Ruby.  Grok on the other hand is better at doing deep research on specific topics.  I&#8217;m going back and forth between these two.  But in general, 80% of the time I choose code output from Claude over Grok.  On the backend I use Claude Code and my code editor and setup is NVIM.</p><p>These are all the successful ways I&#8217;m using LLMs:</p><ol><li><p><strong>API lookup / Search</strong>. I rarely have to double check the original documentation. Although every now and then it still does make up things that doesn&#8217;t exist. This basically replaces search. <strong>Rating: 9/10</strong></p></li><li><p><strong>Sample Code Gen</strong>. For example, sample code for manipulating a complex multidimensional array in a specific way. I then take the code and modify it for my needs. In the past, I might be browsing stack overflow for examples. So far, only occasionally does it surprise me with a better implementation than I would have come up with. I still have to modify it quite a bit for my specific needs. <strong>Rating: 7/10</strong></p></li><li><p><strong>Translation</strong>.  Translating an existing implementation for other use cases. For example, I have a YAML config system that defines Strata behavior for each target database type.  LLM&#8217;s could easily translate these YAML for all our target databases with pretty high accuracy. Only issue is you need to double check because there are subtle mistakes. <strong>Rating:</strong> <strong>7.5/10</strong></p></li><li><p><strong>Refactoring</strong>.  Assisting with refactoring is huge.  It works really great when you need to rename classes or relocate them.  It&#8217;s pretty good at finding all the references even when variable names are not substantially related. Its basically a supercharged search and replace. <strong>Rating: 8/10</strong></p></li><li><p><strong>Code Review</strong>. For somewhat complex classes and methods I&#8217;ll have it review my work for obvious improvements.  Its somewhat mediocre here.  But a good sounding board. <strong>Rating 5/10</strong></p></li></ol><p>On a day to day usage for these small tasks it looks like I&#8217;m getting a huge productivity boost.  How about for a moderate subsystem?</p><h1>Formatting Module</h1><p>Over Christmas break, I spend about a day and half building a new formatting system with Claude.  In <a href="https://www.strata.do">Strata</a>, data can be formatted based on data types, rules at the semantic layer, or rules at the reporting layer. We need to support number and date formatting in addition to advanced formatting via HTML templates and Javascript functions.</p><p>Additionally, the formatting module has to apply the formatting rules for backend processing, export formatting rules for client side formatting, export excel and google sheets compatible formatting, and parse formatting rules into appropriate JSON structures.</p><p>This is not a super complicated project but it is substantially more than writing a single code snippet.  I wish I had tracked the exact amount of time I spent on this. This was over the holiday break and I was squeezing in work while kids were sleeping or away playing.  I&#8217;m estimating about a day and half to maybe two days.</p><p>It required two complete builds before getting it close to correct. Iteration one was way over the top. It didn&#8217;t use any of the out the box formatting features that Rails provides.  Claude built everything from scratch for some reason.  I try to prompt it back to simpler solution but the code just got messier. </p><p>Having learned how Claude responded to the first prompt, I created a second prompt (these are detailed markup docs not one liners) with specific instructions on simplicity and usage of Rails existing capability.  This worked pretty well.  I probably refactored about 20% of the code for correctness, clarity, and organization.  This is the largest chunk of code that I have commited from AI so far.  And this is the only module/feature level code I&#8217;ve accepted from an LLM.</p><p>Am I truly satisfied with this implementation? I&#8217;d say no.  I probably have at least one more refactoring to do for correctness. This is mostly around the use of locales. And, to get the right locale other parts of the system needs to modified.  Claude never considered locale at all.</p><p>Feels like success on the surface. But, I can see the tech debt. Debt that will come due soon.  </p><p>Are my feelings here a perception problem?  I feel like I could&#8217;ve built a more complete system in the same time or with an extra day or two.  Maybe I&#8217;m over estimating my capabilities.  Let&#8217;s explore my next LLM project that is substantially more complicated that I ended up rewriting.  This may answer the questions posed here.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blog.strata.do/p/the-illusion-of-productivity-with?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://blog.strata.do/p/the-illusion-of-productivity-with?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p></p><h1>Chart Rendering Module</h1><p><a href="https://www.strata.do">Strata</a> is a Business Intelligence tool. Of course, we have to take raw datasets and transform them into beautiful visualizations.  Our target users just need basic chart types: line, bar, area, donut, stacked area, and stacked bars. Maybe a few more.  We already have systems to generate queries, execute against a data warehouse, cache results, and reuse cached results.  We also have a beautiful editor where users can configure how they want the chart to render (x, y, and series axis. Tooltips and row axis).</p><p>Now we just need to transform the data to be rendered by Chart.js.  This transformation requires understanding how to leverage series when its a dimension vs when its a measure. It has to understand how to handle multiple measures on the y axis and what to do when dual axis is enabled. Finally, it needs to create chart multiples when row axis is configured.  Much of the work is transforming data into Chart.js compatible JSON object.  As a bonus, we also need to enable color themes for rendering many series.</p><p>I made three attempts at building this from scratch.  Each time refining the detailed spec describing everything from code style to requirements. On the third attempt I&#8217;d estimate we reached 70% feature completeness, but only 50% correctness. Complete means it responds to a certain scenario with an output that looks right.  Correctness is how robust the the feature is against bugs.  This is my qualitative assessments so you can take it with a grain of salt.  Neither correctness nor completeness are the reason this attempt failed. In fact, the chart rendered beautifully with color themes and formatting.  With some more prompting and refining I was able to improve correctness and completeness.  However, I did note the lines of code and structure seemed more complex than what I would do.  But, I let it proceed as I was intent on getting to success here.  Only to end up scrapping the whole thing.</p><p>So what happened?</p><p>Well in certain situations the chart was taking over one second to render even with fewer than a 100 data points.  Most of the second day was spent prompting our way into diagnosing the issue.  The one second to render was pure client side times. Nothing to do with the server response (although that wasn&#8217;t amazing).  In the end, neither I nor Claude could figure out why this was happening. Hours of prompting and no luck.  I know the Chart.js library well and in no way should it take 1+secs to render. </p><p>Instead of deleting all of Claude&#8217;s work as I normally do in this situation, I decided to create a fresh branch of master and hand roll this whole module. Good for comparison. In one day I was able to get to 50% feature completeness and 90% correctness. (Correctness is subjective, there maybe bugs I have not found or thought to look for).  I probably wrote less than 20% lines of code compared to Claude and only needed two new files. Whereas, Claude had 6 new files and way more lines of code. But the biggest win, only 14ms to render 1000+ data points on Chart.js.  This is without doing any special performance optimization.  <strong>I still have no idea why the Claude implementation had a problem here.</strong></p><p>I lost two days of productivity here.  But was I faster on my hand roll because of those two days?  That&#8217;s what makes it hard to tell.  AI&#8217;s are becoming part of our habit which is making it hard to tease out the gains.</p><h1>Summary</h1><p>My ongoing experiments with full module implementations are erasing some of the gains I&#8217;m making with day to day use cases listed above.  If I stick to those simple tasks, I would say I&#8217;m 3x more productive.  But letting AI take on bigger tasks is setting me back days.  I don&#8217;t have an intuitive feeling of being more productive hence why I&#8217;m leaning toward neutral to negative productivity gain.</p><p>Maybe I should stop these experiments.  But I can&#8217;t, nor can you.  There is too much influential hype about what others are able to achieve.  This leads to a nagging feeling that your not prompting right. That its your fault. Or, that the new version is substantially better and can finally get the job done.</p><p>Or, it&#8217;s all an illusion. We have a talking machine that tells you things with great confidence.  That kind of confidence plus a sense of authority is persuasive.</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blog.strata.do/?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share Strata Business Intelligence&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://blog.strata.do/?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share Strata Business Intelligence</span></a></p><p></p><p></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Understanding Business Intelligence Users]]></title><description><![CDATA[On personas and diverging skill sets that lead to poor UX over time]]></description><link>https://blog.strata.do/p/understanding-business-intelligence</link><guid isPermaLink="false">https://blog.strata.do/p/understanding-business-intelligence</guid><dc:creator><![CDATA[ajo]]></dc:creator><pubDate>Mon, 08 Dec 2025 20:50:02 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!6KAO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479a7a6b-7247-46f7-8793-94823a563177_784x1168.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6KAO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479a7a6b-7247-46f7-8793-94823a563177_784x1168.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6KAO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479a7a6b-7247-46f7-8793-94823a563177_784x1168.jpeg 424w, https://substackcdn.com/image/fetch/$s_!6KAO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479a7a6b-7247-46f7-8793-94823a563177_784x1168.jpeg 848w, https://substackcdn.com/image/fetch/$s_!6KAO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479a7a6b-7247-46f7-8793-94823a563177_784x1168.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!6KAO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479a7a6b-7247-46f7-8793-94823a563177_784x1168.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6KAO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479a7a6b-7247-46f7-8793-94823a563177_784x1168.jpeg" width="784" height="1168" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/479a7a6b-7247-46f7-8793-94823a563177_784x1168.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1168,&quot;width&quot;:784,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A comic-style illustration of a diverse crowd with anthropomorphic animals and humans in a lively, bustling scene.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A comic-style illustration of a diverse crowd with anthropomorphic animals and humans in a lively, bustling scene." title="A comic-style illustration of a diverse crowd with anthropomorphic animals and humans in a lively, bustling scene." srcset="https://substackcdn.com/image/fetch/$s_!6KAO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479a7a6b-7247-46f7-8793-94823a563177_784x1168.jpeg 424w, https://substackcdn.com/image/fetch/$s_!6KAO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479a7a6b-7247-46f7-8793-94823a563177_784x1168.jpeg 848w, https://substackcdn.com/image/fetch/$s_!6KAO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479a7a6b-7247-46f7-8793-94823a563177_784x1168.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!6KAO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479a7a6b-7247-46f7-8793-94823a563177_784x1168.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Personas, personas, personas. Unlike consumer software, Enterprise Applications target users with diverging skill sets.  The same app could be used by expert developers and non-technical business users. These applications are not always like Google Sheets where everyone is using the same functionality.  Instead, they often have features that can only be used by experts. This is especially true when it comes to Business Intelligence (BI) tools. </p><p>The simplest BI tool may involve the following set of users:</p><ol><li><p>Administrator [Moderate Technical]</p><ol><li><p>More technical than an excel ninja but not necessarily a developer/programmer</p></li><li><p>Responsible for set up, maintenance, and user management</p></li></ol></li><li><p>Data Engineer/BI Engineer/Analytics Engineer [Technical]</p><ol><li><p>Highly technical user responsible for configuring data artifacts</p><ol><li><p>Connections</p></li><li><p>Semantic models (if applicable)</p></li><li><p>In memory data caches and related pipelines</p></li></ol></li><li><p>Develops key dashboards and reports</p></li></ol></li><li><p>Business User [Non-Technical]</p><ol><li><p>In many cases these users passively consume dashboards created by other personas</p></li><li><p>Some subset of these users will try to self serve basic dashboards and reports</p></li></ol></li></ol><p>Take a close look at (1) and (2) above and compare that with (3)&#8217;s you know. The skills set gap is continental.  Now imagine building a tool while trying to optimize for all three personas.  Then imagine adding data scientists and other personas as vendors seek to increase market share.  Many spinning plates stacked precariously on a single tool.</p><p>This is why your company has 10 BI tools and you hate them all. </p>
      <p>
          <a href="https://blog.strata.do/p/understanding-business-intelligence">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Super Bundling of Business Intelligence Tools]]></title><description><![CDATA[Every new feature seem to degrade the overall product]]></description><link>https://blog.strata.do/p/super-bundling-of-business-intelligence</link><guid isPermaLink="false">https://blog.strata.do/p/super-bundling-of-business-intelligence</guid><dc:creator><![CDATA[ajo]]></dc:creator><pubDate>Thu, 06 Nov 2025 14:55:12 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Goid!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcae77470-f8e7-4c13-9b9e-f6236878dc24_784x1168.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Goid!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcae77470-f8e7-4c13-9b9e-f6236878dc24_784x1168.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Goid!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcae77470-f8e7-4c13-9b9e-f6236878dc24_784x1168.png 424w, https://substackcdn.com/image/fetch/$s_!Goid!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcae77470-f8e7-4c13-9b9e-f6236878dc24_784x1168.png 848w, https://substackcdn.com/image/fetch/$s_!Goid!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcae77470-f8e7-4c13-9b9e-f6236878dc24_784x1168.png 1272w, https://substackcdn.com/image/fetch/$s_!Goid!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcae77470-f8e7-4c13-9b9e-f6236878dc24_784x1168.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Goid!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcae77470-f8e7-4c13-9b9e-f6236878dc24_784x1168.png" width="784" height="1168" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cae77470-f8e7-4c13-9b9e-f6236878dc24_784x1168.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1168,&quot;width&quot;:784,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1034375,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.strata.site/i/177767206?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcae77470-f8e7-4c13-9b9e-f6236878dc24_784x1168.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Goid!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcae77470-f8e7-4c13-9b9e-f6236878dc24_784x1168.png 424w, https://substackcdn.com/image/fetch/$s_!Goid!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcae77470-f8e7-4c13-9b9e-f6236878dc24_784x1168.png 848w, https://substackcdn.com/image/fetch/$s_!Goid!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcae77470-f8e7-4c13-9b9e-f6236878dc24_784x1168.png 1272w, https://substackcdn.com/image/fetch/$s_!Goid!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcae77470-f8e7-4c13-9b9e-f6236878dc24_784x1168.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The original idea behind Business Intelligence (BI) tools was to enable self service reporting for non technical users. Over the years BI tools have picked up many more features and feel less and less suited for business users.  We went from drag and drop report building to highly complex dashboards that can only be created by platform experts.  Vendors sell BI tools with the promise of &#8220;self service&#8221;, but companies quickly realize many of their requirements can only be fulfilled by experts.  We are not talking just about common technical operations like semantic modeling, server deployments, data source configuration etc.  Expertise here makes sense.  Instead, the core self service utility itself has become over complicated and require advanced skills.</p><p>To illustrate, imagine I&#8217;m a business analyst in the Customer Service org and I&#8217;m coming into an existing Tableau server environment. I just want to know a little more about a KPI. Where do I even start?  There are hundreds (often thousands) off data sources and enumerable workbooks. I can&#8217;t even start without a guide or manual.  Sure sure, you have to do some work, everything is not going to be handed to you on silver platter.  But simple things should be simple!  This is the kind of inertia you have to get over to make your organization truly data driven. (I don&#8217;t mean to pick on Tableau, it&#8217;s just popular and well understood. They all have similar issues.)</p><p><strong>Vendors often promise enablement for business users, but in reality they are reduced to mere passive consumers of static data. </strong> Here experts create reports and dashboards for the masses. This is fine for a class of use cases but it is horrible for your operators.  These are the users running your business, purportedly making data driven decisions day in day out.  For them this is anything but self service. <strong> Basic questions that drill down even to shallow levels often require an engineer in the loop.  </strong>No question that this is slowing down decision making.</p><h1>How did we get here? </h1><p>Feature bloat over the years have largely been thoughtless and reactive. This is the result of a highly competitive and fractured market.  You could easily list the top 25 with ChatGPT and you would not have heard of many of the names.  </p><p>Here is a list of less well known BI tools from Grok:</p><ol><li><p>Cognos</p></li><li><p>Sigma Computing</p></li><li><p>Hex</p></li><li><p>OBIEE</p></li><li><p>Evidence.dev</p></li><li><p>Lightdash</p></li><li><p>Metabase</p></li><li><p>Pentaho</p></li><li><p>Pyramid Analytics</p></li><li><p>FineBI</p></li></ol><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.strata.do/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Strata Business Intelligence is focused on self service reporting for non technical users.  Subscribe to follow our journey</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><p>Some of these are startups and some are legacy tools that still hold significant market share.  How many of these have you heard of?</p><p>All of the tools start with an amazing core that solves a particular problem in a novel and useful way.  But to grow their market share they quickly and thoughtlessly add competitor features.  Over my 25 years in the industry I&#8217;ve seen many tools come and go and watched vendors adapt.  As soon as a competitor shows up with a threatening proposition it is copied.  Often, poorly just to check a box during a sales cycle.  </p><h2>Maybe we (buyers) are the problem</h2><p>Customers go into buying mode with so many requirements that many are at cross purposes with each other.  We want data prep, data viz, data exploration, semantic models, etc etc.  But, we don&#8217;t spend time to understand who will benefit from each of these features.  And we certainly don&#8217;t think about how these features should be delivered.  For example, are the users of data prep capabilities and semantic reporting the same? If not, how will each user interface with a tool that has both in a coherent way.  Long story short, they are totally different and vendor implementations of each will be too shallow to satisfy anyone.</p><p>Another bigger problem from the buying side is the team/persons with outsized influence on the final decision.  Are they the right influencer for the target problem? <br></p><p>Read my post on how Lookers rise is mostly driven by data engineering rather than the end users:</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;3f15d2dd-1632-4b84-869a-77350cb6e2db&quot;,&quot;caption&quot;:&quot;Looker started in 2012 but already by 2014, only 2 years later, it was gaining significant market share and mindshare as the go to self service analytics tool. And in 2019, 5 years later, it was acquired by Google for $2.6 billion dollars. An amazing story by any account. Looker&#8217;s success was fueled by its LookML tech which allowed engineers to configu&#8230;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;What is up with Looker?&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:370445786,&quot;name&quot;:&quot;ajo&quot;,&quot;bio&quot;:&quot;We are building the next generation Business Intelligence platform powered by a world class Semantic Layer and AI. Follow us as we build a new startup without VC funding. Can we do it? Subscribe to find out. We'll be sharing the good, bad, and ugly.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/08188ab9-3c15-4660-8a1b-2bcf3a67dba8_1176x1177.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-10-13T17:01:13.525Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!T9pl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8428ec13-ff8f-47a9-8713-15c80ec56842_499x442.bin&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://blog.strata.site/p/what-is-up-with-looker&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:175878208,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:5834575,&quot;publication_name&quot;:&quot;Strata Business Intelligence&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!iZ0Z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ce29f09-5703-4e07-8dcc-d36e2b4894d3_256x256.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p></p><p>Finally, many larger orgs with two or more existing Business Intelligence tools go into the market overly focused on consolidation.  When this is the overriding impetus, you end up buying tools with all the bells and whistles on paper.  Only later do you find out that these belles and whistles are too immature to replace the existing tools.  Now you have 3 BI tools. Congratulations, welcome to the fortune 500.</p><h2>Or, Maybe its the Market Research firms</h2><p>BI tools, according to <a href="https://www.gartner.com/en/articles/what-to-look-for-in-an-analytics-and-business-intelligence-platform">Gartner</a> must have the following functionality:</p><p>1. Automated Insights</p><p>2. Data Preparation</p><p>3. Data Visualization</p><p>4. Manageability</p><p>5. Product Useability</p><p>The last two are no brainers for every tool. Not even sure why its on a list of must haves.  Anyways, each of the functionality above is doing a lot of work. When you dig in, they are super broad and range in capabilities and skills match.  Just looking at the top three it&#8217;s obviously at least 3 different types of personas.  Maybe more when you get into the details.</p><p>What skills will the data prep persona bring to the table as compared to data visualization? Automated insights sounds like something fit for data scientists with specific expertise.</p><p>It&#8217;s probably fine if a platform offered all of these features.  The problem is how it&#8217;s delivered and for whom.  If there were sharp lines between the modules in terms of functionality and user match, then it might work. For example, when you get Google Workspace it comes with Docs and Sheets.  But, they are two totally separate modules that serve specific use cases.  Imagine if Sheets was a feature of Google Docs.  This would be a horrible product. Instead these products are only loosely integrated and not dependent on each other.  BI platforms tend to tightly couple all of their functionality.  They feel bloated and not targeted for any specific persona.</p><h1>A Time to Unbundle</h1><p>You are going to buy more than one BI type tool for your organization anyway.  You might as well get the best for each problem you are trying to solve.  Imagine a tool that is only focused on delivering the best interactive dashboarding capability. No data prep, no automated insights, no semantic reporting.  Just the best dashboarding tool for Analytics Engineers.  This will be completely different from the best dashboarding tool for non technical business users.  Combining these two personas is how you end up with tools that nobody likes.</p><p>The other benefit of focusing on specific tools for specific problems is that you don&#8217;t have to pay bloated prices for bloated software.  Perhaps your total cost might remain the same but your productivity in each problem space will be exponentially improved.</p><p>It&#8217;s time to consider unbundling your BI stack.  What do you think, should vendors start unbundling core functionality?</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blog.strata.do/p/super-bundling-of-business-intelligence/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://blog.strata.do/p/super-bundling-of-business-intelligence/comments"><span>Leave a comment</span></a></p><p></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[What is up with Looker?]]></title><description><![CDATA[The strange story of how Looker became synonymous with Semantic Layers.]]></description><link>https://blog.strata.do/p/what-is-up-with-looker</link><guid isPermaLink="false">https://blog.strata.do/p/what-is-up-with-looker</guid><dc:creator><![CDATA[ajo]]></dc:creator><pubDate>Mon, 13 Oct 2025 17:01:13 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!T9pl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8428ec13-ff8f-47a9-8713-15c80ec56842_499x442.bin" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_CxE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05358dd9-967f-4f14-b8ba-e35964feb1ff_220x275.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_CxE!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05358dd9-967f-4f14-b8ba-e35964feb1ff_220x275.gif 424w, https://substackcdn.com/image/fetch/$s_!_CxE!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05358dd9-967f-4f14-b8ba-e35964feb1ff_220x275.gif 848w, https://substackcdn.com/image/fetch/$s_!_CxE!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05358dd9-967f-4f14-b8ba-e35964feb1ff_220x275.gif 1272w, https://substackcdn.com/image/fetch/$s_!_CxE!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05358dd9-967f-4f14-b8ba-e35964feb1ff_220x275.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_CxE!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05358dd9-967f-4f14-b8ba-e35964feb1ff_220x275.gif" width="320" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/05358dd9-967f-4f14-b8ba-e35964feb1ff_220x275.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:275,&quot;width&quot;:220,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Suspicious Look GIFs | Tenor&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Suspicious Look GIFs | Tenor" title="Suspicious Look GIFs | Tenor" srcset="https://substackcdn.com/image/fetch/$s_!_CxE!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05358dd9-967f-4f14-b8ba-e35964feb1ff_220x275.gif 424w, https://substackcdn.com/image/fetch/$s_!_CxE!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05358dd9-967f-4f14-b8ba-e35964feb1ff_220x275.gif 848w, https://substackcdn.com/image/fetch/$s_!_CxE!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05358dd9-967f-4f14-b8ba-e35964feb1ff_220x275.gif 1272w, https://substackcdn.com/image/fetch/$s_!_CxE!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05358dd9-967f-4f14-b8ba-e35964feb1ff_220x275.gif 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Looker started in 2012 but already by 2014, only 2 years later, it was gaining significant market share and mindshare as the go to self service analytics tool. And in 2019, 5 years later, it was acquired by Google for $2.6 billion dollars.  An amazing story by any account. Looker&#8217;s success was fueled by its LookML tech which allowed engineers to configure a semantic layer. It repopularized the concept of a semantic layer which at the time was losing mindshare.</p><p><em>Not sure what a semantic layer is? Read:</em></p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;3c8cb006-a543-46be-b3e3-d3ed7a66311f&quot;,&quot;caption&quot;:&quot;The problem with Semantic Layers is not the technology. It&#8217;s the complete lack of understanding on how and when to deploy it. Teams either hate it and avoid it or think its a panacea for all of their self-service analytics problems. If you&#8217;re in either camp, your Analytics program will stall out and never reach escape velocity. And in this age of AI &#8230;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;What is the Semantic Layer?&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:370445786,&quot;name&quot;:&quot;ajo&quot;,&quot;bio&quot;:&quot;We are building the next generation Business Intelligence platform powered by a world class Semantic Layer and AI. Follow us as we build a new startup without VC funding. Can we do it? Subscribe to find out. We'll be sharing the good, bad, and ugly.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/08188ab9-3c15-4660-8a1b-2bcf3a67dba8_1176x1177.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-08-15T21:39:40.064Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!k-I0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb76ea421-3c60-4426-b126-241f83803df6_1920x1080.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://blog.strata.site/p/what-is-the-semantic-layer&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:170599647,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:5834575,&quot;publication_name&quot;:&quot;Strata Business Intelligence&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!iZ0Z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ce29f09-5703-4e07-8dcc-d36e2b4894d3_256x256.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>But, when you dig deeper its semantic layer left much to be desired. Barely useful. </p><ol><li><p>Each explorer defined a single fact domain. </p></li><li><p>No concept of snapshot measures</p></li><li><p>No ability to create leveled measures</p><ol><li><p>Exclude certain dimensions from the group by or filter or both</p></li><li><p>Include certain dimensions in the group by</p></li></ol></li><li><p>No automatic way to blend data across fact tables</p></li><li><p>Custom syntax with a long learning curve to define semantic objects (LookML)</p></li></ol><p>Looker&#8217;s semantic layer is good at querying a single fact domain at a time. But is that really a hard problem?  Does that really enable self service? </p><p>At the time there were many tools that could handle much more complex use cases.  Even more that could handle the commonly required features listed above. </p><p>So what happened?</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.strata.do/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe to see how Strata will solve for both the Business User and Data Engineering teams</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h1>A Case of the Tail Wagging the Dog</h1><p>Maybe it was the amazing UX for business users. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!T9pl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8428ec13-ff8f-47a9-8713-15c80ec56842_499x442.bin" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!T9pl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8428ec13-ff8f-47a9-8713-15c80ec56842_499x442.bin 424w, https://substackcdn.com/image/fetch/$s_!T9pl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8428ec13-ff8f-47a9-8713-15c80ec56842_499x442.bin 848w, https://substackcdn.com/image/fetch/$s_!T9pl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8428ec13-ff8f-47a9-8713-15c80ec56842_499x442.bin 1272w, https://substackcdn.com/image/fetch/$s_!T9pl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8428ec13-ff8f-47a9-8713-15c80ec56842_499x442.bin 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!T9pl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8428ec13-ff8f-47a9-8713-15c80ec56842_499x442.bin" width="499" height="442" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8428ec13-ff8f-47a9-8713-15c80ec56842_499x442.bin&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:442,&quot;width&quot;:499,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Wait a minute! Never mind. Meme Generator&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Wait a minute! Never mind. Meme Generator" title="Wait a minute! Never mind. Meme Generator" srcset="https://substackcdn.com/image/fetch/$s_!T9pl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8428ec13-ff8f-47a9-8713-15c80ec56842_499x442.bin 424w, https://substackcdn.com/image/fetch/$s_!T9pl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8428ec13-ff8f-47a9-8713-15c80ec56842_499x442.bin 848w, https://substackcdn.com/image/fetch/$s_!T9pl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8428ec13-ff8f-47a9-8713-15c80ec56842_499x442.bin 1272w, https://substackcdn.com/image/fetch/$s_!T9pl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8428ec13-ff8f-47a9-8713-15c80ec56842_499x442.bin 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>No. Obviously, not that. </p><p>In fact, enabling business users seem to the secondary use case not the primary.  A further surprising fact is that companies were paying a premium for Looker. But why?</p><p>Well friends, when the tech team, in this case Data Engineering, is more influential in the buying decision, you end up with Looker.  </p><p>Kudos to the Looker team on finding this angle though. Enterprise sales is extremely hard, but if you can find the right influencers for your product your chances to close goes up dramatically.</p><p>Looker solved many of the problems engineering teams were experiencing with traditional BI tools. These old guards of the self service analytics were exclusively GUI driven.  Making standard principles of systems engineering difficult. Namely, <strong>version control and automation.</strong>  This was enough for Looker to eventually end up with 2% of the BI market.</p><h1>The Way Forward</h1><p>At Strata we are solving for both. Smart adoption of software engineering principles for engineers and a world class semantic layer for business users. </p><p>We can have both!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.strata.do/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe to see how Strata will solve for both the Business User and Data Engineering teams</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[dwh - Ruby Gem for Analytics]]></title><description><![CDATA[Open source gem for connecting to popular data warehouses]]></description><link>https://blog.strata.do/p/dwh-ruby-gem-for-analytics</link><guid isPermaLink="false">https://blog.strata.do/p/dwh-ruby-gem-for-analytics</guid><dc:creator><![CDATA[ajo]]></dc:creator><pubDate>Fri, 22 Aug 2025 16:04:36 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!FNFG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3560aca-a24d-4816-877f-144b380a3b7d_720x441.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FNFG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3560aca-a24d-4816-877f-144b380a3b7d_720x441.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FNFG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3560aca-a24d-4816-877f-144b380a3b7d_720x441.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FNFG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3560aca-a24d-4816-877f-144b380a3b7d_720x441.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FNFG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3560aca-a24d-4816-877f-144b380a3b7d_720x441.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FNFG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3560aca-a24d-4816-877f-144b380a3b7d_720x441.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FNFG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3560aca-a24d-4816-877f-144b380a3b7d_720x441.jpeg" width="720" height="441" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c3560aca-a24d-4816-877f-144b380a3b7d_720x441.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:441,&quot;width&quot;:720,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:94742,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FNFG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3560aca-a24d-4816-877f-144b380a3b7d_720x441.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FNFG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3560aca-a24d-4816-877f-144b380a3b7d_720x441.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FNFG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3560aca-a24d-4816-877f-144b380a3b7d_720x441.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FNFG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3560aca-a24d-4816-877f-144b380a3b7d_720x441.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The Ruby ecosystem has never been great with Data Engineering and Analytics. Python dominates here. Nothing wrong with that. I believe in best tool for the job.  However, when we are building our Ruby apps, whether Rails or otherwise, we need to be able to connect to popular data warehouses for certain use cases. </p><p>Introducing <a href="https://github.com/stratasite/dwh">dwh</a>, a lightweight adapter providing a unified interface across popular data warehouses and databases for ruby.  It is not an ORM and is designed be simple enough to quickly add new adapters.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.strata.do/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Strata is building a Semantic Layer powered BI tool in Ruby on Rails. Subscribe now.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>Why didn&#8217;t we just contribute to Sequel?</h2><p>Libraries like <a href="https://github.com/jeremyevans/sequel">Sequel</a> are amazing and comprehensive. However, its broad coverage also makes it more laborious to add new databases. We seem to be having an explosion of databases recently and a lightweight interface will allow us to integrate faster.</p><p>The adapter only has 5 core methods (6 including the connection method). A YAML settings file controls how it interacts with a particular db. It is relatively fast to add a new db. See the <a href="http://github.com/stratasite/dwh/blob/main/lib/dwh/adapters/druid.rb">Druid</a> implementation as an example. And <a href="https://github.com/stratasite/dwh/blob/main/lib/dwh/settings/druid.yml">here</a> is corresponding YAML settings file for druid.</p><h2>Core Methods</h2><p>Six core methods rounds out the main functionality we need when deally with data warehouses. There is no direct attempt to type cast results into Ruby types.  However, some of the adapters use existing gems like <em><strong>pg</strong></em> and <em><strong>mysql2</strong></em>, these provide type casted result sets.  You can get back native results like so:</p><pre><code>adapter.execute('select * from customers', format: <strong>:native</strong>) </code></pre><p><em><strong>connection - </strong></em>Creates a reusable connection based on config hash passed in</p><p><em><strong>tables(schema: nil, catalog: nil) - </strong></em>returns a list of tables from the default connection or from the specified schema and catalog</p><p><em><strong>metadata(table_name, schema: nil, catalog: nil) - </strong></em>provides metadata about a table</p><p><em><strong>stats(table_name, date_column: nil) - </strong></em>provides table row count and date range</p><p><em><strong>execute(sql, format: :array, retries: 0) - </strong></em>runs a query and returns in given format</p><p><em><strong>execute_stream(sql, io, stats: nil) - </strong></em>runs a query and streams it as csv into the given io</p><h2>Tutorials and Guides</h2><ul><li><p><a href="https://github.com/stratasite/dwh/blob/main/docs/guides/getting-started.md">Getting Started</a></p></li><li><p><a href="https://github.com/stratasite/dwh/blob/main/docs/guides/adapters.md">Adapter Configuration</a></p></li><li><p><a href="https://github.com/stratasite/dwh/blob/main/docs/guides/creating-adapters.md">Creating an Adapter</a></p></li><li><p><a href="https://rubydoc.info/github/stratasite/dwh.git">API</a></p></li></ul><h2>Quick Start</h2><pre><code># Install gem
gem install dwh</code></pre><pre><code># Create an adapter instance
require 'dwh'

postgres = DWH.create(:postgres, {
  host: 'localhost',
  database: 'mydb',
  username: 'user',
  password: 'password'
})

# Execute query and return results as row of hashes
postgres.execute('select * from customers', format: :object)</code></pre><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.strata.do/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Strata Business Intelligence is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[What is the Semantic Layer?]]></title><description><![CDATA[The holy grail of self-service analytics that overpromises and underdelivers perennially]]></description><link>https://blog.strata.do/p/what-is-the-semantic-layer</link><guid isPermaLink="false">https://blog.strata.do/p/what-is-the-semantic-layer</guid><dc:creator><![CDATA[ajo]]></dc:creator><pubDate>Fri, 15 Aug 2025 21:39:40 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!k-I0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb76ea421-3c60-4426-b126-241f83803df6_1920x1080.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The problem with Semantic Layers is not the technology.  It&#8217;s the complete lack of understanding on how and when to deploy it.  Teams either hate it and avoid it or think its a panacea for all of their self-service analytics problems.  If you&#8217;re in either camp, your Analytics program will stall out and never reach escape velocity. And in this age of AI where Semantic Layers will be crucial, your company will be at a severe disadvantage.  It&#8217;s now absolutely critical that you understand this technology and how it fits into to your analytics stack.</p><h2>An Active Abstraction</h2><p>Let&#8217;s get into the tech first.  Semantic Layers bridge the gap between your business concepts and your physical database.  For example, suppose you are running a customer service team with call centers etc.  You might be tracking a common metric called First Contact Resolution Rate by Country.  Here the business concepts are <strong>First Contact Resolution Rate (FCR)</strong> and <strong>Country</strong>.  These then map to a database called <em><strong>cs_dwh</strong></em>, a column in the <em><strong>contact_f</strong></em> table called <em><strong>country_origin_iso_code</strong></em>, and a metric defined as <em><strong>sum(first_contact_resolution_cnt)/sum(num_contacts)</strong></em>.  (Don&#8217;t worry if this is confusing, clarity is on the way). Notice how much more transparent and simple the business terminology is versus how the data is actually stored.</p><p>You could simply document this mapping and call it a semantic layer, and some do, but that would only be useful for highly technical users.</p><p>What we have in Semantic Layers is an <strong>Active Abstraction</strong>.  Its active in that, it can take user input like &#8220;Last 30 day FCR by Country&#8221;, connect to the appropriate database, construct and issue the correct query, and return results in meaningful formats.  </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!k-I0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb76ea421-3c60-4426-b126-241f83803df6_1920x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!k-I0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb76ea421-3c60-4426-b126-241f83803df6_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!k-I0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb76ea421-3c60-4426-b126-241f83803df6_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!k-I0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb76ea421-3c60-4426-b126-241f83803df6_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!k-I0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb76ea421-3c60-4426-b126-241f83803df6_1920x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!k-I0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb76ea421-3c60-4426-b126-241f83803df6_1920x1080.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b76ea421-3c60-4426-b126-241f83803df6_1920x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:166636,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.strata.site/i/170599647?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb76ea421-3c60-4426-b126-241f83803df6_1920x1080.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!k-I0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb76ea421-3c60-4426-b126-241f83803df6_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!k-I0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb76ea421-3c60-4426-b126-241f83803df6_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!k-I0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb76ea421-3c60-4426-b126-241f83803df6_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!k-I0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb76ea421-3c60-4426-b126-241f83803df6_1920x1080.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>If you didn&#8217;t know anything about Business Intelligence or Semantic Layers, you can understand the potential here.  You start to wonder what if everyone in your company has fast access to high quality data? And, what if all our data needs are intermediated by a Semantic Layer so we can have a single source of truth? At first it looks like many of your problems with governance and self service could be one shotted with a Semantic Layer.  But this is also where your problems start. Going down this road to extreme adoption of Semantic Layers will lead to frustration and eventual abandonment.</p><p>Your thinking &#8220;how does he know this&#8221;?  Well dear reader, I&#8217;ve been working in this industry for over 20 years and I&#8217;m obsessed with Semantic Layers.  This will be the third time I build a Semantic engine from scratch.  I might be one of a handful of experts in the world who understand how to build one and how to deploy it successfully.  Before we get into succeeding with this technology, let&#8217;s dive into why extreme adoption will lead to failure.</p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.strata.do/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Strata Business Intelligence is building a world class Semantically powered BI tool. Subscribe and get the latest development.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><h2>What if Everyone has Access to Data?</h2><p>&#8220;Democratize data!&#8221; </p><p>&#8220;Every decision is now data driven.&#8221;</p><p>&#8220;You must use the enterprise standard Semantic Layer for all your analytics need.&#8221;</p><p>It always starts with so much promise and then you take it too far.  Now millions of dollars in investment are wasted and the users are gone.  Where did we go wrong?</p><p>First, you didn&#8217;t match the technology to the right users and domains. Instead, you built for everyone and every domain.  Semantic Layers, when done right, enables a level of self service that is closer to raw data than curated dashboards.  Also, besides the basic semantics, it is mostly context free.  This means if you are not an operator within the domain in question, you could easily get lost.</p><p>Second, teams try to build a cross domain Semantic Layer across the entire enterprise.  This goes wrong a number of ways. Everything from the politics of semantics (who gets to call their metric &#8220;Revenue&#8221;) to the variable quality across domains.  Additionally, it turns out only a minimal amount of cross domain insights are useful in a self service context. The most enabled users are operators.  They are primarily interested in the domain they operate in.  They need to go deep not broad.  Teams in this situation end up building broad rather than deep.</p><p>Third, you mandated the use of one tool to rule them all. It covers your exploratory visualization needs, your interactive dashboarding needs, your data science needs, and your self service reporting needs.  All built on top of a universal semantic layer.  Guess what, it sucks at every one of those use cases.  Its optimized for no one&#8217;s happiness.  A person who is capable of exploring the raw data via direct querying has little need for a Semantic Layer.  Same goes for the Data Scientist and Engineers. For them, a Semantic Layer is a means to bootstrap queries rather than a direct interface to the data.</p><h2>The Semantic Middleware</h2><p>&#8220;Lets take all of our access layers (BI Tools, Visualizations, Notebooks etc) and make them query through the Semantic Layer&#8221;.</p><p>&#8220;Single source of truth!&#8221;</p><p>&#8220;No more governance issues.&#8221; </p><p>This is going to fail harder than federated data warehousing from a few decades ago.  A couple of vendors and a small cadre of Tech companies are trying to make this happen.  Long story short, it ain&#8217;t happening.</p><h4>A Debugging Nightmare</h4><p>When you stack abstractions upon abstractions &#8212; as is the case with BI tools connecting to a third party Semantic Layers &#8212; you better be prepared for debugging marathons.  </p><p>The BI tool in question will of course have its own abstraction as it maps your data to its internal model.  It is designed to work without such a middleware to begin with.  Now when the CEO asks why Revenue on his pretty dashboard is wrong where do we look:</p><ol><li><p>The metric as defined in the Dashboard</p></li><li><p>The metric as defined in the BI tool</p></li><li><p>The query generated by the BI tool</p></li><li><p>It could be how the metric was interpreted by the Semantic Layer. I.e. It knows of a multiple metrics called Revenue and chose the wrong one.</p></li><li><p>The metric as its defined in the Semantic Layer</p></li><li><p>The query generated by the Semantic Layer is wrong</p></li><li><p>The data in the actual database is wrong</p></li></ol><p>Some will say only 7 places to look, not bad. Good luck to you!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Igor!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b84db1a-9b12-47af-a95f-2ddbbd7d8bde_1080x1064.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Igor!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b84db1a-9b12-47af-a95f-2ddbbd7d8bde_1080x1064.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Igor!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b84db1a-9b12-47af-a95f-2ddbbd7d8bde_1080x1064.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Igor!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b84db1a-9b12-47af-a95f-2ddbbd7d8bde_1080x1064.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Igor!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b84db1a-9b12-47af-a95f-2ddbbd7d8bde_1080x1064.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Igor!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b84db1a-9b12-47af-a95f-2ddbbd7d8bde_1080x1064.jpeg" width="458" height="451.2148148148148" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4b84db1a-9b12-47af-a95f-2ddbbd7d8bde_1080x1064.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1064,&quot;width&quot;:1080,&quot;resizeWidth&quot;:458,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Debugging 101 : r/ProgrammerHumor&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Debugging 101 : r/ProgrammerHumor" title="Debugging 101 : r/ProgrammerHumor" srcset="https://substackcdn.com/image/fetch/$s_!Igor!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b84db1a-9b12-47af-a95f-2ddbbd7d8bde_1080x1064.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Igor!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b84db1a-9b12-47af-a95f-2ddbbd7d8bde_1080x1064.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Igor!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b84db1a-9b12-47af-a95f-2ddbbd7d8bde_1080x1064.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Igor!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b84db1a-9b12-47af-a95f-2ddbbd7d8bde_1080x1064.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>It can&#8217;t be the Single Source of Truth</h4><p>As mentioned above, not matter what, your BI tools need to map your data to its own internal model.  Take Tableau for instance.  Even though you connect to data via the Semantic Layer, you still have to define local metrics in the workbook.  What is stopping anyone from changing metric definitions using components from the Semantic Layer? That&#8217;s right, nothing!</p><p>One of the main reason we have inconsistent metric definitions is people.  Not tools, or documentation or some process. Its people and politics.  And most of the time they have a good reason to have a flavor of metric that is slightly different.  This should be totally fine!  We just have to be good about using different names.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blog.strata.do/p/what-is-the-semantic-layer?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://blog.strata.do/p/what-is-the-semantic-layer?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h4>Performance will Suck</h4><p>If not today, eventually.  It will become expedient to solve problems with your data model in the Semantic Layer. Issues that should be a proper ETL or Data Model change will come find their way into the Semantic Layer.  Most current Semantic Layers are already slow (5 seconds or longer per query) by its nature.  They are designed to query against data warehouses which in the context of big data are not meant for sub second response times.  You just can&#8217;t deliver high performance interactive dashboards given the latency.  </p><p>Well you could, if you wanted inflicting suffering on your colleagues.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zu2y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d9a082d-185a-47be-a936-133b64cf62c1_225x225.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zu2y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d9a082d-185a-47be-a936-133b64cf62c1_225x225.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zu2y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d9a082d-185a-47be-a936-133b64cf62c1_225x225.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zu2y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d9a082d-185a-47be-a936-133b64cf62c1_225x225.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zu2y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d9a082d-185a-47be-a936-133b64cf62c1_225x225.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zu2y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d9a082d-185a-47be-a936-133b64cf62c1_225x225.jpeg" width="225" height="225" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0d9a082d-185a-47be-a936-133b64cf62c1_225x225.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:225,&quot;width&quot;:225,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Daily complain of data analyst #data #dataanalyst #complain #datascience  #database #query #table #memes #work&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Daily complain of data analyst #data #dataanalyst #complain #datascience  #database #query #table #memes #work" title="Daily complain of data analyst #data #dataanalyst #complain #datascience  #database #query #table #memes #work" srcset="https://substackcdn.com/image/fetch/$s_!zu2y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d9a082d-185a-47be-a936-133b64cf62c1_225x225.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zu2y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d9a082d-185a-47be-a936-133b64cf62c1_225x225.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zu2y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d9a082d-185a-47be-a936-133b64cf62c1_225x225.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zu2y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d9a082d-185a-47be-a936-133b64cf62c1_225x225.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>To address this need to power interactive dashboards semantically.  Vendors will pitch their proprietary in memory OLAP solutions (aka cubes).  As of now these tend be incoherent with the existing Semantic Layer.  Meaning, you can derive cubes from the base layer but they operate independently.  You have to direct queries at the cube and or the cube has its on lite semantic model which differs from the base model. </p><p>Even if you could solve the performance issue with cubes, it doesn&#8217;t matter in the end.  A capable Analytics Engineer building high impact interactive dashboards will only be slowed down and held back by the Semantic Layer.  <em>I&#8217;m talking about executive dashboards here with broad visibility. Not one off interactive set of charts.</em></p><p>You&#8217;ll pay for performance one way or the other. Slow dashboards or long development cycles or both.</p><h2>So.. Semantic Layer Bad?</h2><p>Absolutely not!</p><p>The Semantic Layer is one of the highest leverage investments you can make on your data assets. <strong> It is the penultimate debugging tool for your business.</strong>  Today, most non-technical users access data via interactive and static dashboards.  However, less than 1% of data is accessible via these modalities.  You didn&#8217;t spend millions of dollars per year to move, process, and store data just for it to sit idle. Lets unpack the real value here.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blog.strata.do/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://blog.strata.do/subscribe?"><span>Subscribe now</span></a></p><p></p><h3>The Right User: Non-Technical Domain Experts</h3><p>At Netflix, where I successfully built and deployed a Semantic reporting tool, I coined the term &#8220;Non-technical Domain Experts.&#8221;  They are an underserved class of users who are hungry for data. Interactive dashboards are less than useful for them.  They are operators who directly influence business decisions in real time.  Some are charting a new course for your product.  And others are tracking down that last dollar.</p><h4>Non-Technical Domain Experts</h4><p>While they may not be technical in the sense that they can&#8217;t write an ETL pipeline or even basic SQL queries, they are masters of their business area.  Whether its a subdivision of a subdivision, a whole department, or a product line, these folks are all over your company.  When shit hits the fan, these are the folks that tell you what&#8217;s happening on the ground from a data perspective.</p><p>They understand the KPI&#8217;s and associated metrics better than the technical team who put them together.  <strong>Your data engineers understand the technical nuance of a metric, these people understand the business nuance.</strong></p><p>You&#8217;ll find them influencing or making key business decisions.  Decisions like where to deploy staff, how much inventory to buy right now, which bugs to fix tomorrow, and how much revenue will product A land this month.  They might have &#8220;Analyst&#8221; in their title but that&#8217;s not always the case.  And finally, they are often wizards with Excel.</p><p>Now imagine that this cohort in your company is not limited to simple dashboards. Nor, are they sitting around waiting for engineers to answer basic questions.  That they can dig deep into your data to make the right call at the right time.  This my friends is the real unlock.</p><h3>The Right Use Cases</h3><p>Can you build interactive dashboards on a powerful Semantic Layer? Sure, but you should not optimize for that.  The class of users and use cases served by interactive dashboards are different.  Dashboards are designed to summarize KPI&#8217;s and disseminate data to a broad user base.  Much will be done to improve performance and usability. These exigencies will clutter and confuse your Semantic Model.</p><p>Generally, operational reporting is an obvious top use case.  The only thing I&#8217;ll say here is that at the enterprise level you should think carefully before relying exclusively on canned reports that come with your solution. These are often devoid of rich data that is available in your data warehouse.</p><p>Here&#8217;s how to find other potential users:</p><ol><li><p>They frequently go from KPI&#8217;s to transactional data</p></li><li><p>They frequently need custom filters and groupings added to existing dashboards and reports</p></li><li><p>They want to download the entire dataset backing a dashboard</p></li><li><p>They are constantly making requests for custom data pulls</p></li></ol><p>These are some of the right targets and they are in almost every domain.</p><h3>Determinism for your Probabilistic AI</h3><p>We are in the midst of an epic tech cycle lead by Artificial Intelligence.  Computers can finally talk to us and we can talk back in plain english.  This is amazing and has done wonders for my productivity as it likely has for you.  </p><p>However, as we all know by now there is a huge caveat.  Large language models that power our current generation of AI tech are probabilistic by nature.  That means answers to a question are non deterministic. Even if you had the funds to train your entire data warehouse, it will some of the time give you the wrong answer. In fact, it will give you different answer just for merely phrasing the question differently. And sometimes the answer to a question can be different between model upgrades.</p><p>Your CEO doesn&#8217;t want you to guess how much Revenue the company will close this month.  Nor does she want a KPI that changes with every refresh of the dashboard.</p><p>A Semantic Layer has the potential to bring enough determinism to your LLM deployments to make it useful in the context of enterprise analytics.  More on that and what we are doing about it at Strata in future posts.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blog.strata.do/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://blog.strata.do/subscribe?"><span>Subscribe now</span></a></p><h2>Recipe for Success</h2><p>Okay, so you&#8217;ve bought in, found the right users, and the right use cases. You know how to avoid extreme adoption. Whats next?</p><h3>Analytics Stack</h3><p>We need to first understand our Analytics stack.  You should think of it as a funnel where you have the most users with shallow usage at the top and the bottom will have few users but intense usage.  It might look something like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!q9h7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85f95fd2-f6ae-4596-8de5-a7fab592c9b3_1234x826.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!q9h7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85f95fd2-f6ae-4596-8de5-a7fab592c9b3_1234x826.png 424w, https://substackcdn.com/image/fetch/$s_!q9h7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85f95fd2-f6ae-4596-8de5-a7fab592c9b3_1234x826.png 848w, https://substackcdn.com/image/fetch/$s_!q9h7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85f95fd2-f6ae-4596-8de5-a7fab592c9b3_1234x826.png 1272w, https://substackcdn.com/image/fetch/$s_!q9h7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85f95fd2-f6ae-4596-8de5-a7fab592c9b3_1234x826.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!q9h7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85f95fd2-f6ae-4596-8de5-a7fab592c9b3_1234x826.png" width="602" height="402.95948136142624" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/85f95fd2-f6ae-4596-8de5-a7fab592c9b3_1234x826.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:826,&quot;width&quot;:1234,&quot;resizeWidth&quot;:602,&quot;bytes&quot;:90100,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.strata.site/i/170599647?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ba7f985-5c0f-4035-a8e1-901981b4ad1d_1920x1080.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!q9h7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85f95fd2-f6ae-4596-8de5-a7fab592c9b3_1234x826.png 424w, https://substackcdn.com/image/fetch/$s_!q9h7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85f95fd2-f6ae-4596-8de5-a7fab592c9b3_1234x826.png 848w, https://substackcdn.com/image/fetch/$s_!q9h7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85f95fd2-f6ae-4596-8de5-a7fab592c9b3_1234x826.png 1272w, https://substackcdn.com/image/fetch/$s_!q9h7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85f95fd2-f6ae-4596-8de5-a7fab592c9b3_1234x826.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Every organization is different and you might have some differences. This captures an average view of enterprises.  The width represents the number of users and the depth represents the intensity (i.e. use it several times a day vs once a month).</p><p>Notice the red above. This is where you need to slot in the Semantic Layer.  Less users than Executive View consumers, but very intense.  I should say it has the potential for intense usage given a good Semantic Layer powered self service tool.  Now that we&#8217;ve identified where in our stack it fits and for what use case, we need to build a data model.</p><h3>Data Modeling</h3><p>This will be your first stumbling block. Don&#8217;t let endless debates over building the perfect enterprise model derail your mission. The mission being to enable deep self service access to a specific set of users in a specific domain.  Look I would love an enterprise data model with all the bells and whistles too.  But, you can get there iteratively without boiling the ocean all at once.</p><p>How good the data model is will depend on your Semantic Layer technology. Some are quite dumb and will need a lot of help and others are more forgiving.  We are building the latter at Strata but with some developer optimizations to grow with the team.</p><p>We&#8217;ll post more on this topic in the future. So subscribe!</p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.strata.do/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Strata Business Intelligence is building a world class Semantically powered BI tool. Subscribe and get the latest development.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><h3>A Curator with Taste</h3><p>It was never going to be that easy.  This isn&#8217;t absolutely necessary but it will really unlock value in ways you can&#8217;t understand until you see it in action.  This person doesn&#8217;t have to do this as full time job.  The initial development will be intense but after that it can be maintained on a part time basis.  They can be one of the domain experts who partner with your Data Engineers, or a Data Engineer.  Nonetheless, you need someone to be the lead curator.<br><br>But, why?</p><p>The Semantic Layer can be described as labels that point to data assets.  These labels can be created haphazardly or with deep empathy.  You have to understand how the users in the domain think, what is important, and how the Semantic Layer will impact their workflow.  Some data will need to be cached because its used often while others can stay in deep storage.</p><p>Think of this role as your editor. Everything in your data model isn&#8217;t useful and many things need to be renamed to fit the mental model of your target users.</p><p>With that final piece in place you are now ready to unlock the true value of Semantic Layers. </p><h2>Summary</h2><p>Congratulations on reading this far! Your going to be among the leaders who run successful analytics programs.  By now you should understand how to screw up a Semantic Layer deployment and also how to succeed.</p><p>I&#8217;d love to hear your comments or feedback. Will try to answer as many as I can. In the mean don&#8217;t forget to subscribe.  Strata is building the next generation of Self Service reporting and analytics with Semantic Layers.</p>]]></content:encoded></item><item><title><![CDATA[The Welcome Post]]></title><description><![CDATA[How I left Netflix to Launch a Startup Yet Again]]></description><link>https://blog.strata.do/p/the-welcome-post</link><guid isPermaLink="false">https://blog.strata.do/p/the-welcome-post</guid><dc:creator><![CDATA[ajo]]></dc:creator><pubDate>Wed, 30 Jul 2025 19:19:27 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/23e0098f-4a88-4109-8a28-5f6ac71b67e8_1400x700.avif" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>To Begin Again</h2><p>After another stint at Netflix, this one longer than anticipated at 8 years, I quit.  Again.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!I3lF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9acde560-b8fa-44e3-8088-5b4b2395738d_400x225.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!I3lF!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9acde560-b8fa-44e3-8088-5b4b2395738d_400x225.gif 424w, https://substackcdn.com/image/fetch/$s_!I3lF!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9acde560-b8fa-44e3-8088-5b4b2395738d_400x225.gif 848w, https://substackcdn.com/image/fetch/$s_!I3lF!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9acde560-b8fa-44e3-8088-5b4b2395738d_400x225.gif 1272w, https://substackcdn.com/image/fetch/$s_!I3lF!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9acde560-b8fa-44e3-8088-5b4b2395738d_400x225.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!I3lF!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9acde560-b8fa-44e3-8088-5b4b2395738d_400x225.gif" width="400" height="225" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9acde560-b8fa-44e3-8088-5b4b2395738d_400x225.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:225,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;YARN | \&quot;I quit.\&quot; | The Office (2005) - S05E19 Two Weeks | Video gifs by  quotes | 817be690 | &#32023;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="YARN | &quot;I quit.&quot; | The Office (2005) - S05E19 Two Weeks | Video gifs by  quotes | 817be690 | &#32023;" title="YARN | &quot;I quit.&quot; | The Office (2005) - S05E19 Two Weeks | Video gifs by  quotes | 817be690 | &#32023;" srcset="https://substackcdn.com/image/fetch/$s_!I3lF!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9acde560-b8fa-44e3-8088-5b4b2395738d_400x225.gif 424w, https://substackcdn.com/image/fetch/$s_!I3lF!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9acde560-b8fa-44e3-8088-5b4b2395738d_400x225.gif 848w, https://substackcdn.com/image/fetch/$s_!I3lF!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9acde560-b8fa-44e3-8088-5b4b2395738d_400x225.gif 1272w, https://substackcdn.com/image/fetch/$s_!I3lF!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9acde560-b8fa-44e3-8088-5b4b2395738d_400x225.gif 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>I&#8217;m starting up a new business in a space I&#8217;ve been obsessed with for over 20 years now.  Why am I obsessed with Semantic Layers and their ability to maximize analyst happiness? Doesn&#8217;t matter. I guess I grew to love what I&#8217;m good at.</p><p>We have lots to discuss in this new era of AI. Follow along as we build a new B2B business in the Business Intelligence space. This is not going to be the usual startup blog slop. Get the good, bad, and ugly.  I&#8217;ve been a founder before and it&#8217;s not all fun and games.  Subscribe and follow our journey.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blog.strata.do/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://blog.strata.do/subscribe?"><span>Subscribe now</span></a></p><h3>This Time is Different</h3><p>This will be my third time building a Semantic Layer from scratch.  But this time I think I truly cracked it.  It just happens that my last two and half years at Netflix was spent honing in on the right product.  This was my second attempt and I was able to resolve the many issues with off the shelf BI tools like Looker, MicroStrategy, Tableau etc when it comes to self service.</p><p>Some people try to deploy Semantic Layer technologies as a panacea when the right approach is to target a much more narrow use case.  I will say more on this in future posts.  </p><h3>Why I Left Netflix</h3><p>If you&#8217;re in the tech biz working for any of the big names, you know Netflix&#8217;s has the golden handcuffs of golden handcuffs. (maybe Meta now for AI stuff) Needless to say it&#8217;s extremely hard to give all that up for no salary :).  You have to be a little crazy.  </p><div class="pullquote"><p>Hard to do anything risky if you don&#8217;t have a little crazy in you.</p></div><p>Anyways, as I alluded earlier I did build a BI tool with a powerful Semantic Layer at Netflix. It is currently deployed in production for several projects.  In fact, I kicked off a sort of internal race to build Semantically enabled solutions.  When I started working on it people were just getting reintroduced to Semantic BI tooling.  In fact, it was once the default way for analysts to access data at Netflix. But, abandoned due to many reasons worth a post of its on. Long story short, the leading offerings were too hard to implement and maintain as the company grew.</p><p>Back to the main plot. I made a wild choice to win the race.  I went against the standard nodejs, python, or java stack and chose Ruby on Rails.  It was once popular at Netflix but now banned. Persona non grata!</p><p>Despite the end users loving and adopting the tool faster than ever, its success was being politically limited.  Teams of many more developers were pushing promises while my solo developed solution was already in production.  My choice of Ruby on Rails being off the paved path was the argument against further adoption. </p><p>It is a fair argument but we all need to veer of paved paths at some points to discover new possibilities. With the the Ruby on Rails renaissance we are seeing, I&#8217;ll be proven right for eventually. Nevertheless, this was also my cue to leave.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.strata.do/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Want to know how the competing projects are doing?  What the alternative stack was? You know what to do &#8595;</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><h3>On Startups</h3><p>Startups are hard. Startups are fun. But, Startups are hard.</p><p>This time I&#8217;m going to launch an LLC and delay funding til I&#8217;m satisfied that we are at or near product market fit.  Maybe we&#8217;ll never raise.  We are in a new tech epoch with AI.  Lots to learn and innovate in terms of how you build a business.</p><p>I&#8217;m talking to several potential cofounders.  Almost had a person quit and join me for no money just equity only to vanish suddenly.  The ride starts immediately and before you know it your going down and then up.  It&#8217;s thrilling!  </p><p>With AI maybe Solo is the right move.</p><h3>Why Ruby on Rails</h3><p>If you made it this far, you probably guessed I love Ruby on Rails.  My philosophy in building data tools for the past 20 years aligns well with Rails philosophy. Namely &#8220;complexity compression&#8221;.  Having worked on internal tools at large enterprises it feels like complexity in every domain is increasing. Whether its deployment tools, data tools, web development frameworks, it doesn&#8217;t matter.  In fact, I think large corporate management teams are incentivized towards complexity.  Even with AI they will chose the complicated solutions over the simple ones at every turn.  I bet there is a Dilbert comic strip showcasing this.</p><p>In anycase, Ruby on Rails since version 7 is experiencing a well deserved renaissance. Hotwire with Stimulus is a great answer to building modern Web UI&#8217;s. Even still you can easily add React or some other frontend framework.  I think we will see many more startups choosing Ruby on Rails in the coming years. </p><p>At Netflix, I was just a bit ahead of trend. In time, my former colleagues will come around.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.strata.do/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe to follow our journey.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item></channel></rss>